Files
radicle-explorer/explorer/package.json
T
Daniel Norman d8f363ca99 Replace API version checks with feature detection
httpd:
- Serve the API at /api, not only under /v1
- Keep serving it at /api/v1, without a redirect, until the first
  major release after explorer and the Open Graph worker switch
  to /api
- Remove apiVersion: released explorers do not read it
- Add `httpd.releases` to `/info`, set by the artifacts feature

explorer:
- Remove the API version check, its config and the unused
  compare-versions dependency
- Keep the node version in a plain parse error message
- Add `minimumSupportedVersion`, set to 0.28.0, and warn on nodes
  whose major is older, treating 0.y as the major before 1.0
- Do not warn on builds without a release number
- Show a warning on the node page of an outdated node
- Mark an outdated node in the seed picker on every page
- Name the node version and the floor in parse errors
- Drop the `/node` fallback for httpd without `/info`, which
  predates the floor
- Check the status, not `ResponseError`, so the Open Graph worker
  can import compat without the fetcher
- Name the httpd release each shim serves, not a date
- Drop the mime shim for httpd 0.18.1 and the unused `lib/file.ts`
- Read the node from `/info` in repo views
- Pass the node and its features to repo views as one `node` param
- Show the releases tab and pages when the node supports releases,
  and the counter only when there is a count
- Read a release count as release support on older httpd
- Test the flag and the fallback

docs:
- Restructure docs/api-changes.md: the supported versions, one
  table of removals, fixed fields per change, and a link to ADR
  0001 for the rules
- Say in ADR 0001 that each compat comment names what the other
  side does
- Say in ADR 0001 when a capability needs a flag in /info

tests:
- Run e2e tests on httpd 0.30.0, above the floor, instead of 0.26.0
- Run the release tests on it too, so they cover the compat shims
- Skip only those that need release counts per scope on it
- Test a node without release support through a mocked `/info`
  flag, instead of an httpd that predates the floor
2026-10-29 18:32:03 +01:00

95 lines
3.3 KiB
JSON

{
"name": "radicle-explorer",
"private": true,
"version": "1.0.0",
"scripts": {
"start": "vite",
"start:httpd": "cargo run -p radicle-httpd --release -- --listen 127.0.0.1:8080",
"serve": "vite preview",
"build": "vite build",
"check": "scripts/check",
"check:ci": "scripts/check-ci",
"check:open-graph": "cd workers/open-graph && npx wrangler deploy --dry-run",
"check:radicle-httpd": "cargo clippy --all --tests && cargo fmt --all --check",
"format": "npx prettier . --write",
"test:unit": "TZ='UTC' vitest run",
"test:e2e": "NODE_CONFIG_ENV='test' TZ='UTC' playwright test",
"test:e2e:local": "scripts/compile-local-httpd && USE_LOCAL_HTTPD=true NODE_CONFIG_ENV='test' TZ='UTC' playwright test",
"test:http-client:unit": "NODE_CONFIG_ENV='test' TZ='UTC' vitest run --config http-client/vite.config.ts --reporter verbose",
"test:http-client:unit:local": "scripts/compile-local-httpd && USE_LOCAL_HTTPD=true NODE_CONFIG_ENV='test' TZ='UTC' vitest run --config http-client/vite.config.ts --reporter verbose",
"test:radicle-httpd": "cargo test --all-features",
"deploy": "rimraf build && npm clean-install && NODE_CONFIG_ENV='radicle.network' npm run build && scripts/inject-plausible && npx wrangler deploy",
"deploy:open-graph": "cd workers/open-graph && npx wrangler deploy",
"start:open-graph": "cd workers/open-graph && npx wrangler dev"
},
"type": "module",
"engines": {
"node": ">=24"
},
"devDependencies": {
"@eslint/js": "^10.0.1",
"@playwright/test": "^1.61.1",
"@sveltejs/vite-plugin-svelte": "^7.2.0",
"@tsconfig/svelte": "^5.0.8",
"@types/js-yaml": "^4.0.9",
"@types/katex": "^0.16.8",
"@types/linkify-it": "^5.0.0",
"@types/lodash": "^4.17.24",
"@types/md5": "^2.3.6",
"@types/node": "^24",
"@types/wait-on": "^5.3.4",
"@typescript-eslint/parser": "^8.64.0",
"chalk": "^5.6.2",
"config": "^4.4.2",
"eslint": "^10.7.0",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-svelte": "^3.20.0",
"execa": "^9.6.1",
"get-port": "^7.2.0",
"globals": "^17.7.0",
"jsdom": "^29.1.1",
"katex": "^0.18.9",
"mdsvex": "^0.12.7",
"prettier": "^3.9.5",
"prettier-plugin-svelte": "^4.1.1",
"rehype-slug": "^6.0.0",
"remark-unwrap-images": "^4.0.1",
"rimraf": "^6.1.3",
"shiki": "^4.3.1",
"svelte-check": "^4.7.2",
"svelte-eslint-parser": "^1.8.0",
"typescript": "^6.0.3",
"typescript-eslint": "^8.64.0",
"vite": "^8.1.4",
"vitest": "^4.1.12",
"wait-on": "^9.0.10"
},
"dependencies": {
"@radicle-gui/ui": "0.0.0",
"@twemoji/svg": "^15.0.0",
"@wooorm/starry-night": "^3.10.0",
"async-mutex": "^0.5.0",
"baconjs": "^3.0.23",
"bs58": "^6.0.0",
"buffer": "^6.0.3",
"dompurify": "^3.4.12",
"fuzzysort": "^3.1.0",
"hast-util-to-dom": "^4.0.1",
"hast-util-to-html": "^9.0.5",
"js-yaml": "^5.2.1",
"linkify-it": "^6.0.0",
"lodash": "^4.18.1",
"lru-cache": "^11.5.2",
"marked": "^18.0.6",
"marked-emoji": "^2.0.3",
"marked-footnote": "^1.4.0",
"marked-katex-extension": "^5.1.10",
"marked-linkify-it": "^3.1.15",
"md5": "^2.3.0",
"mermaid": "^11.16.0",
"svelte": "^5.56.5",
"twemoji": "^14.0.2",
"zod": "^4.4.3"
}
}