Commit Graph

292 Commits

Author SHA1 Message Date
Liam Fitzgerald
7e5bf37184
hark: address L review 2020-11-10 13:32:48 +10:00
Logan Allen
4b7f0e8025 thread-watch: change name to observe-hook 2020-11-06 14:55:32 -06:00
Brendan Hay
ff3d7c1574
arvo: run %lens when lite boot (-l) is specified 2020-11-05 10:25:31 +01:00
fang
b96e071eb2
Merge branch 'release/next-sys' into release/next-dill 2020-11-04 17:25:35 +01:00
Logan Allen
1b8af7d78c hood: start %thread-watch-hook 2020-11-02 15:22:50 -06:00
Philip Monk
77b33632a6
Merge remote-tracking branch 'origin/master' into release/next-sys 2020-10-14 19:26:33 -07:00
Fang
7242947f95
helm: add cors registry management generators 2020-10-05 23:42:59 +02:00
Fang
369193f50a
helm: add cors registry management generators 2020-09-30 15:54:25 +02:00
Joe Bryan
31fe240632 arvo: adds |meld, triggering memory unification 2020-09-09 22:50:43 -07:00
Joe Bryan
7f0b500778 arvo: adds |trim, triggering memory reclamation 2020-09-09 22:49:37 -07:00
Fang
ef4b56f8c7
dill: send styled text to runtime as-is
Depending on the additions to term.c made in 467d8d239 allows dill to
forget about ansi escape codes, and pass styled text nouns straight on
to vere.

Also removes a bit of logic from drum, which assumed things about the
rendering of escape codes to adjust cursor positioning. Now it simply
states the semantic cursor position, letting the runtime deal with the
potential influence of styling.
2020-09-09 19:09:29 +02:00
Philip Monk
67c5caada8
clay: add safe merge options
As described in gen/hood/merge/help.txt
2020-08-28 16:36:00 -07:00
Logan Allen
a4e21da3f0 hood: starts %graph-pull-hook and %graph-push-hook 2020-08-19 12:48:08 -07:00
Caio Marcelo de Oliveira Filho
92cf9d7c33 Merge branch 'master' into code-reset 2020-08-17 14:55:07 -07:00
Caio Marcelo de Oliveira Filho
df868e2c4f jael, eyre: Add a way to reset the web login code
Jael now stores a `step` that is combined with the original salt to
produce a new code.  A `%step` card is used to increment that value,
and effectively resetting the keys.  Because the first `step` is zero,
the first code is the same as before.

Eyre was changed to be notified with `%code-changed` so it can forget
old cookies, sessions and discard all the existing channels.

A new generator was added |code, that does both querying and
resetting the code

    |code             :: shows current code, step and help
    |code %reset      :: changes the code

The old +code generator still works correctly.
2020-07-31 11:35:48 -07:00
L
798f3b5de0
Merge pull request #3110 from urbit/la/graph-store
graph-store: a consistent, strongly validated, interoperable data storage format
2020-07-30 15:25:17 -07:00
Logan Allen
7c3d608185 hood: update to %9 and start %graph-store 2020-07-28 12:24:55 -07:00
Logan Allen
043714752e hood: no longer start graph hooks for now 2020-07-28 12:21:30 -07:00
Logan Allen
325667f9ec Merge branch 'master' into la/graph-store 2020-07-27 12:10:22 -07:00
Philip Monk
39052bdec0
Merge pull request #3185 from urbit/philip/kiln
kiln: get germ for actual desk
2020-07-24 21:20:53 -07:00
Philip Monk
5490a3cb73
kiln: get germ for actual desk 2020-07-24 16:37:15 -07:00
Caio Marcelo de Oliveira Filho
47871d0f48 ota: show information instead of disable by default
Instead of `|ota` cancel the OTA, make it show the current setting.
Make the cancel need a more explicit argument.

   |ota                 shows the current setting
   |ota disable         disable OTA
   |ota ~sponsor %desk  reset to a different sponsor/desk

