on master help sign in
Merge branch 'master' into mp/footer-component
commitc386dd088cb8dc9604e6bcad65f6de12432d5385 authorMatilde Park <matilde.park@urbit.org> dateTue 28 Jun 2022, 15:02 (4 years ago) parent04813c11a1b45c
17 files changed+695−180
components/EventPreview.js+1−1 content/applications/~mister-dozzod-dalten/gora.md → content/applications/~dalten/gora.md+1−1 content/applications/~dister-fabnev-hinmur/escape.md → content/applications/~fabnev-hinmur/escape.md+3−1 content/applications/~dister-fabnev-hinmur/handshake.md → content/applications/~fabnev-hinmur/handshake.md+3−1 content/applications/~livdel-binmun-lomder-librun/ballot.md → content/applications/~lomder-librun/ballot.md+1−1 content/applications/~dister-norsyr-torryn/canvas.md → content/applications/~norsyr-torryn/canvas.md content/events/2022-07-08-urbit-fireside-chat-1.md+19 content/grants/meetup-bom.md+2−2 content/grants/nested-goals.md+128 content/grants/value-articles.md+6−2 content/grants/volt-ui.md+52 content/groups/~wolref-podlex/foundation.md+10 content/ids/wolref-podlex.md+1 content/using/os/dist-faq.md−162 content/using/os/dojo-tools.md+417 pages/index.js+28−7 vercel.json+23−2
components/EventPreview.js+1−1
@@ -6,7 +6,7 @@ import classNames from "classnames";
66
77export default function EventPreview({ event, className, big }) {
88 // Event tiles have a 'dark mode' used when their background images are dark and white text is needed for legibility.
9− const grayText = event?.dark ? "text-washedWhite" : "text-wall-400";
9+ const grayText = event?.dark ? "text-white" : "text-wall-400";
1010 const blackText = event?.dark ? "text-white" : "text-wall-600";
1111
1212 const starts = generateDisplayDate(event.starts, event.timezone);
content/applications/~mister-dozzod-dalten/gora.md → content/applications/~dalten/gora.mdrenamed+1−1
@@ -1,6 +1,6 @@
11+++
22title = "Gora - ピタゴラ装置"
3−developer = "Dalten"
3+developer = "~dalten"
44shortcode = "~mister-dozzod-dalten/gora"
55description = "A Proof of Attendance Protocol for Urbit"
66license = "MIT"
content/applications/~dister-fabnev-hinmur/escape.md → content/applications/~fabnev-hinmur/escape.mdrenamed+3−1
@@ -1,6 +1,6 @@
11+++
22title = "EScape"
3−developer = "dister-fabnev-hinmur"
3+developer = "~fabnev-hinmur"
44shortcode = "~dister-fabnev-hinmur/escape"
55description = "EScape from Eternal September. The UI from Uqbar."
66license = "MIT"
@@ -8,3 +8,5 @@ website = "https://uqbar.network"
88bgColor = "#f2f3ef"
99image = "https://escape-app-dist.s3.us-east-2.amazonaws.com/uqbar-logo.png"
1010+++
11+
12+An alternative interface to Tlon's groups app. Get it on [iOS](https://apps.apple.com/my/app/escape-by-uqbar/id1610194217) and [Android](https://play.google.com/store/apps/details?id=network.uqbar.escape).
content/applications/~dister-fabnev-hinmur/handshake.md → content/applications/~fabnev-hinmur/handshake.mdrenamed+3−1
@@ -1,6 +1,6 @@
11+++
22title = "Handshake"
3−developer = "~dister-fabnev-hinmur"
3+developer = "~fabnev-hinmur"
44shortcode = "~dister-fabnev-hinmur/handshake"
55description = "Confirm Urbit IDs via QR code."
66license = "MIT"
@@ -8,3 +8,5 @@ website = "https://uqbar.network"
88bgColor = "#df828b"
99image = "https://static.thenounproject.com/png/2002633-200.png"
1010+++
11+
12+An app for building guestlists of Urbit IDs and verifying their ownership at the door. For best experience, access from [EScape](https://urbit.org/applications/~fabnev-hinmur/escape).
content/applications/~livdel-binmun-lomder-librun/ballot.md → content/applications/~lomder-librun/ballot.mdrenamed+1−1
@@ -1,5 +1,5 @@
11+++
2−title = "ballot"
2+title = "Ballot"
33shortcode = "~livdel-binmun-lomder-librun/ballot"
44license = "MIT"
55image = "https://lomder-librun.sfo3.digitaloceanspaces.com/tiles/ballot-app-tile.svg"
content/applications/~dister-norsyr-torryn/canvas.md → content/applications/~norsyr-torryn/canvas.mdrenamed

The content is the same.

content/events/2022-07-08-urbit-fireside-chat-1.mdnew file+19
@@ -0,0 +1,19 @@
1++++
2+title = "Urbit Fireside Chat #1"
3+starts = "2022-07-08T10:00:00"
4+ends = "2022-07-08T11:00:00"
5+timezone = "America/Los_Angeles"
6+location = "Online Event"
7+image = "https://storage.googleapis.com/media.urbit.org/site/events/fireside-chat-1.jpg"
8+registration_url = "https://www.meetup.com/urbit-sf/events/286771848/"
9+description = ""
10+dark = true
11+youtube = "3un5Otz6h3I"
12+
13+[[hosts]]
14+name = "Josh Lehman"
15+patp = "~wolref-podlex"
16+
17++++
18+
19+~wolref-podlex of the Urbit Foundation will be holding monthly “Fireside Chats” to share what’s going on at the Urbit Foundation and network more broadly, and take questions from the community. If you have a suggestion for a topic or already have a question in mind you can ask it [here](https://airtable.com/shrAH7d8CAPtp62IA).
content/grants/meetup-bom.md+2−2
@@ -7,10 +7,10 @@ grant_category = ["Community"]
77[extra]
88image = ""
99description = "Provide meetup bounty hunters with the persuasive narratives and content"
10−reward = "6 stars"
10+reward = "3 stars"
1111assignee = "~sarlev-sarsen"
1212grant_id = "P0093"
13−completed = false
13+completed = true
1414canceled = false
1515link = ""
1616+++
content/grants/nested-goals.mdnew file+128
@@ -0,0 +1,128 @@
1++++
2+title = "%nested-goals"
3+date = "2022-06-22"
4+[taxonomies]
5+grant_type = ["Proposal"]
6+grant_category = ["App Dev"]
7+[extra]
8+image = ""
9+description = "Urbit application for invidividual and social management of high-level goals and their tasks"
10+reward = "3 stars"
11+champion = "~tacryt-socryp"
12+assignee = "~niblyx-malnus"
13+grant_id = "P0170"
14+completed = false
15+canceled = false
16+link = ""
17++++
18+
19+# Project Description
20+## Main Structure
21+- Every goal is an independent, uniquely identifiable, and self-contained unit.
22+- Every goal should be able to be succinctly summarized in a short sentence or two, much like a commit message.
23+- Every goal describes the transformation of the current state of the universe into a new desired future state. A goal is a description of this desired future state. A goal can also be a description of a set of criteria and a prescription for the means of evaluating whether these criteria have been met in a given state.
24+- Goals can be related to one another in two ways:
25+ - *Precedence*, which describes a relationship in time. When one goal precedes another, the state described by the second goal can only be achieved after passing through the state described by the first goal.
26+ - *Containment*, which describes the natural human tendency to hierarchically nest goals which exist at different levels of abstraction, ranging from the scale of the existential to the scale of fine motor movements. When Goal A contains Goal B, several things are implied. It is implied that we must pass through the state described by Goal B before getting to the state described by Goal A; in other words Goal B precedes Goal A. It is implied that Goal B is part of the same effort as Goal A. And it is implied that Goal B is a goal on a smaller scale than Goal A.
27+- All goals are preceded by the goals which they contain.
28+- Goals can precede other goals without being contained by them.
29+- Precedence is transitive.
30+- Goals are not allowed to precede themselves.
31+- Goals can be nested arbitrarily deep in a tree-like manner. Goals can contain subgoals can contain subgoals can contain subgoals. (Whether goals can be contained by multiple other goals may be revisited, but for simplicity here we assume only a single parent goal.)
32+- All uncontained goals are by default nested directly under the ultimate goal: the Pursuit of the Good and the Beautiful, or PGB for short.
33+- Goals can and should have deadlines. These deadlines are inherited by preceding goals as an upper bound on their deadlines. The deadline for a preceding goal can be earlier than the deadline for a succeeding goal, but it cannot be later.
34+- We can leverage this structure to harvest tasks. For any given goal, we can easily identify all the existing unpreceded goals which precede it. These should ideally represent all goals which can be tackled immediately.
35+- POTENTIALLY: Goals can contain arbitrary amounts of metadata, including perhaps longer written descriptions, links to other documents, rankings of importance…
36+- POTENTIALLY: %graph-store nodes can be extracted as goals and incorporated into the existing goal data structure. (suggested by `~sarlev-sarsen`)
37+- POTENTIALLY: Goals can be sorted according to their urgency (time left until their deadline), procrastination (time elapsed since their initial creation), and many other criteria…
38+- Goals can be marked completed. Goals can also be deleted. In either case, they are archived.
39+- Goals can be marked actionable. Actionable goals cannot have subgoals. (suggested by `~midlev-mindyr`)
40+- POTENTIALLY: existing goals with no actionable subgoals will prompt you to add subgoals. (suggested by `~midlev-mindyr`)
41+## Beyond a Single Person
42+- Each goal must be owned by a single identity. The owner of a goal can control who is able to view it, who is able to edit it, etc.
43+- The owner of a goal also owns all goals contained by that goal. In other words, for any goal, there is a single person who is completely responsible for it at every level of abstraction.
44+- Goals owned by different people can have precedence relationships, but not containment relationships.
45+- Goal ownership can be transferred. If this creates a containment relationship between two goals owned by different people, this relationship is transformed into a simple precedence relationship.
46+- Precedence relationships are created by the owner of the succeeding goal and not the owner of the preceding goal.
47+- The owner of a goal can delegate that goal to one or more other identities, giving them permissions to edit the goal, add subgoals, modify the deadline, or mark the goal complete. Delegation is not the same as ownership transfer.
48+- The delegatee(s) can in turn delegate subgoals. Ultimately, all decisions made by delegatees can be overridden by decisions made by delegators, with the ultimate power over any goal being held by the goal owner.
49+- POTENTIALLY: Goal deadlines can be synced with ucal or other urbit calendar apps.
50+## Possible Implications
51+- A simple way for an individual person to dynamically create and manage goals.
52+- A natural way for goals to extend beyond a single person and grow with a group.
53+- Useful for cathedrals. Useful for bazaars. Useful for all manner of cathedral-bazaar hybrids.
54+## Why Me
55+I have a background in computer science. This is probably not necessary, but has been useful for getting familiar with Urbit.
56+I am excited to implement this project because (1) I intend to use it myself and (2) I want to learn how to build on Urbit.
57+The project shouldn't require any expertise beyond familiarity with Hoon, Gall, and whatever else is involved in the Urbit app building stack.
58+I have also begun development of a 'Milestone 0' as a proof of concept, available on [github here](https://github.com/niblyx-malnus/nested-goals).
59+### Original Goals for Milestone 0
60+A basic CLI with the following affordances
61+(1) Add a goal with an associated description
62+(2) Remove a goal using a unique goal handle
63+(3) Nest one goal under another
64+(4) Unnest a goal from under another
65+(5) Pretty print the existing data structure
66+These 5 things have been accomplished. Feel free to try it out!
67+### Using the code
68+Just drop the files in `src` in their corresponding directories (`app`, `lib`, and `sur`) on the base desk of a fake zod, `|commit %base`, `|link ~zod %gol-cli` and then you should be in the CLI.
69+Alternatively:
70+```
71+|install ~niblyx-malnus %gol-cli
72+|rein %gol-cli [& %gol-cli]
73+|link %gol-cli
74+```
75+CLI Commands
76+Simply hit `Enter` to print the existing data structure based on the current context. The current context is like your current directory in a UNIX operating system. By default the data structure will be printed with respect to this goal. The default is `~` which prints the data structure in its entirety.
77+Add a goal with `ag 'Some text'`. This will create a goal nested under the current context.
78+Remove a goal with `rg ---`, where the three dashes are a standin for a "handle" which uniquely identifies a goal. These are printed next to the goals on the left.
79+To change the current context use `cc ---`.
80+To change back to the default context use `cc ~`.
81+To nest one goal under another, use `ng --c --p` where the child is first and the parent second.
82+To unnest one goal from under another, use `fg --c --p` (for "flee goal") where the child is first and the parent is second.
83+To print a specific goal without changing the context, use `pg ---`.
84+To print the ancestors or parent tree of a specific goal use `pp ---`.
85+(Also clearall will clear your whole data structure.)
86+
87+## Milestones & Compensation
88+
89+### Milestone 1
90+
91+Expected Completion: July 9th
92+
93+Payment: 1 star
94+
95+A fully functional personal task manager CLI.
96+Functionality:
97+- Can add and remove goals. (Milestone 0)
98+- Can hierarchically nest goals. (Milestone 0)
99+- Can add deadlines to goals.
100+- Deadlines are inherited from ancestor goals.
101+- Can mark goals as actionable.
102+- Can mark goals as complete.
103+- Can create "precedence" or "dependence" relationship between two goals.
104+- Can interact richly with the data structure; can move up and down the hierarchy, collapse and uncollapse nested subgoals.
105+- Can extract ("harvest") actionable, unpreceded goals in a list to see what goals can be tackled immediately.
106+- Can sort by date of deadline or by date of goal creation.
107+
108+### Milestone 2
109+
110+Expected Completion: August 6th
111+
112+Payment: 1 star
113+
114+A fully functional social task manager CLI.
115+- Can share goals so that they are viewable by others.
116+- Can delegate goals (and their subgoals) to other ships. Delegates will have permissions to add subgoals, edit deadlines, edit goal descriptions, create precedence relationships, and to further delegate subgoals with respect to the goal they have been delegated.
117+- Can transfer ownership of goals (and all their subgoals) between ships.
118+
119+### Milestone 3
120+
121+Expected Completion: September 16th
122+
123+Payment: 1 star
124+
125+- A basic Sail frontend.
126+- Ability to reference an arbitrary graph-store node or set of nodes to capture context which triggered the creation of the goal.
127+- Ability to have threaded comments on goals.
128+- Other such integrations with Groups which will probably become more obvious to me as I become more familiar with this part of user space.
content/grants/value-articles.md+6−2
@@ -1,5 +1,5 @@
11+++
2−title = "Value Articles"
2+title = "Valuation Research Articles"
33date = "2022-04-27"
44[taxonomies]
55grant_type = ["Bounty"]
@@ -23,7 +23,11 @@ Create in-depth valuation models for Urbit address space, network effects, and c
2323
2424Understanding the economics of Urbit can be tricky; there are many different layers of analogy and historical comparison for how to value Urbit address space, network effects, and commercial potential. There is also potentially interesting territory around Urbit’s differences from previously existing infrastructure, land, etc paradigms, and the potential to unlock new forms of economic activity. Some thinking has been done here, including by [Tlon](https://urbit.org/blog/value-of-address-space-pt3) and by [Justin Murphy](https://www.otherlife.co/urbit/); but much more (and more detailed) work remains.
2525
26−We’re interested in seeing detailed economic analyses of Urbit’s valuation on a macro scale. These can involve statistical models from areas often analogized to Urbit (such as network effects, land value, or NFT token economics), or they can propose new models or scenarios. We don’t ask that you come to any particular conclusion; all submissions will be reviewed by a committee of community members (not the Urbit Foundation or Tlon).
26+We’re interested in seeing detailed economic analyses of Urbit’s valuation on a macro scale. These can involve statistical models from areas often analogized to Urbit (such as network effects, land value, or NFT token economics), or they can propose new models or scenarios. We don’t ask that you come to any particular conclusion; all submissions will be reviewed by the Mars Invisible College Review Board along the following parameters:
27+- Does the submission employ a systematic valuation methodology? Ad hoc analyses or purely verbal analyses without some kind of coherent first-principles framework will be rejected.
28+- Does the review show a qualitative familiarity with Urbit sufficient for a plausible valuation? A valuation model that is purely quantitative and implausibly out-of-touch with relevant realities of the Urbit network will be rejected.
29+- Does the review demonstrate familiarity with basic economics and finance? Clever frameworks that reveal significant ignorance about basic finance and economics—to a degree that would make them unintelligible or obviously erroneous to valuation experts—will be rejected.
30+- Is the submission's spelling, grammar, organization and presentation of professional quality (at least that of an a paper in a college class)? Submissions that do not meet a professional level of legibility will be rejected.
2731
2832Some possible avenues of inquiry:
2933
content/grants/volt-ui.mdnew file+52
@@ -0,0 +1,52 @@
1++++
2+title = "Build a UI for Volt"
3+date = "2022-06-22"
4+
5+[taxonomies]
6+grant_type = [ "Apprenticeship" ]
7+grant_category = [ "App Dev", "Other" ]
8+
9+[extra]
10+image = ""
11+description = "An app to serve the UI to urbit's lightning wallet"
12+reward = "1 star"
13+mentor = "~dasrun-fadben"
14+assignee = ""
15+grant_id = "A0183"
16+completed = false
17+cancelled = false
18+work_request_link = "https://airtable.com/shr4qt9t9kz7RaOIa?prefill_Grant+ID=A0183&prefill_Grant+Name=Lightning%20Wallet%20User%20Interface"
19++++
20+
21+## Project Description
22+
23+Build a user-interface that interacts with urbit's lightning wallet (Volt).
24+
25+This will be a solo project with ~dasrun-fadben.
26+
27+The project will involve:
28+- creating a gall agent that serves the user interface
29+- integrating with the volt agent
30+- adding any necessary elements to the volt interface
31+
32+## Prerequisites
33+
34+Experience with front-end web-development is required, and some familiarity with Hoon would be useful.
35+
36+## Time Estimate
37+
38+4-6 weeks working approximately 10 hours a week.
39+
40+## Deliverables
41+
42+The core deliverable is a lightning wallet user-interface, bundled together with
43+volt as an application.
44+
45+From the lightning wallet app, the user will be able to:
46+- Select a volt-provider node
47+- Manage channels with their provider
48+- Generate payment invoices
49+- Pay invoices
50+- View payment status & history
51+
52+A PR should be made to github.com/dasrun-fadben/volt.git
content/groups/~wolref-podlex/foundation.mdnew file+10
@@ -0,0 +1,10 @@
1++++
2+title = "Foundation"
3+shortcode = "~wolref-podlex/foundation"
4+description = "Town Square for the Urbit Foundation"
5+type = "Public"
6+tile = "https://interstellar.nyc3.digitaloceanspaces.com/battus-datsun/2022.6.10..21.28.21-urbit-inverted.png"
7+participant_range = "1000+"
8++++
9+
10+The best place to get in touch with the team at the Urbit Foundation.
content/ids/wolref-podlex.md+1
@@ -5,3 +5,4 @@ bgColor = "#ffffff"
55image = ""
66+++
77
8+Directing the Urbit Foundation. Find me on the network, or email me at josh@urbit.org.
content/using/os/dist-faq.mddeleted−162
@@ -1,162 +0,0 @@
1−+++
2−title = "Software Distribution FAQ"
3−template = "doc.html"
4−weight = 9
5−+++
6−
7−This document concerns the September 2021 release of the software distribution OTA, codenamed "Grid." It is current as of 2021-10-01 at 05:52 AM EST.
8−
9−## Changes
10−
11−**How do I know the OTA succeeded?`**
12−
13−Run `+trouble`.
14−You should see entries for five desks: `%bitcoin`, `%base`, `%landscape`, `%webterm`, and `%garden`.
15−
16−**How do I get back to Landscape to see my DMs?**
17−
18−What was formerly called "Landscape" is now the Groups app. You can access DMs and groups via the "Groups" tile.
19−
20−**Where did my app tiles in Landscape go?**
21−
22−For apps ported to software distribution, tiles will be shown in the home screen.
23−
24−If you're already running non-Tlon apps, those apps will stop running, but the state will be preserved.
25−
26−If the developer provides a version of the app over software distribution and you install it, the new app will migrate the old state.
27−
28−**What's the base hash?**
29−
30−After this OTA there is a base hash _per app desk_:
31−
32−However, this may differ from ship to ship for now, so instead check the %cz hash.
33−The table lists the suffixes (last 5 characters) of the %cz hashes.
34−
35−| Software | Desk | %cz Hash |
36−| ------------ | ---------- | --------- |
37−| Arvo/OS | %base | `krdh3` |
38−| Home Screen | %garden | `7ai82` |
39−| Groups | %landscape | `m1nt8` |
40−| BTC Wallet | %bitcoin | `8kkfo` |
41−| Web Terminal | %webterm | `b2pme` |
42−
43−
44−
45−Run `+trouble` to see these hashes.
46−
47−**How do I see the base hashes for my ship?**
48−
49−The `+trouble` generator is now an alias for `+vats`.
50−Running either one will show the base hashes for every installed app desk.
51−
52−Clicking the settings icon on the top left of the home screen provides an 'About' choice.
53−Selecting this will bring up an app info widget for the system app, which will show the base hash of the `%garden` desk.
54−
55−Selecting the menu icon in the top right of an application tile provides an 'App Info' choice.
56−Selecting this will bring up an app info widget for the selected application, which will show its desk name and the base hash of its desk.
57−
58−Groups (formerly Landscape) will no longer show a base hash within the app.
59−
60−## Troubleshooting
61−
62−**The OTA is taking a long time.**
63−
64−This is expected and unfortunately unavoidable.
65−Your ship will be unresponsive for several minutes, possibly up to half an hour.
66−This is normal.
67−
68−Technical note: this is because OTAs are run as a single Arvo event which must compile the OTA and run migrations.
69−
70−**I saw crashes and stack traces during the OTA.**
71−
72−Some stack traces are expected. The `%goad` and `%publish` apps will not be present in the OTA,
73−and Clay will complain about not being able to build them. You will also see some Clay `read-at-aeon-fail` errors.
74−
75−**I haven't gotten the OTA yet and I can't post in some groups or DM some people.**
76−
77−This OTA includes breaking changes to `%graph-store` which stores and shares messages, notebooks, and collections.
78−Ships with the OTA will not be able to communicate over graph store with ships without the OTA.
79−
80−**I have gotten the OTA and I can't post in some groups or DM some people.**
81−
82−See above. Once your peers receive the OTA, you will be able to communicate again.
83−
84−Your sponsor or your sponsor's sponsor also might have only gotten the first OTA
85−but not the latest one, if either of them are not Tlon stars/galaxies. Try
86−installing from one of Tlon's stars with
87−
88−```
89−|install ~litzod %kids, =local %base
90−|install ~litzod %garden
91−|install ~litzod %landscape
92−|install ~litzod %webterm
93−|install ~litzod %bitcoin
94−```
95−
96−**Can I still `|hi` between pre and post OTA ships?**
97−
98−`|hi` will continue to work between pre and post OTA ships.
99−
100−**Can I still use `|ota` to select my OTA provider?**
101−
102−`|ota` will continue to work on ships without the OTA, even if their OTA provider is running the OTA.
103−After the OTA, the `|ota` command is removed and is replaced by the `|install` command.
104−
105−**The OTA failed for me with `%error-validating`.**
106−
107−Tlon is aware of [this issue](https://github.com/urbit/urbit/issues/5271) and is working on a fix.
108−
109−The error will print near the bottom of the output from the failed OTA, and will be similar to:
110−
111−```
112−[ %error-validating
113− /backup/ship/~littel-wolfur/vim/~2020.12.11..06.50.27..c12d/graph-update
114−]
115−[ %validate-page-fail
116− /backup/ship/~littel-wolfur/vim/~2020.12.11..06.50.27..c12d/graph-update
117− %from
118− %graph-update
119−]
120−```
121−
122−This is caused by some leftover backup files from a previous migration for which Clay no longer has marks.
123−
124−As a workaround: you can remove these files and retry the OTA:
125−
126−dojo:
127−
128−```
129−|unmount %home
130−|mount /=home=
131−```
132−
133−bash:
134−
135−```bash
136−rm -r your-ship/home/backup
137−```
138−
139−dojo:
140−
141−```
142−|commit %home
143−|ota (sein:title our now our) %kids
144−```
145−
146−**The OTA failed for me with `%mate-conflict`**
147−
148−You can instruct Clay to simply override the contents of the relevant files with the version from your sponsor:
149−
150−dojo:
151−
152−```
153−|merge %home (sein:title our now our) %kids, =gem %take-that
154−```
155−
156−This will start the upgrade. Note that on a galaxy, star, or planet, you should also run
157−
158−```
159−|merge %kids (sein:title our now our) %kids, =gem %only-that
160−```
161−
162−to make sure OTAs go out to your sponsored ships (stars, planets, or moons).
content/using/os/dojo-tools.mdnew file+417
@@ -0,0 +1,417 @@
1++++
2+title = "Dojo Tools"
3+weight = 9
4+template = "doc.html"
5++++
6+
7+## Desks, apps and updates
8+
9+### `+agents`
10+
11+Print out the status of Gall agents on a desk.
12+
13+Agents may either be `archived` or `running`. Nuked or unstarted agents which
14+are not on the manifest are omitted.
15+
16+#### Arguments
17+
18+```
19+desk
20+```
21+
22+#### Example
23+
24+```
25+> +agents %garden
26+status: running %hark-system-hook
27+status: running %treaty
28+status: running %docket
29+status: running %settings-store
30+status: running %hark-store
31+```
32+
33+---
34+
35+### `|bump`
36+
37+Try to apply a kernel update.
38+
39+If `%zuse`'s kelvin version has decreased, try to apply the update. If any desks
40+are incompatible with the new `%zuse` version, the update will fail. The update
41+can be forced with the optional `force` argument, in which case incompatible
42+desks will be `|suspend`ed. The `set` of desks to omit (and therefore suspend)
43+can also be explicitly specified with the optional `except` argument.
44+
45+#### Arguments
46+
47+All optional:
48+
49+```
50+, =force ?, =except (set desk)
51+```
52+
53+#### Examples
54+
55+Try to apply update, failing if blocked by any desks:
56+
57+```
58+|bump
59+```
60+
61+Force the update, suspending incompatible desks:
62+
63+```
64+|bump, =force &
65+```
66+
67+Apply kernel update, omitting and suspending the specified desks:
68+
69+```
70+|bump, =except (silt ~[%bitcoin %webterm])
71+```
72+
73+---
74+
75+### `|install`
76+
77+Install a desk, starting its agents and listening for updates.
78+
79+If it's a remote desk we don't already have, it will be fetched. The agents
80+started will be those specified in the `desk.bill` manifest. If it has a docket
81+file, its tile will be added to the homescreen and its glob fetched. If we
82+already have the desk, the source for updates will be switched to the ship
83+specified.
84+
85+It takes a `ship` and `desk` as its mandatory arguments. The desk may be
86+installed with a different name specified in the optional `local` argument.
87+
88+#### Arguments
89+
90+```
91+ship desk, =local desk
92+```
93+
94+#### Examples
95+
96+```
97+|install ~zod %bitcoin
98+```
99+
100+```
101+|install our %webterm
102+```
103+
104+```
105+|install ~zod %bitcoin, =local %foo
106+```
107+
108+---
109+
110+### `|nuke`
111+
112+Shut down an agent and permanently delete its state.
113+
114+The default behaviour is to shut down the specified Gall agent and discard its
115+state, similar to the now-deprecated `|fade` generator. **Note this irreversibly
116+wipes the app's state**. Additionally, if the optional `desk` argument is `%.y`,
117+it takes a desk rather than an agent name and nukes every agent on the specified
118+desk.
119+
120+#### Arguments
121+
122+```
123+@tas, =desk ?
124+```
125+
126+#### Examples
127+
128+Nuke a single agent:
129+
130+```
131+|nuke %btc-wallet
132+```
133+
134+Nuke every agent on a desk:
135+
136+```
137+|nuke %bitcoin, =desk &
138+```
139+
140+---
141+
142+### `|ota`
143+
144+Set the source of updates for the `%base` desk (the kernel and core apps) to the
145+specified ship. Automatic updates will be enabled, and any new updates available
146+will be fetched and installed.
147+
148+#### Arguments
149+
150+```
151+ship
152+```
153+
154+#### Examples
155+
156+`|ota ~marzod` is equivalent to `|install ~marzod %kids, =local %base`.
157+
158+---
159+
160+### `|pause`
161+
162+Pause updates on a desk.
163+
164+The specified desk will stop tracking updates from its upstream source.
165+
166+#### Arguments
167+
168+```
169+desk
170+```
171+
172+#### Examples
173+
174+```
175+|pause %bitcoin
176+```
177+
178+---
179+
180+### `|rein`
181+
182+Adjust the state of a desk.
183+
184+This allows you to stop and start agents on a desk, regardless of whether
185+they're on the manifest. Stopped agents have their states archived. It can also
186+suspend and revive the whole desk with the optional `liv` argument.
187+
188+#### Arguments
189+
190+```
191+desk (list [? dude:gall]), =liv ?
192+```
193+
194+#### Examples
195+
196+Start an agent:
197+
198+```
199+|rein %bitcoin [& %btc-provider]
200+```
201+
202+Stop an agent, archiving its state:
203+
204+```
205+|rein %bitcoin [| %btc-wallet]
206+```
207+
208+Stop one agent, start another:
209+
210+```
211+|rein %bitcoin [| %btc-wallet] [& %btc-provider]
212+```
213+
214+Suspend a desk:
215+
216+```
217+|rein %bitcoin, =liv |
218+```
219+
220+Revive a desk:
221+
222+```
223+|rein %bitcoin
224+```
225+
226+---
227+
228+### `|resume`
229+
230+Resume updates on a desk.
231+
232+Start tracking previously [`|pause`](#pause)d updates from a desk's upstream
233+source.
234+
235+#### Arguments
236+
237+```
238+desk
239+```
240+
241+#### Examples
242+
243+```
244+|resume %bitcoin
245+```
246+
247+---
248+
249+### `|revive`
250+
251+Revive all agents on a desk, migrating archived states.
252+
253+All agents specified in `desk.bill` which are suspended will be restarted. If
254+updates to the agents have occurred since their states were archived, they'll be
255+migrated with the state transition functions in the agent. This generator does
256+the same thing as selecting "Resume App" from the app tile's hamburger menu.
257+
258+#### Arguments
259+
260+```
261+desk
262+```
263+
264+#### Examples
265+
266+```
267+|revive %bitcoin
268+```
269+
270+---
271+
272+### `|suspend`
273+
274+Shut down all agents on a desk, archiving their states.
275+
276+The tile in the homescreen (if it has one) will turn gray and say "Suspended" in
277+the top-left corner. This generator does the same thing as selecting "Suspend"
278+from an app tile's hamburger menu.
279+
280+#### Arguments
281+
282+```
283+desk
284+```
285+
286+#### Examples
287+
288+```
289+|suspend %bitcoin
290+```
291+
292+---
293+
294+### `|uninstall`
295+
296+Uninstall a desk, suspending its agents and ignoring updates.
297+
298+The specified desk will be retained in Clay, but its agents will all be stopped
299+and have their states archived like [`|suspend`](#suspend). This is the reverse
300+of [`|install`](#install).
301+
302+Note that this will not remove the tile or glob from the homescreen, so if the
303+desk has a tile it should be uninstalled with the "Remove App" button in the
304+tile's hamburger menu.
305+
306+#### Arguments
307+
308+```
309+desk
310+```
311+
312+#### Examples
313+
314+```
315+|uninstall %bitcoin
316+```
317+
318+---
319+
320+### `+vat`
321+
322+Print out the status of a single installed desk.
323+
324+Desks in Clay which aren't installed will be omitted. See the related
325+[`+vats`](#vats) command for details of the individual status fields.
326+
327+#### Arguments
328+
329+`desk`
330+
331+#### Examples
332+
333+```
334+> +vat %base
335+%base
336+ /sys/kelvin: [%zuse 418]
337+ base hash: ~
338+ %cz hash: 0v2.r1lbp.i9jr2.hosbi.rvg16.pqe7u.i3hnp.j7k27.9jsgv.8k7rp.oi98q
339+ app status: running
340+ force on: ~
341+ force off: ~
342+ publishing ship: ~
343+ updates: local
344+ source ship: ~
345+ source desk: ~
346+ source aeon: ~
347+ pending updates: ~
348+::
349+```
350+
351+---
352+
353+### `+vats`
354+
355+Print out the status of each installed desk.
356+
357+Desks in Clay which aren't installed will be omitted. Also see the related
358+[`+vat`](#vat) command, which prints the status of a single desk rather than all
359+desks.
360+
361+Fields:
362+
363+- `/sys/kelvin` - The version of `%zuse` the desk is compatible with.
364+- `base hash` - The merge base (common ancestor) between the desk and its upstream source.
365+- `%cz hash` - The hash of the desk.
366+- `app status` - May be `suspended` or `running`.
367+- `force on` - The set of agents on the desk which have been manually started
368+ despite not being on the `desk.bill` manifest.
369+- `force off` - The set of agents on the desk which have been manually stopped
370+ despite being on the `desk.bill` manifest.
371+- `publishing ship` - The original publisher if the source ship is republishing
372+ the desk.
373+- `updates` - May be `local`, `tracking` or `paused`. Local means it will
374+ receive updates via commits on the local ship. Tracking means it will receive
375+ updates from the `source ship`. Paused means it will not receive updates.
376+- `source desk` - The desk on the `source ship`.
377+- `source aeon` - The revision number of the desk on the `source ship`.
378+- `pending updates` - Updates waiting to be applied due to incompatibility.
379+
380+#### Arguments
381+
382+None.
383+
384+#### Examples
385+
386+```
387+> +vats
388+%base
389+ /sys/kelvin: [%zuse 418]
390+ base hash: ~
391+ %cz hash: 0v6.2nqmu.oqm24.ighl6.n0gp9.s8res.feql1.dl8ap.isli3.jk0hu.acrd2
392+ app status: running
393+ force on: ~
394+ force off: ~
395+ publishing ship: ~
396+ updates: tracking
397+ source ship: ~zod
398+ source desk: %base
399+ source aeon: 3
400+ pending updates: ~
401+::
402+%garden
403+ /sys/kelvin: [%zuse 418]
404+ base hash: ~
405+ %cz hash: 0v1e.2h7hs.elq3g.1sdt7.qfga6.ganga.7p95j.aog44.8p5fe.kpr6v.7ai82
406+ app status: running
407+ force on: ~
408+ force off: ~
409+ publishing ship: ~
410+ updates: tracking
411+ source ship: ~zod
412+ source desk: %garden
413+ source aeon: 3
414+ pending updates: ~
415+```
416+
417+---
pages/index.js+28−7
@@ -33,11 +33,33 @@ export default function Home({ posts, events, grantNumbers, search }) {
3333 }
3434 <Section narrow>
3535 <div>
36− <h1>A clean-slate OS</h1>
37− <h1>and network</h1>
38− <h1>for the 21st century.</h1>
36+ <h1>A clean-slate OS and network for the 21st&nbsp;century.</h1>
3937 </div>
4038 </Section>
39+ {
40+ // Hero
41+ }
42+ <Section>
43+ <div className="bg-[#FEFFDA] w-full p-8 md:p-12 rounded-3xl flex flex-col md:flex-row">
44+ <div className="md:w-10/12 w-full md:mr-6">
45+
46+ <h2 className="m-0 p-0 mr-4 pb-6">Assembly 2022</h2>
47+
48+ <p>
49+ Assembly 2022 is the second ever Urbit conference coming to you this year from Miami Beach. Grab a towel and get ready.
50+ </p>
51+ <p className="pt-4 font-bold pb-8">
52+ September 22nd–25th • Miami Beach, Florida
53+ </p>
54+ <Link href="https://assembly.urbit.org" passHref>
55+ <a className="button-lg max-w-fit bg-green-400 text-white">
56+ Learn More
57+ </a>
58+ </Link>
59+ </div>
60+ </div>
61+ </Section>
62+
4163
4264 {
4365 // Hero
@@ -45,10 +67,9 @@ export default function Home({ posts, events, grantNumbers, search }) {
4567 <Section>
4668 <div className="bg-wall-100 w-full p-8 md:p-12 rounded-3xl flex flex-col md:flex-row">
4769 <div className="md:w-6/12 w-full md:mr-6">
48− <p>
49− Urbit is for everyone, but sometimes it is easy to get lost in
50− this universe.
51− </p>
70+ <h3>
71+ Urbit is a new kind of computer that you can own completely in ways that matter: networking, identity, and data.
72+ </h3>
5273 <p className="pt-8">
5374 Follow these links to contribute to the network through
5475 developing, operating, and exploring.
vercel.json+23−2
@@ -33,8 +33,9 @@
3333 "permanent": true
3434 },
3535 {
36− "source": "/applications/~lomder-librun/ballot",
37− "destination": "/applications/~livdel-binmun-lomder-librun/ballot"
36+ "source": "/applications/~livdel-binmun-lomder-librun/ballot",
37+ "destination": "/applications/~lomder-librun/ballot",
38+ "permanent": true
3839 },
3940 {
4041 "source": "/grants/grant-submission-guide",
@@ -235,6 +236,26 @@
235236 "source": "/docs/vere/:path*",
236237 "destination": "https://developers.urbit.org/reference/runtime/:path*",
237238 "permanent": true
239+ },
240+ {
241+ "source": "/applications/~dister-fabnev-hinmur/escape",
242+ "destination": "/applications/~fabnev-hinmur/escape",
243+ "permanent": true
244+ },
245+ {
246+ "source": "/applications/~dister-fabnev-hinmur/handshake",
247+ "destination": "/applications/~fabnev-hinmur/handshake",
248+ "permanent": true
249+ },
250+ {
251+ "source": "/applications/~dister-norsyr-torryn/canvas",
252+ "destination": "/applications/~norsyr-torryn/canvas",
253+ "permanent": true
254+ },
255+ {
256+ "source": "/applications/~dister-dozzod-dalten/gora",
257+ "destination": "/applications/~dalten/gora",
258+ "permanent": true
238259 }
239260 ]
240261}