@@ -1,36 +1,37 @@
2−navhome: '/docs'
2+navhome: /docs/
5−title: Messaging (:talk)
6+title: Messaging (Talk and Hall)
8−# Messaging (`:talk`)
9+# Messaging (Talk and Hall)
10<div class="row">
11<div class="row">
12<div class="col-md-8">
13<div class="col-md-8">
14−`:talk` is the built-in frontend for the Urbit messaging and notifications
15+Talk is the built-in frontend for the Urbit messaging and notifications
15−protocol, `:hall`. Today we use `:hall` just to chat and coordinate, but
16+protocol, Hall. Today we use Hall to chat and coordinate, but it's really
16−it's really a general purpose piece of infrastructure.
17+a general purpose piece of infrastructure.
18For the time being come join us in `/urbit-meta` by using the
19For the time being come join us in `/urbit-meta` by using the
19<a href="#-quickstart">quickstart</a> below.
20<a href="#-quickstart">quickstart</a> below.
21−Today `:hall` is sort of like a distributed, encrypted Slack that can be
22+Today, Hall is sort of like a distributed, encrypted Slack that can be
22−used from the CLI and the browser. There’s no central `:hall` server.
23+used from the CLI and the browser. There’s no central Hall server.
23Any Urbit can host one.
24Any Urbit can host one.
25−`:hall` is a general purpose tool for both aggregating and publishing
26+Hall is a general purpose tool for both aggregating and publishing
26−streams of messages. Applications can use `:hall` as their transport
27+streams of messages. Applications can use Hall as their transport
27−protocol, API connectors can push disparate data sources into `:hall`,
28+protcol, API connectors can push disparate data sources into Hall,
28and so on. There are lots of things a distributed message protocol can
29and so on. There are lots of things a distributed message protocol can
29be used for that we haven't even thought of.
30be used for that we haven't even thought of.
31−Here we'll be discussing how to operate the default CLI frontend, `:talk`,
32+Here we'll be discussing how to operate the default CLI frontend, Talk,
32−to send and receive messages. For a more in-depth look at `:hall`'s
33+to send and receive messages. For a more in-depth look at Hall's internals,
33−internals, take a look at its [documentation](#TODO).
34+take a look at its [documentation](../../hall/architecture).
@@ -38,36 +39,39 @@ internals, take a look at its [documentation](#TODO).
39## Quickstart
40## Quickstart
41−For the most part we use `:talk` as a single-instance of Slack: one main
42+For the most part we use Talk as a single-instance of Slack: one main
42−channel (`/urbit-meta`) and direct messages. Everyone is more than welcome
43+channel (`/urbit-meta`) and direct messages. Everyone is more than welcome
43in `/urbit-meta`. It's the place to get help, ask questions and chat about
44in `/urbit-meta`. It's the place to get help, ask questions and chat about
44Urbit in general.
45Urbit in general.
46Let's join `/urbit-meta`:
47Let's join `/urbit-meta`:
48−Use `ctrl-x` to switch from `:dojo` to `:talk`.
49+Use `ctrl-x` to switch from Dojo to Talk.
50To join `/urbit-meta`:
51To join `/urbit-meta`:
52− ~your-urbit:talk[] ;join /urbit-meta
53+ ~your-urbit:talk> ;join /urbit-meta
54−You'll see:
55+You'll see something like:
56 --------------| ;join /urbit-meta
57 --------------| ;join /urbit-meta
57− --------------| new glyph '>'
58+ --------------| :: onn /urbit-meta
59+ --------------| bound '=' {[hos=~marzod nom=%urbit-meta]}
60+ --------------| new = /urbit-meta
61+ --------------| /urbit-meta: hey ~marzod hear
58− ~your-urbit:talk>
62+ ~your-urbit:talk-
60Post a line to `/urbit-meta`:
64Post a line to `/urbit-meta`:
62− ~your-urbit:talk> hello, world
66+ ~your-urbit:talk- Hello, world!
64You'll see, echoed back at you:
68You'll see, echoed back at you:
66− ~your-urbit> hello, world
70+ ~your-urbit- Hello, world!
68To send a direct message to someone, first set your audience:
72To send a direct message to someone, first set your audience:
70− ~your-urbit:talk> ;~talsur-todres
74+ ~your-urbit:talk- ;~talsur-todres
72You'll see your prompt change:
76You'll see your prompt change:
@@ -75,35 +79,48 @@ You'll see your prompt change:
76Now you and `~talsur-todres` can exchange messages directly.
80Now you and `~talsur-todres` can exchange messages directly.
82+ ~your-urbit:talk[~talsur-todres] Hey buddy!
78To set your audience back to `/urbit-meta`:
84To set your audience back to `/urbit-meta`:
80− ~your-urbit:talk> ;/urbit-meta
86+ ~your-urbit:talk[~talsur-todres] ;/urbit-meta
88+You'll see your prompt change back:
92+You can also use the ASCII "glyph" assigned to your `/urbit-meta` circle as a shortcut:
94+ ~your-urbit:talk[~talsur-todres] ;-
97+(Your ship may have a different glyph than `-` for your circle)
82Use `;leave` to unsubscribe from a channel:
99Use `;leave` to unsubscribe from a channel:
84− ~your-urbit:talk> ;leave /urbit-meta
101+ ~your-urbit:talk- ;leave /urbit-meta
86−There are two ways of using `:talk`: from the CLI or through a web ui
103+There are two ways of using Talk: from the CLI or through a web UI
87−available at `http://your-urbit.urbit.org/talk` (or
104+available at `http://your-urbit.urbit.org/~~/talk` (or
88−`http://localhost:8080/talk`).
105+`http://localhost:8080/~~/talk`).
90−The web ui ships as compiled JavaScript on your Urbit, but has its own
107+The web UI ships as compiled JavaScript on your Urbit, but has its own
91source repo [here](https://github.com/urbit/talk).
108source repo [here](https://github.com/urbit/talk).
93Last, let's create a channel we can invite some friends to:
110Last, let's create a channel we can invite some friends to:
95− ~your-urbit:talk> ;create channel %my-channel 'some description'
112+ ~your-urbit:talk> ;create channel %my-channel 'Some description.'
97Now you can tell your friends to `;join ~your-urbit/my-channel`.
114Now you can tell your friends to `;join ~your-urbit/my-channel`.
101−`:hall`'s design is similar in spirit to
118+Hall's design is similar in spirit to
102−[nntp](https://en.wikipedia.org/wiki/Network_News_Transfer_Protocol),
119+[NNTP](https://en.wikipedia.org/wiki/Network_News_Transfer_Protocol),
103the underlying protocol for Usenet.
120the underlying protocol for Usenet.
105−Our design is pretty simple: `:hall` messages go to ‘circles’. Any urbit
122+Our design is pretty simple: Hall messages are called _posts_. Posts
106−can host or subscribe to any number of circles.
123+go to _circles_. Any urbit can host or subscribe to any number of circles.
108There are four kinds of circles: a write-only `%mailbox` for direct
125There are four kinds of circles: a write-only `%mailbox` for direct
109messages, an invite-only `%village` for private conversation, a read-only
126messages, an invite-only `%village` for private conversation, a read-only
@@ -113,7 +130,7 @@ general use.
115A post can be a variety of different data structures. Let's look at the
132A post can be a variety of different data structures. Let's look at the
116−ones you can use from within `:talk`: lines, URLs, expressions and
133+ones you can use from within Talk: lines, URLs, Hoon and
119#### Lines
136#### Lines
@@ -121,31 +138,32 @@ replies.
121A line is simply a string of text. Depending on the filtering rules set
138A line is simply a string of text. Depending on the filtering rules set
122by the circle's host, these may or may not include uppercase and Unicode
139by the circle's host, these may or may not include uppercase and Unicode
123characters.
140characters.
124If the line starts with `@`, it's an action (IRC `/me`).
142If the line starts with `@`, it's an action (IRC `/me`).
126− ~your-urbit:talk> @sends a message
144+ ~your-urbit:talk> @sends a message.
128will print as
146will print as
130− ~your-urbit sends a message
148+ ~your-urbit sends a message.
134A URL is any valid URL.
152A URL is any valid URL.
136− ~your-urbit:talk> http://example.com/
154+ ~your-urbit:talk> https://example.com/
138−### Expressions
156+### Hoon
140−Expressions can be used to show and evaluate Hoon code. Send an expression
158+You can use Talk to evaluate Hoon code and share the result with everyone in a
141−by prefacing your message with `#`.
159+Hall circle. To do so, preface your Hoon with `#`.
143− ~your-urbit:talk> #(add 1 2)
161+ ~your-urbit:talk- #(add 2 2)
145will print as
163will print as
147− ~your-urbit# (add 1 2)
165+ ~your-urbit# (add 2 2)
150### Replies
168### Replies
@@ -153,12 +171,12 @@ To indicate what you're saying is in direct response to a specific
153message, select the message (see Activating Lines below) and type your
171message, select the message (see Activating Lines below) and type your
156− ~some-urbit> hello! how are you?
174+ ~some-urbit- Hello! How are you?
157− ~your-urbit:talk> ; good, thanks!
175+ ~your-urbit:talk> ; Good, thanks!
159will print as
177will print as
161− ~your-urbit>^ good, thanks!
179+ ~your-urbit>^ Good, thanks!
163### Activating Lines
181### Activating Lines
@@ -166,18 +184,18 @@ A line number identifying the *subsequent* line is displayed every 5
168 ---------[0]
186 ---------[0]
169− ~your-urbit> this is my message
187+ ~your-urbit- This is my message.
170− ~your-urbit> this is another message
188+ ~your-urbit- This is another message.
171− ~your-urbit sends a message
189+ ~your-urbit sends a message.
172 ~your-urbit/ http://example.com/
190 ~your-urbit/ http://example.com/
173− ~your-urbit# (add 1 2)
191+ ~your-urbit# (add 2 2)
175 ---------[5]
193 ---------[5]
176− ~your-urbit>^ that's my message!
194+ ~your-urbit>^ That's my message!
178You can use a line number to *activate* a line:
196You can use a line number to *activate* a line:
180− ~your-urbit:talk> ;5
198+ ~your-urbit:talk- ;5
182which prints the number, line identifier, timestamp, sender, audience,
200which prints the number, line identifier, timestamp, sender, audience,
183and contents:
201and contents:
@@ -186,8 +204,8 @@ and contents:
186 0v3.hl51p.jhege.amhec.vb37r.3rejr at ~2016.6.24..04.48.21..a235
204 0v3.hl51p.jhege.amhec.vb37r.3rejr at ~2016.6.24..04.48.21..a235
187 ~your-urbit to ~another-urbit
205 ~your-urbit to ~another-urbit
188 in reply to: ~your-urbit:
206 in reply to: ~your-urbit:
189− > this is my message
207+ > This is my message.
190− that's my message!
208+ That's my message!
192If information got truncated — like happens for long URLs or expressions —
210If information got truncated — like happens for long URLs or expressions —
193or if there's additional information available — as is the case with
211or if there's additional information available — as is the case with
@@ -199,40 +217,40 @@ with `;;`, and so on.
200### Creating and managing circles
218### Creating and managing circles
202−`;create [type] %name 'description'`
220+###### `;create [type] %name 'description'`
203Creates and joins a circle, where `[type]` is any of the following:
221Creates and joins a circle, where `[type]` is any of the following:
204- `channel`: public circle. Has a blacklist for write control.
222- `channel`: public circle. Has a blacklist for write control.
205- `village`: invite-only circle.
223- `village`: invite-only circle.
206- `journal`: publicly readable, invite-only for writing.
224- `journal`: publicly readable, invite-only for writing.
207- `mailbox`: publicly writeable, can only be read by its host.
225- `mailbox`: publicly writeable, can only be read by its host.
209−`;delete %name 'optional reason'`
227+###### `;delete %name 'optional reason'`
210Deletes a circle. If a reason is specified, that gets sent to all
228Deletes a circle. If a reason is specified, that gets sent to all
211subscribers before the circle gets deleted.
229subscribers before the circle gets deleted.
213−`;depict %name 'description'`
231+###### `;depict %name 'description'`
214Changes the description of circle `%name`.
232Changes the description of circle `%name`.
216−`;filter %name [capitals] [unicode]`
234+###### `;filter %name [capitals] [unicode]`
217Configures the message filter for circle `%name`: whether to allow
235Configures the message filter for circle `%name`: whether to allow
218capital and/or unicode characters. `y`/`&`/`true` for allowed,
236capital and/or unicode characters. `y`/`&`/`true` for allowed,
219`n`/`|`/`false` for disallowed.
237`n`/`|`/`false` for disallowed.
221−`;invite %name ~someone`
239+###### `;invite %name ~someone`
222Invite someone into your circle `%name`. If they were previously banished,
240Invite someone into your circle `%name`. If they were previously banished,
223removes them from the blacklist.
241removes them from the blacklist.
224Can also invite multiple ships at once, `~comma, ~separated`.
242Can also invite multiple ships at once, `~comma, ~separated`.
226−`;banish %name ~someone`
244+###### `;banish %name ~someone`
227Banish someone from your circle `%name`. If they were previously invited,
245Banish someone from your circle `%name`. If they were previously invited,
228removes them from the whitelist.
246removes them from the whitelist.
229Can also banish multiple ships at once, `~comma, ~separated`.
247Can also banish multiple ships at once, `~comma, ~separated`.
231−`;source %name ~other/circle`
249+###### `;source %name ~other/circle`
232Adds `~other/circle` as a source for circle `%name`. This causes all
250Adds `~other/circle` as a source for circle `%name`. This causes all
233messages sent to `~other/circle` to also appear in `%name`.
251messages sent to `~other/circle` to also appear in `%name`.
235−`;unsource %name ~other/circle`
253+###### `;unsource %name ~other/circle`
236Removes `~other/circle` as a source for circle `%name`.
254Removes `~other/circle` as a source for circle `%name`.
238### Membership
256### Membership
@@ -240,37 +258,40 @@ Removes `~other/circle` as a source for circle `%name`.
240If you have joined a circle, you can make this information publicly
258If you have joined a circle, you can make this information publicly
241available to help others find that circle as well.
259available to help others find that circle as well.
243−`;show ~some/circle`
261+###### `;show ~some/circle`
244Adds a circle to your public membership list.
262Adds a circle to your public membership list.
246−`;hide ~some/circle`
264+###### `;hide ~some/circle`
247Removes a circle from your public membership list.
265Removes a circle from your public membership list.
249### Status
267### Status
251You'll see status notifications when people enter or leave stations
269You'll see status notifications when people enter or leave stations
252−you're subscribed to.
254−`;set quiet`
271+###### `;set quiet`
255Turn off status (and config) notifications.
272Turn off status (and config) notifications.
257−`;unset quiet`
274+###### `;unset quiet`
258Turn on status (and config) notifications.
275Turn on status (and config) notifications.
260−`;who`
277+###### `;who`
261List everyone in all your subscribed circles. Optionally specify a
278List everyone in all your subscribed circles. Optionally specify a
262specific circle to list members of just those.
279specific circle to list members of just those.
281+You'll see presence notifications when people enter or leave stations
282+you're subscribed to.
264−`;attend ~some/circle [presence]`
284+###### `;attend ~some/circle [presence]`
265Manually set your presence to show up as one of the following. (In the
285Manually set your presence to show up as one of the following. (In the
266future, a sufficiently advanced client can automatically set these for
286future, a sufficiently advanced client can automatically set these for
268- `talk` - typing
289- `talk` - typing
269- `hear` - listening
290- `hear` - listening
270- `idle` - inactive
291- `idle` - inactive
271- `gone` - not present
292- `gone` - not present
273−`;name ~some/circle 'my handle'`
294+###### `;name ~some/circle 'my handle'`
274Set a handle ("name") for yourself in a specific circle. It will display
295Set a handle ("name") for yourself in a specific circle. It will display
275to users who have done `;set nicks`, but gets truncated if it's longer
296to users who have done `;set nicks`, but gets truncated if it's longer
276than 14 characters.
297than 14 characters.
@@ -280,7 +301,6 @@ than 14 characters.
280An audience consists of one or more messaging targets. These can be
301An audience consists of one or more messaging targets. These can be
281circles or ships. (In the latter case, it's secretly the `~ship/inbox`
302circles or ships. (In the latter case, it's secretly the `~ship/inbox`
284### Circle glyphs
304### Circle glyphs
286Glyphs are assigned by circle hash out of the following list
306Glyphs are assigned by circle hash out of the following list
@@ -290,10 +310,10 @@ Glyphs are assigned by circle hash out of the following list
290Alphanumeric characters and `|#;:*~_` are reserved; all others (the
310Alphanumeric characters and `|#;:*~_` are reserved; all others (the
291above list, and `\/!?({<`) can be manually assigned.
311above list, and `\/!?({<`) can be manually assigned.
293−`;bind + /urbit-test`
313+###### `;bind + /urbit-test`
294Assigns the `+` glyph to `/urbit-test`.
314Assigns the `+` glyph to `/urbit-test`.
296−`;unbind + /urbit-test`
316+###### `;unbind + /urbit-test`
297Unassigns the `+` glyph from `/urbit-test`.
317Unassigns the `+` glyph from `/urbit-test`.
299To see what circle is bound to a glyph:
319To see what circle is bound to a glyph:
@@ -305,8 +325,9 @@ To see what circle is bound to a glyph:
306Received posts are prefixed with a glyph to let you know what the
326Received posts are prefixed with a glyph to let you know what the
307audience is. You can activate an individual post to see the full
327audience is. You can activate an individual post to see the full
308−audience.
328+audience.
309−There are a few special-purpose glyphs.
330+There are a few special-purpose glyphs:
311- `|` - Informational messages
332- `|` - Informational messages
312- `:` - Posts directly to you
333- `:` - Posts directly to you
@@ -328,20 +349,20 @@ Here we're talking directly to `~dannum-mitryl`:
329#### Configuration
350#### Configuration
331−`;~urbit/station`
352+###### `;~urbit/circle`
332−Set audience to `~urbit/station`.
353+Set audience to `~urbit/circle`.
335−Set audience to the station bound to the `=` glyph.
356+Set audience to the station bound to the `=` glyph
337−`;~dannum-mitryl`
358+###### `;~dannum-mitryl`
338Set audience to `~dannum-mitryl` (a direct post).
359Set audience to `~dannum-mitryl` (a direct post).
340−`;%station`
361+###### `;%circle`
341−Set audience to a station on your own ship.
362+Set audience to a circle on your own ship
343−`;~dannum-mitryl this is a private message`
364+###### `;~dannum-mitryl this is a private message`
344−Set the audience and send a post to it. This works for all of the above.
365+Set the audience and send a post in the same line. This works for all of the above.
346Your audience is configured with regard to the following rules (in order):
367Your audience is configured with regard to the following rules (in order):
@@ -351,26 +372,26 @@ Your audience is configured with regard to the following rules (in order):
352### Local nicknames
373### Local nicknames
354−`;nick`
375+###### `;nick`
355List all local nicknames.
376List all local nicknames.
357−`;nick ~some-urbit`
378+###### `;nick ~some-urbit`
358Look up a nickname.
379Look up a nickname.
360−`;nick plato`
381+###### `;nick plato`
361Search in reverse.
382Search in reverse.
363−`;nick ~some-urbit plato`
384+###### `;nick ~some-urbit plato`
364Create a nickname.
385Create a nickname.
366−`;nick ~some-urbit ~`
387+###### `;nick ~some-urbit ~`
367Clear an assigned nickname.
388Clear an assigned nickname.
369−`;set nicks`
390+###### `;set nicks`
370Show nicknames instead of urbit names. If no local nickname is set, uses
391Show nicknames instead of urbit names. If no local nickname is set, uses
371that user's handle. If the user has no handle, just the urbit name.
392that user's handle. If the user has no handle, just the urbit name.
373−`;unset nicks`
394+###### `;unset nicks`
374Show urbit names instead of nicknames.
395Show urbit names instead of nicknames.
376Nicknames and handles longer than 14 character will be truncated in
397Nicknames and handles longer than 14 character will be truncated in
@@ -379,22 +400,22 @@ phonebook.
380### Miscellaneous configuration
401### Miscellaneous configuration
382−`;set showtime`
403+###### `;set showtime`
383Show the timestamp for each message.
404Show the timestamp for each message.
385−`;unset showtime`
406+###### `;unset showtime`
386−Stop showing the timestamp for each message.
407+Stop showing the timestamp for each message.
388−`;set timezone [+/-][hours]`
409+###### `;set timezone [+/-][hours]`
389Adjust the display of the timestamps to a specific timezone. Relative to UTC.
410Adjust the display of the timestamps to a specific timezone. Relative to UTC.
391−`;set notify`
412+###### `;set notify`
392Emit a terminal bell sound if your six-syllable ship name is mentioned in
413Emit a terminal bell sound if your six-syllable ship name is mentioned in
393a message.
414a message.
395−`;unset notify`
416+###### `;unset notify`
396Do not notify when your ship name is mentioned.
417Do not notify when your ship name is mentioned.
398−`;set width [number]`
419+###### `;set width [number]`
399Set the rendering width of `:talk` to a specific number of characters.
420Set the rendering width of `:talk` to a specific number of characters.
400(Minimum of 30.)
421(Minimum of 30.)