Because most of the time the expected desk is going to be %kids, use
that in the "help message".
2020-07-22 16:27:05 -07:00
Liam Fitzgerald
24b25a3422 Merge remote-tracking branch 'origin/release/next-userspace' into lf/groups-refactor 2020-07-22 10:42:52 +00:00
Philip Monk
350756b47a
glob: autostart and make ota-able 2020-07-17 16:58:28 -07:00
Logan Allen
80d67c2f16 graph-view: delete for now 2020-07-08 15:39:20 -04:00
Logan Allen
106119a9ba Merge branch 'la/ordered-map-subset' into la/graph-store 2020-07-08 15:17:55 -04:00
Liam Fitzgerald
76bc3d82e1 Merge branch 'release/next-userspace' into lf/groups-refactor 2020-07-08 10:04:02 +10:00
Logan Allen
39933ca848 graph: hooks compile and higher-order mark implementation first-pass 2020-07-06 19:31:57 -04:00
Logan Allen
a7cbecc0e2 Merge branch 'lf/groups-refactor' into la/graph-store 2020-07-06 15:02:20 -04:00
Philip Monk
37b9f854fd
eyre: give all args to generators
fixes #3082
2020-07-02 14:42:26 -07:00
Liam Fitzgerald
93cf40a604 Merge branch 'release/next-userspace' into lf/groups-refactor 2020-07-02 12:38:12 +10:00
Philip Monk
ba9e894580
trouble: report source of OTA instead of parent 2020-06-30 16:10:12 -07:00
Philip Monk
40db8ea580
kiln: make otas continue even if they failed to apply 2020-06-29 13:25:10 -07:00
Philip Monk
42de999024
kiln: don't implicitly create syncs
Also silence some spurious errors.
2020-06-26 19:21:09 -07:00
Liam Fitzgerald
9b61c5571b Merge branch 'ford-fusion' into lf/groups-refactor 2020-06-27 10:42:16 +10:00
Philip Monk
51c6faaa31
ford,kiln: nicer errors 2020-06-24 21:24:58 -07:00
Liam Fitzgerald
47352a06ba groups: finalize state adapters 2020-06-24 10:28:57 +10:00
Logan Allen
59a4c52232 graph-view: first sketch 2020-06-23 14:01:03 -04:00
Liam Fitzgerald
8cf81002ec Merge branch 'ford-fusion' into lf/groups-refactor 2020-06-23 12:13:03 +10:00
Philip Monk
6ff9f75bb7
Merge remote-tracking branch 'origin/master' into ford-fusion 2020-06-19 14:52:18 -07:00
Ted Blackman
f2ee0a1380 drum: fix +on-load resubscribes 2020-06-18 00:58:47 -04:00
Ted Blackman
3914c0c0dd ota: works on my machine 2020-06-17 23:31:37 -04:00
Logan Allen
08e1abb139 hood + apps: fix OTA process for feat/SPA 2020-06-17 15:51:13 -04:00
Logan Allen
eaf523e3c2 hood: add version %6 for %file-server upgrade 2020-06-17 14:27:30 -04:00
Ted Blackman
d395c2711d hood: WIP compiles but +on-load crashes 2020-06-17 03:54:27 -04:00
Ted Blackman
ac77d0a3ec hood: uncompiled first try at state as tuple 2020-06-17 02:36:09 -04:00
Ted Blackman
01eee03340 kiln: WIP state as tuple 2020-06-16 03:29:17 -04:00
Liam Fitzgerald
ef20a4d08a Merge branch 'feat/spa' into lf/groups-refactor 2020-06-10 14:41:17 +10:00
Philip Monk
11fa48f57b
kiln: ota logic compiles 2020-06-09 16:21:30 -07:00
Liam Fitzgerald
900da34fa9 drum: add %file-server to boot priority
File server needs to be started with priority in order to ensure the
-view apps can poke it, regardless of set ordering.
2020-06-09 13:02:24 +10:00
Liam Fitzgerald
d66dbff61e groups: migrate to push-pull hooks and resources 2020-06-08 17:53:16 +10:00
Matilde Park
9440392777 drum: remove 'invite-view' 2020-06-04 17:48:48 -04:00
Philip Monk
8b78f04dd3
Merge remote-tracking branch 'origin/master' into ford-fusion 2020-06-02 21:50:20 -07:00
Logan Allen
9b5c93d2f1 file-server: renamed to file-server 2020-06-01 14:02:12 -04:00
Logan Allen
f13b174f16 landscape: renamed to http-server-store, finished subscribable configuration 2020-06-01 14:01:38 -04:00
Logan Allen
d727b95770 hood: start landscape app automatically and upon OTA 2020-06-01 13:57:04 -04:00
Philip Monk
0642cc5861
ames: add |ames-wake
Somehow we ended up with flows which expected to awaken but did not wake
up.  This was likely caused by the error in r920j OTA, urbit-os-v1.0.18.

