Changes which were needed after the upgrade:
- Replace vite-plugin-virtual (vite 8 incompatible) with vite's
built-in `define` for the buildTimeConfig injection
- tsconfig: drop deprecated `baseUrl` (TS 5+ resolves `paths`
relative to tsconfig)
- Vitest 4: import `defineConfig` from `vitest/config` so `test`
is valid in vite configs
- Zod 4: rename `.errors` to `.issues`, make `ZodSchema` a
type-only import, drop the removed `SafeParseReturnType`
- Tighten/loosen generic casts in localStore to match stricter
zod 4 inference
- ESLint 9 `no-useless-assignment`: remove redundant initializers
and dead reassignments; disable the rule where Svelte's reactive
blocks confuse the analyser
- Svelte/eslint `prefer-svelte-reactivity`: disable for legacy
Svelte usages of URL / Set
- Misc naming-convention and prefer-const fixes
Playwright 1.52 hangs under Node 24 when loading test files that
transitively import modules with top-level await (tests/support/
support.ts). Node 24 enables require(esm) by default, and the old
CJS-based .ts transformer deadlocks on TLA.
Also update CLAUDE.md: playwright 1.59's --project flag is variadic
and greedily consumes trailing args, so the file path must come
before --project.
This also drops .tool-versions to keep a single source of truth for the
node version in .nvmrc. We also point the github actions to .nvmrc now.
I'm the only dev who's using asdf to manage my tooling and I decided to
just configure it to fall back to .nvmrc via `legacy_version_file =
yes`.
Our Cloudflare deployments via GitHub broke. We can run deployments
manually to app.radicle.xyz via:
npm run deploy
This also takes care of injecting the plausible.io script.
Instead of sending data to a third-party by default, users can run privacy
friendly local log analysis systems like GoatCounter.
After this commit, Radicle Explorer will not randomly connect to unexpected
hosts anymore.
We where using `sinon` in the `playwright` tests to simulate a different
time, which since `playwright@1.45.0` can be done with the Clock API
calling `page.clock.setFixedTime`.
And to test the mutex executor we can use the vitest utils spy function
`vi.fn()` instead of `sinon.spy()`
Since the legacy config is being deprecated at the end of 2024, we
should start moving to the eslint flat config.
I avoided the tseslint config helper function so we avoid wrapping
magic.
This seems to have triggered more checking since any checks in svelte
files have appeared and the $$Generic type that is being deprecated had
to be rewritten.
Also fixes some any types that weren't caught previously
The execa update allows us two simplify two things
1. Output collection in a log file with a prefix can be done through
`stdout` and `stderr` options of `execa`.
2. We don’t need to ensure that all subprocesses are killed when the
main process exits. `execa` takes care of this
We have a new apiVersion value in the config json that needs to be
changed for each breaking change on httpd so we can simulate a new
resource to the cache and get it cleared.
Also improves the ResponseParseError giving the user more information
on, if the node or the web client is outdated
When using axios, its dependency library follow-redirects
only clears authorization header during cross-domain redirect,
but allows the proxy-authentication header which contains credentials too.
Instead of relying on the `exit-hook` dependency, we should listen to
`exit`, `SIGINT`, `SIGTERM` and other exceptions, and kill all running
processes.
Updates transitive dependencies
Fixes zod vulnerability
> Zod version 3.22.2 allows an attacker to perform a denial of service while validating emails.
Signed-off-by: Sebastian Martinez <me@sebastinez.dev>
This fixes the issue with rendering code blocks without a blank line
between text and the start of a codeblock that starts with a `$`
Signed-off-by: Sebastian Martinez <me@sebastinez.dev>