Gall tells ames to %cork flows for subscriptions it has closed.
Receiving a kick also closes a subscription, but gall wasn't issuing a
%cork in that case. We correct that here.
Inlines +mo-handle-ames-response's logic at its only callsite.
seems that this structure has been unused since
e75ab631a4 and confuses
newbies trying to figure out exactly what the commit
structure is (which is how I came across this)
Without this, a ship would send a cork on a max of one flow per
recork timer, which could take years to clear for some ships.
This starts a hot loop of trying the next cork once one gets
positively acked.
The previous recork timer queued up %cork messages without sending them.
It also relied on making sure pump timers didn't get set for recork bones.
This was fragile.
The new design enqueues up to one new %cork message per ship during each
recork timer, based on the state of the flow. If the flow is closing but
there are no outstanding messages in it, then it needs to be recorked.
Flows will be recorked in ascending numerical order by bone.
The condition got butchered during refactor: instead of avoiding the creation
of pump timers during recork wake, it was setting them _exclusively_ during
recork wake.
Currently when creating a fake ship, if an invalid ship name is given,
then the program exits without ever cleaning up the terminal. This
results in a bugged termianal that requires closing and repopening
or using the `reset` cmd.
This commits adds a call to `u3_term_log_exit()` and `fflush(stdout)`
before calling `exit(1)` to ensure proper cleanup.
Address issue #5914
* next/vere: (49 commits)
vere: bumps version
vere: bumps version
ci: enable release version mgmt
Revert "ci: reenable release mgmt"
ci: reenable release mgmt
ames: track/log bad ciphertext crashes separately
u3: %evil leaves no trace
vere: drop bail:evil events without error notifications
jets: bail:evil in ae-siv decryption jets
vere: make uv_cancel return code check explicit
u3: check for overflow in interpreter if guard page not present
build: default to using guard page
u3: return 0 from u3e_fault() if guard page cannot be protected
u3: control presence of guard page using macro
Revert "u3: check for road stack overflow on every nock %2 and %9"
build: make bench is phony
u3: failure to mprotect() the new guard page is fatal
u3: removes/disables obsolete road stack overflow checks
u3: account for guard page in cellblock allocation conditional
u3: bump road heap offset before allocating cellblock
...
This test started failing presumably somewhere during #5886. Testing
with a comet on the network, the test seems inaccurate: the comet can
communicate and be communicated to just fine.
Before this change, `term/lib` was importing the Poke type from the `http-api` package. This was causing the rollup build output to place the `term` exported types in a separate path (`dist/api/term`). By switching to the relative import, it is now exported at the expected path (`dist/term`). This fixes imports in consuming projects (e.g., `import { Belt, pokeTask, pokeBelt } from '@urbit/api/term';`).
Also, remove the extraneous `Scry` import.
this refactors the parser for %brcn and %brpt to separate the optional
argument(s) from the required argument(s).
also adds +blab, which allows for a minor refactor of a couple other
arms as well as being used for %brcn and %brpt
When the first byte is greater or equal to 0xfd, (bex len) bytes are consumed to
form the csiz atom, but only one byte is dropped from the 'rest' of the input.
The parser should consume all bytes of the CompactSize.
In reconnect scenarios (or wonky network situations) we may receive
events we had already heard. Here we make sure to drop those.
Also simplifies the getEventId() logic.
- Fixes an issue where behn would fail to report the next timer to vere
correctly, resulting in timers only firing once every ten minutes.
- Updates |rein to be additive instead of fully replacing existing
configuration. Specifying a single agent to start will no longer stop
other explicitly-started agents.
- Various QoL improvements to dojo.
- Updates DNS requests to go to ~deg instead of ~zod. The Foundation
will take over DNS request handling.
Contributions:
David Farrell (5):
dojo: have dojo check =dir exists before switching
dojo: simplify dir not exist error message build
dojo: setting eny/now/our shouldn't crash dojo
dojo: say how to beat the %dy-edit-busy escape room
dojo: remove unnecessary debug output
Joe Bryan (8):
behn: adds (failing) tests
behn: unconditionally clear runtime timer state on %wake
behn: don't compare pending timers to now
behn: refactor to use +abet pattern
behn: emit %doze on any rescheduling of the next timer
behn: cleans up comments
Merge pull request #5858 from urbit/jb/behn-fix2
test: removes debugging comments from %behn unit tests
Sidnym Ladrut (1):
hood: fix issue w/ rein diff application
Yaseen (1):
eyre: Modify landing title from "OS1" to "Urbit"
fang (16):
clay: render syntax errors at end of file
Merge pull request #5811 from ynx0/patch-1
Merge pull request #5812 from urbit/m/eof-syntax-error
Merge pull request #5837 from dnmfarrell/dnmfarrell/arvo-dy-edit-press-bksp-to-abort
Merge pull request #5840 from dnmfarrell/dnmfarrell/arvo-dojo-check-dir-exists-before-switch
Merge branch 'master' into next/arvo
gall: exclude from traces
Merge pull request #5841 from dnmfarrell/dnmfarrell/arvo-dojo-dont-crash-set-beak
Merge pull request #5863 from sidnym-ladrut/sl/fix-rein-toggle-behaviori
Merge pull request #5868 from urbit/pkova/dns
Merge branch 'master' into next/arvo
Merge pull request #5857 from urbit/jb/behn-fix1
Merge pull request #5855 from urbit/m/gall-quieter
hood: re-patch |rein
Revert "clay: render syntax errors at end of file"
Revert "gall: exclude from traces"
pkova (1):
dns: transfer ship.arvo.network domains from ~zod to ~deg
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEB0bRQARxix0iuhs56wNXYMG7qXIFAmLPF9wACgkQ6wNXYMG7
qXLO5w/7BSc5aajTaA/o8ma4SoySX/PXH1dnnoJO9A2fiYR3sIpcdY12xNmnCA/e
y0OyQeSqmRzO90bVJI3AVxN0qEDcz0fR9ZoC8YeYWRrAWy7xRTm808NRW1rovAEN
LIlOemUpJODlqkkiD0x8hwxNSix9+tkcr6ehilzIuORaBcTI586rekT+FfXGuD9Z
IURbKkKS443M3kIyL9MUXu8lopMpfwZg9VYwo3a8fnUvUmVRleHBpUI71GXd41w4
eQv63197mcwMq/od9JUXBdX1yek/QyVV0SqZhPCksUOipdCbH0oJpzBmh/4i0CGb
Ij2gyGlth4iErXx+TBBpHk0FKQysHoPQyBI3/ljtZG4xpVToKHyuw7hODHR4STUL
hYV+iWbOJ+reh0Zkrk/SjZHZMYBKcuBonIXwNXDE5cC50q+dqqaj8+0oPOmdjhDy
rbzN377Ijags+ivLagpra1KE+lVLtKbOae16FqzBZJqs7xuj9ZsoabG+OxoXDH7j
i1oXIskYuIzHfbSbDk2eaCPKONFs19Oi8ULg5/zxaJsQLks9WMuckBPFr4paCrdo
eBFe139f87xBi8WBZ7rzYyrUFtGhTLo1Bzapdbvh18WhYfK95sTo+PCUJNHB29+H
qmkE3bMZ+v2VOPLFtRfrb1bolpsoR/m5Z6SWElMB2Ig2WKkDqvE=
=CxGA
-----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEB0bRQARxix0iuhs56wNXYMG7qXIFAmLPJAQACgkQ6wNXYMG7
qXLiyxAAmOlm72h+UC34dnmtiIKjRyuq+XXl8MdyPu0XZPKS1XzewFAP+iQE1uVG
X5HJ04xl6SI/npa99p95K7f2T69OkXWvwax8fhu/+hhIVq8bQAOfzMIW5jk2Bfzl
j1wMjcjzDZquqNVaYHsYAmnUZFl2Tp3mv3j3VgxsyUfdXFKQLz9g7lhBellIZ1F+
HTfK8YBWGhzfUoJ/3pfXp7Q/6w60pW4AC/6dbfbmKW5rcZpyATWhIbYWullPsJWC
pjf5KYjwiiOVQU/0cZ5alXZX0ofV4Tf9er5I4Np0fF3j/5O1vdmBJ9E4RGJXJMrR
sQ6xt7yuX5wrpbUTqgvxA7sSjEB4+lk8sZJvC5KpLIvNF6s4o1aUnHYSODeIr0r3
vkx7YYfhbDv84xHA3lIejh7vcM5182dq0cNhHD1uLGt81IeE+YCl0G1cvUV5QxrQ
WGt3uLanIpBAJjseMc4N3mUcG343G0vs8058gZtwqsGXy7byF3tFKmt1kHPh2pjP
W9HJ0+MN7VSGqNidMv74r4ZpsDPdERkUqdhzb30tvBBp6xraXflVjvUT5Ln+501p
m2PO5aLbeVclIViwsC7wFLYooHDz5O7hZx5Sf1uUjNsaGYSPotPGH8UsXSiyKZ5/
p067gSrcyqHuLRYR/7izDCe7xTHImpP3doL6xmW4br2gl5wKX1s=
=BGu/
-----END PGP SIGNATURE-----
Merge tag 'urbit-os-v2.124'
urbit-os-v2.124
- Fixes an issue where behn would fail to report the next timer to vere
correctly, resulting in timers only firing once every ten minutes.
- Updates |rein to be additive instead of fully replacing existing
configuration. Specifying a single agent to start will no longer stop
other explicitly-started agents.
- Various QoL improvements to dojo.
- Updates DNS requests to go to ~deg instead of ~zod. The Foundation
will take over DNS request handling.
Contributions:
David Farrell (5):
dojo: have dojo check =dir exists before switching
dojo: simplify dir not exist error message build
dojo: setting eny/now/our shouldn't crash dojo
dojo: say how to beat the %dy-edit-busy escape room
dojo: remove unnecessary debug output
Joe Bryan (8):
behn: adds (failing) tests
behn: unconditionally clear runtime timer state on %wake
behn: don't compare pending timers to now
behn: refactor to use +abet pattern
behn: emit %doze on any rescheduling of the next timer
behn: cleans up comments
Merge pull request #5858 from urbit/jb/behn-fix2
test: removes debugging comments from %behn unit tests
Sidnym Ladrut (1):
hood: fix issue w/ rein diff application
Yaseen (1):
eyre: Modify landing title from "OS1" to "Urbit"
fang (16):
clay: render syntax errors at end of file
Merge pull request #5811 from ynx0/patch-1
Merge pull request #5812 from urbit/m/eof-syntax-error
Merge pull request #5837 from dnmfarrell/dnmfarrell/arvo-dy-edit-press-bksp-to-abort
Merge pull request #5840 from dnmfarrell/dnmfarrell/arvo-dojo-check-dir-exists-before-switch
Merge branch 'master' into next/arvo
gall: exclude from traces
Merge pull request #5841 from dnmfarrell/dnmfarrell/arvo-dojo-dont-crash-set-beak
Merge pull request #5863 from sidnym-ladrut/sl/fix-rein-toggle-behaviori
Merge pull request #5868 from urbit/pkova/dns
Merge branch 'master' into next/arvo
Merge pull request #5857 from urbit/jb/behn-fix1
Merge pull request #5855 from urbit/m/gall-quieter
hood: re-patch |rein
Revert "clay: render syntax errors at end of file"
Revert "gall: exclude from traces"
pkova (1):
dns: transfer ship.arvo.network domains from ~zod to ~deg
Problem:
by-channel has its own copy of server-state from line 2182. discard-channel returns an altered state, with one channel removed from the state of by-channel.
but the state of by-channel isn't changing with each iteration, so |trim is only removing one channel per invocation.
Solution:
update by-channel on each iteration.
xterm.js seems to have a bug where it doesn't register ctrl+uppercase
keypresses correctly. To work around this, we catch such keypresses
explicitly and handle them inline.
%histogram, %block-headers, %tx-from-pos, %fee, %psbt are now all callable from the btc-provider agent. These actions are necessary in order to get the lightning network working within Urbit.
this commit replaces the previous intermediate parsing structure, $whit,
with a new one better suited for batch comments and taking into account
that {# %label} syntax is no longer being used anywhere. basically,
this makes it so that all doccords are batch comments, where if they are
preceded by a (list link) then they will try to attach to the given
link (only utilizes first link for now), and a blank link means it will
try to attach to the following hoon or spec
This is a temporary fix, and first part of the gall-request-queue-fix
release in two stages. This gives a publisher ship the ability to
understand a %cork and handle it properly, but no subscriber will
be sending %corks at this stage when leaving a subscription.
We still add a nonce to all subscription wires but it doesn't
increment it when resubscribing, allowing flows to be reused.
Tested locally with toy pub/sub agents and Group join/leaving
* master: (61 commits)
rich-text: removing broken plugin, reverting react-md to 5.0.3 for compat
graphcontent: blockquotes now correctly break paragraphs off
md-editor: fixing background in darkmode
landscape: [skip actions] update glob (0v5.kgrq2.gp725.bo5bk.dmr7d.h41qk)
ops: fixing build
meta: version bump for new changes from next/landscape
meta: package bump:
eventsource: prevent resetting event id counter
interface: fixing react-codemirror2 dep
groups: add webp to list of image types to check links for in chat
groups: fix issue where URL would be shown along with image in chat
groups: fix issue with chanel perms caused by use of Set()
groups: update glob (0v4.2se6m.fvv67.nn5e8.vfrv9.mmi88)[skip actions]
groups: updating package lock
groups: updating nvmrc
Fix webpack, build dependency issues
compat: fixing react-codemirror2 deps
compat: updating to latest sigil-js for react
compat: updating indigo, and removing unused deps
meta: fixing react version issue
...
Previously, the initial Azimuth snapshot was stored in Clay and shipped
in the pill. This causes several problems:
- It bloats the pill
- Updating the snapshot added large blobs to Clay's state. Even now
that tombstoning is possible, you don't want to have to do that
regularly.
- As a result, the snapshot was never updated.
- Even if you did tombstone those files, it could only be updated as
often as the pill
- And those updates would be sent over the network to people who didn't
need them
This moves the snapshot out of the pill and refactors Azimuth's
initialization process. On boot, when app/azimuth starts up, it first
downloads a snapshot from bootstrap.urbit.org and uses that to
initialize its state. As before, updates after this initial snapshot
come from an Ethereum node directly and are verified locally.
Relevant commands are:
- `-azimuth-snap-state %filename` creates a snapshot file
- `-azimuth-load "url"` downloads and inits from a snapshot, with url
defaulting to https://bootstrap.urbit.org/mainnet.azimuth-snapshot
- `:azimuth &azimuth-poke-data %load snap-state` takes a snap-state any
way you have it
Note the snapshot is downloaded from the same place as the pill, so this
doesn't introduce additional trust beyond what was already required.
When remote scry is released, we should consider allowing downloading
the snapshot in that way.
using col as a seperate made it look like a bunch of =<, which doesn't
make sense for e.g. pritning chapters. paths aren't quite right either,
so we don't use +stap, and just want identifiers separated by fas
without any leading fas
changes $whit to have a (unit link) instead of (unit term). this holds
the identifier for where a comment is supposed to go. changes to parsers
in docs:vast to accomodate this.
this only allows for batch comments written for arms within a given
core. someday, the feature should allow you to write comments
virtually anywhere. the (unit link) in $whit should become a (unit (list
link)) to accommodate this
Because the publisher will send the cork plea back to the subscriber on
the next bone, we are not able to know the bone for the original cork.
To handle it, we add the cork bone to the plea path
still wip: it keeps resending the cork plea faster than its ~h1 timer
Modifies the terminal to support vt escape sequences (as emulated by the
Gnome Terminal app and others).
For now it recognizes the delete key - other sequences are ignored as
drum does not (yet) support them.
This also stops all vt escape sequences from emitting sigs.
Removes the !: at the top of gall, so that it no longer gets included in traces about agent builds or crashes.
We also refine intentional crashes with ~_s, so that we still see a crash reason even if we don't get a full trace.
Lastly, flops the trace for +on-load crashes, which were getting printed bottom-first.
It's too easy to get trapped in the dojo %dy-edit-busy escape room. Just
type something like:
-build-file /=base/gen/ls/hoon
This modifies the dojo output to tell the user how to get out.
Fixes#1462.
Incorporates @Fang- suggested changes (thanks!).
Drops the path serialization as it will print on two separate lines,
and it is already displayed in dojo immediately above the error message:
> =dir /=base=/ge
dojo: dir does not exist
this is almost a revert of the commit that added in the %funk tag, but
not quite, so its a new commit. i apparently forgot that product docs
are actually built by +wrap, not +boog, so it was treating postfix
arm-docs as if they were product docs
i thought this would be a neat feature but ted called it too clever and
probably not what you really want. this code is atrocious though and
needs some serious cleanup
not actually sure this is correct yet, but it fixed the issue where
there would be a crash when looking for docs in an arm like +bar in
|%
++ foo 'foo'
++ bar foo
--
Sets the mapsize for AAarch64 Linux in `pkg/urbit/vere/disk.c` to the largest size I can get to work with musl, 500 MiB.
Leaves the Windows mapsize untouched at the old default of 60 GiB because I haven't done any testing to see what the limit is there.
If a desk already existed, we would crash the generator, embedding a
message in the resulting stack trace.
To improve legibility, we turn this into an %ask generator, prompting
only if we are about to overwrite an existing desk.
We also update the =force argument to be =hard instead, to match |nuke.
Stale lanes may cause forwarding loops. Imagine the following:
1) Planet A is live. Galaxy B, its indirect sponsor, learns of its route.
2) A goes offline. Another ship, C, is started in its place, at the same route.
3) B receives a packet for A, forwards it to the known route.
4) C received the packet, forwards it to B.
5) Repeat from 3.
Here, we update the forward lane(s) scry used by the runtime to not produce a
peer's lane if they haven't communicated with us in the last hour. Everyone's
supposed to ping their sponsorship chain every 30 seconds. If those aren't
going through, you shouldn't expect to be reachable anyway.
We may or may not want to update +send-blob to match.
* jb/next:
vere: disable printfs on failed requests to $version/next
vere: create $pier/.bin/pace automatically
build: factor out reusable workflow, call on push and tag creation
vere: trim trailing whitespace from pace file
build: use gh action artifact to propagate version string
build: fix version path for windows pre-release
build: fix bash conditional in pre-release upload check
build: run on appropriate tags
build: cut pre-releases on appropriate tags
Previously, if the pointer for a syntax error pointed to the end of the file
(and the file ended in a newline) the code snippet rendering would try to
display a line _beyond_ the end of the file, causing a crash.
Here, we detect that case, and display `<<end of file>>` instead.
Changes the test command to check if args contains a single path and
wraps it in a list. Now a test thread can be started without providing
a list:
-test %/tests/lib
And passing a list still works:
test %/tests/lib ~
One nit in this change is the lark expression to reach into args: if
args is ~ then instead of getting a useful need/have error, the test
ends in a "false-start". Perhaps this could be fixed by detecting ~
and setting it to %/tests.
* next/arvo: (435 commits)
vere: backs out overly zealous path canonicalization assertions
clay: update tests
vere: bump version to 1.9-rc3
vere: bump version to 1.9-rc1
clay: add logging commands
ames: fix comet communication with breached ship
pill: multi-brass
clay: don't add lobe to wire to avoid flow leak
ames: handle +call moves if re-evolving from larva
clay: add tomb scry
clay: make trim clear ford cache
clay: progress download when receiving tombstone
clay: fetch entire latest foreign commit
clay: don't require head of foreign desks
clay: fixes
clay: tweaks from walkthrough
ames: indent
ames: start drainage timer if regressed from adult
clay: re-export page to not break apps
clay: fix stack while building directories
...
* next/vere:
urcrypt: correct parameter ordering in urcrypt_ed_veri()
u3: comment use of X macro in interpreter
u3: unify interpreter opcode information using X macro
This accounts for a possible race condition where ames expects a
response, but regresses into the larval state. Upon receiving the
$sign on +take, we would remain stuck as a larva. Now we check
that we have enough information to re-evolve and then start a
/larval timer to begin draining the queue.
Flashes areas of the screen that get redrawn by blits a bright pink.
Doesn't behave quite right in some scenarios (where the first blit isn't
a cursor movement, or there is a %nel at the end of the buffer), but
works sufficiently for the common cases.
Previously we stored the nonce in $boat, which changed the $bowl of each
agent. This compiles and all agents reload, but more testing is needed.
It also renames inbound/outbound watches to $bitt/$boat.
%txt should be reserved for chunks of pasted text and other
non-keystroke text inputs. Perhaps at a later point in time we'll handle
paste events explicitly, letting this be more accurate.
If there were pending-logs in an existing watchdog that was not fully
restarted, and the number of the starting block is newer than the first
in pending, when starting a new thread, those logs will be carried over
to the new thread, which will then be re-downloaded and will fail to be
verified in /lib/naive
#5706 describes an issue with using `!>` higher up in `graph-store` where multiple types are potentially included in the vase's construction, resulting in a type of `?((unit time) update-log:store)` when scrying the internals - no fun!
Current behaviour when pasting, eg. `~paldev/pals` is to show the list
of all apps by ~paldev, even though the URL knows we're looking for pals
(eg. `/~paldev/apps/pals`). By reconstructing the URL to include the
host and desk twice, we can redirect straight to the app prompt, as
that's where that route exists.
Previously we were dropping events that used old
wires that lacked a rift in them. This seems a
bad behavior because we don't want to destroy a
flow that has not been processed by both ends.
Note: pending a fix to test-old-ames-wire
previous code was assuming too much the context of the data structure.
in chat the AST works on a single node base (?), in notebook on a
multi node base.
this commit move the previous code from inside the single stitch function to
the area where the final AST is stitched together.
- only resize when necessary (check the container's height)
- refactor CSS: use position relative / absolute to stack Buffers instead of display:none; this affects the calcuations used by fit()
- fix dark mode styles, tweak viewport height (100vh --> 99vh) to prevent overflow scroller
This still leaves an empty root node which does not take up visual
space though. A more comprehensive approach would be to filter out
plain URL links from the graph, eg from the function
```
t[1].children.map(c => {
if (c?.children) {
let links = [];
c.children.filter(k => {
if (k.type === 'link') {
links.push({
type: 'root',
children: [
{
type: 'graph-url',
url: k.url
}
]
})
}
})
c.children.push(...links);
}
});
```
this commit suggests a possible UI to put back the rich embed URL
right below (aka in context) the block where the plain URL has been
inserted. in this way when pasting a URL the formatting does not break
and yet a richer UI is still rendered.
as of now, a blockquote would discard any other content after
a URL and would put it on a new line.
eg '> some text https://urbit.org this is urbit' would be rendered as
```
> some text https://urbit.org
this is urbit
```
this commit joins all content inside of a blockquote as one block.
this change removes rich embed URLs in order to not break text flow. eg
when writing a sentence with a URL, before this commit the UI would
display the URL as its own block on a new line, plus anything
afterwards it (originally on the same line of text), would be
displayed on a new line as well.
Adds functionality in %group-view and -group-create to automatically
watch group chats when created. This appears to have gotten lost around
the time of the hark-graph-hook and group-view rewrite
A previous change updated group state to use arrays instead of sets, due
to the ease of (de)serialisation. This was not total, and resulted in a
bug in the ChannelPermissions component
- debounced resize event listener
- new Buffer#onSelect: resize, focus, and pokes `herm` with updated rows / cols
- simplify container ref implementation (no need for a callback ref), remove isOpen hack
- add lodash for debounce
- Tab#onClick no longer handles focus (it's now handled by Buffer#onSelect)
This converts the blob store from having deltas, directs, and
tombstones, to just having direct pages. This simplifies a lot of code,
since we don't have to constantly ensure that deltas always have their
parent available.
This removes the hardcoded text diff logic from clay, which was
previously required for bootstrapping.
Over the wire, we handle both old and new requests and responses
transparently, so communication is normal in both directions across
ships which do or do not have this change.
the logic for getting the docs on the default arm of a core is now more
similar to how other arm docs are gotten, rather than having its own
system. there is still more room for improvement
this was wiping out some comments buried that weren't written at the top
of an arm. not sure if this is used in another fashion that will create
issues, so I just commented it out to help remember that it used to be
there in case it needs further changes, like if I should actually skip
%know and %made notes but not %help notes
Removes the "Share private profile?" text and button that appear
at the top of the chat window when the ship has not opted in to sharing
their profile.
fixesurbit/landscape#1195
Only "shortmoons" though, due to some ames lane size limitation which
makes encoding longer ships difficult.
Notably the -ph-moon-az test does not pass, the moon cannot talk to a
non-sponsor galaxy.
We had trie operations independently implemented in +de in arvo,
+an:cloy in zuse, +zu in clay, lib/trie, and app/spider. This unifies
them all into +de in arvo, aggregating the used operations.
before this, it was grabbing the initial arm-doc from the AST rather
than the type. now %arm items have all 3 types of docs available. the
interface has been degraded somewhat though, as %arm items no longer
have a single docs field. more refactoring will be needed to figure out
the best way to do this.
rewrites select-arm-docs so that it checks for nested hint types and
sees if the outermost help hint has a %funk link with the name of the
arm in order to tell that its an arm-doc
docs written above an arm are now distinguishable in the AST from
docs written above the product of the arm, by tagging docs written
above the arm with a %funk link
When urbit exits, the host shell it was running in takes over, often
re-prints its own prompt.
Here, we move the cursor to the bottom of the screen right before
exiting, so that any subsequent output doesn't destroy whatever we had
on-screen when we closed.
Having the origin at the top left instead of the bottom left is more
conventional and ergonomic. The only thing this complicates is
prompt-specific logic, where we care about the coordinates of the
bottom-most line on the screen.
For that reason, the bulk of the changes here are in vere, where we
treat the bottom-most line specially, drawing the spinner onto it.
Webterm is likewise updated to account for the new coordinate system.
Drum now opts to accept clicks anywhere on the screen, and does its best
to move the cursor as close to the clicked location as possible (within
the confines of the prompt).
By accumulating %txt events until we reach a more complex event or reach
the end of the input buffer, we can significantly reduce the "overhead"
of pasting text into the terminal. Instead of an event for each
character, we now inject up to a buffer's worth of characters
(currently, 123 bytes) at a time. This makes pasting process much
faster.
Incidentally, the behavior for pasting text with syntax errors into the
dojo may be a little bit surprising: after every buffer boundary, the
dojo will complain about the syntax error, moving the cursor to its
location, and causing the remainder of the text to be inserted in that
position. This may result in garbled-looking input in some cases.
This ux problem should be resolved on dojo's end, perhaps by
highlighting syntax errors with color, instead of the cursor.
Alleviates most of the need for #5687.
initial commit for library for finding and printing doccords. has some
basic functionality for looking through a type and finding the docs
within it and printing them, but is mostly unfinished
And inject their latest keys as soon as we pull them from cache. This
way, we avoid having to do the whole boot sequence again just for a
modified dawn event.
This crashed at runtime when `a` is null because it tried to instantiate
`meg`, and that means bunting its argument, and that calls `node`, where
the assert failed.
Wet gates use the bunt of their formal argument, so we use that.
addresses #5442 by adding %thread-done and %thread-fail marks. also
fixes await-thread:strandio and removes some blank lines from
app/spider.hoon
%thread-done loses the type of the result, so you'll need to use ;; to
get it back. the real way to fix this is to have threads produce cages
instead of vases
Presumably due to how js non-objects work in closures, the selected prop
we were reading out whenever a blit came in was stale.
Also, it was possible that a bell was hiding inside a %mor blit, so we
add a small helper for checking properly.
%rez has always used "width & height". Certainly, "x & y" is more
standard than "row & column". As such, we settle on making %hop and %hit
respect the more natural ordering. This change is safe because these
interfaces haven't made it to livenet yet.
Intended use is for transitory moons to be able to breach themselves on
startup.
If you run a moon without persistence, then every time the program is
restarted, it must be breached. This lets the moon breach itself
instead of requiring direct interaction with the planet. The moon
should reserve the first bone for this purpose, and then every time it
starts up, it should send [%helm-moon-breach ~moon-name] to hood on the
planet.
This undoes some of the code-splitting done previously as it didn't
affect performance enough, and was actively hurting it in some ways.
Instead this moves the subscription initiation higher and adds scries
for critical data. This also shuffles the calls in App's useEffect so
that they are more colocated with relevant concerns.
Drops unnecessary logs for subscribers, to reduce memory usage. In local
testing, this incurred a 20% improvement in graph-store memory usage.
Note that publishers still retain the entire history, for backlog and
resubscribe purposes. Subscribers still retain a handful of updates so
that they can resubscribe upon kick correctly.