This adds a command which ensures that every flow has an active timer.
I expect this to be needed only once, but it's a pretty general tool, so
it's worth keeping.

I've included an unused @t parameter to more easily add simple debug
commands to ames without having to add a new task
2020-05-28 10:28:31 -07:00
Philip Monk
a4a44f1e21
kiln: cleanup 2020-05-22 14:32:32 -07:00
Philip Monk
096149713a
drum: relink to chat-cli
The subscription changes in drum broke existing subscriptions.  This
worked alright (though loud) for dojo, but it left chat-cli "frozen"
unless you manually unlinked/relinked.  This does that automatically.

It also includes a refactoring of +on-load in drum, to avoid vain
repetition.
2020-05-22 00:17:56 -07:00
Philip Monk
4aff4d74e2
kiln: get updates into %home, remove %base
We need to get updates directly into %home in case the marks depend on
changes to hoon.hoon.  %base has no reason to exist.

Our ota strategy is now to merge from parent/kids to home, then
parent/kids to kids.
2020-05-21 23:45:17 -07:00
Philip Monk
a84b0db733
clay: fix clobbering changes if identical changes 2020-05-21 01:23:04 -07:00
Ted Blackman
1028e9fd7c hoon,kiln: clean up boot prints; new pill 2020-05-20 04:36:16 -04:00
Philip Monk
a874ab4355
zuse: remove +ford 2020-05-14 00:22:39 -07:00
Philip Monk
e95f34a325
write: convert to fusion 2020-05-13 23:42:44 -07:00
Philip Monk
fd26b2184e
kiln: convert to fusion 2020-05-13 20:13:53 -07:00
Philip Monk
c092f9cea4
hood: remove references to ford 2020-05-13 19:29:20 -07:00
Ted Blackman
778f6e9d05 /sys: make hoon optional in %lyra 2020-05-13 18:27:14 -04:00
lukechampine
9f45acc17b drum: switch to per-ship /sole/drum duct 2020-05-06 18:54:54 -04:00
Liam Fitzgerald
54969afdd2 drum: fix broken app start
If we find an agent that has already been launched then we continue
iterating through the list of apps instead of stopping

Fixes: #2858
2020-05-06 09:45:17 +10:00
Matilde Park
3c06c15505 Merge branch 'lf/hood-boot-order' (#2805)
* origin/lf/hood-boot-order:
  drum: partially restore reverted changes
  Revert "drum: address review comments"
  chat-cli: remove unnecessary %gu scry
  link-proxy-hook: remove unnecessary %gu scry
  drum: address review comments
  drum: sort cli connections
  drum: account for app dependencies on boot

Signed-off-by: Matilde Park <matilde@tlon.io>
2020-05-04 20:41:10 -04:00
Liam Fitzgerald
5dc241dbe5 drum: partially restore reverted changes 2020-04-29 08:40:38 +10:00
Liam Fitzgerald
e099f3a8c6 Revert "drum: address review comments"
This reverts commit c925665cb8.
2020-04-29 08:25:21 +10:00
Liam Fitzgerald
c925665cb8 drum: address review comments 2020-04-28 12:20:59 +10:00
Logan Allen
003c4676b1 hood: added version %4 of hood state 2020-04-27 18:28:31 -04:00
Logan Allen
28c707b300 hood: updated drum to version %3 2020-04-27 15:12:51 -04:00
Liam Fitzgerald
37cd90a42b drum: sort cli connections
Sorts cli connections so that the user always boots into %dojo
regardless of their @p

Fixes: #2248
2020-04-25 07:21:41 +10:00
Liam Fitzgerald
2e3947e3c0 drum: account for app dependencies on boot
Changes drum's boot order to be deterministic regardless of the ship
you're on.

Fixes #2681
2020-04-25 07:20:42 +10:00
Logan Allen
daf32fd0f9 s3-store: initial commit 2020-04-24 12:19:01 -04:00
Ted Blackman
9b0cb85a02 gall: clean up API, remove empty caches from state. 2020-04-21 18:50:47 -04:00
Ted Blackman
ddc5b9e3f6 kiln: fix |goad-gall 2020-04-20 22:55:40 -04:00
Isaac Visintainer
2ad8264c52 Merge branch 'philip/gall-clear' 2020-04-02 15:32:43 -07:00
Philip Monk
1599937c81
clay: add option to skip queue
Makes it so that |cancel %force skips the next thing in the queue if
you're not in the middle of something.  If you are in the middle of
something, it skips the thing you're in the middle of (just like naked
|cancel).

