on master help sign in
add updates
commit8e797797ac599f49267845d7bf8bf0b96fa7c432 authorGavin Atkinson <gvnatknsn@protonmail.com> dateWed 14 Jul 2021, 11:39 (5 years ago) parent7dd942a
25 files changed+338−126
content/updates/2019-11-06-update.md+1−3 content/updates/2019-12-06-update.md+6−8 content/updates/2020-02-06-update.md+11−11 content/updates/2020-04-04-update.md+5−6 content/updates/2020-06-15-update.md+17−24 content/updates/2020-07-27-update.md+3−4 content/updates/2020-09-30-update.md−1 content/updates/2020-10-29-update.md−1 content/updates/2020-12-01-update.md−1 content/updates/2021-01-15-update.md−1 content/updates/2021-02-19-update.md−1 content/updates/2021-04-01-update.md−1 content/updates/2021-05-05-update.md−1 content/updates/2021-06-16-update.md−1 content/updates/_index.md−6 lib/constants.js+9−7 lib/lib.js+1−15 pages/blog.js+3−2 pages/events.js+18−13 pages/events/[slug].js+2−6 pages/index.js+13−11 pages/updates.js+81 pages/updates/[slug].js+162 styles/globals.css+5−1 styles/markdown.module.css+1−1
content/updates/2019-11-06-update.md+1−3
@@ -2,7 +2,6 @@
22title = "~2019.11.06 Update"
33date = 2019-11-06
44description = "Weekly Web Update"
5−slug = "2019-11-06"
65aliases = ["/posts/updates/2019-11-06-update", "/posts/2019-11-06-update/"]
76[extra]
87author = ""
@@ -36,5 +35,4 @@ Kenny, a long time community member, is hosting the first-ever Urbit meetup in S
36356 -
3736The next San Francisco meetup is on November 15th. [RSVP here](https://www.meetup.com/urbit-sf/events/266146513/).
3837
39−
40−Until next time.
38+Until next time.
content/updates/2019-12-06-update.md+6−8
@@ -2,7 +2,6 @@
22title = "~2019.12.6 Weekly Web Update"
33date = 2019-12-06
44description = "Weekly Web Update"
5−slug = "2019-12-06"
65[extra]
76author = ""
87ship = ""
@@ -18,15 +17,15 @@ We recently released urbit v0.10.0. This continuity-breaching release contains b
1817
1918A few release highlights:
2019
21−* Our networking vane, Ames, has been completely rewritten. Its protocol has been simplified, and several new features have been added to it. We expect Ames to be much more reliable and easy to upgrade.
20+- Our networking vane, Ames, has been completely rewritten. Its protocol has been simplified, and several new features have been added to it. We expect Ames to be much more reliable and easy to upgrade.
2221
23−* Perhaps most importantly, Ames now supports arbitrary-length negative acks, which was one of the primary networking bugs on our old network.
22+- Perhaps most importantly, Ames now supports arbitrary-length negative acks, which was one of the primary networking bugs on our old network.
2423
25−* Gall, our application sandbox, has also been significantly changed. This has also been a long-running project at Tlon that we’re really excited to get out on the live network. Gall itself is about a thousand lines shorter.
24+- Gall, our application sandbox, has also been significantly changed. This has also been a long-running project at Tlon that we’re really excited to get out on the live network. Gall itself is about a thousand lines shorter.
2625
27−* The concept of "threads" is introduced. These are temporary processes for operations whose state is transient, like an http request-response.
26+- The concept of "threads" is introduced. These are temporary processes for operations whose state is transient, like an http request-response.
2827
29−* Includes a full redesign of the Landscape chat interface, plus adds additional features for mobile use and easier join flows.
28+- Includes a full redesign of the Landscape chat interface, plus adds additional features for mobile use and easier join flows.
3029
3130Check out the full release notes [here](https://github.com/urbit/urbit/releases/tag/v0.10.0).
3231
@@ -39,5 +38,4 @@ The final San Francisco meetup of the year is on December 13th. We hope to see y
39384 -
4039The Seattle Urbit group is hosting a meetup on December 18th. [RSVP](https://www.meetup.com/Urbit-Seattle/events/266619060/) for tech and holiday cheer.
4140
42−
43−Talk to you soon!
41+Talk to you soon!
content/updates/2020-02-06-update.md+11−11
@@ -2,7 +2,6 @@
22title = "~2020.2.6 Update"
33date = 2020-02-06
44description = "A brief update from the Tlon team for ~2020.2.6."
5−slug = "2020-02-06"
65[extra]
76author = "Corrina"
87ship = "~roslet-tanner"
@@ -14,19 +13,20 @@ image = "https://media.urbit.org/site/posts/updates/~2020.02.06-update.jpg"
1413It’s been a busy 2020 already, and we’re excited about everything that’s going live this year. Here’s the latest from the Tlon team:
1514
16151. Last month’s updates to Arvo and Bridge included:
17−Fixes related to the network stability vote.
18−[Updates](https://github.com/urbit/urbit/pull/1996) to both Gall and Ames (our application sandbox and networking module, respectively).
19−[Support in Bridge](https://github.com/urbit/bridge/pull/335) for withdrawing stars from the linear release contracts.
16+ Fixes related to the network stability vote.
17+ [Updates](https://github.com/urbit/urbit/pull/1996) to both Gall and Ames (our application sandbox and networking module, respectively).
18+ [Support in Bridge](https://github.com/urbit/bridge/pull/335) for withdrawing stars from the linear release contracts.
2019
21202. Gavin (`~ridlur-figbud`) wrote about how we created sigils, the visual representation of Urbit IDs. Read the post [here](https://urbit.org/blog/creating-sigils/).
2221
23223. We’re pleased to announce the latest round of our semiannual gifts to Urbit contributors. It’s our way of rewarding the hard work of contributors to the project over the last six months. To see all the contributions we’ve recognized, take a look at the [History](https://grants.urbit.org/history) section on the Grants website.
24− - `~bannum-magtus` has been tireless in their efforts as a community Guide in the #ship-starting-support channel on our [Discord server](https://discord.gg/C9ENTt3), and as an Urbit evangelizer.
25− - `~nolmeg-hobdyn` could also be found nearly every day volunteering as a Guide in #ship-starting-support.
26− - `~minder-folden` was a deep font of Urbit-related content, outreach, and support.
27− - `~risruc-habteb` provided invaluable, consistent support in urbit-help.
28− - `~rabsef-bicrym` for their efforts to teach Hoon to the community.
29− - [`~dinleb-rambep`](https://github.com/pkova) brought a steady stream of useful contributions to the [urbit repository](https://github.com/urbit/urbit/pulls?utf8=%E2%9C%93&q=author%3Apkova).
23+
24+ - `~bannum-magtus` has been tireless in their efforts as a community Guide in the #ship-starting-support channel on our [Discord server](https://discord.gg/C9ENTt3), and as an Urbit evangelizer.
25+ - `~nolmeg-hobdyn` could also be found nearly every day volunteering as a Guide in #ship-starting-support.
26+ - `~minder-folden` was a deep font of Urbit-related content, outreach, and support.
27+ - `~risruc-habteb` provided invaluable, consistent support in urbit-help.
28+ - `~rabsef-bicrym` for their efforts to teach Hoon to the community.
29+ - [`~dinleb-rambep`](https://github.com/pkova) brought a steady stream of useful contributions to the [urbit repository](https://github.com/urbit/urbit/pulls?utf8=%E2%9C%93&q=author%3Apkova).
3030
31314. Looking for a more formal way to contribute and get rewarded? Look for a [Bounty](https://grants.urbit.org/bounties) to claim, or pitch a [Proposal](https://grants.urbit.org/proposals) of your own. We’re always on the lookout for community members who distinguish themselves through their contributions.
3232
@@ -38,4 +38,4 @@ Fixes related to the network stability vote.
3838
3939We’ve also scheduled a meetup in SF for [March 27](https://www.meetup.com/urbit-sf/events/268519156/). We hope to see you at one of these events!
4040
41−Until next time.
41+Until next time.
content/updates/2020-04-04-update.md+5−6
@@ -2,7 +2,6 @@
22title = "~2020.4.4 Update"
33date = 2020-04-04
44description = "A brief update from the Tlon team for ~2020.4.4."
5−slug = "2020-04-04"
65[extra]
76author = "Nicholas"
87ship = "~simfur-ritwed"
@@ -11,16 +10,16 @@ image = "https://media.urbit.org/site/posts/updates/~2020.04.04-update.jpg"
1110
1211![](https://media.urbit.org/site/posts/updates/~2020.04.04-update.jpg)
1312
14−We’ve had a big week. On Friday, we presented OS1 to the world. The event included both an interactive demo, and a panel of Tlon developers and designers talking about the thinking, and the deep roots of computing history, that lead up to this moment. Lots of you attended online and asked great questions; thanks for coming! If you missed our livestream of the OS1 release event, a video can be found [here](https://www.youtube.com/watch?v=71ViyftPkGk).
13+We’ve had a big week. On Friday, we presented OS1 to the world. The event included both an interactive demo, and a panel of Tlon developers and designers talking about the thinking, and the deep roots of computing history, that lead up to this moment. Lots of you attended online and asked great questions; thanks for coming! If you missed our livestream of the OS1 release event, a video can be found [here](https://www.youtube.com/watch?v=71ViyftPkGk).
1514
16−Urbit OS1 is designed as a flexible, user-owned tool for creating and living in communities. To that end, we’re giving out sets of Urbit address space to communities who’d like to use Urbit. [You can apply here.](https://urbit.org/community/community-grants/)
15+Urbit OS1 is designed as a flexible, user-owned tool for creating and living in communities. To that end, we’re giving out sets of Urbit address space to communities who’d like to use Urbit. [You can apply here.](https://urbit.org/community/community-grants/)
1716
18−If you’re a Hoon School graduate, we’ve got a big announcement: The inaugural Hoon School Hackathon, a free-form competition in which participants will have a month to create the coolest Urbit-related projects they can, runs from Friday, April 3 to Monday, May 4. A total of 22 stars are being given away to those who submit the best projects in this timespan. The Hackathon is only available to those who have graduated from a session of Hoon School. We’ll be sending an email out to everyone who is eligible.
17+If you’re a Hoon School graduate, we’ve got a big announcement: The inaugural Hoon School Hackathon, a free-form competition in which participants will have a month to create the coolest Urbit-related projects they can, runs from Friday, April 3 to Monday, May 4. A total of 22 stars are being given away to those who submit the best projects in this timespan. The Hackathon is only available to those who have graduated from a session of Hoon School. We’ll be sending an email out to everyone who is eligible.
1918
2019Haven’t done Hoon School? Don’t worry! We will be running more hackathons in the future, at least two a year. The next Hoon School session begins on Monday the 6th, so there’s still time to sign up. Go to [urbit.org/community/hoonschool/](https://urbit.org/community/hoonschool/) to enroll.
2120
2221OS1 is for [homesteaders and tinkerers](https://urbit.org/understanding-urbit/roadmap/). It’s profoundly new. It’s not our final destination, but it’s an important and foundational tool for getting there. And it’s a big leap towards allowing individuals and communities to use it for their needs. There’s already a growing constellation of public communities on Urbit. When you’re ready to launch OS1, check out our [install guide](https://urbit.org/getting-started/).
2322
24−If you need a planet, you can buy one from [Urbit Live](https://urbit.live).
23+If you need a planet, you can buy one from [Urbit Live](https://urbit.live).
2524
26−For updates on OS1 and the Urbit project in general, we encourage you to follow us on [GitHub](https://github.com/urbit) and [Twitter](https://twitter.com/urbit)!
25+For updates on OS1 and the Urbit project in general, we encourage you to follow us on [GitHub](https://github.com/urbit) and [Twitter](https://twitter.com/urbit)!
content/updates/2020-06-15-update.md+17−24
@@ -2,7 +2,6 @@
22title = "~2020.6.15 Update"
33date = 2020-06-15
44description = "A brief update from Tlon for ~2020.6.15"
5−slug = "2020-06-15"
65[extra]
76author = ""
87ship = "~roslet-tanner"
@@ -13,33 +12,29 @@ image = "https://media.urbit.org/site/posts/updates/~2020.06.15-update.jpg"
1312
1413Hello, friends. I hope you’re all staying safe and healthy. We at Tlon are still working from home, and we have a lot to report. Here’s a brief update:
1514
16−1 -
15+1 -
1716
1817The results of the first-ever Urbit Hackathon are in and we’re really excited about them. You can read more about the winning projects [on the blog](https://urbit.org/blog/hackathon-results/).
1918
2019We decided to keep this first one just to Hoon School graduates, but we’re already planning another one that will be open to everyone later this year.
21−
22−
20+
23212 -
24−
22+
2523We’ve got two exciting lines of work coming together right now. The first is “Ford Fusion,” the next step in the evolution of our build system. This new design will alleviate a lot of the pain around OTAs (over the air updates), allowing us to upgrade ships more seamlessly. The second is a new version of our runtime daemon, this time implemented in Haskell. Moving to Haskell will create more surface area for contributions (versus our current, idiosyncratic C implementation). Shipping along with this latter will be improvements to our IPC protocol, the cause of many subtle runtime headaches.
26−
27−
28−3 -
29−
24+
25+3 -
26+
3027The Urbit Community group has been fun and engaging lately. If you’ve booted your Urbit and haven’t joined, we encourage it. We’re there talking about the future of Urbit, core development, and all things Urbit adjacent and related. Ask for an invite in /urbit-help once you’ve gotten [set up](https://urbit.org/getting-started).
31−
32−
33−4 -
34−
28+
29+4 -
30+
3531The Hoon School project is now in the capable hands of Urbit community members and they’re doing a fantastic job.
36−
37−[Hooniversity](https://hooniversity.org/), the new home of Hoon School, is run by `~rabsef-bicrym` and `~risruc-habteb`. Session 5 is now underway and session 6 is set to begin on August 1.
38−
39−If you’re interested in learning more and enrolling in the course, join the Hooniverse group via public channel `~/~hiddev-dannut/hooniverse`. You can also find them on Twitter as [hooniversity1](https://twitter.com/hooniversity1) or via email at join@hooniversity.org.
40−
41−
42−5 -
32+
33+[Hooniversity](https://hooniversity.org/), the new home of Hoon School, is run by `~rabsef-bicrym` and `~risruc-habteb`. Session 5 is now underway and session 6 is set to begin on August 1.
34+
35+If you’re interested in learning more and enrolling in the course, join the Hooniverse group via public channel `~/~hiddev-dannut/hooniverse`. You can also find them on Twitter as [hooniversity1](https://twitter.com/hooniversity1) or via email at join@hooniversity.org.
36+
37+5 -
4338
4439In case you missed it, we’ve been writing quite a bit in the past few months. Here’s the latest collection of posts:
4540
@@ -48,10 +43,8 @@ In case you missed it, we’ve been writing quite a bit in the past few months.
4843- `~simfur-ritwed` discussed [platform decay](https://urbit.org/blog/platform-decay/) and explored how Urbit stars can facilitate a [flexible continuum](https://urbit.org/blog/the-missing-middle/) of community norms.
4944- `~patnes-rigtyn` and `~ravmel-ropdyl` are writing a three-part series on the value of Urbit address space. Parts [1](https://urbit.org/blog/value-of-address-space-pt1/) and [2](https://urbit.org/blog/value-of-address-space-pt2/) are available now.
5045
46+6 -
5147
52−6 -
48+We’re always happy to give contributors address space to work on Urbit projects. Find a [Bounty](https://grants.urbit.org/bounties) to claim, or pitch a [Proposal](https://grants.urbit.org/proposals) of your own.
5349
54−We’re always happy to give contributors address space to work on Urbit projects. Find a [Bounty](https://grants.urbit.org/bounties) to claim, or pitch a [Proposal](https://grants.urbit.org/proposals) of your own.
55−
56−
5750Until next time!
content/updates/2020-07-27-update.md+3−4
@@ -2,7 +2,6 @@
22title = "A brief update from Tlon"
33date = 2020-07-27
44description = "A brief update from Tlon for ~7.27.2020"
5−slug = "/updates/2020-07-27"
65[extra]
76author = ""
87ship = "~roslet-tanner"
@@ -31,9 +30,9 @@ We’re also beginning to plan our next slate of work: we are preparing to make
3130<br>
3231
3332Reminder: Hoon School begins August 1
34−
33+
3534[Hooniversity](https://hooniversity.org/) is the new home of Hoon School run by `~rabsef-bicrym` and `~risruc-habteb`. To enroll, visit hooniversity.org or email join@hooniversity.org
36−
35+
3736You can also join the Hooniverse group via public channel `~/~hiddev-dannut/hooniverse`and follow them on Twitter @hooniversity1
38−
37+
3938That’s all for now!
content/updates/2020-09-30-update.md−1
@@ -2,7 +2,6 @@
22title = "A brief update from Tlon"
33date = 2020-09-30
44description = "A brief update from Tlon for ~9.30.2020"
5−slug = "/updates/2020-09-30"
65[extra]
76author = ""
87ship = "~ravmel-ropdyl"
content/updates/2020-10-29-update.md−1
@@ -2,7 +2,6 @@
22title = "A brief update from Tlon + urbit.org"
33date = 2020-10-29
44description = "A brief update from Tlon and urbit.org for ~10.29.2020"
5−slug = "/updates/2020-10-29"
65[extra]
76author = ""
87ship = "~roslet-tanner + ~wolref-podlex"
content/updates/2020-12-01-update.md−1
@@ -2,7 +2,6 @@
22title = "A brief update from urbit.org"
33date = 2020-10-29
44description = "A brief update from urbit.org for ~12.1.2020"
5−slug = "/updates/2020-12-1"
65[extra]
76author = ""
87ship = "~wolref-podlex"
content/updates/2021-01-15-update.md−1
@@ -2,7 +2,6 @@
22title = "A brief update from urbit.org"
33date = 2021-01-15
44description = "A brief update from urbit.org for ~1.15.2021"
5−slug = "/updates/2021-01-15"
65[extra]
76author = ""
87ship = "~wolref-podlex"
content/updates/2021-02-19-update.md−1
@@ -2,7 +2,6 @@
22title = "A brief update from urbit.org"
33date = 2021-02-19
44description = "A brief update from urbit.org for ~2.19.2021"
5−slug = "/updates/2021-02-19"
65[extra]
76author = ""
87ship = "~wolref-podlex"
content/updates/2021-04-01-update.md−1
@@ -2,7 +2,6 @@
22title = "A brief update from urbit.org and Tlon"
33date = 2021-04-01
44description = "A brief update from urbit.org and Tlon for ~4.1.2021"
5−slug = "/updates/2021-04-01"
65[extra]
76author = ""
87ship = "~wolref-podlex + ~roslet-tanner"
content/updates/2021-05-05-update.md−1
@@ -2,7 +2,6 @@
22title = "A brief update from urbit.org"
33date = 2021-05-05
44description = "A brief update from urbit.org for ~5.5.2021"
5−slug = "/updates/2021-05-05"
65[extra]
76author = ""
87ship = "~wolref-podlex"
content/updates/2021-06-16-update.md−1
@@ -2,7 +2,6 @@
22title = "A brief update from urbit.org"
33date = 2021-06-16
44description = "A brief update from urbit.org for ~6.16.2021"
5−slug = "/updates/2021-06-16"
65[extra]
76author = ""
87ship = "~tirwyd-sarmes"
content/updates/_index.mddeleted−6
@@ -1,6 +0,0 @@
1−+++
2−title = "Updates"
3−sort_by = "date"
4−template = "updates/list.html"
5−aliases = ["/blog/weekly-updates/"]
6−+++
lib/constants.js+9−7
@@ -1,8 +1,10 @@
11export const contact = {
2− name: "Urbit",
3− email: "support@urbit.org",
4− twitter: "https://twitter.com/urbit",
5− github: "https://github.com/urbit/urbit",
6− discord: "https://discord.gg/Mae2bk7",
7− urbitCommunity: "~bitbet-bolbel/urbit-community",
8−}
2+ name: "Urbit",
3+ email: "support@urbit.org",
4+ twitter: "https://twitter.com/urbit",
5+ github: "https://github.com/urbit/urbit",
6+ discord: "https://discord.gg/Mae2bk7",
7+ urbitCommunity: "~bitbet-bolbel/urbit-community",
8+ newsletter:
9+ "https://urbit.us11.list-manage.com/subscribe/post?u=972a03db9e0c6c25bb58de8c8&amp;id=be143888d2",
10+};
lib/lib.js+1−15
@@ -11,6 +11,7 @@ const directories = {
1111 docs: join(process.cwd(), "content/docs"),
1212 grants: join(process.cwd(), "content/grants"),
1313 media: join(process.cwd(), "content/media"),
14+ updates: join(process.cwd(), "content/updates"),
1415 "/": join(process.cwd(), "content"),
1516};
1617
@@ -302,21 +303,7 @@ export function getOpenGrantsCount() {
302303 return count;
303304}
304305
305−// export function getGrantsByCategory(category, num) {
306−// const paths = fs.readdirSync(directories.grants);
307−// const matches = paths
308−// // Get only markdown files
309−// .filter((path) => parse(path).ext === ".md")
310−// // Parse frontmatter
311−// .map((path) =>
312−// matter(fs.readFileSync(join(directories.grants, path)), options)
313−// )
314−// .filter(grant => grant.data.taxonomies.grant_type === category)
315−// return matches
316−// }
317−
318306export function getSimilarGrants(type, category, num) {
319− // const paths = getAllPosts(directories.grants);
320307 const bestMatches = getAllPosts(
321308 ["title", "slug", "date", "description", "extra", "taxonomies"],
322309 "grants"
@@ -340,7 +327,6 @@ export function getSimilarGrants(type, category, num) {
340327 })
341328 .sort((a, b) => a.typeWeight + a.tagWeight - b.typeWeight + b.tagWeight)
342329 .map((wrappedGrant) => {
343− // wrappedGrant.grant.date = JSON.stringify(wrappedGrant.grant.date).replace(/\"/g, "");
344330 return wrappedGrant.grant;
345331 });
346332
pages/blog.js+3−2
@@ -7,6 +7,7 @@ import SingleColumn from "../components/SingleColumn";
77import BackgroundImage from "../components/BackgroundImage";
88import Section from "../components/Section";
99import { getAllPosts, formatDate } from "../lib/lib";
10+import { contact } from "../lib/constants";
1011
1112export default function Blog({ posts, search }) {
1213 return (
@@ -24,8 +25,8 @@ export default function Blog({ posts, search }) {
2425 and the many people contributing to Urbit.
2526 </p>
2627 <p>
27− Subscribe to the Urbit Newsletter for regular updates, including
28− new blog posts and events.
28+ <a href={contact.newsletter}>Subscribe</a> to the Urbit Newsletter
29+ for regular updates, including new blog posts and events.
2930 </p>
3031 </div>
3132 </Section>
pages/events.js+18−13
@@ -9,6 +9,7 @@ import SingleColumn from "../components/SingleColumn";
99import Section from "../components/Section";
1010import BackgroundImage from "../components/BackgroundImage";
1111import { getAllPosts, formatDate } from "../lib/lib";
12+import { contact } from "../lib/constants";
1213
1314export function EventCard({ event, dir, className }) {
1415 // Event tiles have a 'dark mode' used when their background images are dark and white text is needed for legibility.
@@ -58,7 +59,7 @@ export function EventCard({ event, dir, className }) {
5859 );
5960}
6061
61−export default function Events({ pastEvents, currentEvents, search }) {
62+export default function Events({ pastEvents, comingSoon, search }) {
6263 return (
6364 <Container>
6465 <Head>
@@ -73,21 +74,25 @@ export default function Events({ pastEvents, currentEvents, search }) {
7374 Events of all kinds: In-person, Remote, and Recorded.
7475 </p>
7576 <p>
76− Subscribe to the Urbit Newsletter for regular updates, including
77− new blog posts and events.
77+ <a href={contact.newsletter}>Subscribe</a> to the Urbit Newsletter
78+ for regular updates, including new blog posts and events.
7879 </p>
7980 </div>
8081 </Section>
81− <Section narrow>
82− <div className="mb-8 table">
83− <span className="bg-green text-white badge-lg">Coming Soon</span>
84− </div>
85− {currentEvents.map((post) => {
86− return <EventCard event={post} />;
87− })}
88− </Section>
8982
9083 <Section narrow>
84+ {comingSoon.length > 0 ? (
85+ <>
86+ <div className="mb-8 table">
87+ <span className="bg-green text-white badge-lg">
88+ Coming Soon
89+ </span>
90+ </div>
91+ {comingSoon.map((post) => {
92+ return <EventCard event={post} />;
93+ })}
94+ </>
95+ ) : null}
9196 <div className="mb-8 table">
9297 <span className="bg-wall text-gray badge-lg">Past Events</span>
9398 </div>
@@ -106,9 +111,9 @@ export async function getStaticProps() {
106111
107112 // NB Gavin: This logic can change based on how we want to separate past vs current events
108113 const pastEvents = posts.filter((post) => !post.extra.pinned);
109− const currentEvents = posts.filter((post) => post.extra.pinned);
114+ const comingSoon = posts.filter((post) => post.extra.pinned);
110115
111116 return {
112− props: { pastEvents, currentEvents },
117+ props: { pastEvents, comingSoon },
113118 };
114119}
pages/events/[slug].js+2−6
@@ -29,10 +29,6 @@ export default function Event({
2929 markdown,
3030 search,
3131}) {
32− const router = useRouter();
33− if (!router.isFallback && !post?.slug) {
34− return <ErrorPage />;
35− }
3632 return (
3733 <Container>
3834 <SingleColumn>
@@ -51,14 +47,14 @@ export default function Event({
5147 {formatDate(new Date(post.date))}
5248 </div>
5349 </Section>
54− <Section narrow>
50+ <Section short wide>
5551 {post.extra.youtube ? (
5652 <iframe
5753 className="rounded-xl"
5854 width="100%"
5955 height="640px"
6056 src={`https://www.youtube.com/embed/${post.extra.youtube}`}
61− frameborder="0"
57+ frameBorder="0"
6258 allow="encrypted-media"
6359 allowfullscreen
6460 ></iframe>
pages/index.js+13−11
@@ -97,8 +97,8 @@ export default function Home({ posts, events, openGrantsCount, search }) {
9797 // Grants
9898 }
9999 <Section narrow>
100− <div className="flex flex-col md:flex-row md:items-center items-start measure pb-12">
101− <h2 className="m-0 p-0 mr-4 md:mb-0 mb-4">Grants</h2>
100+ <div className="flex items-center pb-12">
101+ <h2 className="m-0 p-0 mr-4">Grants</h2>
102102 <Link href="/grants">
103103 <a className="bg-green text-white badge-lg">
104104 {openGrantsCount} Open
@@ -155,7 +155,7 @@ export default function Home({ posts, events, openGrantsCount, search }) {
155155 </p>
156156 <p className="pb-12">
157157 The entire OS is a{" "}
158− <Link href="">
158+ <Link href="https://urbit.org/docs/nock/definition/">
159159 <a>single pure function</a>
160160 </Link>{" "}
161161 that provides application developers with strong guarantees:
@@ -164,18 +164,20 @@ export default function Home({ posts, events, openGrantsCount, search }) {
164164 </p>
165165 <p className="pb-12">
166166 You can get started learning how to{" "}
167− <Link href="">
167+ <Link href="https://urbit.org/docs/development/develop/">
168168 <a>contribute to the project</a>
169169 </Link>
170170 , or view a variety of{" "}
171− <Link href="">
171+ <Link href="https://github.com/urbit/awesome-urbit#http-apis-airlock">
172172 <a>libraries</a>
173173 </Link>{" "}
174174 for building on Urbit using the languages you already know.
175175 </p>
176− <button className="button-lg type-ui text-white bg-black">
177− Read the Developer Docs
178− </button>
176+ <Link href="/docs">
177+ <button className="button-lg type-ui text-white bg-ultraDeepWall">
178+ Read the Developer Docs
179+ </button>
180+ </Link>
179181 </div>
180182 </Section>
181183
@@ -226,7 +228,7 @@ export default function Home({ posts, events, openGrantsCount, search }) {
226228 />
227229 <div>
228230 <Link href="/blog">
229− <button className="button-lg type-ui text-white bg-black">
231+ <button className="button-lg type-ui text-white bg-ultraDeepWall">
230232 Read More
231233 </button>
232234 </Link>
@@ -255,7 +257,7 @@ export default function Home({ posts, events, openGrantsCount, search }) {
255257 />
256258 <div>
257259 <Link href="/events">
258− <button className="button-lg type-ui text-white bg-black">
260+ <button className="button-lg type-ui text-white bg-ultraDeepWall">
259261 More Events
260262 </button>
261263 </Link>
@@ -296,7 +298,7 @@ export default function Home({ posts, events, openGrantsCount, search }) {
296298 </h4>
297299 <div className="mt-4 flex flex-wrap items-baseline">
298300 <h4 className="mr-2">Boot Urbit and join</h4>
299− <code className="bg-wall p-2 rounded-lg">
301+ <code className="bg-wall p-2 mt-2 md:mt-0 rounded-lg">
300302 {contact.urbitCommunity}
301303 </code>
302304 </div>
pages/updates.jsnew file+81
@@ -0,0 +1,81 @@
1+import Head from "next/head";
2+import Link from "next/link";
3+import Container from "../components/Container";
4+import Footer from "../components/Footer";
5+import Header from "../components/Header";
6+import SingleColumn from "../components/SingleColumn";
7+import BackgroundImage from "../components/BackgroundImage";
8+import Section from "../components/Section";
9+import { getAllPosts, formatDate } from "../lib/lib";
10+import { contact } from "../lib/constants";
11+
12+export default function Blog({ posts, search }) {
13+ return (
14+ <Container>
15+ <Head>
16+ <title>Urbit • Updates</title>
17+ </Head>
18+ <SingleColumn>
19+ <Header search={search} />
20+ <Section narrow>
21+ <div className="measure">
22+ <h1 className="pb-16">Updates</h1>
23+ <p className="pb-6">
24+ Stories from the broader Urbit community, the Urbit Foundation,
25+ and the many people contributing to Urbit.
26+ </p>
27+ <p>
28+ <a href={contact.newsletter}>Subscribe</a> to the Urbit Newsletter
29+ for regular updates, including new blog posts and events.
30+ </p>
31+ </div>
32+ </Section>
33+ <Section narrow>
34+ {posts.map((post) => {
35+ console.log(post);
36+ return (
37+ <div key={post.slug} className="mb-24 cursor-pointer">
38+ <Link href={`/updates/${post.slug}`}>
39+ <div>
40+ <h3 className="mt-4">{post.title}</h3>
41+ <div className="flex items-baseline">
42+ {post?.extra.author ? (
43+ <div className="type-ui text-gray mt-4">
44+ {post?.extra.author}
45+ </div>
46+ ) : null}
47+ {post?.extra.author && post?.extra.ship ? (
48+ <div className="mx-1 text-gray">•</div>
49+ ) : null}
50+ {post?.extra.ship ? (
51+ <div className="type-ui text-gray font-mono">
52+ {post.extra.ship}
53+ </div>
54+ ) : null}
55+ </div>
56+
57+ <div className="type-ui text-gray mt-2">
58+ {formatDate(new Date(post.date))}
59+ </div>
60+ </div>
61+ </Link>
62+ </div>
63+ );
64+ })}
65+ </Section>
66+ </SingleColumn>
67+ <Footer />
68+ </Container>
69+ );
70+}
71+
72+export async function getStaticProps() {
73+ const posts = getAllPosts(
74+ ["title", "slug", "date", "description", "extra"],
75+ "updates"
76+ );
77+
78+ return {
79+ props: { posts },
80+ };
81+}
pages/updates/[slug].jsnew file+162
@@ -0,0 +1,162 @@
1+import { useRouter } from "next/router";
2+import {
3+ getPostBySlug,
4+ getAllPosts,
5+ getNextPost,
6+ getPreviousPost,
7+ formatDate,
8+} from "../../lib/lib";
9+import Head from "next/head";
10+import Link from "next/link";
11+import ErrorPage from "../404";
12+import Container from "../../components/Container";
13+import Markdown from "../../components/Markdown";
14+import Header from "../../components/Header";
15+import Footer from "../../components/Footer";
16+import BackgroundImage from "../../components/BackgroundImage";
17+import SingleColumn from "../../components/SingleColumn";
18+import Section from "../../components/Section";
19+import NewsletterSignup from "../../components/NewletterSignup";
20+import PostPreview from "../../components/PostPreview";
21+import { name, contact } from "../../lib/constants";
22+import markdownStyles from "../../styles/markdown.module.css";
23+import { decode } from "html-entities";
24+
25+export default function Post({
26+ post,
27+ nextPost,
28+ previousPost,
29+ markdown,
30+ search,
31+}) {
32+ const router = useRouter();
33+ if (!router.isFallback && !post?.slug) {
34+ return <ErrorPage />;
35+ }
36+ return (
37+ <Container>
38+ <SingleColumn>
39+ <Header search={search} />
40+ <Section short narrow>
41+ <h1>{post.title}</h1>
42+ {post.author ? (
43+ <div className="type-ui text-gray mt-4 md:mt-8 lg:mt-10">
44+ {post.author}
45+ </div>
46+ ) : null}
47+ {post.ship ? (
48+ <div className="type-ui text-gray font-mono">{post.ship}</div>
49+ ) : null}
50+ <div className="type-ui text-gray mt-4 md:mt-8 lg:mt-10">
51+ {formatDate(new Date(post.date))}
52+ </div>
53+ </Section>
54+ <Section narrow className={markdownStyles["markdown"]}>
55+ <article
56+ dangerouslySetInnerHTML={{ __html: decode(markdown) }}
57+ ></article>
58+ </Section>
59+ <Section narrow>
60+ <div className="measure">
61+ <h4 className="pb-6">
62+ If you’d like to follow our progress, we send monthly updates via
63+ email:
64+ </h4>
65+ </div>
66+ <NewsletterSignup color="black" />
67+ <h4 className="mt-12 text-gray">
68+ Follow us on{" "}
69+ <a className="text-black" href={contact.twitter}>
70+ Twitter
71+ </a>
72+ </h4>
73+ <h4 className="mt-6 text-gray">
74+ Explore code on{" "}
75+ <a className="text-black" href={contact.github}>
76+ Github
77+ </a>
78+ </h4>
79+ <h4 className="mt-6 text-gray">
80+ Ask questions in our{" "}
81+ <a className="text-black" href={contact.discord}>
82+ Discord
83+ </a>
84+ </h4>
85+ <h4 className="mt-6 text-gray">
86+ Boot Urbit and join{" "}
87+ <code className="bg-wall p-2 rounded-lg">
88+ {contact.urbitCommunity}
89+ </code>
90+ </h4>
91+ </Section>
92+ <Section wide className="flex">
93+ {
94+ // {previousPost === null ? (
95+ // <div className={"w-1/2 mr-4"} />
96+ // ) : (
97+ // <PostPreview
98+ // title="Previous Post"
99+ // post={previousPost}
100+ // className="mr-4 w-1/2"
101+ // />
102+ // )}
103+ // {nextPost === null ? (
104+ // <div className={"w-1/2 ml-4"} />
105+ // ) : (
106+ // <PostPreview
107+ // title="Next Post"
108+ // post={nextPost}
109+ // className="ml-4 w-1/2"
110+ // />
111+ // )}
112+ }
113+ </Section>
114+ </SingleColumn>
115+ <Footer />
116+ </Container>
117+ );
118+}
119+
120+//
121+export async function getStaticProps({ params }) {
122+ const nextPost =
123+ getNextPost(
124+ params.slug,
125+ ["title", "slug", "date", "description"],
126+ "updates"
127+ ) || null;
128+
129+ const previousPost =
130+ getPreviousPost(
131+ params.slug,
132+ ["title", "slug", "date", "description"],
133+ "updates"
134+ ) || null;
135+
136+ const post = getPostBySlug(
137+ params.slug,
138+ ["title", "slug", "date", "description", "content", "author", "ship"],
139+ "updates"
140+ );
141+
142+ const markdown = await Markdown({ post });
143+
144+ return {
145+ props: { post, markdown, nextPost, previousPost },
146+ };
147+}
148+
149+export async function getStaticPaths() {
150+ const posts = getAllPosts(["slug", "date"], "updates");
151+
152+ return {
153+ paths: posts.map((post) => {
154+ return {
155+ params: {
156+ slug: post.slug,
157+ },
158+ };
159+ }),
160+ fallback: false,
161+ };
162+}
styles/globals.css+5−1
@@ -43,7 +43,7 @@ h4,
4343
4444p,
4545.type-p {
46− @apply text-base md:text-lg lg:text-xl;
46+ @apply text-base md:text-lg lg:text-xl leading-relaxed;
4747}
4848
4949.type-sub {
@@ -67,6 +67,10 @@ button {
6767 height: 38rem;
6868}
6969
70+.preview-tile-height {
71+ @apply h-96;
72+}
73+
7074.button-sm {
7175 @apply flex px-4 py-1 rounded-lg type-ui;
7276}
styles/markdown.module.css+1−1
@@ -40,7 +40,7 @@
4040}
4141
4242.markdown p {
43− @apply text-base md:text-lg lg:text-xl;
43+ @apply text-base md:text-lg lg:text-xl leading-relaxed;
4444}
4545
4646.markdown img {