Rūdolfs Ošiņš
2c81138871
Share verdict labels with the draft review bar
2026-10-01 18:20:25 +02:00
Rūdolfs Ošiņš
af5ed76ac4
Reuse the file status label in the diff header
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš
cbb21e7513
Move diff annotation helpers into lib
...
The snippet and the code thread had their own copies.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš
7d2081a8aa
Move ref sorting out of the peer selector
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš
520ffe3d19
Name embeds dropped from Windows paths correctly
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš
7a6c88f847
Share one embed upload path in the textarea
...
Drag-drop, attach and paste each had their own copy. Every upload now
shows its own placeholder instead of overwriting the previous one.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš
bda26136c9
Share repo ordering between the sidebar and the inbox
...
Both toggled pins and ordered pinned repos with their own copies.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš
ceeab4e2c6
Share which commits each revision adds
...
Patch and Revision each computed it with their own copy of the loop.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš
9ff5529c9f
Move revision description helpers into lib
...
The commit-list check was written twice, and revision titles and the
commit group collapse rule were untested inside components.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš
c7387ac540
Keep asterisks between spaces in comment previews
...
"2 * 3 * 4" read as emphasis and lost its asterisks. Markdown doesn't
treat a marker with a space just inside it as emphasis.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš
f6a23e0b0f
Move comment preview text into lib
...
The regex-heavy markdown stripping was untested in the component.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš
a15a20393c
Move commit day grouping into lib
...
Today/Yesterday labels and grouping by day had date edge cases that
nothing tested.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš
f267d3d16f
Move comment and commit stepping into lib
...
The order the stepper walks comments in and its wraparound index math
were untested, and ReviewPage ordered its file groups with its own copy.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš
6e1176ffcf
Move discussion timeline grouping into lib
...
The rules for grouping a person's consecutive activity and when to repeat
their name lived in an untested loop in the component.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš
ca3b059a62
Move CI job grouping into lib
...
The status chip's grouping, dedupe and summary rules were untested inside
the component, and a wrong CI status is very visible.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš
974235b1fe
Share comment thread building between patch views
...
Revision and ReviewPage built threads and checked who may resolve a
comment with their own near-identical copies.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš
a43031ad70
Show assignee changes correctly in timelines
...
Assignees were compared by object identity, and each action carries its
own copies, so every change listed everyone as both removed and added.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš
5887220ec7
Move issue and patch timeline building into lib
...
Both views built their activity feed inline, with the shared part written
twice. It now lives in tested modules.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš
89131f3b3a
Keep every review comment in inbox summaries
...
Notification actions were deduplicated by operation and type, so the
several code comments of one published review collapsed into one.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš
5b3bc10a06
Check bare RIDs against already seeded repos
...
The seed form accepts a RID without the rad: prefix but compared it as
typed against lists that have the prefix, so duplicates got through.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš
56e495ba8d
Add unit tests for patch review logic and draft storage
...
Code review is the app's core workflow and had almost no coverage. A
mutation run checked that each test fails when the logic it covers breaks.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš
6df7827bb9
Don't break the inbox on invalid stored pins
...
The pinned and hidden inbox repos were read with a bare JSON.parse, so
corrupted storage threw while the inbox loaded.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš
331a3d5432
Fetch a repo right after seeding it
...
Seeding only set the policy, so a repo stayed unreplicated until a
seed happened to announce it again. Fetch from connected seeds in the
background, like `rad seed` does.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš
c4dcb61675
Stop the timer when resetting a dynamic interval
...
Resetting only forgot the key, so the pending timeout still fired and
rescheduled itself: the sidebar kept reloading repos every 5 seconds
after nothing was left to replicate, and after it unmounted.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš
be0c2a424b
Don't throw on empty or invalid frontmatter
...
Since js-yaml 5 an empty or comment-only block throws instead of returning
undefined, as does invalid YAML. Markdown renders the content from the
same parse, so one such block made the whole document fail to render.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš
5d8bc00f13
Show alias errors when creating an identity
...
The errors weren't reactive state, so the hints never rendered.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš
a178aaade2
Only prepare code blocks inside each Markdown block
...
Every Markdown instance searched the whole page, so code blocks got an
extra wrapper and copy button for each other Markdown block on the page.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš
17e7a29cb9
Treat RIDs with non-base58 characters as invalid
...
parseRepositoryId threw instead of returning undefined, so the seed form
crashed on a typo instead of saying the RID is invalid.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš
4a3cdd9849
Upload e2e artifacts from CI runs
...
A flaky test that passed on retry left nothing to debug with. The
fixture already drops passing tests' folders, so this stays small.
2026-10-01 18:16:29 +02:00
Rūdolfs Ošiņš
dababb90cf
Make e2e output easier to read
...
Browser logs are indented and dimmed like in explorer, and npm's
per-script notices and Vite's bundle size warning no longer bury the
results.
2026-10-01 18:16:29 +02:00
Rūdolfs Ošiņš
7728c9272e
Start e2e specs at a route that exists
...
/repos is no longer a route, so specs fell back to the inbox and logged a
routing error. The inbox opens the first-launch guide, so tests now start
with it dismissed. The router now logs the URL it couldn't resolve
instead of just "URL".
2026-10-01 18:16:29 +02:00
Rūdolfs Ošiņš
b0fcde4d4b
Drop redundant steps from the checks
...
svelte-check already type-checks what tsc did, clippy already runs cargo
check, and radicle-tauri has no doc tests. Linting all targets also
covers test code, which cargo test builds but never lints.
2026-10-01 18:16:29 +02:00
Rūdolfs Ošiņš
1d50ed5c95
Add a script that runs the CI checks locally
...
Runs the same steps as the workflows and logs each step's output, exit
code and duration, so a failed run can be read back without the terminal.
The output ends with a summary of each step.
2026-10-01 18:16:29 +02:00
Rūdolfs Ošiņš
fa2c82b00b
Document the testing strategy and e2e conventions
...
An ADR records how we decide what to test and where, and a checklist lets
people and agents check a change against it.
2026-10-01 18:16:29 +02:00
Rūdolfs Ošiņš
0172253b4d
Put invoke timing logs behind VITE_LOG_INVOKE_TIMINGS
...
They flooded the dev console and test logs; perf work can turn them on.
2026-10-01 18:16:29 +02:00
Rūdolfs Ošiņš
c01f1a9a8a
Run e2e tests against a production build
...
The dev server's unbundled modules made each page load take seconds, which
is most of the time a test spends; E2E_DEV_SERVER=1 keeps the dev server.
Each run writes a JSON report, and CI uses two workers now that the
dropped keep-alive connections behind the flakiness are fixed.
2026-10-01 18:16:29 +02:00
Rūdolfs Ošiņš
086afbb5dc
Give each e2e test its own reliable peer
...
The page always talked to the shared palm backend, so tests couldn't set
up peers of their own. Peers now have no passphrase by default, so tests
don't need an ssh-agent and test keys stay out of the developer's agent.
Fixtures wait for replication instead of relying on gossip timing, and a
request cancelled by a reload no longer counts as a page error.
2026-10-01 18:16:29 +02:00
Rūdolfs Ošiņš
f512682ec6
Build test-http-api once per e2e run
...
Each peer ran it through cargo run, which could take minutes to start.
2026-10-01 18:16:29 +02:00
Rūdolfs Ošiņš
2bfa19f1af
Run e2e tests against heartwood 1.10.3
...
Matches the radicle 0.25 crate the app links against.
2026-10-01 18:16:29 +02:00
Rūdolfs Ošiņš
851fbc54be
Read request bodies before test-http-api handlers run
...
Hyper closes a keep-alive connection when a handler leaves the body unread,
and browsers don't retry the next POST on it, which made e2e tests flaky.
2026-10-01 18:16:29 +02:00
Rūdolfs Ošiņš
b0a519d1c5
Mirror every Tauri command in test-http-api
...
Several commands had no route or returned stubs, so e2e tests silently got
null or empty data. A missing route now fails loudly, the profile loads on
first use so onboarding works, and node status is polled over HTTP. A
parity test keeps the routes from drifting from the Tauri handlers again;
it also caught revisions_by_patch being registered twice.
2026-10-01 18:16:29 +02:00
Rūdolfs Ošiņš
aed733ade6
Move command logic from Tauri handlers into radicle-types
...
Auth, inbox, CLI detection and cache rebuilds lived only in the Tauri
commands, so test-http-api couldn't share them and stubbed them instead.
2026-10-01 10:20:19 +02:00
Rūdolfs Ošiņš
a99631e611
Add unit tests for the router, utils and caches
...
Covers the pure modules the rest of the app builds on, starting with the cheapest layer of the testing strategy.
2026-10-01 10:20:19 +02:00
Rūdolfs Ošiņš
6b1f0e601c
Handle failed CI job lookups
2026-09-29 17:28:46 +02:00
Rūdolfs Ošiņš
73bea06ee1
Serialize writes in the test HTTP API
...
Parallel e2e tests hit the repo's sigrefs lock when creating COBs
concurrently, which the Tauri avoids by running these commands on
the main thread serially.
2026-09-29 17:28:34 +02:00
Rūdolfs Ošiņš
4e6137db5b
Match test browser platform to the host
2026-09-29 17:24:48 +02:00
Rūdolfs Ošiņš
4d45516970
Allow creating issues with only a subject
2026-09-29 16:57:11 +02:00
Brandon Oxendine
ca80f13631
Disable Back and Forward when they lead nowhere
...
Fixes f18b808b76f9528e406f53f70221e1a39b4664c8
2026-09-29 16:34:31 +02:00
Brandon Oxendine
407a8d0c6e
Add markdown shortcuts to textareas
...
Closes: 7bdaa5ad647da241830ff463f03f730dce3bba67
2026-09-29 15:24:55 +02:00
Rūdolfs Ošiņš
3c13166776
Centralise keyboard shortcuts in a registry
...
A single catalog in lib/shortcuts defines every shortcut's keys and
description. Components bind behaviour to it by id for as long as they
are mounted, and one listener applies the shared rules for text fields,
modals, priority and cycling. The shortcuts modal lists the catalog.
2026-09-25 13:02:38 +02:00