on master help sign in
Merge branch 'mp/ecosystem' of https://github.com/urbit/urbit.org into mp/ecosystem
commit23095b04f8fe2decf35f8dff512f5a3696d5c801 authorGordon <gordon@hey.com> dateThu 28 Jul 2022, 10:27 (4 years ago) parent96d6ffed864a1a
9 files changed+132−6
components/Search.js+15 content/applications/~finmep-lanteb/chess.md+2−4 content/events/2022-06-16-developer-call-urbits-new-terminal-stack-tlon copy.md+23 content/events/2022-07-07-hackathon-hackfs.md+18 content/grants/community-meetups.md+43 urbitswap.md → content/grants/urbitswap.md lib/cache.js+8 pages/api/search.js+22−1 pages/events.js+1−1
components/Search.js+15
@@ -282,6 +282,11 @@ class Search extends Component {
282282 }`}
283283 >
284284 {item.content.content}
285+ {item?.content?.foundOnPage && (
286+ <span className="italic block">
287+ Found in page content
288+ </span>
289+ )}
285290 </p>
286291 </div>
287292 </li>
@@ -323,6 +328,11 @@ class Search extends Component {
323328 }`}
324329 >
325330 {item.content.content}
331+ {item?.content?.foundOnPage && (
332+ <span className="italic block">
333+ Found in page content
334+ </span>
335+ )}
326336 </p>
327337 </div>
328338 </li>
@@ -364,6 +374,11 @@ class Search extends Component {
364374 }`}
365375 >
366376 {item.content.content}
377+ {item?.content?.foundOnPage && (
378+ <span className="italic block">
379+ Found in page content
380+ </span>
381+ )}
367382 </p>
368383 </div>
369384 </li>
content/applications/~finmep-lanteb/chess.md+2−4
@@ -1,7 +1,7 @@
11+++
22title = "Chess"
33shortcode = "~finmep-lanteb/chess"
4−developer = "~finmep-lanteb"
4+developer = "~finmep-lanteb & ~sigryn-habrex"
55description = "Fully peer-to-peer chess over Urbit"
66license = "GPL3"
77website = "https://github.com/ashelkovnykov/urbit-chess"
@@ -9,6 +9,4 @@ bgColor = "#ffffff"
99image = "https://storage.googleapis.com/media.urbit.org/site/ecosystem/applications/finmep-chess.svg"
1010+++
1111
12−Play chess with other ships over Urbit.
13−
14−![Screenshot](https://storage.googleapis.com/media.urbit.org/site/ecosystem/applications/urbit-chess-demo.png)
12+Fully decentralized, peer-to-peer Chess app for Urbit
content/events/2022-06-16-developer-call-urbits-new-terminal-stack-tlon copy.mdnew file+23
@@ -0,0 +1,23 @@
1++++
2+title = "Developer Call: Urbit’s improved Terminal Stack"
3+starts = "2022-06-16T09:00:00"
4+ends = "2022-06-16T10:30:00"
5+timezone = "America/Los_Angeles"
6+location = "Online Event"
7+image = ""
8+registration_url = "https://www.meetup.com/urbit-sf/events/286426447/"
9+description = ""
10+dark = false
11+youtube = "E-6E-l1SxFw"
12+
13+[[hosts]]
14+name = "Neal Davis"
15+patp = "~lagrev-nocfep"
16+
17+[[guests]]
18+patp = "~palfun-foslup"
19++++
20+
21+This time Tlon’s ~palfun-foslup will join Neal Davis to discuss Urbit’s current terminal stack and the improvements he is building for it. Multiple sessions and apparently a mouse has been spotted in the upcoming release. All in all some very exciting terminal improvements are coming up shortly. For the long-term ~palfun-foslup is aiming towards native UI which he will describe as well. Be sure to join the hangout after the Developer Call to ask ~palfun-foslup everything you want to know.
22+
23+~palfun-foslup has been part of Tlon for over 4 years and works in the Infrastructure team.
content/events/2022-07-07-hackathon-hackfs.mdnew file+18
@@ -0,0 +1,18 @@
1++++
2+title = "Hackathon: HackFS with ETH Global"
3+starts = "2022-07-06T11:00:00"
4+ends = "2022-07-27T11:00:00"
5+timezone = "America/Chicago"
6+location = "Online Event"
7+image = ""
8+registration_url = "https://ethglobal.com/auth?use_redirect=events/hackfs2022/apply"
9+description = ""
10+dark = false
11++++
12+
13+The Urbit Foundation is sponsoring a prize in the [HackFS](https://fs.ethglobal.com/) competition with the [InterPlanetary File System (IPFS)](https://ipfs.io/) and [Filecoin](https://filecoin.io/) communities.
14+
15+IPFS and Filecoin are distributed data storage and access solutions for a decentralized Web. Building Urbit compatibility tools will lead to new ways of decentralizing file storage and distribution.
16+
17+- [Urbit challenge](https://ethglobal.com/events/hackfs2022/prizes#urbit)
18+- [Apply for Hack FS](https://ethglobal.com/auth?use_redirect=events/hackfs2022/apply)
content/grants/community-meetups.mdnew file+43
@@ -0,0 +1,43 @@
1++++
2+title = "Community Meetup"
3+date = "2022-07-22"
4+
5+[taxonomies]
6+grant_type = [ "Bounty" ]
7+grant_category = [ "Community" ]
8+
9+[extra]
10+image = ""
11+description = "Earn stars by building culture through local, recurring, and in-person urbit events"
12+reward = "1 star"
13+assignee = ""
14+grant_id = "B0165"
15+champion = "~dalweb-donfun"
16+completed = false
17+work_request_link = "https://airtable.com/shr4qt9t9kz7RaOIa?prefill_Grant+ID=B0165&prefill_Grant+Name=Meetup%20Bounty"
18++++
19+
20+# Requirements
21+- Meetups should be geographically based; if you have distributed, interest-based communities of which you are a part, check out Urbit Embassies for a way to build digital communities on Mars.
22+- Meetups must be publicized and include a public web line with event details (time, date, location), and should be actively promoted via social media, in-person recruitment, flyers, a website, etc. If you need a signal boost, email support@urbit.org.
23+- You must host a total of six meetups, with a targeted cadence of once a month.
24+- Creation and admin of an Urbit group for your locality to which all meetup attendees will be invited or a fully public group. This group should be actively maintained with info about upcoming events, copies of past presentation materials, and any other related meetup content.
25+- Sharing of materials generated in service of your meetup; similarly, things like presentation materials, flyers, and FAQs from other meetups will be made available for utilization, forking, or inspiration. For more info, contact ~sarlev-sarsen or ask for help in ~siddef/uf-meetups
26+- Completion of a pull request to the urbit.org github repo to add your meetup's information to the urbit.org/community/meetups page. If you have never submitted a pull request on github before, let us know and we will teach you how. You will need to provide the following:
27+ - Location (City, State, GEO)
28+ - `@p` of host(s)
29+ - A link to your urbit group
30+ - A link to your clearweb presence (i.e. Meetup.com)
31+ - a short description of your meetup and typical events (<50 words)
32+- Regular and timely completion of the meetup report form, including:
33+ - Number of attendees
34+ - Email address for attendees who, in your judgement, have earned a planet
35+ - Submission of presentation materials or notes on topics discussed, including presentation recordings if available.
36+ - top 3-5 questions asked and the technical prowess of the questioner
37+# Encouraged Features
38+- Semi-regular presentations that introduce Urbit to newcomers, help members boot a comet, or introduce the more technical side of urbit are strongly suggested. Depending on the makeup of your meetup attendees, these presentations may be highly technical or they may be more philosophical--your call! Materials to get you started are available at ~wolref-podlex/foundation or by reaching out to ~sarlev-sarsen
39+- Having a collection of 'recommended groups' to which you can direct meetup attendees, such that they can begin to explore the Urbit network.
40+- As one of the main goals of meetups is to get people building on Urbit, once your meetup gains some traction, consider looking into proposal development for a grant on which members of your meetup can collaborate!
41+- While the specific requirements of the meetup bounty listed below can be summarized as "run a regular meetup", the overarching goal is to build a local community and onboard people to Urbit. Successful meetups will be judged by metrics like how many proposals have attendees submitted and completed and how many people have been onboarded who go on to positively contribute to the culture, technology, or creativity of the network. This does not mean that every meetup is expected to be full of developers or that a meetup that does not have a huge and ever-growing attendee list would be considered a failure. What it does mean is that community organizers and participants should become true champions for Urbit who can't help but share with everyone around them how Urbit can offer solutions to many of the pains of modern networked computing.
42+# Compensation
43+- Upon the completion of six meetup events and the associated meetup reports, one star will be paid out to the organizer.
urbitswap.md → content/grants/urbitswap.mdrenamed

The content is the same.

lib/cache.js+8
@@ -2,6 +2,7 @@ const fs = require("fs");
22const path = require("path");
33const matter = require("gray-matter");
44const toml = require("@iarna/toml");
5+const markdoc = require("@markdoc/markdoc");
56
67const options = {
78 engines: {
@@ -37,6 +38,8 @@ function buildSearchIndex(dir) {
3738 fs.readFileSync(path.join(dir, page.name)),
3839 options
3940 );
41+ const parsed = markdoc.parse(pageContent);
42+ const transform = markdoc.transform(parsed);
4043 return {
4144 title: pageData.title,
4245 base: page.name,
@@ -46,6 +49,11 @@ function buildSearchIndex(dir) {
4649 page.name.replace(/.md$/, "")
4750 ),
4851 content: pageData.description || "",
52+ headings: transform.children
53+ .filter((e) => e.name === "h2" || e.name === "h3")
54+ .map((e) => e.children)
55+ .flat()
56+ .filter((e) => typeof e === "string"),
4957 parent: metadata.data.title,
5058 };
5159 })
pages/api/search.js+22−1
@@ -8,7 +8,28 @@ export default (req, res) => {
88 e?.slug.includes(req.query.q.toLowerCase()) ||
99 e?.parent.toLowerCase().includes(req.query.q.toLowerCase())
1010 );
11− const sorted = levenSort(results, req.q, ["title", "slug", "parent"]);
11+
12+ results.push(
13+ ...index
14+ .filter((e) => !results.includes(e))
15+ .filter((e) => {
16+ let found = false;
17+ e.headings.forEach((heading) => {
18+ if (heading.toLowerCase().includes(req.query.q.toLowerCase())) {
19+ found = true;
20+ }
21+ });
22+ return found;
23+ })
24+ .map((e) => ({ ...e, foundOnPage: true }))
25+ );
26+
27+ const sorted = levenSort(results, req.q, [
28+ "title",
29+ "slug",
30+ "parent",
31+ "headings",
32+ ]);
1233 res.statusCode = 200;
1334 res.setHeader("Content-Type", "application/json");
1435 res.end(JSON.stringify({ results: sorted }));
pages/events.js+1−1
@@ -49,7 +49,7 @@ export default function Events({ events, search }) {
4949 const happeningNow = events.filter((event) => {
5050 const starts = generateRealtimeDate(event.starts);
5151 const ends = generateRealtimeDate(event.ends);
52− return starts > DateTime.now() && ends < now;
52+ return starts < DateTime.now() && ends > now;
5353 });
5454
5555 return (