Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
actions-user committed Oct 25, 2023
2 parents 6e0440e + da62437 commit 0193c47
Show file tree
Hide file tree
Showing 63 changed files with 2,005 additions and 1,113 deletions.
55 changes: 38 additions & 17 deletions DEVELOPMENT.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,27 +20,48 @@ Regardless of what you run to develop, Vite will hot-reload code changes as you

## Fakezod Development

Follow these instructions or use Tlon's own
To get started, make sure your %groups desk is mounted:

```
|mount %groups
```

Sync the latest %groups files:

```
rsync -avL --delete desk/* ~/urbit/zod/groups/
```

And commit:

```
|commit %groups
```

Since %groups and %talk have already been released and are now in the pill. It is very unlikely that you would have to create those desks from scratch, but if you do you can follow these instructions or use Tlon's
[Bouncer](https://github.com/tloncorp/bouncer) utility (requires Ruby 3+).

0. Clone or pull latest versions of this repo and `urbit/urbit`.
1. Boot a fake ship. Use local networking with `-F` like so:
1. Clone or pull latest versions of this repo, `tloncorp/landscape` and `urbit/urbit`.
2. Boot a fake ship. Use local networking with `-F` like so:
`urbit -F zod`
2. Mount or create the appropriate desks on local `~zod`:
1. `|mount %garden`
2. `|merge %groups our %base`
3. `|mount %groups`
3. From the `urbit/urbit` repo:
1. `rsync -avL --delete pkg/garden/* ~/urbit/zod/garden/`
3. Create and mount the appropriate desks on local `~zod`:
1. `|new-desk %landscape`
2. `|mount %landscape`
3. `|new-desk %groups`
4. `|mount %groups`
4. From the `urbit/urbit` repo:
1. `rsync -avL --delete pkg/base-dev/* ~/urbit/zod/landscape/`
2. `rsync -avL --delete pkg/base-dev/* ~/urbit/zod/groups/`
3. `rsync -avL pkg/garden-dev/* ~/urbit/zod/groups/`
4. From this repo:
5. From the `tloncorp/landscape` repo:
1. `rsync -avL desk/* ~/urbit/zod/landscape/`
2. `rsync -avL desk-dev/* ~/urbit/zod/groups/`
6. From this repo:
1. `rsync -avL desk/* ~/urbit/zod/groups/`
2. `rsync -avL landscape-dev/* ~/urbit/zod/groups/`
5. Commit and install garden on local `~zod`:
1. `|commit %garden`
2. `|install our %garden`
6. Similarly commit and install Groups:
7. Commit and install landscape on local `~zod`:
1. `|commit %landscape`
2. `|install our %landscape`
8. Similarly commit and install Groups:
1. `|commit %groups`
2. `|install our %groups`

Expand All @@ -52,9 +73,9 @@ Groups and Talk are distributed via the Urbit network by way of a [glob](https:/
1. Create or launch an urbit using the -F flag.
2. On that urbit, if you don't already have a desk to run from, run `|merge %work our %base` to create a new desk and mount it with `|mount %work`.
3. Now the `%work` desk is accessible through the host OS's filesystem as a directory of that urbit's pier ie `~/zod/work`.
4. From the `ui` directory you can run `rsync -avL --delete dist/ ~/zod/work/groups` where `~/zod` is your fake urbit's pier.
4. From the repo you can run `rsync -avL --delete ui/dist/ ~/zod/work/groups` and `rsync -avL desk/mar/webmanifest.hoon ~/zod/work/mar/webmanifest.hoon` where `~/zod` is your fake urbit's pier.
5. Once completed, run `|commit %work` on your urbit and you should see your files logged back out from the dojo.
6. Run `=dir /=garden` to switch to the garden desk directory.
6. Run `=dir /=landscape` to switch to the landscape desk directory.
7. Run `-make-glob %work /groups`. This will create a glob from the folder where you just added files. It will output to `~/zod/.urb/put`.
8. Navigate to `~/zod/.urb/put` you should see a file that looks something like: `glob-0v5.fdf99.nph65.qecq3.ncpjn.q13mb.glob`. The characters between `glob-` and `.glob` are a hash of the glob's contents.
9. Upload the glob to any publicly available HTTP endpoint that can serve files. This allows the application to be distributed over HTTP.
Expand Down
34 changes: 11 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,46 +33,34 @@ images, media, and even random musings.

This project uses the [formal comment spec](https://developers.urbit.org/reference/hoon/style#comments-and-unparsed-bytes)
for all Hoon code to ensure compatibility with
[doccords](https://github.com/urbit/urbit/pull/5873) once support is released.
[doccords](https://github.com/urbit/urbit/pull/5873).

Additionally, detailed documentation is available in the [Docs Landscape
app](https://urbit.org/applications/~pocwet/docs) if you have both Docs and
Groups installed on a running Urbit ship.
Groups installed on a running Urbit ship.

Visit this repository's wiki for [an overview of how to use Landscape and
its apps](https://github.com/tloncorp/landscape-apps/wiki).

## Integrating with Groups agents

The `%groups` desk provides several simple agents with discrete concerns. This
list may expand over time, but new agents are unlikely for the time being.
The `%groups` desk provides several simple agents with discrete concerns. This list may expand over time.

- `%groups` - The organizational substrate for constructing, joining, finding,
and managing groups (different than the in-group activity of chatting,
writing, or collecting)
- `%groups-ui` - Optimized scries for the Groups UI
- `%chat` - 1:1 and multi-DM capabilities for Talk and Chat channels in Groups
- `%diary` - Notebook channels in Groups
- `%heap` - Gallery channels in Groups
- `%hark` - Notifications within Groups and Talk, and a general notification bus
for Landscape, which will eventually be moved to Landscape proper
- `%notify` - Hooks for iOS push notifications
- `%grouper` - Handler for Lure invitiations

All actions are performed with
[pokes](https://developers.urbit.org/reference/glossary/poke).
All actions are performed with
[pokes](https://developers.urbit.org/reference/glossary/poke).
See the on-ship developer documentation for more details.

## Use of current-day Landscape agents

At the moment, Groups and Talk both make use of `%settings-store`, `%s3-store`,
and `%contact-store` agents in the `%landscape` desk (the historical name for
the Groups 1 app). We will eventually distribute these as part of the base
`%garden` desk (the system launcher UI we now call Landscape). Finally, we will
rename `%garden` to `%landscape`, reducing confusion everywhere.

We have plans to replace `%contact-store`with a Groups agent (and standalone
contact + identity management app) on the tails of Tlon core devs’ [subscription
reform
efforts](https://gist.github.com/belisarius222/15bcf267689f1dd95e12005bd944608e).
Nothing is changing in the short-term, but if your app uses this store, you may
want to stay subscribed to our announcements in the [urbit-dev mailing
list](https://groups.google.com/a/urbit.org/g/dev).
## Use of Landscape agents

At the moment, Groups and Talk make use of `%settings`, `%storage`, `%hark`,
and `%contacts` agents in the `%landscape` desk.
35 changes: 28 additions & 7 deletions desk/app/grouper.hoon
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,16 @@
[%pass /bite-wire %agent [our.bowl %reel] %watch /bites]
+$ card card:agent:gall
+$ versioned-state
$% state-1
$% state-2
state-1
state-0
==
+$ state-2 [%2 =enabled-groups =outstanding-pokes]
+$ state-1 [%1 =enabled-groups =outstanding-pokes]
+$ state-0 [%0 =enabled-groups]
--
::
=| state-1
=| state-2
=* state -
%- agent:dbug
%+ verb |
Expand Down Expand Up @@ -83,7 +85,9 @@
=/ group=cord i.t.t.path
?: (~(has in outstanding-pokes) [target group]) `this
:_ this(outstanding-pokes (~(put in outstanding-pokes) [target group]))
~[[%pass path %agent [target %grouper] %poke %grouper-ask-enabled !>(group)]]
:~ [%pass path %agent [target %grouper] %poke %grouper-ask-enabled !>(group)]
[%pass /expire/(scot %p our.bowl)/[group] %arvo %b [%wait (add ~h1 now.bowl)]]
==
[%check-link @ @ ~]
:_ this
~[[%pass path %agent [our.bowl %grouper] %poke %grouper-check-link !>(path)]]
Expand Down Expand Up @@ -142,25 +146,42 @@
`this
::
++ on-save !>(state)
::
++ on-load
|= old-state=vase
^- (quip card _this)
=/ old !<(versioned-state old-state)
?- -.old
%1
%2
:_ this(state old)
?: (~(has by wex.bowl) [/bite-wire our.bowl %reel]) ~
~[(bite-subscribe bowl)]
%1
`this(state [%2 enabled-groups.old ~])
%0
`this(state *state-1)
`this(state *state-2)
==
::
++ on-arvo
|= [=wire =sign-arvo]
^- (quip card _this)
?+ wire (on-arvo:def wire sign-arvo)
[%expire @ @ ~]
?+ sign-arvo (on-arvo:def wire sign-arvo)
[%behn %wake *]
=/ target (slav %p i.t.wire)
=/ group i.t.t.wire
?~ error.sign-arvo
`this(outstanding-pokes (~(del in outstanding-pokes) [target group]))
(on-arvo:def wire sign-arvo)
==
==
++ on-arvo on-arvo:def
::
++ on-peek
|= =path
^- (unit (unit cage))
?+ path [~ ~]
[%x %enabled @ ~]
``json+!>([%b (~(has in enabled-groups) i.t.t.path)])
==
::
--
4 changes: 2 additions & 2 deletions desk/desk.docket-0
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
info+'Start, host, and cultivate communities. Own your communications, organize your resources, and share documents. Groups is a decentralized platform that integrates with Talk, Notebook, and Gallery for a full, communal suite of tools.'
color+0xef.f0f4
image+'https://bootstrap.urbit.org/icon-groups.svg?v=1'
glob-http+['https://bootstrap.urbit.org/glob-0v6.9dvk5.sfb7j.6ioes.rcm0v.agf38.glob' 0v6.9dvk5.sfb7j.6ioes.rcm0v.agf38]
glob-http+['https://bootstrap.urbit.org/glob-0v1.kbjm8.h44sn.0rji5.upe8g.u5l9s.glob' 0v1.kbjm8.h44sn.0rji5.upe8g.u5l9s]
base+'groups'
version+[4 7 1]
version+[4 8 0]
website+'https://tlon.io'
license+'MIT'
==
6 changes: 6 additions & 0 deletions desk/lib/diary-json.hoon
Original file line number Diff line number Diff line change
Expand Up @@ -540,6 +540,12 @@
code/so
tag/so
break/ul
::
:- %task
%- ot
:~ checked/bo
content/(ar inline)
==
::
:- %block
%- ot
Expand Down
4 changes: 2 additions & 2 deletions talk/desk.docket-0
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
info+'Send encrypted direct messages to one or many friends. Talk is a simple chat tool for catching up, getting work done, and everything in between.'
color+0x10.5ec7
image+'https://bootstrap.urbit.org/icon-talk.svg?v=1'
glob-http+['https://bootstrap.urbit.org/glob-0v4.q495n.b6c5b.a55im.e8u5j.1tn0c.glob' 0v4.q495n.b6c5b.a55im.e8u5j.1tn0c]
glob-http+['https://bootstrap.urbit.org/glob-0v3.5ef54.b2qo4.o8b4o.738uj.ok2k6.glob' 0v3.5ef54.b2qo4.o8b4o.738uj.ok2k6]
base+'talk'
version+[4 7 1]
version+[4 8 0]
website+'https://tlon.io'
license+'MIT'
==
Loading

0 comments on commit 0193c47

Please sign in to comment.