mirror of
https://github.com/ilyakooo0/urbit.git
synced 2024-12-11 08:55:23 +03:00
Merge branch 'master' into alef-testnet
This commit is contained in:
commit
0fc1675928
@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:6c7ad5eec00d0d6a6857ea023c6102999a30d5c99de7411e474b9d1c14a3e7b4
|
oid sha256:6143926c8a07a3d2a38abf2be0d3d1ef46315bf1ae13b5401113082ddbe481ec
|
||||||
size 9765203
|
size 12650146
|
||||||
|
@ -430,7 +430,7 @@
|
|||||||
[/ %whom who.ae] :: eny
|
[/ %whom who.ae] :: eny
|
||||||
[//newt/0v1n.2m9vh %born ~]
|
[//newt/0v1n.2m9vh %born ~]
|
||||||
[//behn/0v1n.2m9vh %born ~]
|
[//behn/0v1n.2m9vh %born ~]
|
||||||
:+ //term/1 %boot
|
:^ //term/1 %boot &
|
||||||
?~ keys.ae
|
?~ keys.ae
|
||||||
[%fake who.ae]
|
[%fake who.ae]
|
||||||
[%dawn u.keys.ae]
|
[%dawn u.keys.ae]
|
||||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -139,6 +139,7 @@
|
|||||||
++ made-kiln (wrap take-made):from-kiln
|
++ made-kiln (wrap take-made):from-kiln
|
||||||
++ mere-kiln (wrap take-mere):from-kiln
|
++ mere-kiln (wrap take-mere):from-kiln
|
||||||
++ mere-kiln-sync (wrap take-mere-sync):from-kiln
|
++ mere-kiln-sync (wrap take-mere-sync):from-kiln
|
||||||
|
++ wake-kiln-autocommit (wrap take-wake-autocommit):from-kiln
|
||||||
++ wake-kiln-overload (wrap take-wake-overload):from-kiln
|
++ wake-kiln-overload (wrap take-wake-overload):from-kiln
|
||||||
++ wake-helm-automass (wrap take-wake-automass):from-helm
|
++ wake-helm-automass (wrap take-wake-automass):from-helm
|
||||||
++ onto-drum (wrap take-onto):from-drum
|
++ onto-drum (wrap take-onto):from-drum
|
||||||
@ -151,6 +152,7 @@
|
|||||||
++ poke-drum-unlink (wrap poke-unlink):from-drum
|
++ poke-drum-unlink (wrap poke-unlink):from-drum
|
||||||
++ poke-drum-exit (wrap poke-exit):from-drum
|
++ poke-drum-exit (wrap poke-exit):from-drum
|
||||||
++ poke-drum-start (wrap poke-start):from-drum
|
++ poke-drum-start (wrap poke-start):from-drum
|
||||||
|
++ poke-drum-set-boot-apps (wrap poke-set-boot-apps):from-drum
|
||||||
++ poke-helm-hi (wrap poke-hi):from-helm
|
++ poke-helm-hi (wrap poke-hi):from-helm
|
||||||
::++ poke-helm-invite (wrap poke-invite):from-helm
|
::++ poke-helm-invite (wrap poke-invite):from-helm
|
||||||
++ poke-helm-mass (wrap poke-mass):from-helm
|
++ poke-helm-mass (wrap poke-mass):from-helm
|
||||||
@ -172,6 +174,7 @@
|
|||||||
++ poke-kiln-label (wrap poke-label):from-kiln
|
++ poke-kiln-label (wrap poke-label):from-kiln
|
||||||
++ poke-kiln-merge (wrap poke-merge):from-kiln
|
++ poke-kiln-merge (wrap poke-merge):from-kiln
|
||||||
++ poke-kiln-cancel (wrap poke-cancel):from-kiln
|
++ poke-kiln-cancel (wrap poke-cancel):from-kiln
|
||||||
|
++ poke-kiln-cancel-autocommit (wrap poke-cancel-autocommit):from-kiln
|
||||||
++ poke-kiln-mount (wrap poke-mount):from-kiln
|
++ poke-kiln-mount (wrap poke-mount):from-kiln
|
||||||
++ poke-kiln-rm (wrap poke-rm):from-kiln
|
++ poke-kiln-rm (wrap poke-rm):from-kiln
|
||||||
++ poke-kiln-schedule (wrap poke-schedule):from-kiln
|
++ poke-kiln-schedule (wrap poke-schedule):from-kiln
|
||||||
|
@ -81,7 +81,9 @@
|
|||||||
:+ %hi
|
:+ %hi
|
||||||
~[~bud ~dev]
|
~[~bud ~dev]
|
||||||
;< ~ bind:m (raw-ship ~bud ~)
|
;< ~ bind:m (raw-ship ~bud ~)
|
||||||
|
~& > "BUD DONE"
|
||||||
;< ~ bind:m (raw-ship ~dev ~)
|
;< ~ bind:m (raw-ship ~dev ~)
|
||||||
|
~& > "DEV DONE"
|
||||||
(send-hi ~bud ~dev)
|
(send-hi ~bud ~dev)
|
||||||
::
|
::
|
||||||
:+ %boot-planet
|
:+ %boot-planet
|
||||||
|
@ -73,6 +73,7 @@
|
|||||||
[%publish-collection collection]
|
[%publish-collection collection]
|
||||||
[%publish-rumor rumor]
|
[%publish-rumor rumor]
|
||||||
[%publish-update update]
|
[%publish-update update]
|
||||||
|
[%export %publish-v0 publish-dir]
|
||||||
==
|
==
|
||||||
::
|
::
|
||||||
--
|
--
|
||||||
@ -1452,6 +1453,95 @@
|
|||||||
new+(numb:enjs:format ~(wyt in unread.sat))
|
new+(numb:enjs:format ~(wyt in unread.sat))
|
||||||
==
|
==
|
||||||
::
|
::
|
||||||
|
++ poke-import
|
||||||
|
|= i=*
|
||||||
|
^- (quip move _this)
|
||||||
|
?> ?=([%publish-v0 *] i)
|
||||||
|
=/ dir=publish-dir ;;(publish-dir +.i)
|
||||||
|
:: make moves to save all files to clay, and
|
||||||
|
:: make moves to call %serve for each collection
|
||||||
|
::
|
||||||
|
=/ out=[mow=(list move) sob=soba:clay]
|
||||||
|
%+ roll ~(tap by dir)
|
||||||
|
|= [[pax=path fil=publish-file] mow=(list move) sob=soba:clay]
|
||||||
|
=/ mis=miso:clay
|
||||||
|
(feel:space:userlib (weld our-beak pax) -.fil !>(+.fil))
|
||||||
|
?+ pax
|
||||||
|
[mow sob]
|
||||||
|
::
|
||||||
|
[%web %publish * %publish-info ~]
|
||||||
|
=/ col=@tas &3.pax
|
||||||
|
=/ wir=wire /collection/[col]
|
||||||
|
=/ schema=schematic:ford
|
||||||
|
:* %bake
|
||||||
|
%publish-info
|
||||||
|
*coin
|
||||||
|
[[our.bol q.byk.bol] /[col]/publish/web]
|
||||||
|
==
|
||||||
|
:- [[ost.bol %build wir %.y schema] mow]
|
||||||
|
[[pax mis] sob]
|
||||||
|
::
|
||||||
|
[%web %publish * * %udon ~]
|
||||||
|
=/ col=@tas &3.pax
|
||||||
|
=/ pos=@tas &4.pax
|
||||||
|
=/ post-wir=wire /post/[col]/[pos]
|
||||||
|
=/ post-schema=schematic:ford
|
||||||
|
:* %bake
|
||||||
|
%publish-post
|
||||||
|
*coin
|
||||||
|
[[our.bol q.byk.bol] /[pos]/[col]/publish/web]
|
||||||
|
==
|
||||||
|
=/ comment-wir=wire /comments/[col]/[pos]
|
||||||
|
=/ comment-schema=schematic:ford
|
||||||
|
:* %bake
|
||||||
|
%publish-comments
|
||||||
|
*coin
|
||||||
|
[[our.bol q.byk.bol] /[pos]/[col]/publish/web]
|
||||||
|
==
|
||||||
|
:- :+ [ost.bol %build post-wir %.y post-schema]
|
||||||
|
[ost.bol %build comment-wir %.y comment-schema]
|
||||||
|
mow
|
||||||
|
[[pax mis] sob]
|
||||||
|
::
|
||||||
|
[%web %publish * * * %publish-comment ~]
|
||||||
|
:- mow
|
||||||
|
[[pax mis] sob]
|
||||||
|
::
|
||||||
|
==
|
||||||
|
::
|
||||||
|
=/ tor=toro:clay
|
||||||
|
[q.byk.bol %.y sob.out]
|
||||||
|
:_ this
|
||||||
|
[[ost.bol %info /import tor] mow.out]
|
||||||
|
::
|
||||||
|
++ peer-export
|
||||||
|
|= pax=path
|
||||||
|
^- (quip move _this)
|
||||||
|
=/ pal=(list path) .^((list path) %ct (weld our-beak /web/publish))
|
||||||
|
::
|
||||||
|
=/ dir=publish-dir
|
||||||
|
%+ roll pal
|
||||||
|
|= [pax=path out=publish-dir]
|
||||||
|
^- publish-dir
|
||||||
|
?+ pax
|
||||||
|
out
|
||||||
|
::
|
||||||
|
[%web %publish * %publish-info ~]
|
||||||
|
=/ fil=collection-info .^(collection-info %cx (welp our-beak pax))
|
||||||
|
(~(put by out) pax [%publish-info fil])
|
||||||
|
::
|
||||||
|
[%web %publish * * %udon ~]
|
||||||
|
=/ fil=@t .^(@t %cx (welp our-beak pax))
|
||||||
|
(~(put by out) pax [%udon fil])
|
||||||
|
::
|
||||||
|
[%web %publish * * * %publish-comment ~]
|
||||||
|
=/ fil=comment .^(comment %cx (welp our-beak pax))
|
||||||
|
(~(put by out) pax [%publish-comment fil])
|
||||||
|
==
|
||||||
|
::
|
||||||
|
:_ this
|
||||||
|
[ost.bol %diff %export %publish-v0 dir]~
|
||||||
|
::
|
||||||
++ peer-publishtile
|
++ peer-publishtile
|
||||||
|= wir=wire
|
|= wir=wire
|
||||||
^- (quip move _this)
|
^- (quip move _this)
|
||||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
13
pkg/arvo/gen/hood/cancel-autocommit.hoon
Normal file
13
pkg/arvo/gen/hood/cancel-autocommit.hoon
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
::
|
||||||
|
:::: /hoon/cancel-autocommit/hood/gen
|
||||||
|
::
|
||||||
|
/? 309
|
||||||
|
::
|
||||||
|
::::
|
||||||
|
::
|
||||||
|
:- %say
|
||||||
|
|= $: [now=@da eny=@uvJ bec=beak]
|
||||||
|
~
|
||||||
|
~
|
||||||
|
==
|
||||||
|
[%kiln-cancel-autocommit ~]
|
@ -9,7 +9,7 @@
|
|||||||
:- %say
|
:- %say
|
||||||
|= $: {now/@da eny/@uvJ bec/beak}
|
|= $: {now/@da eny/@uvJ bec/beak}
|
||||||
{mon/term ~}
|
{mon/term ~}
|
||||||
~
|
auto=_|
|
||||||
==
|
==
|
||||||
:- %kiln-commit
|
:- %kiln-commit
|
||||||
mon
|
[mon auto]
|
||||||
|
@ -21,9 +21,9 @@
|
|||||||
:: ::
|
:: ::
|
||||||
++ pith-2 ::
|
++ pith-2 ::
|
||||||
$: sys/(unit bone) :: local console
|
$: sys/(unit bone) :: local console
|
||||||
eel/(set gill:gall) :: connect to
|
eel/(set gill:gall) :: connect to
|
||||||
ray/(set well:gall) ::
|
ray/(set well:gall) ::
|
||||||
fur/(map dude:gall (unit server)) :: servers
|
fur/(map dude:gall (unit server)) :: servers
|
||||||
bin/(map bone source) :: terminals
|
bin/(map bone source) :: terminals
|
||||||
== ::
|
== ::
|
||||||
:: :: ::
|
:: :: ::
|
||||||
@ -73,9 +73,13 @@
|
|||||||
:: :: ::
|
:: :: ::
|
||||||
|%
|
|%
|
||||||
++ deft-apes :: default servers
|
++ deft-apes :: default servers
|
||||||
|= our/ship
|
|= [our/ship lit/?]
|
||||||
%- ~(gas in *(set well:gall))
|
%- ~(gas in *(set well:gall))
|
||||||
^- (list well:gall)
|
^- (list well:gall)
|
||||||
|
?: lit
|
||||||
|
:~ [%home %dojo]
|
||||||
|
[%home %azimuth-tracker]
|
||||||
|
==
|
||||||
=+ myr=(clan:title our)
|
=+ myr=(clan:title our)
|
||||||
::
|
::
|
||||||
?: ?=($pawn myr)
|
?: ?=($pawn myr)
|
||||||
@ -121,7 +125,7 @@
|
|||||||
%2
|
%2
|
||||||
sys=~
|
sys=~
|
||||||
eel=(deft-fish our)
|
eel=(deft-fish our)
|
||||||
ray=(deft-apes our)
|
ray=~
|
||||||
fur=~
|
fur=~
|
||||||
bin=~
|
bin=~
|
||||||
==
|
==
|
||||||
@ -174,6 +178,16 @@
|
|||||||
=< se-abet =< se-view
|
=< se-abet =< se-view
|
||||||
(se-text "[{<src.hid>}, driving {<our.hid>}]")
|
(se-text "[{<src.hid>}, driving {<our.hid>}]")
|
||||||
::
|
::
|
||||||
|
++ poke-set-boot-apps ::
|
||||||
|
|= lit/?
|
||||||
|
^- (quip move part)
|
||||||
|
:: We do not run se-abet:se-view here because that starts the apps,
|
||||||
|
:: and some apps are not ready to start (eg Talk crashes because the
|
||||||
|
:: terminal has width 0). It appears the first message to drum must
|
||||||
|
:: be the peer.
|
||||||
|
::
|
||||||
|
[~ +<+.^$(ray (deft-apes our.hid lit))]
|
||||||
|
::
|
||||||
++ poke-dill-belt :: terminal event
|
++ poke-dill-belt :: terminal event
|
||||||
|= bet/dill-belt:dill
|
|= bet/dill-belt:dill
|
||||||
=< se-abet =< se-view
|
=< se-abet =< se-view
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
cur-arvo/@uvI ::
|
cur-arvo/@uvI ::
|
||||||
cur-zuse/@uvI ::
|
cur-zuse/@uvI ::
|
||||||
cur-vanes/(map @tas @uvI) ::
|
cur-vanes/(map @tas @uvI) ::
|
||||||
|
commit-timer/{way/wire nex/@da tim/@dr mon=term}
|
||||||
== ::
|
== ::
|
||||||
++ per-desk :: per-desk state
|
++ per-desk :: per-desk state
|
||||||
$: auto/? :: escalate on failure
|
$: auto/? :: escalate on failure
|
||||||
@ -74,6 +75,7 @@
|
|||||||
{$wipe wire @ud} ::
|
{$wipe wire @ud} ::
|
||||||
[%keep wire compiler-cache-size=@ud build-cache-size=@ud]
|
[%keep wire compiler-cache-size=@ud build-cache-size=@ud]
|
||||||
{$wait wire @da} ::
|
{$wait wire @da} ::
|
||||||
|
{$rest wire @da} ::
|
||||||
{$warp wire ship riff} ::
|
{$warp wire ship riff} ::
|
||||||
== ::
|
== ::
|
||||||
++ pear :: poke fruit
|
++ pear :: poke fruit
|
||||||
@ -100,8 +102,19 @@
|
|||||||
~[leaf+"from {<sud>}" leaf+"on {<who>}" leaf+"to {<syd>}"]
|
~[leaf+"from {<sud>}" leaf+"on {<who>}" leaf+"to {<syd>}"]
|
||||||
::
|
::
|
||||||
++ poke-commit
|
++ poke-commit
|
||||||
|= mon/kiln-commit
|
|= [mon/kiln-commit auto=?]
|
||||||
abet:(emit %dirk /commit mon)
|
=< abet
|
||||||
|
=. +>.$ (emit %dirk /commit mon)
|
||||||
|
?. auto
|
||||||
|
+>.$
|
||||||
|
=/ recur ~s1
|
||||||
|
=. commit-timer
|
||||||
|
[/kiln/autocommit (add now recur) recur mon]
|
||||||
|
(emit %wait way.commit-timer nex.commit-timer)
|
||||||
|
::
|
||||||
|
++ poke-cancel-autocommit
|
||||||
|
|= ~
|
||||||
|
abet:(emit %rest way.commit-timer nex.commit-timer)
|
||||||
::
|
::
|
||||||
++ poke-mount
|
++ poke-mount
|
||||||
|= kiln-mount
|
|= kiln-mount
|
||||||
@ -361,6 +374,20 @@
|
|||||||
~& %wake-overload-deprecated
|
~& %wake-overload-deprecated
|
||||||
abet
|
abet
|
||||||
::
|
::
|
||||||
|
++ take-wake-autocommit
|
||||||
|
|= [way=wire error=(unit tang)]
|
||||||
|
?^ error
|
||||||
|
%- (slog u.error)
|
||||||
|
~& %kiln-wake-autocommit-fail
|
||||||
|
abet
|
||||||
|
=. nex.commit-timer (add now tim.commit-timer)
|
||||||
|
=< abet
|
||||||
|
%- emil
|
||||||
|
:~ [%dirk /commit mon.commit-timer]
|
||||||
|
[%wait way.commit-timer nex.commit-timer]
|
||||||
|
==
|
||||||
|
::
|
||||||
|
::
|
||||||
++ spam
|
++ spam
|
||||||
|= mes/(list tank)
|
|= mes/(list tank)
|
||||||
((slog mes) ..spam)
|
((slog mes) ..spam)
|
||||||
|
@ -265,15 +265,12 @@
|
|||||||
::
|
::
|
||||||
++ dawn
|
++ dawn
|
||||||
|= [who=ship seed=(unit seed:able:jael)]
|
|= [who=ship seed=(unit seed:able:jael)]
|
||||||
^- dawn-event
|
^- dawn-event:able:jael
|
||||||
=/ spon=(list [ship point:azimuth])
|
=/ spon=(list [ship point:azimuth])
|
||||||
|- ^- (list [ship point:azimuth])
|
|- ^- (list [ship point:azimuth])
|
||||||
=/ =ship (^sein:title who)
|
=/ =ship (^sein:title who)
|
||||||
=/ a-point=[^ship point:azimuth]
|
=/ a-point=[^ship point:azimuth]
|
||||||
=/ spon-spon
|
=/ spon-spon [& (^sein:title ship)]
|
||||||
?: ?=(%czar (clan:title ship))
|
|
||||||
[| ~zod]
|
|
||||||
[& (^sein:title ship)]
|
|
||||||
=/ life-rift ~|([ship lives] (~(got by lives) ship))
|
=/ life-rift ~|([ship lives] (~(got by lives) ship))
|
||||||
=/ =life lyfe.life-rift
|
=/ =life lyfe.life-rift
|
||||||
=/ =rift rut.life-rift
|
=/ =rift rut.life-rift
|
||||||
|
@ -49,7 +49,7 @@
|
|||||||
:: Boot ship; don't check it succeeded.
|
:: Boot ship; don't check it succeeded.
|
||||||
::
|
::
|
||||||
++ boot-ship
|
++ boot-ship
|
||||||
|= [her=ship keys=(unit dawn-event)]
|
|= [her=ship keys=(unit dawn-event:able:jael)]
|
||||||
^+ *form:(ph ,~)
|
^+ *form:(ph ,~)
|
||||||
|= ph-input
|
|= ph-input
|
||||||
[& (init her keys) %done ~]
|
[& (init her keys) %done ~]
|
||||||
@ -96,7 +96,7 @@
|
|||||||
:: Boot a ship and verify it booted. Parent must already be booted.
|
:: Boot a ship and verify it booted. Parent must already be booted.
|
||||||
::
|
::
|
||||||
++ raw-ship
|
++ raw-ship
|
||||||
|= [her=ship keys=(unit dawn-event)]
|
|= [her=ship keys=(unit dawn-event:able:jael)]
|
||||||
=/ m (ph ,~)
|
=/ m (ph ,~)
|
||||||
^- form:m
|
^- form:m
|
||||||
;< ~ bind:m (boot-ship her keys)
|
;< ~ bind:m (boot-ship her keys)
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
:: Start a ship (low-level; prefer +raw-ship)
|
:: Start a ship (low-level; prefer +raw-ship)
|
||||||
::
|
::
|
||||||
++ init
|
++ init
|
||||||
|= [who=ship keys=(unit dawn-event)]
|
|= [who=ship keys=(unit dawn-event:able:jael)]
|
||||||
^- (list ph-event)
|
^- (list ph-event)
|
||||||
[%init-ship who keys]~
|
[%init-ship who keys]~
|
||||||
::
|
::
|
||||||
|
@ -13,19 +13,10 @@
|
|||||||
%+ pair wire
|
%+ pair wire
|
||||||
$% [%wack p=@]
|
$% [%wack p=@]
|
||||||
[%whom p=ship]
|
[%whom p=ship]
|
||||||
[%boot $%([%fake p=ship] [%dawn p=dawn-event])]
|
[%boot ? $%($>(%fake task:able:jael) $>(%dawn task:able:jael))]
|
||||||
unix-task
|
unix-task
|
||||||
==
|
==
|
||||||
::
|
::
|
||||||
+$ dawn-event
|
|
||||||
$: =seed:able:jael
|
|
||||||
spon=(list [=ship point:azimuth])
|
|
||||||
czar=(map ship [=rift =life =pass])
|
|
||||||
turf=(list turf)
|
|
||||||
bloq=@ud
|
|
||||||
node=(unit purl:eyre)
|
|
||||||
==
|
|
||||||
::
|
|
||||||
++ module-ova
|
++ module-ova
|
||||||
|= sys=path
|
|= sys=path
|
||||||
^- (list [wire [%veer term path cord]])
|
^- (list [wire [%veer term path cord]])
|
||||||
|
@ -19,11 +19,10 @@
|
|||||||
==
|
==
|
||||||
::
|
::
|
||||||
+$ unix-event unix-event:pill-lib
|
+$ unix-event unix-event:pill-lib
|
||||||
+$ dawn-event dawn-event:pill-lib
|
|
||||||
+$ pill pill:pill-lib
|
+$ pill pill:pill-lib
|
||||||
::
|
::
|
||||||
+$ aqua-event
|
+$ aqua-event
|
||||||
$% [%init-ship who=ship keys=(unit dawn-event)]
|
$% [%init-ship who=ship keys=(unit dawn-event:able:jael)]
|
||||||
[%pause-events who=ship]
|
[%pause-events who=ship]
|
||||||
[%snap-ships lab=term hers=(list ship)]
|
[%snap-ships lab=term hers=(list ship)]
|
||||||
[%restore-snap lab=term]
|
[%restore-snap lab=term]
|
||||||
|
@ -88,6 +88,14 @@
|
|||||||
::
|
::
|
||||||
+$ rumor delta
|
+$ rumor delta
|
||||||
::
|
::
|
||||||
|
+$ publish-dir (map path publish-file)
|
||||||
|
::
|
||||||
|
+$ publish-file
|
||||||
|
$% [%udon @t]
|
||||||
|
[%publish-info collection-info]
|
||||||
|
[%publish-comment comment]
|
||||||
|
==
|
||||||
|
::
|
||||||
+$ collection
|
+$ collection
|
||||||
$: col=[=bone dat=(each collection-info tang)]
|
$: col=[=bone dat=(each collection-info tang)]
|
||||||
pos=(map @tas [=bone dat=(each [post-info manx @t] tang)])
|
pos=(map @tas [=bone dat=(each [post-info manx @t] tang)])
|
||||||
|
@ -11505,7 +11505,7 @@
|
|||||||
?^(p.sut yad [p.yad [%face p.sut q.yad]])
|
?^(p.sut yad [p.yad [%face p.sut q.yad]])
|
||||||
::
|
::
|
||||||
{$fork *}
|
{$fork *}
|
||||||
=+ yed=~(tap in p.sut)
|
=+ yed=(sort ~(tap in p.sut) aor)
|
||||||
=- [p [%bswt q]]
|
=- [p [%bswt q]]
|
||||||
|- ^- {p/{p/(map type @) q/(map @ wine)} q/(list wine)}
|
|- ^- {p/{p/(map type @) q/(map @ wine)} q/(list wine)}
|
||||||
?~ yed
|
?~ yed
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
$: $0 ::
|
$: $0 ::
|
||||||
hey/(unit duct) :: default duct
|
hey/(unit duct) :: default duct
|
||||||
dug/(map duct axon) :: conversations
|
dug/(map duct axon) :: conversations
|
||||||
|
lit/? :: boot in lite mode
|
||||||
$= hef :: other weights
|
$= hef :: other weights
|
||||||
$: a/(unit mass) ::
|
$: a/(unit mass) ::
|
||||||
b/(unit mass) ::
|
b/(unit mass) ::
|
||||||
@ -312,6 +313,7 @@
|
|||||||
::
|
::
|
||||||
(show %kids):(sync %kids our %base)
|
(show %kids):(sync %kids our %base)
|
||||||
=. +> autoload
|
=. +> autoload
|
||||||
|
=. +> hood-set-boot-apps
|
||||||
=. +> peer
|
=. +> peer
|
||||||
|- ^+ +>+
|
|- ^+ +>+
|
||||||
?~ myt +>+
|
?~ myt +>+
|
||||||
@ -328,6 +330,7 @@
|
|||||||
::
|
::
|
||||||
++ send :: send action
|
++ send :: send action
|
||||||
|= bet/dill-belt
|
|= bet/dill-belt
|
||||||
|
^+ +>
|
||||||
?^ tem
|
?^ tem
|
||||||
+>(tem `[bet u.tem])
|
+>(tem `[bet u.tem])
|
||||||
%_ +>
|
%_ +>
|
||||||
@ -335,6 +338,16 @@
|
|||||||
:_ moz
|
:_ moz
|
||||||
[hen %pass ~ %g %deal [our our] ram %poke [%dill-belt -:!>(bet) bet]]
|
[hen %pass ~ %g %deal [our our] ram %poke [%dill-belt -:!>(bet) bet]]
|
||||||
==
|
==
|
||||||
|
::
|
||||||
|
++ hood-set-boot-apps
|
||||||
|
%_ .
|
||||||
|
moz
|
||||||
|
:_ moz
|
||||||
|
:* hen %pass ~ %g %deal [our our]
|
||||||
|
ram %poke %drum-set-boot-apps !>(lit.all)
|
||||||
|
==
|
||||||
|
==
|
||||||
|
::
|
||||||
++ peer
|
++ peer
|
||||||
%_ .
|
%_ .
|
||||||
moz
|
moz
|
||||||
@ -493,7 +506,8 @@
|
|||||||
~& %dill-no-boot
|
~& %dill-no-boot
|
||||||
~& p.task
|
~& p.task
|
||||||
~| invalid-boot-event+hen !!
|
~| invalid-boot-event+hen !!
|
||||||
:_(..^$ [hen %pass / %j u.boot]~)
|
=. lit.all lit.task
|
||||||
|
[[hen %pass / %j u.boot]~ ..^$]
|
||||||
:: we are subsequently initialized. single-home
|
:: we are subsequently initialized. single-home
|
||||||
::
|
::
|
||||||
?: ?=(%init -.task)
|
?: ?=(%init -.task)
|
||||||
|
@ -692,7 +692,7 @@
|
|||||||
$~ [%vega ~] ::
|
$~ [%vega ~] ::
|
||||||
$% {$belt p/belt} :: terminal input
|
$% {$belt p/belt} :: terminal input
|
||||||
{$blew p/blew} :: terminal config
|
{$blew p/blew} :: terminal config
|
||||||
{$boot p/*} :: weird %dill boot
|
{$boot lit/? p/*} :: weird %dill boot
|
||||||
$>(%crud vane-task) :: error with trace
|
$>(%crud vane-task) :: error with trace
|
||||||
{$flog p/flog} :: wrapped error
|
{$flog p/flog} :: wrapped error
|
||||||
{$flow p/@tas q/(list gill:gall)} :: terminal config
|
{$flow p/@tas q/(list gill:gall)} :: terminal config
|
||||||
@ -1986,14 +1986,7 @@
|
|||||||
::
|
::
|
||||||
+= task :: in request ->$
|
+= task :: in request ->$
|
||||||
$~ [%vega ~] ::
|
$~ [%vega ~] ::
|
||||||
$% $: %dawn :: boot from keys
|
$% [%dawn dawn-event] :: boot from keys
|
||||||
=seed:able:jael :: identity params
|
|
||||||
spon=(list [=ship point:azimuth-types]) ::
|
|
||||||
czar=(map ship [=rift =life =pass]) :: galaxy table
|
|
||||||
turf=(list turf) :: domains
|
|
||||||
bloq=@ud :: block number
|
|
||||||
node=(unit purl:eyre) :: gateway url
|
|
||||||
== ::
|
|
||||||
[%fake =ship] :: fake boot
|
[%fake =ship] :: fake boot
|
||||||
[%listen whos=(set ship) =source] :: set ethereum source
|
[%listen whos=(set ship) =source] :: set ethereum source
|
||||||
::TODO %next for generating/putting new private key
|
::TODO %next for generating/putting new private key
|
||||||
@ -2009,6 +2002,15 @@
|
|||||||
$>(%plea vane-task) :: ames request
|
$>(%plea vane-task) :: ames request
|
||||||
== ::
|
== ::
|
||||||
::
|
::
|
||||||
|
+$ dawn-event
|
||||||
|
$: =seed
|
||||||
|
spon=(list [=ship point:azimuth-types])
|
||||||
|
czar=(map ship [=rift =life =pass])
|
||||||
|
turf=(list turf)
|
||||||
|
bloq=@ud
|
||||||
|
node=(unit purl:eyre)
|
||||||
|
==
|
||||||
|
::
|
||||||
++ block
|
++ block
|
||||||
=< block
|
=< block
|
||||||
|%
|
|%
|
||||||
@ -5277,15 +5279,7 @@
|
|||||||
:: :: ++of-wain:format
|
:: :: ++of-wain:format
|
||||||
++ of-wain :: line list to atom
|
++ of-wain :: line list to atom
|
||||||
|= tez/(list @t)
|
|= tez/(list @t)
|
||||||
=| {our/@ i/@ud}
|
(rap 3 (join '\0a' tez))
|
||||||
|- ^- @
|
|
||||||
?~ tez
|
|
||||||
our
|
|
||||||
?: =(%$ i.tez)
|
|
||||||
$(i +(i), tez t.tez, our (cat 3 our 10))
|
|
||||||
?: =(0 i)
|
|
||||||
$(i +(i), tez t.tez, our i.tez)
|
|
||||||
$(i +(i), tez t.tez, our (cat 3 (cat 3 our 10) i.tez))
|
|
||||||
:: :: ++of-wall:format
|
:: :: ++of-wall:format
|
||||||
++ of-wall :: line list to tape
|
++ of-wall :: line list to tape
|
||||||
|= a/wall ^- tape
|
|= a/wall ^- tape
|
||||||
@ -8837,7 +8831,7 @@
|
|||||||
::
|
::
|
||||||
++ veri
|
++ veri
|
||||||
|= [=seed:able:jael =point:azimuth =live]
|
|= [=seed:able:jael =point:azimuth =live]
|
||||||
^- (each sponsor=ship error=term)
|
^- (unit error=term)
|
||||||
=/ rac (clan:title who.seed)
|
=/ rac (clan:title who.seed)
|
||||||
=/ cub (nol:nu:crub:crypto key.seed)
|
=/ cub (nol:nu:crub:crypto key.seed)
|
||||||
?- rac
|
?- rac
|
||||||
@ -8845,39 +8839,35 @@
|
|||||||
:: a comet address is the fingerprint of the keypair
|
:: a comet address is the fingerprint of the keypair
|
||||||
::
|
::
|
||||||
?. =(who.seed `@`fig:ex:cub)
|
?. =(who.seed `@`fig:ex:cub)
|
||||||
[%| %key-mismatch]
|
`%key-mismatch
|
||||||
:: a comet can never be breached
|
:: a comet can never be breached
|
||||||
::
|
::
|
||||||
?^ live
|
?^ live
|
||||||
[%| %already-booted]
|
`%already-booted
|
||||||
:: a comet can never be re-keyed
|
:: a comet can never be re-keyed
|
||||||
::
|
::
|
||||||
?. ?=(%1 lyf.seed)
|
?. ?=(%1 lyf.seed)
|
||||||
[%| %invalid-life]
|
`%invalid-life
|
||||||
[%& (^sein:title who.seed)]
|
~
|
||||||
::
|
::
|
||||||
%earl
|
%earl
|
||||||
:: the parent must be launched
|
~
|
||||||
::
|
|
||||||
?~ net.point
|
|
||||||
[%| %parent-not-keyed]
|
|
||||||
[%& (^sein:title who.seed)]
|
|
||||||
::
|
::
|
||||||
*
|
*
|
||||||
:: on-chain ships must be launched
|
:: on-chain ships must be launched
|
||||||
::
|
::
|
||||||
?~ net.point
|
?~ net.point
|
||||||
[%| %not-keyed]
|
`%not-keyed
|
||||||
=* net u.net.point
|
=* net u.net.point
|
||||||
:: boot keys must match the contract
|
:: boot keys must match the contract
|
||||||
::
|
::
|
||||||
?. =(pub:ex:cub pass.net)
|
?. =(pub:ex:cub pass.net)
|
||||||
~& [%key-mismatch pub:ex:cub pass.net]
|
~& [%key-mismatch pub:ex:cub pass.net]
|
||||||
[%| %key-mismatch]
|
`%key-mismatch
|
||||||
:: life must match the contract
|
:: life must match the contract
|
||||||
::
|
::
|
||||||
?. =(lyf.seed life.net)
|
?. =(lyf.seed life.net)
|
||||||
[%| %life-mismatch]
|
`%life-mismatch
|
||||||
:: the boot life must be greater than and discontinuous with
|
:: the boot life must be greater than and discontinuous with
|
||||||
:: the last seen life (per the sponsor)
|
:: the last seen life (per the sponsor)
|
||||||
::
|
::
|
||||||
@ -8885,12 +8875,28 @@
|
|||||||
?| ?=(%| breach.u.live)
|
?| ?=(%| breach.u.live)
|
||||||
(lte life.net life.u.live)
|
(lte life.net life.u.live)
|
||||||
== ==
|
== ==
|
||||||
[%| %already-booted]
|
`%already-booted
|
||||||
:: produce the sponsor for vere
|
:: produce the sponsor for vere
|
||||||
::
|
::
|
||||||
~? !has.sponsor.net
|
~? !has.sponsor.net
|
||||||
[%no-sponsorship-guarantees-from who.sponsor.net]
|
[%no-sponsorship-guarantees-from who.sponsor.net]
|
||||||
[%& who.sponsor.net]
|
~
|
||||||
|
==
|
||||||
|
:: +sponsor:dawn: retreive sponsor from point
|
||||||
|
::
|
||||||
|
++ sponsor
|
||||||
|
|= [who=ship =point:azimuth]
|
||||||
|
^- (each ship error=term)
|
||||||
|
?- (clan:title who)
|
||||||
|
%pawn [%& (^sein:title who)]
|
||||||
|
%earl [%& (^sein:title who)]
|
||||||
|
%czar [%& (^sein:title who)]
|
||||||
|
*
|
||||||
|
?~ net.point
|
||||||
|
[%| %not-booted]
|
||||||
|
?. has.sponsor.u.net.point
|
||||||
|
[%| %no-sponsor]
|
||||||
|
[%& who.sponsor.u.net.point]
|
||||||
==
|
==
|
||||||
--
|
--
|
||||||
-- ::
|
-- ::
|
||||||
|
@ -188,36 +188,36 @@
|
|||||||
++ test-veri-good
|
++ test-veri-good
|
||||||
=/ sed [~zod 1 sec ~]
|
=/ sed [~zod 1 sec ~]
|
||||||
%+ expect-eq
|
%+ expect-eq
|
||||||
!> [%& ~zod]
|
!> ~
|
||||||
!> (veri:dawn sed pot ~)
|
!> (veri:dawn sed pot ~)
|
||||||
::
|
::
|
||||||
++ test-veri-not-spawned
|
++ test-veri-not-spawned
|
||||||
=/ sed [~zod 1 sec ~]
|
=/ sed [~zod 1 sec ~]
|
||||||
%+ expect-eq
|
%+ expect-eq
|
||||||
!> [%| %not-keyed]
|
!> `%not-keyed
|
||||||
!> (veri:dawn sed =>(pot .(net ~)) ~)
|
!> (veri:dawn sed =>(pot .(net ~)) ~)
|
||||||
::
|
::
|
||||||
++ test-veri-wrong-key
|
++ test-veri-wrong-key
|
||||||
=/ sed [~zod 1 sec:ex:(pit:nu:crub:crypto 24 %foo) ~]
|
=/ sed [~zod 1 sec:ex:(pit:nu:crub:crypto 24 %foo) ~]
|
||||||
%+ expect-eq
|
%+ expect-eq
|
||||||
!> [%| %key-mismatch]
|
!> `%key-mismatch
|
||||||
!> (veri:dawn sed pot ~)
|
!> (veri:dawn sed pot ~)
|
||||||
::
|
::
|
||||||
++ test-veri-life-mismatch
|
++ test-veri-life-mismatch
|
||||||
=/ sed [~zod 2 sec ~]
|
=/ sed [~zod 2 sec ~]
|
||||||
%+ expect-eq
|
%+ expect-eq
|
||||||
!> [%| %life-mismatch]
|
!> `%life-mismatch
|
||||||
!> (veri:dawn sed pot ~)
|
!> (veri:dawn sed pot ~)
|
||||||
::
|
::
|
||||||
++ test-veri-already-booted
|
++ test-veri-already-booted
|
||||||
=/ sed [~zod 1 sec ~]
|
=/ sed [~zod 1 sec ~]
|
||||||
;: weld
|
;: weld
|
||||||
%+ expect-eq
|
%+ expect-eq
|
||||||
!> [%| %already-booted]
|
!> `%already-booted
|
||||||
!> (veri:dawn sed pot `[1 |])
|
!> (veri:dawn sed pot `[1 |])
|
||||||
::
|
::
|
||||||
%+ expect-eq
|
%+ expect-eq
|
||||||
!> [%| %already-booted]
|
!> `%already-booted
|
||||||
!> (veri:dawn sed pot `[2 &])
|
!> (veri:dawn sed pot `[2 &])
|
||||||
==
|
==
|
||||||
::
|
::
|
||||||
@ -230,7 +230,7 @@
|
|||||||
(shaf %earl (sham who 1 pub:ex:cub))
|
(shaf %earl (sham who 1 pub:ex:cub))
|
||||||
[who 1 sec:ex:cub `sig]
|
[who 1 sec:ex:cub `sig]
|
||||||
%+ expect-eq
|
%+ expect-eq
|
||||||
!> [%& (^sein:title who)]
|
!> ~
|
||||||
!> (veri:dawn sed pot ~)
|
!> (veri:dawn sed pot ~)
|
||||||
::
|
::
|
||||||
++ test-veri-earl-parent-not-keyed
|
++ test-veri-earl-parent-not-keyed
|
||||||
@ -242,7 +242,7 @@
|
|||||||
(shaf %earl (sham who 1 pub:ex:cub))
|
(shaf %earl (sham who 1 pub:ex:cub))
|
||||||
[who 1 sec:ex:cub `sig]
|
[who 1 sec:ex:cub `sig]
|
||||||
%+ expect-eq
|
%+ expect-eq
|
||||||
!> [%| %parent-not-keyed]
|
!> ~
|
||||||
!> (veri:dawn sed =>(pot .(net ~)) ~)
|
!> (veri:dawn sed =>(pot .(net ~)) ~)
|
||||||
::
|
::
|
||||||
++ test-veri-pawn-good
|
++ test-veri-pawn-good
|
||||||
@ -250,7 +250,7 @@
|
|||||||
=/ who=ship `@`fig:ex:cub
|
=/ who=ship `@`fig:ex:cub
|
||||||
=/ sed [who 1 sec:ex:cub ~]
|
=/ sed [who 1 sec:ex:cub ~]
|
||||||
%+ expect-eq
|
%+ expect-eq
|
||||||
!> [%& ~mittun]
|
!> ~
|
||||||
!> (veri:dawn sed *point:azimuth-types ~)
|
!> (veri:dawn sed *point:azimuth-types ~)
|
||||||
::
|
::
|
||||||
++ test-veri-pawn-key-mismatch
|
++ test-veri-pawn-key-mismatch
|
||||||
@ -258,7 +258,7 @@
|
|||||||
=/ who=ship `@`fig:ex:cub
|
=/ who=ship `@`fig:ex:cub
|
||||||
=/ sed [who 1 sec:ex:(pit:nu:crub:crypto 24 %bar) ~]
|
=/ sed [who 1 sec:ex:(pit:nu:crub:crypto 24 %bar) ~]
|
||||||
%+ expect-eq
|
%+ expect-eq
|
||||||
!> [%| %key-mismatch]
|
!> `%key-mismatch
|
||||||
!> (veri:dawn sed *point:azimuth-types ~)
|
!> (veri:dawn sed *point:azimuth-types ~)
|
||||||
::
|
::
|
||||||
++ test-veri-pawn-invalid-life
|
++ test-veri-pawn-invalid-life
|
||||||
@ -266,7 +266,7 @@
|
|||||||
=/ who=ship `@`fig:ex:cub
|
=/ who=ship `@`fig:ex:cub
|
||||||
=/ sed [who 2 sec:ex:cub ~]
|
=/ sed [who 2 sec:ex:cub ~]
|
||||||
%+ expect-eq
|
%+ expect-eq
|
||||||
!> [%| %invalid-life]
|
!> `%invalid-life
|
||||||
!> (veri:dawn sed *point:azimuth-types ~)
|
!> (veri:dawn sed *point:azimuth-types ~)
|
||||||
::
|
::
|
||||||
++ test-veri-pawn-already-booted
|
++ test-veri-pawn-already-booted
|
||||||
@ -274,6 +274,6 @@
|
|||||||
=/ who=ship `@`fig:ex:cub
|
=/ who=ship `@`fig:ex:cub
|
||||||
=/ sed [who 1 sec:ex:cub ~]
|
=/ sed [who 1 sec:ex:cub ~]
|
||||||
%+ expect-eq
|
%+ expect-eq
|
||||||
!> [%| %already-booted]
|
!> `%already-booted
|
||||||
!> (veri:dawn sed *point:azimuth-types `[1 |])
|
!> (veri:dawn sed *point:azimuth-types `[1 |])
|
||||||
--
|
--
|
||||||
|
@ -2,6 +2,8 @@ import React from 'react';
|
|||||||
import ReactDOM from 'react-dom';
|
import ReactDOM from 'react-dom';
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import { uuid } from '/lib/util';
|
import { uuid } from '/lib/util';
|
||||||
|
import { store } from '/store';
|
||||||
|
|
||||||
|
|
||||||
class UrbitApi {
|
class UrbitApi {
|
||||||
setAuthTokens(authTokens) {
|
setAuthTokens(authTokens) {
|
||||||
@ -34,6 +36,18 @@ class UrbitApi {
|
|||||||
hall(data) {
|
hall(data) {
|
||||||
this.action("hall", "hall-action", data);
|
this.action("hall", "hall-action", data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
addPendingMessage(data) {
|
||||||
|
let pendingMap = store.state.pendingMessages;
|
||||||
|
if (pendingMap.has(data.aud[0])) {
|
||||||
|
pendingMap.get(data.aud[0]).push(data)
|
||||||
|
} else {
|
||||||
|
pendingMap.set(data.aud[0], [data])
|
||||||
|
}
|
||||||
|
store.setState({
|
||||||
|
pendingMessages: pendingMap
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
chat(lis) {
|
chat(lis) {
|
||||||
this.action("chat", "chat-action", {
|
this.action("chat", "chat-action", {
|
||||||
|
@ -20,6 +20,8 @@ export class ChatScreen extends Component {
|
|||||||
scrollLocked: false,
|
scrollLocked: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.pendingQueue = props.pendingMessages;
|
||||||
|
|
||||||
this.hasAskedForMessages = false;
|
this.hasAskedForMessages = false;
|
||||||
this.onScroll = this.onScroll.bind(this);
|
this.onScroll = this.onScroll.bind(this);
|
||||||
|
|
||||||
@ -182,6 +184,18 @@ export class ChatScreen extends Component {
|
|||||||
|
|
||||||
let config = props.configs[state.station] || {};
|
let config = props.configs[state.station] || {};
|
||||||
let messages = props.messages.slice(0);
|
let messages = props.messages.slice(0);
|
||||||
|
|
||||||
|
// Pending messages get pinned to the bottom of the messages queue.
|
||||||
|
|
||||||
|
let pendingInRoom =
|
||||||
|
(this.pendingQueue.has(this.state.station))
|
||||||
|
? this.pendingQueue.get(this.state.station) : [];
|
||||||
|
|
||||||
|
pendingInRoom.map(function(value) {
|
||||||
|
return value.pending = true;
|
||||||
|
})
|
||||||
|
|
||||||
|
messages = messages.concat(pendingInRoom);
|
||||||
|
|
||||||
let lastMsgNum = (messages.length > 0) ?
|
let lastMsgNum = (messages.length > 0) ?
|
||||||
messages[messages.length - 1].num : 0;
|
messages[messages.length - 1].num : 0;
|
||||||
@ -194,23 +208,39 @@ export class ChatScreen extends Component {
|
|||||||
let reversedMessages = messages.reverse();
|
let reversedMessages = messages.reverse();
|
||||||
let chatMessages = reversedMessages.map((msg, i) => {
|
let chatMessages = reversedMessages.map((msg, i) => {
|
||||||
// Render sigil if previous message is not by the same sender
|
// Render sigil if previous message is not by the same sender
|
||||||
let gamAut = ['gam', 'aut'];
|
let gamAut = ['gam', 'aut'];
|
||||||
|
|
||||||
|
// Local messages don't have a 'gam' prop, so look for the top level if it doesn't exist.
|
||||||
|
let aut = msg.aut ? msg.aut : null;
|
||||||
|
|
||||||
|
// No gamAut? Return top level author for the same sender check.
|
||||||
let renderSigil =
|
let renderSigil =
|
||||||
_.get(reversedMessages[i + 1], gamAut) !== _.get(msg, gamAut);
|
_.get(reversedMessages[i + 1], gamAut) !== _.get(msg, gamAut, aut);
|
||||||
|
|
||||||
// More padding top if previous message is not by the same sender
|
// More padding top if previous message is not by the same sender
|
||||||
let paddingTop = renderSigil;
|
let paddingTop = renderSigil;
|
||||||
// More padding bot if next message is not by the same sender
|
// More padding bot if next message is not by the same sender
|
||||||
let paddingBot =
|
let paddingBot =
|
||||||
_.get(reversedMessages[i - 1], gamAut) !== _.get(msg, gamAut);
|
_.get(reversedMessages[i - 1], gamAut) !== _.get(msg, gamAut, aut);
|
||||||
|
|
||||||
|
// Non-local ships don't have pending props.
|
||||||
|
if (!msg.pending) {
|
||||||
|
var pending = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Non-local ships don't have pending props.
|
||||||
|
if (!pending) {
|
||||||
|
var pending = false;
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Message
|
<Message
|
||||||
key={msg.gam.uid}
|
key={msg.gam ? msg.gam.uid : msg.uid}
|
||||||
msg={msg.gam}
|
msg={msg.gam ? msg.gam : msg}
|
||||||
renderSigil={renderSigil}
|
renderSigil={renderSigil}
|
||||||
paddingTop={paddingTop}
|
paddingTop={paddingTop}
|
||||||
paddingBot={paddingBot} />
|
paddingBot={paddingBot}
|
||||||
|
pending={!!pending}/>
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -263,6 +263,8 @@ export class ChatInput extends Component {
|
|||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
props.api.addPendingMessage(message);
|
||||||
|
|
||||||
props.api.hall(
|
props.api.hall(
|
||||||
{
|
{
|
||||||
convey: [message]
|
convey: [message]
|
||||||
@ -278,11 +280,15 @@ export class ChatInput extends Component {
|
|||||||
readOnlyRender() {
|
readOnlyRender() {
|
||||||
return (
|
return (
|
||||||
<div className="mt2 pa3 cf flex black bt o-50">
|
<div className="mt2 pa3 cf flex black bt o-50">
|
||||||
<div className="fl" style={{ flexBasis: 35, height: 40 }}>
|
<div className="fl" style={{
|
||||||
|
marginTop: 4,
|
||||||
|
flexBasis: 32,
|
||||||
|
height: 36
|
||||||
|
}}>
|
||||||
<Sigil ship={window.ship} size={32} />
|
<Sigil ship={window.ship} size={32} />
|
||||||
</div>
|
</div>
|
||||||
<div className="fr h-100 flex pa2" style={{ flexGrow: 1, height: 40 }}>
|
<div className="fr h-100 flex pa2" style={{ flexGrow: 1, height: 40 }}>
|
||||||
<p>This chat is read only and you cannot post.</p>
|
<p style={{paddingTop: 3}}>This chat is read only and you cannot post.</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
@ -310,7 +316,7 @@ export class ChatInput extends Component {
|
|||||||
className={'ml2 mt2 mr2 bn ' +
|
className={'ml2 mt2 mr2 bn ' +
|
||||||
this.getSpeechStyle(state.messageType, state.clipboard)
|
this.getSpeechStyle(state.messageType, state.clipboard)
|
||||||
}
|
}
|
||||||
style={{ flexGrow: 1, height: 40, resize: 'none' }}
|
style={{ flexGrow: 1, height: 40, paddingTop: 3, resize: 'none' }}
|
||||||
ref={this.textareaRef}
|
ref={this.textareaRef}
|
||||||
placeholder={props.placeholder}
|
placeholder={props.placeholder}
|
||||||
value={state.message}
|
value={state.message}
|
||||||
|
@ -171,7 +171,7 @@ export class Message extends Component {
|
|||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { props } = this;
|
const { props } = this;
|
||||||
let pending = !!props.msg.pending ? ' o-80' : '';
|
let pending = !!props.msg.pending ? ' o-40' : '';
|
||||||
let datestamp = moment.unix(props.msg.wen / 1000).format('LL');
|
let datestamp = moment.unix(props.msg.wen / 1000).format('LL');
|
||||||
|
|
||||||
let paddingTop = props.paddingTop ? 'pt3' : '';
|
let paddingTop = props.paddingTop ? 'pt3' : '';
|
||||||
|
@ -135,7 +135,7 @@ export class Root extends Component {
|
|||||||
render={ (props) => {
|
render={ (props) => {
|
||||||
return (
|
return (
|
||||||
<Skeleton
|
<Skeleton
|
||||||
sidebar={renderDefaultSidebar(props)}>
|
sidebar={renderChannelsSidebar(props)}>
|
||||||
<LandingScreen
|
<LandingScreen
|
||||||
api={api}
|
api={api}
|
||||||
configs={configs}
|
configs={configs}
|
||||||
@ -158,6 +158,7 @@ export class Root extends Component {
|
|||||||
api={api}
|
api={api}
|
||||||
configs={configs}
|
configs={configs}
|
||||||
messages={messages}
|
messages={messages}
|
||||||
|
pendingMessages={state.pendingMessages}
|
||||||
peers={state.peers}
|
peers={state.peers}
|
||||||
subscription={subscription}
|
subscription={subscription}
|
||||||
{...props}
|
{...props}
|
||||||
|
@ -61,4 +61,3 @@ export function dateToDa(d, mil) {
|
|||||||
export function deSig(ship) {
|
export function deSig(ship) {
|
||||||
return ship.replace('~', '');
|
return ship.replace('~', '');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@ export class UpdateReducer {
|
|||||||
let data = _.get(json, 'update', false);
|
let data = _.get(json, 'update', false);
|
||||||
if (data) {
|
if (data) {
|
||||||
this.reduceInbox(_.get(data, 'inbox', false), state);
|
this.reduceInbox(_.get(data, 'inbox', false), state);
|
||||||
|
this.reducePending(_.get(data, 'message', false), state);
|
||||||
this.reduceMessage(_.get(data, 'message', false), state);
|
this.reduceMessage(_.get(data, 'message', false), state);
|
||||||
this.reduceMessages(_.get(data, 'messages', false), state);
|
this.reduceMessages(_.get(data, 'messages', false), state);
|
||||||
this.reduceConfig(_.get(data, 'config', false), state);
|
this.reduceConfig(_.get(data, 'config', false), state);
|
||||||
@ -29,6 +30,23 @@ export class UpdateReducer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
reducePending(message, state) {
|
||||||
|
if (message && (state.pendingMessages.has(message.envelope.gam.aud[0]))) {
|
||||||
|
for (let pendingMessage of state.pendingMessages.get(message.envelope.gam.aud[0])) {
|
||||||
|
|
||||||
|
// Does the incoming message match a pending one?
|
||||||
|
if (message.envelope.gam.uid === pendingMessage.uid) {
|
||||||
|
|
||||||
|
// Mutating the pendingMessages array.
|
||||||
|
let pendingMessageMap = state.pendingMessages;
|
||||||
|
let matchedMessage = pendingMessageMap.get(pendingMessage.aud[0]).indexOf(pendingMessage);
|
||||||
|
pendingMessageMap.get(pendingMessage.aud[0]).splice(matchedMessage, 1);
|
||||||
|
state.pendingMessages = pendingMessageMap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
reduceMessages(msgs, state) {
|
reduceMessages(msgs, state) {
|
||||||
if (msgs) {
|
if (msgs) {
|
||||||
|
|
||||||
|
@ -11,7 +11,8 @@ class Store {
|
|||||||
configs: {},
|
configs: {},
|
||||||
circles: [],
|
circles: [],
|
||||||
peers: {},
|
peers: {},
|
||||||
spinner: false
|
spinner: false,
|
||||||
|
pendingMessages: new Map([])
|
||||||
};
|
};
|
||||||
|
|
||||||
this.initialReducer = new InitialReducer();
|
this.initialReducer = new InitialReducer();
|
||||||
|
@ -60,8 +60,8 @@ export class Pubs extends Component {
|
|||||||
<div className={cls} key={i}>
|
<div className={cls} key={i}>
|
||||||
<div className="fl body-regular-400 mw-336 w-336 pr3">
|
<div className="fl body-regular-400 mw-336 w-336 pr3">
|
||||||
<Link to={data.url}>
|
<Link to={data.url}>
|
||||||
<p className="one-line mw-336">
|
<p className="ml3 mw-336">
|
||||||
<span className="ml3">{data.title}</span>
|
<span>{data.title}</span>
|
||||||
</p>
|
</p>
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
@ -82,7 +82,7 @@ export class Pubs extends Component {
|
|||||||
<div>
|
<div>
|
||||||
<HM invites={invites} unread={unread}/>
|
<HM invites={invites} unread={unread}/>
|
||||||
<div className="absolute w-100" style={{top:124}}>
|
<div className="absolute w-100" style={{top:124}}>
|
||||||
<div className="flex-col">
|
<div className="flex-column">
|
||||||
<div className="w-100">
|
<div className="w-100">
|
||||||
<h2 className="gray-50"
|
<h2 className="gray-50"
|
||||||
style={{marginLeft: 16, marginTop:32, marginBottom: 16}}>
|
style={{marginLeft: 16, marginTop:32, marginBottom: 16}}>
|
||||||
|
@ -110,8 +110,8 @@ export class Subs extends Component {
|
|||||||
<div className={cls} key={i}>
|
<div className={cls} key={i}>
|
||||||
<div className="fl mw-336" style={{flexBasis: 336}}>
|
<div className="fl mw-336" style={{flexBasis: 336}}>
|
||||||
<Link to={data.url}>
|
<Link to={data.url}>
|
||||||
<p className="body-regular-400 one-line pr3">
|
<p className="body-regular-400 pr3 ml3">
|
||||||
<span className="ml3">{data.title}</span>
|
<span>{data.title}</span>
|
||||||
</p>
|
</p>
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
@ -133,7 +133,7 @@ export class Subs extends Component {
|
|||||||
<div className={cls} key={i}>
|
<div className={cls} key={i}>
|
||||||
<div className="fl body-regular-400" style={{flexBasis: 336}}>
|
<div className="fl body-regular-400" style={{flexBasis: 336}}>
|
||||||
<Link to={data.url}>
|
<Link to={data.url}>
|
||||||
<div className="mw-336 one-line pr3">
|
<div className="mw-336 pr3">
|
||||||
<span className="body-large green-medium"> • </span>
|
<span className="body-large green-medium"> • </span>
|
||||||
<span className="body-regular-400">Invite to </span>
|
<span className="body-regular-400">Invite to </span>
|
||||||
<span className="body-regular">
|
<span className="body-regular">
|
||||||
@ -170,7 +170,7 @@ export class Subs extends Component {
|
|||||||
<div>
|
<div>
|
||||||
<HM invites={invites} unread={unread}/>
|
<HM invites={invites} unread={unread}/>
|
||||||
<div className="absolute w-100" style={{top:124}}>
|
<div className="absolute w-100" style={{top:124}}>
|
||||||
<div className="flex-col">
|
<div className="flex-column">
|
||||||
<div className="w-100">
|
<div className="w-100">
|
||||||
<h2 className="gray-50"
|
<h2 className="gray-50"
|
||||||
style={{marginLeft: 16, marginTop: 32, marginBottom: 16}}>
|
style={{marginLeft: 16, marginTop: 32, marginBottom: 16}}>
|
||||||
|
@ -107,12 +107,12 @@ export default class WeatherTile extends Component {
|
|||||||
</a>
|
</a>
|
||||||
{secureCheck}
|
{secureCheck}
|
||||||
<p className="label-regular white pt2">
|
<p className="label-regular white pt2">
|
||||||
Please enter your <a href="https://latitudeandlongitude.org/" target="_blank">latitude and longitude</a>.</p>
|
Please enter your <a className="white" href="https://latitudeandlongitude.org/" target="_blank">latitude and longitude</a>.</p>
|
||||||
{error}
|
{error}
|
||||||
<form className="flex absolute" style={{"bottom": 0, "left": 8}}>
|
<form className="flex absolute" style={{"bottom": 0, "left": 8}}>
|
||||||
<input id="gps"
|
<input id="gps"
|
||||||
className="white pa1 bg-transparent outline-0 bn bb-ns b--white"
|
className="white pa1 bg-transparent outline-0 bn bb-ns b--white"
|
||||||
style={{width: "100%"}}
|
style={{width: "86%"}}
|
||||||
type="text"
|
type="text"
|
||||||
placeholder="29.558107, -95.089023"
|
placeholder="29.558107, -95.089023"
|
||||||
onKeyDown={this.keyPress.bind(this)}>
|
onKeyDown={this.keyPress.bind(this)}>
|
||||||
|
2
pkg/urbit/configure
vendored
2
pkg/urbit/configure
vendored
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
URBIT_VERSION=0.8.1
|
URBIT_VERSION=0.8.2
|
||||||
|
|
||||||
deps=" \
|
deps=" \
|
||||||
curl gmp sigsegv argon2 ed25519 ent h2o scrypt sni uv murmur3 secp256k1 \
|
curl gmp sigsegv argon2 ed25519 ent h2o scrypt sni uv murmur3 secp256k1 \
|
||||||
|
@ -84,6 +84,7 @@ _main_getopt(c3_i argc, c3_c** argv)
|
|||||||
u3_Host.ops_u.has = c3y;
|
u3_Host.ops_u.has = c3y;
|
||||||
|
|
||||||
u3_Host.ops_u.net = c3y;
|
u3_Host.ops_u.net = c3y;
|
||||||
|
u3_Host.ops_u.lit = c3n;
|
||||||
u3_Host.ops_u.nuu = c3n;
|
u3_Host.ops_u.nuu = c3n;
|
||||||
u3_Host.ops_u.pro = c3n;
|
u3_Host.ops_u.pro = c3n;
|
||||||
u3_Host.ops_u.qui = c3n;
|
u3_Host.ops_u.qui = c3n;
|
||||||
@ -94,7 +95,7 @@ _main_getopt(c3_i argc, c3_c** argv)
|
|||||||
u3_Host.ops_u.kno_w = DefaultKernel;
|
u3_Host.ops_u.kno_w = DefaultKernel;
|
||||||
|
|
||||||
while ( -1 != (ch_i=getopt(argc, argv,
|
while ( -1 != (ch_i=getopt(argc, argv,
|
||||||
"G:J:B:K:A:H:I:w:u:e:E:f:F:k:p:LjabcCdgqsvxPDRS")) )
|
"G:J:B:K:A:H:I:w:u:e:E:f:F:k:p:LljabcCdgqsvxPDRS")) )
|
||||||
{
|
{
|
||||||
switch ( ch_i ) {
|
switch ( ch_i ) {
|
||||||
case 'J': {
|
case 'J': {
|
||||||
@ -174,6 +175,7 @@ _main_getopt(c3_i argc, c3_c** argv)
|
|||||||
return c3y;
|
return c3y;
|
||||||
}
|
}
|
||||||
case 'L': { u3_Host.ops_u.net = c3n; break; }
|
case 'L': { u3_Host.ops_u.net = c3n; break; }
|
||||||
|
case 'l': { u3_Host.ops_u.lit = c3y; break; }
|
||||||
case 'j': { u3_Host.ops_u.tra = c3y; break; }
|
case 'j': { u3_Host.ops_u.tra = c3y; break; }
|
||||||
case 'a': { u3_Host.ops_u.abo = c3y; break; }
|
case 'a': { u3_Host.ops_u.abo = c3y; break; }
|
||||||
case 'b': { u3_Host.ops_u.bat = c3y; break; }
|
case 'b': { u3_Host.ops_u.bat = c3y; break; }
|
||||||
|
@ -569,6 +569,7 @@
|
|||||||
c3_w kno_w; // -K, kernel version
|
c3_w kno_w; // -K, kernel version
|
||||||
c3_c* key_c; // -k, private key file
|
c3_c* key_c; // -k, private key file
|
||||||
c3_o net; // -L, local-only networking
|
c3_o net; // -L, local-only networking
|
||||||
|
c3_o lit; // -l, lite mode
|
||||||
c3_o pro; // -P, profile
|
c3_o pro; // -P, profile
|
||||||
c3_s por_s; // -p, ames port
|
c3_s por_s; // -p, ames port
|
||||||
c3_o qui; // -q, quiet
|
c3_o qui; // -q, quiet
|
||||||
|
@ -295,6 +295,25 @@ _dawn_turf(c3_c* dns_c)
|
|||||||
return tuf;
|
return tuf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* _dawn_sponsor(): retrieve sponsor from point
|
||||||
|
*/
|
||||||
|
static u3_noun
|
||||||
|
_dawn_sponsor(u3_noun who, u3_noun rac, u3_noun pot)
|
||||||
|
{
|
||||||
|
u3_noun uni = u3dc("sponsor:dawn", u3k(who), u3k(pot));
|
||||||
|
|
||||||
|
if ( c3n == u3h(uni) ) {
|
||||||
|
_dawn_fail(who, rac, uni);
|
||||||
|
return u3_none;
|
||||||
|
}
|
||||||
|
|
||||||
|
u3_noun pos = u3k(u3t(uni));
|
||||||
|
|
||||||
|
u3z(who); u3z(rac); u3z(pot); u3z(uni);
|
||||||
|
|
||||||
|
return pos;
|
||||||
|
}
|
||||||
|
|
||||||
/* u3_dawn_vent(): validated boot event
|
/* u3_dawn_vent(): validated boot event
|
||||||
*/
|
*/
|
||||||
u3_noun
|
u3_noun
|
||||||
@ -302,7 +321,7 @@ u3_dawn_vent(u3_noun seed)
|
|||||||
{
|
{
|
||||||
u3_noun url, bok, pos, pon, zar, tuf;
|
u3_noun url, bok, pos, pon, zar, tuf;
|
||||||
|
|
||||||
u3_noun ship = u3h(seed);
|
u3_noun ship = u3k(u3h(seed));
|
||||||
u3_noun rank = u3do("clan:title", u3k(ship));
|
u3_noun rank = u3do("clan:title", u3k(ship));
|
||||||
|
|
||||||
url = _dawn_purl(rank);
|
url = _dawn_purl(rank);
|
||||||
@ -336,27 +355,15 @@ u3_dawn_vent(u3_noun seed)
|
|||||||
//
|
//
|
||||||
pot = u3v_wish("*point:azimuth");
|
pot = u3v_wish("*point:azimuth");
|
||||||
}
|
}
|
||||||
|
else if ( c3__earl == rank ) {
|
||||||
|
pot = u3v_wish("*point:azimuth");
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
u3_noun who;
|
u3_noun who;
|
||||||
|
|
||||||
if ( c3__earl == rank ) {
|
who = u3k(ship);
|
||||||
who = u3do("^sein:title", u3k(ship));
|
u3l_log("boot: retrieving %s's public keys\r\n",
|
||||||
|
u3_Host.ops_u.who_c);
|
||||||
{
|
|
||||||
u3_noun seg = u3dc("scot", 'p', u3k(who));
|
|
||||||
c3_c* seg_c = u3r_string(seg);
|
|
||||||
|
|
||||||
u3l_log("boot: retrieving %s's public keys (for %s)\r\n",
|
|
||||||
seg_c, u3_Host.ops_u.who_c);
|
|
||||||
free(seg_c);
|
|
||||||
u3z(seg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
who = u3k(ship);
|
|
||||||
u3l_log("boot: retrieving %s's public keys\r\n",
|
|
||||||
u3_Host.ops_u.who_c);
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
{
|
||||||
u3_noun oct = u3dc("point:give:dawn", u3k(bok), u3k(who));
|
u3_noun oct = u3dc("point:give:dawn", u3k(bok), u3k(who));
|
||||||
@ -382,21 +389,18 @@ u3_dawn_vent(u3_noun seed)
|
|||||||
//
|
//
|
||||||
u3_noun sas = u3dt("veri:dawn", u3k(seed), u3k(pot), u3k(liv));
|
u3_noun sas = u3dt("veri:dawn", u3k(seed), u3k(pot), u3k(liv));
|
||||||
|
|
||||||
if ( c3n == u3h(sas) ) {
|
if ( u3_nul != sas ) {
|
||||||
// bails, won't return
|
// bails, won't return
|
||||||
_dawn_fail(ship, rank, sas);
|
_dawn_fail(ship, rank, sas);
|
||||||
return u3_none;
|
return u3_none;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ship: sponsor
|
u3l_log("boot: getting sponsor\r\n");
|
||||||
// produced by +veri:dawn to avoid coupling to +point structure
|
pos = _dawn_sponsor(u3k(ship), u3k(rank), u3k(pot));
|
||||||
// XX reconsider
|
u3z(pot); u3z(liv);
|
||||||
//
|
|
||||||
pos = u3k(u3t(sas));
|
|
||||||
|
|
||||||
u3z(pot); u3z(liv); u3z(sas);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// (map ship [=life =pass]): galaxy table
|
// (map ship [=life =pass]): galaxy table
|
||||||
//
|
//
|
||||||
{
|
{
|
||||||
@ -426,22 +430,47 @@ u3_dawn_vent(u3_noun seed)
|
|||||||
u3z(oct); u3z(fut);
|
u3z(oct); u3z(fut);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
pon = u3_nul;
|
||||||
u3l_log("boot: retrieving sponsor keys\r\n");
|
while (c3__czar != rank) {
|
||||||
|
u3_noun son;
|
||||||
|
// print message
|
||||||
|
//
|
||||||
|
{
|
||||||
|
u3_noun who = u3dc("scot", 'p', u3k(pos));
|
||||||
|
c3_c* who_c = u3r_string(who);
|
||||||
|
u3l_log("boot: retrieving keys for sponsor %s\r\n", who_c);
|
||||||
|
u3z(who);
|
||||||
|
free(who_c);
|
||||||
|
}
|
||||||
|
|
||||||
u3_noun oct = u3dc("point:give:dawn", u3k(bok), u3k(pos));
|
// retrieve +point:azimuth of pos (sponsor of ship)
|
||||||
u3_noun luh = _dawn_eth_rpc(url_c, u3k(oct));
|
//
|
||||||
|
{
|
||||||
|
u3_noun oct = u3dc("point:give:dawn", u3k(bok), u3k(pos));
|
||||||
|
u3_noun luh = _dawn_eth_rpc(url_c, u3k(oct));
|
||||||
|
|
||||||
pon = _dawn_need_unit(u3dc("point:take:dawn", u3k(pos), u3k(luh)),
|
son = _dawn_need_unit(u3dc("point:take:dawn", u3k(pos), u3k(luh)),
|
||||||
"boot: failed to retrieve sponsor keys");
|
"boot: failed to retrieve sponsor keys");
|
||||||
pon = u3nc(pos, pon);
|
|
||||||
u3z(oct); u3z(luh);
|
// append to sponsor chain list
|
||||||
|
//
|
||||||
|
pon = u3nc(u3nc(u3k(pos), u3k(son)), pon);
|
||||||
|
u3z(oct); u3z(luh);
|
||||||
|
}
|
||||||
|
|
||||||
|
// find next sponsor
|
||||||
|
//
|
||||||
|
u3z(ship); u3z(rank);
|
||||||
|
ship = pos;
|
||||||
|
rank = u3do("clan:title", u3k(ship));
|
||||||
|
pos = _dawn_sponsor(u3k(ship), u3k(rank), u3k(son));
|
||||||
|
|
||||||
|
u3z(son);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u3z(rank); u3z(pos); u3z(ship);
|
||||||
|
|
||||||
u3z(rank);
|
// [%dawn seed sponsors galaxies domains block eth-url snap]
|
||||||
|
|
||||||
// [%dawn seed sponsor galaxies domains block eth-url snap]
|
|
||||||
//
|
//
|
||||||
return u3nc(c3__dawn, u3nq(seed, pon, zar, u3nt(tuf, bok, url)));
|
return u3nc(c3__dawn, u3nq(seed, pon, zar, u3nt(tuf, bok, url)));
|
||||||
}
|
}
|
||||||
|
@ -1485,7 +1485,7 @@ _pier_boot_vent(u3_boot* bot_u)
|
|||||||
c3_assert( c3y == u3du(bot_u->ven) );
|
c3_assert( c3y == u3du(bot_u->ven) );
|
||||||
|
|
||||||
u3_noun wir = u3nq(u3_blip, c3__term, '1', u3_nul);
|
u3_noun wir = u3nq(u3_blip, c3__term, '1', u3_nul);
|
||||||
u3_noun car = u3nc(c3__boot, u3k(bot_u->ven));
|
u3_noun car = u3nt(c3__boot, u3_Host.ops_u.lit, u3k(bot_u->ven));
|
||||||
u3_noun ovo = u3nc(wir, car);
|
u3_noun ovo = u3nc(wir, car);
|
||||||
|
|
||||||
_pier_writ_insert_ovum(pir_u, 0, ovo);
|
_pier_writ_insert_ovum(pir_u, 0, ovo);
|
||||||
@ -1997,9 +1997,9 @@ u3_pier_tank(c3_l tab_l, c3_w pri_w, u3_noun tac)
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch ( pri_w ) {
|
switch ( pri_w ) {
|
||||||
case 3: fprintf(fil_u, ">>> "); break;
|
case 3: fprintf(fil_u, "\033[31m>>> "); break;
|
||||||
case 2: fprintf(fil_u, ">> "); break;
|
case 2: fprintf(fil_u, "\033[33m>> "); break;
|
||||||
case 1: fprintf(fil_u, "> "); break;
|
case 1: fprintf(fil_u, "\033[32m> "); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// if we have no arvo kernel and can't evaluate nock
|
// if we have no arvo kernel and can't evaluate nock
|
||||||
@ -2020,6 +2020,7 @@ u3_pier_tank(c3_l tab_l, c3_w pri_w, u3_noun tac)
|
|||||||
_pier_wall(fil_u, wol);
|
_pier_wall(fil_u, wol);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fprintf(fil_u, "\033[0m");
|
||||||
u3_term_io_loja(0);
|
u3_term_io_loja(0);
|
||||||
u3z(blu);
|
u3z(blu);
|
||||||
u3z(tac);
|
u3z(tac);
|
||||||
|
Loading…
Reference in New Issue
Block a user