This should resolve issues where |cancel doesn't drain the queue.
2020-03-23 15:53:18 -07:00
Philip Monk
cf9ef764f1
gall: remove pending messages from breached ship
When a ship breaches, we remove all messages that have yet to be
delivered to an app (eg if it's not yet started).  We also add
|gall-sear to do this manually, but this shouldn't be needed in normal
operation.

Finally, to unblock ~zod and ~bus on mainnet, we sear one particular
ship automatically on loading hood.  It cannot be done manually because
no userpace changes can be made until it's unblocked.
2020-03-18 21:05:06 -07:00
Logan Allen
2ce60e9f0d drum: start metadata-hook on OTA 2020-03-05 15:50:18 -08:00
Logan
1272a61443
Merge pull request #2324 from urbit/m/chat-ota
OS1 OTA: chat groups & permissions
2020-02-25 13:17:56 -08:00
Logan
f64d720795
Merge pull request #2326 from urbit/os1-metahook
metadata-hook: a hook for sending metadata over the network
2020-02-21 20:05:07 -08:00
Fang
5a029967b7
drum: start metadata-store on-upgrade 2020-02-21 00:50:15 +01:00
Logan Allen
99663fec50 metadata-hook: handle metadata facts 2020-02-19 17:56:36 -08:00
Isaac Visintainer
7fced14cfc automatically start contacts and links apps upon recieving ota 2020-02-18 11:22:36 -08:00
Logan Allen
ca7cc1fc10 metadata-store: first compiling version of metadata-store 2020-02-13 13:13:10 -08:00
Fang
83ed16fcb7
link: remove /app/link-server-hook
Use link-view instead.
2020-02-05 18:43:27 +01:00
Logan Allen
d2ad5b143d hood: added |autocommit generator 2020-01-29 10:42:52 -08:00
A Arroyo
757b4ffcbe merged links fe into os-rc 2020-01-24 16:21:25 -08:00
Logan Allen
56a1c3400a contact-hook: added first complete and compiling version 2020-01-23 13:13:52 -08:00
Logan Allen
47c1745074 contacts: added store, view, marks, ui 2020-01-23 13:12:26 -08:00
Matilde Park
89aa143403 drum: add link-store and related hooks to boot 2020-01-22 18:20:06 -05:00
Jared Tobin
01afc2a143
Merge branch 'm/gall-gift-paths' (#2134)
* origin/m/gall-gift-paths:
  gall: (list path) in %fact and %kick

Signed-off-by: Jared Tobin <jared@tlon.io>
2020-01-07 04:17:32 +08:00
Fang
fcf1846b6f
various: remove trailing whitespace 2020-01-03 22:06:42 +01:00
Fang
ae8a57ca25
gall: (list path) in %fact and %kick
Instead of providing a (unit path), allows for (list path), which better
supports the "update to path and subpath cases".

For example, if /things wants updates about everything, and
/things/specific wants updates about the specific thing, they'll both
need to receive a %fact when the specific thing changes.
Previously, these would have been two separate moves. Now, gall handles
the multi-targeting for you.
2019-12-23 13:37:32 +01:00
Fang
ea7c1db61c
various: use =/ in place of =+ ^-
Also faceless =; where appropriate.
2019-12-21 14:29:14 -03:30
Philip Monk
b14606660a
goad: recompile apps after changes to /sys
OTAs commonly end up in an inconsistent state if apps depend on changes
to /sys.  For example, the %sift changes break on OTA because %spider
needs to be reloaded so that it's aware of the new thread type.  This
adds a %goad app, which reloads all apps after every change to /sys.

Getting this to start OTA is nontrivial, but this pattern should work
for apps in the future.  The changes to clock shouldn't generally be
necessary; they are only necessary here because we can't rely on hood to
start goad, since hood fails to compile if it's run before zuse is
reloaded.  Once goad is active, this will cease to be a problem.
2019-12-13 17:14:51 -08:00
Ted Blackman
c500e03b81
hood: |ames-sift generator to trace by ship 2019-12-12 15:55:36 +08:00
Jared Tobin
3f50a11e48
Merge branch 'philip/drum' (#2063)
* origin/philip/drum:
  drum: revert tang ordering change

Signed-off-by: Jared Tobin <jared@tlon.io>
2019-12-10 16:26:49 +08:00
Philip Monk
5ff9e04204
drum: revert tang ordering change
Turns out this wasn't a regression, it was intended behavior.  I
continue to believe it's the wrong behavior, but that will require a
longer discussion.
2019-12-09 11:47:48 -08:00
Joe Bryan
a0d2d41d0c ames: remove last remnants of |nuke 2019-12-06 11:46:55 -08:00
Philip Monk
ddbfb53b28
drum: print tangs in order 2019-12-05 11:58:55 -08:00
Philip Monk
7d2f789696
drum: boot to dojo and start acme 2019-12-04 18:32:28 -08:00
Philip Monk
9fa772a342
clay: don't make |cancel require argument 2019-12-03 14:46:39 -08:00
Philip Monk
c90107659b
Merge remote-tracking branch 'origin/rc-ames-verb' into rc 2019-12-02 20:22:04 -08:00
Ted Blackman
41e7e16689 |ames-verb generator to set verbosity 2019-12-02 18:54:01 -05:00
Philip Monk
0431c3c073
Merge remote-tracking branch 'origin/jam-cue-rock' into rc 2019-12-02 02:08:37 -08:00
Philip Monk
82c4895e32
helm: reset and reload in correct order 2019-11-30 21:54:54 -08:00
Philip Monk
74b0f66850
ames: continue processing memos after %done 2019-11-27 15:13:17 -08:00
Philip Monk
7ddd1225e0
hood: link chat-cli on startup 2019-11-27 01:21:16 -08:00
Philip Monk
f035955a36
ames: rename alef -> ames 2019-11-27 00:46:02 -08:00
Philip Monk
2e9abe18ad
drum: restore startup apps 2019-11-26 23:08:42 -08:00
Joe Bryan
3741e734cb dill: adds |pack and and friends 2019-11-22 17:24:42 -08:00
Isaac Visintainer
51d61e4d49 static gall: convert soto 2019-11-22 12:57:58 -08:00
Philip Monk
9d47222139
Merge remote-tracking branch 'origin/mall-testnet' into philip/mall-real 2019-11-21 19:07:28 -08:00
Philip Monk
9f89c8b8bc
drum: fully unlink 2019-11-20 14:26:13 -08:00
Philip Monk
b8903e9a6f
gall: fix ap-kill-down
This broke when %kick was handled by resubscribing on your own ship
because it processed the %kick before the %leave.  For example, `@t`404
at the dojo would put the dojo in an unworkable state.

You want the %leave to be processed first because you can't do a
"resubscribe" in response to that.
2019-11-20 13:24:19 -08:00
Philip Monk
1d1119c1f3
drum: unsubscribe on poke-ack failure 2019-11-20 12:12:33 -08:00
Ted Blackman
39144ee977 drum: fix nest-fail 2019-11-20 01:45:44 -05:00
Ted Blackman
7eeea1f25b drum: add %spider to default apps 2019-11-20 01:36:36 -05:00
Philip Monk
a5412f01de
Merge branch 'alef-testnet-merge' into philip/mall-real 2019-11-19 13:03:07 -08:00
Philip Monk
6a406e6b29
gall: mall -> gall 2019-11-18 20:36:21 -08:00
Philip Monk
4cb821de11
ph: get boot-az working 2019-11-14 13:31:55 -08:00
Matilde Park
86e99c998c drum: Boot with %soto
Adds %soto to default application pool, so it shows up in Landscape
for fresh ships.
2019-11-14 13:40:05 -05:00
Philip Monk
32ea09caf2
mall: remove old hood libraries 2019-11-14 10:39:50 -08:00
Philip Monk
adc54531fc
mall: autostart lens 2019-11-13 17:26:29 -08:00
Philip Monk
cd3308d8d9
mall: convert lens 2019-11-13 16:20:24 -08:00
Philip Monk
bcd7c5e82d
Merge branch 'master' into philip/mall-real 2019-11-09 16:47:41 -08:00
Philip Monk
1c8bddfb15
mall: ci 2019-11-08 19:52:18 -08:00
Philip Monk
7c4316fce4
mall: refactor gift/sign/task types
+on-agent now takes a +sign:agent:mall, which doesn't include spurious
options.  Similarly, +task:agent:mall is smaller.
2019-11-08 17:35:24 -08:00
Philip Monk
43be7737d6
mall: rename agent arms 2019-11-07 00:19:58 -08:00
Jared Tobin
3ec88f9bb1
Merge branch 'goad-gall' (#1915)
* goad-gall:
  updates solid pill
  dill: fixes cursor position during boot
  dill: adds %goad automation
  dill: refactors move production
  goad: adds app to unblock :hood if necessary
  hood: adds |goad-gall generator
  gall: restores "not-running" printf
  gall: adds %goad task force agent rebuilds

Signed-off-by: Jared Tobin <jared@tlon.io>
2019-11-06 17:29:45 +08:00
Jared Tobin
144445beb1
Merge branch 'invite-app' (#1901)
* origin/invite-app:
  chat-hook: upgrade from old state and perform invitatory creation and subscription
  invite-hook: crash upon invalid invite received
  changed invite peek interface to /:path/:uid
  invite: add comments and clean up
  chat-js: added invite functionality
  chat-hook: added invite functionality
  app: added invite app and mark converters to JSON

Signed-off-by: Jared Tobin <jared@tlon.io>
2019-11-06 15:47:05 +08:00
Philip Monk
7448432707
drum: don't print stack trace on phat reap 2019-11-05 20:05:31 -08:00
Joe Bryan
c26d547625 hood: adds |goad-gall generator 2019-11-05 13:04:27 -08:00
Jared Tobin
3fac197ec1
Merge branch 'eth-watcher-2' (#1895)
* eth-watcher-2: (21 commits)
  eth: move existing chain requests into ethio
  eth-watcher: refactor refresh rate to top of file
  hook: add pool-group-hook for making invite groups
  ethio: add +read-contract for chain state reading
  zuse: add delegated-sending address
  eth: move eth-watcher's request-rpc into ethio lib
  gaze: make compile for latest eth-watcher
  drum: start eth-watcher on boot
  azimuth-tracker: remove deprecated generator
  eth: implement azimuth-tracker using eth-watcher
  eth-watcher: ensure logs always sent oldest-first
  eth-watcher: allow peers to unconfigured watchdogs
  eth-watcher: saner %watch behavior
  eth-watcher: implement %clear poke
  eth-watcher: store logs in state to implement peer
  eth-watcher: move types into /sur file
  eth-watcher: properly tag out-peer-data
  eth-watcher: single update timer loop
  eth-watcher: implement /block peek
  eth: turn azimuth-tracker into eth-watcher
  ...

Signed-off-by: Jared Tobin <jared@tlon.io>
2019-11-05 17:11:19 +08:00
Philip Monk
0638d23840
mall: forward port userspace changes 2019-11-04 21:35:42 -08:00
Philip Monk
82513c27fc
Merge branch 'master' into philip/mall-real 2019-11-04 19:35:24 -08:00
Logan Allen
656f264f96 app: added invite app and mark converters to JSON 2019-11-01 14:04:50 -07:00
Philip Monk
8e66d84c83
easy-print: don't crash if type-check crashes
also don't render all the types if there's more than 10.
2019-10-31 15:53:43 -07:00
Philip Monk
9487481128
dojo, drum: change %tab sole-effect to use tanks
It should be general-purpose for tab-completing things in other apps,
types are inappropriate.
2019-10-31 15:14:41 -07:00
Philip Monk
4482997a16
dojo, drum: give tab completion as true output
This stops slogging the tab completion and intead adds a +sole-effect
for tab completion output.  This is morally correct, and it lets dojo
clients show tab completions how they want.  For example, web dojo could
implement this as a drop-down box.

Another advantage is that this puts the rendering logic in drum, which
knows the width of the terminal.  Thus, we can make sure each match
takes no more than one line by truncating with ellipses.  If there's
only one match and it's already fully typed, then we display the whole
type.
2019-10-31 14:36:14 -07:00
Philip Monk
76b917f426
dojo: add tab completion
This is initial support for type-aware tab completion.  When you hit tab, it tries to complete the word you're in the middle of using a face or arm in the subject at that point in the code.  It also shows all possible matches and their associated types.  It's nearly instantaneous.  Notes:

- It advances to the longest common prefix, so if you hit tab on `ab` and the only possible results are `abcde` and `abcdz`, then it'll write `abcd` and print both out (with their types).

- If there are fewer than ten matches, it prints the type along with the face.  Printing types is too slow to use all the time, but with 10 it's essentially instantaneous.

- The match closest in the subject to you (i.e. smallest axis number) is displayed lowest (closest to your focus).

Examples below, where `<TAB>` represents me hitting tab while my cursor is at that position (the line with the `<TAB>` is not preserved in the actual output).

```
~zod:dojo> eth<TAB>
-----
ethereum        #t/<11.qcl {<3.ltb 27.ipf 7.ecf 36.uek 92.bjk 247.ows 51.mvt 126.xjf 41.mac 1.ane $141> <21.yeb 27.ipf 7.ecf 36.uek 92.bjk 247.ows 51.mvt 126.xjf 41.mac 1.ane $141>}>
ethereum-types  #t/<3.ltb 27.ipf 7.ecf 36.uek 92.bjk 247.ows 51.mvt 126.xjf 41.mac 1.ane $141>
~zod:dojo> ethereum
~zod:dojo> |=  zong=@ud  z<TAB>
-----
zing  #t/<1.dqs {* <126.xjf 41.mac 1.ane $141>}>
zap   #t/<1.iot {tub/{p/{p/@ud q/@ud} q/""} <1.rff {daf/@t <247.ows 51.mvt 126.xjf 41.mac 1.ane $141>}>}>
zuse  #t/$309
zong  #t/@ud
~zod:dojo> |=  zong=@ud  zo<TAB>
-----
zong  #t/@ud
~zod:dojo> |=  zong=@ud  zong
~zod:dojo> <TAB>
hoon-version
trel
quip
pole
unit
qual
lone
... about 600 more lines ...
unity
html
zuse
eny
now
our
~zod:dojo>
```

Functionally, this is in a state where I'd be comfortable shipping it.  It doesn't interfere with anything if you don't press tab, and it's perfectly OTA-able.  I do think its output is a little verbose, but that can be tuned over time as people try it and determine what feels good in practice.

Additional notes:

- There are plenty of similar systems for other languages, but my most direct inspiration is Idris's editor tools.  This is implemented for the dojo, but I actually want it in my editor, which is why the meat is all defind in a library.  I've only tested on dojo one-liners, so I don't know the performance on large blocks of code.

- The default type printer isn't great for this use case.  In particular,
	- Cores should not print anything about their context
  - The `#t/` should go away
  - If it looks like a gate, we should print its return value
  - Maybe special handling for molds, but if the above is done, then for example `bone` is  `* -> @ud`.

- The worst part about our wing ordering is that it really screws up tab completion.  You want to do `point.owner-address` instead of `owner-address.point` because that lets you type `point.ow<TAB>`.  I weakly prefer reading it how we do it now, but it's really not great.  You could do an (dojo-specific?) alternate syntax of `point;owner-address`; this is a simple transformation.

- Regardless of the above, this should handle the case where we're in the middle of defining a wing; it doesn't right now.

- When a variable is shadowed, we show both of them.  We should probably show the shadowed one with a `^`.

- We probably shouldn't print out hundreds of results.  Maybe just the closest 50 with ellipses.

- This gets you any face in your subject, regardless of whether its type is reasonable.  We could limit that some by copying the `gol` logic in mint, so that if the pseudo-backward-inference engine happens to know what type it should be, you can filter the tab results according to if they nest in that type.  This would be "strongly type-aware".
2019-10-30 23:19:25 -07:00
Fang
522f598770
drum: start eth-watcher on boot
Alongside the azimuth-tracker that depends on it.
2019-10-30 20:18:56 +01:00
Ted Blackman
625f855f24 master without pills, hopefully 2019-10-14 16:02:27 -04:00
Logan Allen
b12e305c9c apps: added permission hook and chat-view %join action 2019-10-11 14:09:30 -07:00