Previously, up-arrowing into (or otherwise retrieving) a command from history
that automatically runs on-input would directly run the command again,
preventing the user from up-arrowing past the auto-run command into further
history.
With this change, shoe detects discontinuous inputs (sole's `%set` edit), and
refuses to auto-run the parsed command in those cases.
The OTA deployment of urbit-os-v1.0.50 unintentionally wiped the indices
during the state migration. This caused widespread permissions issues,
as agents were unable to tell which group is associated with what channel.
Fortunately, the indices are a simple transform of the associations noun,
which was kept intact. This commit introduces a state migration to rebuild
the indices, in order to restore connectivity on the network.
* origin/release/link: (72 commits)
graph: handle already joined case
graph: subscribe to keys globally
leap: fix react-routing to links
interface: fixing syntax error in metadata settings
interface: last tweaks
leap: refer to module when indexing graph data
link-store: fix migration bugs
links: fix s3 detection
links: all inputs use gray2
links: link-item retains hostname detection
links: pass remoteContentPolicy to pending comment
link-listen-hook: silently discard %behn %wake
link: iterate over OrderedMap correctly
interface: added oembeds and drag and drop back
interface: ported in Liam's graph-update reducer and threaded through some display parameters into LinkItem
apps: fix issues with mark and remove unnecessary comments
interface: fix tab bar to display and link properly
graph-view: en-path resource for md-hook
push-hook: Proxy local pokes and fix kick path
interface: removed unused api and store files
...
Signed-off-by: Matilde Park <matilde@tlon.io>
This was originally introduced by me in #1814 to address #1811. Eyre was not
canceling heartbeat timers on all relevant events making it easy to end
up with an infinite behn loop. This check allowed ships that entered an infinite
loop to recover, as per my comment at
https://github.com/urbit/urbit/pull/1814#discussion_r333477482. Otherwise it's
not necessary.
If the underlying app implements a /x/dbug/state endpoint in +on-peek,
dbug will now use that for %state evaluation. Falls back to the vase
provided by +on-save if the peek fails.
This allows apps and (perhaps more usefully) wrapper agents to provide
customized vases to /lib/dbug.
Updates /lib/shoe to make use of this, properly prepending the wrapped
app's vase to shoe's own, instead of including it as-is.
If both sides changed a file in the same way, %mate used the version in
the mergebase, which is incorrect. This changes it to use the version
in the destination desk.
An example of this issue:
> +cat %/test/hoon
/~zod/home/~2020.9.3..21.41.24..61ed/test/hoon
first
> |merge %scratch our %home
>=
merged with strategy %fine
+ /~zod/scratch/2/test/hoon
> +cat /=scratch=/test
/~zod/scratch/~2020.9.3..21.41.32..408c/test/hoon
first
> *%/test/hoon 'second'
: /~zod/home/3/test/hoon
> *%%%/scratch=/test/hoon 'second'
: /~zod/scratch/3/test/hoon
> |merge %scratch our %home
>=
%fine merge failed, trying %meet
%meet merge failed, trying %mate
merged with strategy %mate
: /~zod/scratch/4/test/hoon
> +cat /=scratch=/test
/~zod/scratch/~2020.9.3..21.42.25..9e8b/test/hoon
first
For rendering a data table or just a single table row respectively.
Table data is a list of header names, a list of width restrictions, and a list
of rows, defined as lists of dimes.
Row contents are rendered as per the aura in the dime. This also determines
their alignment (left/right), and how they break to fit smaller-width columns.
%row was added because %table necessitated implementing it. Whether it's a good
fit for the shoe "protocol" remains to be seen.
Barebones 2-way diff thread. Further development should include:
- recognize at least %txt and %hoon diff types as (urge:clay cord) and
print them prettily
- check if they're directories and recurse through them, noting files
that exist in one or the other and diffing ones that exist in both
- support 3-way diffs. Since we know the desks they're on, we can find
a mergebase (see how +trouble gets the base-hash in #3378) and do a
3-way diff.
- extend the above to support all the useful diffs, including
diff3(a,b), diff2(mergebase(a,b),a) and any other useful ones.
Ordinarily, eyre cleans up the relevant gall subscriptions whenever a
channel disappears. In yet unresolved erroneous behavior though, it may
leave a gall subscription open, despite wiping the channel from state.
Attempting to pass the response onto the deleted channel anyway results
in an %eyre-no-channel error later in the event. The volume of these
errors can degrade the user experience, as per #3196.
To resolve the annoyance (but not the underlying issue) we detect the
"subscription has no channel" case, and issue a %leave. Doing so
requires additional information in the wire, so we add that in,
refactoring the relevant wire building along the way.
Note that due to the wire requirements, this cannot resolve existing
cases. For that, we depend on bc929ba6d.
As part of the solution to #3196, we need to clean up any gall
subscriptions that eyre didn't properly clean up.
Since detecting that is hard, we opt to just wipe _all_ eyre-originating
subscriptions from gall. We inspect the duct, which isn't good, but it's
only just this once.
* origin/la/file-server-fix:
file-server: fix %file-server by adding SPA flag and threading is-file through request
Signed-off-by: Matilde Park <matilde.park@sunshinegardens.org>
The main thing here is that we aggressively check whether we're in
ancestry of another mergebase candidate. This means we don't have to do
a 2nd pass to eliminate redundant candidates.
Change the definition of base-hash to be the mergebase of %home with the
OTA source. This means it's the most recent successfully-applied
update, which is usually the most important information.
Add sour-hash, which is the hash of the most recently *downloaded*
update, regardless of whether it applied successfuly (ie the old
base-hash).
Add a summary of the various hashes at the top of gen/trouble.
Only no-op if the incoming commit's parent is the old head of the desk.
Also move the printing near the end so we can know exactly if anything
changed.