Repos need not carry a `xyz.radicle.project` payload; the default
branch can come from `xyz.radicle.crefs` alone. Such repos got no
counts and no default branch, and failed schema validation in
explorer, which broke the parse of a whole listing.
httpd:
- Add top-level `cobs` with issue, patch and bucketed release counts
- Add top-level `defaultBranch`, qualified like the crefs payload
- Omit a count the node cannot determine instead of reporting zero
- Drop `head`: the tip is `refs[defaultBranch]`
- Keep counts in the project payload for older clients until a
major release
- Keep the project payload when a COB read fails
- Keep `meta.releases` a single count: delegate + other
- Log and skip canonical ref rules and refs that fail to read,
so one bad ref doesn't drop the default branch tip
explorer:
- Model `cobs` and `defaultBranch`, adapting older nodes to one shape
- Resolve the default branch from the crefs HEAD on older nodes
- Collect the shims for older httpd in http-client/lib/compat.ts,
each naming the httpd release that the client can drop it with
- Add `defaultBranchTip`, replacing `head`, with a fallback to the
legacy `meta.head`
- Make the project payload and its legacy meta optional
- Fall back to the RID for the repo name, and show a placeholder
for a missing name in repo cards and the header
- Hide a counter instead of reading a missing count as zero
- Fall back to a full-page check for "More" without counts
- Add a `repo.sourceUnavailable` route for repos without a
default branch or tip
- Browse explicit revisions and offer the branch selector without
a default branch
- List these repos in repo grids and on the landing page
- Say the node is older or built without releases
- Scope release pages in the client, so views never call the shims
- Read OG worker repos through the same compat shims
- Share the repo name and default branch helpers with the OG worker
CI:
- Add check:open-graph, a wrangler deploy dry run
- Run it in GitHub CI, Buildkite and check:ci
- Install explorer's dependencies first: the worker
resolves compat.ts imports, such as zod, from there
Tests:
- Test that a build without releases omits the count
- Test that one failing rule keeps the others
- Test the repo shape across httpd versions and the release shims
- Test `hasMorePages` and `repoName`
- Test repos without a project payload end to end
- Upgrade radicle-artifact to 0.23
- Use radicle-artifact Filters, Trust and Scope for releases
- Count only releases a user can browse: delegate + other
- Count releases only for a single repo, not in repo lists
- Add the scope=trusted|untrusted query
- Keep allAuthors for older clients until a major release
- Replace the All filter with Delegates and Others in the UI
- Open lists and releases on Delegates, also when empty
- Show the Others filter whenever it has content
- Name the scope in the empty artifacts message
- Filter by creator on older nodes, which ignore scope
- Page releases on the raw response length
- Warn on a release by a non-delegate
- Warn on a delegate's release while it shows others' artifacts
- Count only delegate attestations in a badge
- Warn about browser links added by non-delegates
- Say browser downloads are not checked against the CID
- Move the scope and warning logic to `src/lib/releases.ts`
- Test artifact scopes, scope routes, opening on Delegates and the
warnings
- Bump heartwood-release to 1.10.3, as desktop uses
- Spread defaultConfig into the peer config instead of nesting it
- Clone from the known seed, as 1.10 no longer waits for one
- Match the full agent version on the node page
- Add ADR 0001: one SemVer version for httpd, explorer
supports every release from a minimum version, a 3-month
guideline to drop a replaced major, expand and contract,
and one API path at /api
- Treat 0.y as the major before 1.0
- Track API changes in docs/api-changes.md
- List API changes in httpd release notes
- Take the version from the release tag, not Cargo.toml
- Pass the version to the changelog script
- Link the compatibility rules from the README
- Point to the compat module from the backwards compatibility rules
- Stop skipping release tests without the local httpd build:
pre-built httpd 0.30.0 serves the release API
- Mock a repo without a release count to test older nodes
- Remove the unused releaseApiOnlyLocal
A rescan can take tens of minutes on permissive seeds and blocked the
event loop meanwhile. radicle-node drops a subscriber once 8192 events
are queued, so every rescan disconnected us and the events emitted
until the resubscribe were lost.
Rescans and batch reindexes now run alongside the event loop, and the
subscription reconnects on its own task. A repo that an event adds
during a rescan only gets back into the seeded cache when its batch
runs, so it can be missing for up to RADICLE_SEARCH_BATCH_SECS.
Co-authored-by: Daniel Norman <daniel@norman.life>
Extracts the avatar components and the style tokens into shared/ui, which
both apps consume as a workspace package, to try out ADR 2. Nix and the
Docker setups are not updated yet.
Tag names were compared as plain strings, so 0.10.0 sorted between
0.1.0 and 0.2.0. Canonical tags were ordered by tagger time, which
interleaved the httpd and desktop releases in monorepos. Tags now stay
together per namespace, newest namespace first, sorted by version.
Co-authored-by: Rūdolfs Ošiņš <rudolfs@osins.org>
Render the old blob when previewing a deleted file, including binary
images, which showed only a "Binary file" placeholder. Hide the "View
file at this commit" link for deleted files, since the file does not
exist at that revision.
Collapse the node description to three lines with a Show more toggle
when it overflows, and let the sidebar scroll on wide screens so the
node details below it stay reachable.
- Format all files Prettier supports
- Run `prettier .` in format and check, so both cover the same files
- Check Markdown, which only format covered before
- Replace stale ignore entries with `crates`
The sanitizer allowlist added in 4c31a8134 strips all of KaTeX's markup,
leaving only the flat text of each formula. We now typeset math after
sanitizing instead of loosening the allowlist for spans and styles.
rustls-webpki 0.103.16 and webpki-roots 1.0.10 are the first releases
with the fixes for RUSTSEC-2026-0382 and RUSTSEC-2026-0381, but are
still in the cooldown. We reviewed their diffs against upstream and
allow them until they're old enough.
mermaid 11 pins katex ^0.16, which is affected by GHSA-238p-pmpm-9mq7.
Like desktop, we now depend on katex directly and override mermaid's
copy, instead of jumping to mermaid 12.
Also takes vitest 4.1.12 a few hours before it clears the cooldown.
Makes explorer and desktop sibling projects, as proposed in ADR 1.
This commit only moves files; paths in CI, scripts and docs are fixed
in the following commits.