Skip to content

Instantly share code, notes, and snippets.

diff --git a/urb/zod/main/app/shell/core.hook b/urb/zod/main/app/shell/core.hook
index 5fdcc06..071f29b 100644
--- a/urb/zod/main/app/shell/core.hook
+++ b/urb/zod/main/app/shell/core.hook
@@ -353,7 +353,8 @@
|= a=span
leaf/(trip (rap 3 (~(got by cub.hid) a) '(' a ')' ~))
(blab [ost give/nice/~] (print tak))
- %x =. act next-act
+ %x ~& [%ctrl-x act=act nact=next-act pot=pot]
diff --git a/urb/zod/main/app/terminal/core.hook b/urb/zod/main/app/terminal/core.hook
index 49657b9..ed6f450 100644
--- a/urb/zod/main/app/terminal/core.hook
+++ b/urb/zod/main/app/terminal/core.hook
@@ -174,6 +174,7 @@
%nice +>.$
?(%rust %rush)
=. p.q.sih ?^(q.q.sih p.tel p.q.sih) :: XX prompt hack
+ ~& [%term-pour dis=dis qsih=q.sih]
%_ +>.$
~zod/try=> fjdlkfcog: %fjdlkf
error: find-none
[ %gall-crud-error
/a/~zod/._~~.terminal__/u/txt
~[/d/term-mess //term/1]
[ %g
%crud
p=%mack-made
q
~[
/- mess,user,users,zing,zong
!:
=> |%
++ axle
$% [%0 p=(map path ,[p=(list zong) q=(map ship ,?)])]
==
++ blitz
$% [%zong p=zong]
[%user p=user]
==
~zod/try=> ^/%/euler5
! /~zod/try/~2015.1.30..21.28.33..9c0b:<[1 1].[1 11]>
! /~zod/try/~2015.1.30..21.28.33..9c0b/euler5:<[6 1].[56 3]>
! /~zod/try/~2015.1.30..21.28.33..9c0b/euler5:<[7 1].[56 3]>
! /~zod/try/~2015.1.30..21.28.33..9c0b/euler5:<[11 1].[56 3]>
! /~zod/try/~2015.1.30..21.28.33..9c0b/euler5:<[54 3].[55 31]>
! /~zod/try/~2015.1.30..21.28.33..9c0b/euler5:<[55 3].[55 31]>
! /~zod/try/~2015.1.30..21.28.33..9c0b/euler5:<[55 8].[55 20]>
! /~zod/try/~2015.1.30..21.28.33..9c0b/euler5:<[55 9].[55 11]>
! -find-limb.sq

Keybase proof

I hereby claim:

  • I am philipcmonk on github.
  • I am pcmonk (https://keybase.io/pcmonk) on keybase.
  • I have a public key ASCLb38rzx85_brKQrl05d8ZFMbANIaRHwxegKVE3FesFQo

To claim this, I am signing this object:

This is a proposal for a "lure service".

While this can serve as the foundation for countless features, the primary goal is to solve the "boot into an empty landscape" problem. In other words, it's trying to close the loop of "one person uses Urbit" -> "they invite another to their group on Urbit" -> "they get on Urbit and immediately know what to do with it" -> "they invite another".

Thus, we will first consider the case of inviting someone into an Urbit group who may not already use Urbit.

Invites should be regular links. These work on any device, can be transmitted over any transport (including publicly in a tweet or physically via qr code), and are very low-friction to click. When you click this link, you should expect to receive an invite to that group.

To make this happen, we must somehow establish an association between the person who clicked the link and their @p. We should make this work for as many cases as possible -- especially, it should work even if they don't yet have a @p.

=s -build-file %/lib/strandio/hoon
|pass :* %k %lard %base =/ m (strand:rand ,vase) ;< file=@t bind:m (fetch-cord:s "https://raw.githubusercontent.com/urbit/urbit/cec4e11448ee4bbcdf9d586fe0d96d493a3d60c2/pkg/landscape/app/group-store.hoon") ;< ~ bind:m (send-raw-card:s %pass /info %arvo %c %info %landscape %& [/app/group-store/hoon %mut %hoon !>(file)] ~) (pure:m !>('hotfix complete')) ==
@philipcmonk
philipcmonk / baby.hoon
Created February 11, 2023 22:53
A baby pill -- no jets required
!.
=> ~
=/ core
!=
=> ~ =>
|%
+$ card (cask)
++ cask |$ [a] (pair mark a)
+$ knot @ta
++ list |$ [item] $@(~ [i=item t=(list item)])
@philipcmonk
philipcmonk / fmt.hoon
Created March 16, 2023 06:46
fmt.hoon is a basic autoformatter for hoon. fmted.hoon is the result of running it on itself.
:: An autoformatter for hoon
::
:: Usage: +desk!fmt (ream .^(@t %cx /=desk=/gen/fmt/hoon))
::
:: This is still very experimental. The biggest weaknesses are:
:: - no comments (need parser to store them)
:: - core arms are in alphabetical order (need AST to store `(list
:: [term hoon])` instead of `(map term hoon)`)
:: - no vertical alignment (requires some fancy lookahead, but should
:: be doable locally)