Bind each cached loader to a `{@const}` so the `{#await}` blocks keep
the same promise across patch reloads instead of re-running and
flashing their pending branch.
Align with radicle explorer and other places where we render the commit
time like the single commit view and commit list
Fixes issue dfa74e83c4f8d0ca903c3f81d278382daad1488a
The patch page already sets the pattern: one filled primary action and
naked buttons for everything else. The issue page and the repo header
used the grey ghost fill instead, so their secondary actions competed
with the primary one.
A repository can sit in storage without being seeded, which `rad ls`
hides and `rad ls --all` shows as "local". A new Settings preference
picks the `Show` passed to `list_repos_summary`, defaulting to seeded.
Unseeding only deletes the policy row, so a node defaulting to `allow`
keeps seeding: `unseed` now reports `DefaultPolicySeeds` instead of
claiming success, and both callers refresh in a `finally` so a failed
`clean` no longer leaves a stale row behind.
scrollToFilesTop scrolled the port down to hide the patch chrome, with a
smooth animation. Clicking a commit while already at the top of the diff
pulled the header off screen for no reason.
Co-authored-by: Rūdolfs Ošiņš <rudolfs@osins.org>
A type change, a symlink replaced by a regular file, reaches the frontend
as two entries for one path. CodeView throws on the duplicate id, the
parse promise rejects, and the Changes tab is left with no files at all:
on heartwood's patch 327be3c one such file emptied all 84.
Co-authored-by: Rūdolfs Ošiņš <rudolfs@osins.org>
Show the email alongside each name. Co-authors are read from the commit
message trailers and listed as their own section. The trigger avatars
now stack and fan apart on hover, and cover everyone credited on the
commit rather than just the author and committer. Timestamps now show
both committed and authored times in the tooltip.
A desktop launch inherits a `PATH` that holds none of the user's own
install locations, so `Command::new("git")` finds nothing usable, or on
macOS finds Apple's shim and only prompts to install the developer
tools.
Resolve git to an absolute path instead, searching `PATH` first and the
usual install locations after, and cache the result for the process.
`rad` is looked for the same way, which also fixes the CLI check for a
Homebrew or Nix install.
`rad unseed` only drops the seeding policy and leaves the repository in
storage, so while `list_repos_summary` listed everything on disk an
unseeded repository never left the sidebar and unseeding looked like it
had done nothing. That call now filters by seeding policy.
The confirmation dialog also offers to delete the files, running the
equivalent of `rad clean` after the unseed.
Co-authored-by: Rūdolfs Ošiņš <rudolfs@osins.org>
The description collapses past 300px behind a show more toggle, which
also applied to the editor that replaces it. Half of what was being
written could be cut off, with a control offering to hide more of it.
Editing state moves from the revision component to a bindable prop, so
the patch view that owns the collapse can see it.
`list_commits` walked back from the revision head and stopped at the
first commit equal to `base`. A merge commit reaches `base` through one
of its parents, so the walk truncated there and dropped everything the
other parent contributed: a revision whose head merges the target branch
in looked like a single-commit revision.
Add it to the patch list byline and the patch page metadata, shown only
when it differs from the default branch. The merge activity item now
names the real target instead of always naming the default branch.
Co-Authored-By: Brandon Oxendine <brandon.oxendine@gmail.com>
Serve `targetBranch` so the UI can tell where a patch is headed. Editing
a title no longer sends its own target, which reset branch-targeted
patches to the default branch.
The reaction trigger sits in a block wrapper, so its icon formed a line
box and took the leading with it, leaving the button taller than the
edit one beside it. It also carried its own padding, colour and hover
fill, on top of the ones the action around it already provides.
The action is now a fixed square with its content centred, so its size
no longer depends on the shape of whatever it wraps.
Handle Cmd+, (Ctrl+, on Linux/Windows) in the global keydown handler
to toggle the Settings modal, matching the existing font-size and
Escape shortcuts.
The inline table added in 935b023 spans multiple lines, which TOML 1.0
forbids. Rust 1.97.1 accepts it, but cargo-tauri's hook shells out to
the cargo from nixpkgs (1.91.1), which rejects it and fails the Nix
build.
935b023 patched radicle-job to a git source, so Cargo.lock now carries
a git+https entry. importCargoLock cannot vendor a git dependency
without an explicit hash.
- Add a sticky row over both columns, its left half the comment
column's own header
- Move collapse-all and the diff settings into it, out of the topbar
- Switch the column between the review's comments and a file tree
- Toggle between every file in the revision and only the commented ones
- Put the column away entirely, giving the diff the full width
- Keep a pixel under the bar so the first file keeps its top edge
`max-height: 100%` resolved against an auto-height box, so it was
dropped and the commit list and comment column grew past the port
instead of scrolling inside it.
The comment records only that it is resolved, so the name comes from the
resolve operation in the patch's log. Adds the action to timeline
threads too, and shapes the badge like a review's verdict.
The tree-sitter highlighter goes with it: the hunk types name its
`Paint` spans and it implements `ToPretty` for them, so neither side
can be removed on its own.
`revision_by_patch_and_id` and `review_by_patch_and_revision_and_id`
were registered as Tauri commands but never invoked: the patch view
resolves a revision or review from the revisions it already holds. Drop
the commands, their registrations and the `revision_by_id` / `review_by_id`
port methods, which had no other callers.
`fileDiffName` in `diffText` has had no callers since it was added.