Files
VoxVera/AGENTS.md
T
thePR0M3TH3ANandClaude Opus 4.8 c5b2c20fc9 Add cross-browser e2e tests, field-limit cheat sheet, and docs
Verification:
- Add Playwright harness (e2e/) covering Chromium, Firefox, and WebKit plus
  Android/iOS mobile emulations. Smoke tests assert: default flyer renders
  with no JS/console errors, @media print hides app chrome and keeps the
  flyer, anonymous npub generation (WebCrypto), legacy /nostr/ redirect
  preserves query+hash, and event-lookup URLs show the loading state instead
  of the default flyer. All six projects pass.
- package.json/playwright.config.js wire up the projects and a managed static
  server; .gitignore excludes node_modules and Playwright output.

Docs:
- docs/flyer-field-limits.md: per-script character cheat sheet for each flyer
  field (single-line caps + multi-line guidance), measured by rendering each
  script at print size.
- README: add a Features section matching the shipping client and a
  cross-browser verification section; link the cheat sheet.
- AGENTS.md: document the e2e suite and the one-time WebKit Linux dep.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-06-09 15:29:49 -04:00

2.1 KiB

AI Agent Instructions For VoxVera

main is the Nostr static-client branch. The old Tor/OnionShare CLI application is preserved on legacy-tor.

Current Architecture

  • Active frontend: site/ (index.html, nostr-client.js, nostr-client.css, locales.js)
  • Static deployment root: site
  • Browser dependencies: vendored under site/vendor/
  • Legacy path: site/nostr/index.html is a redirect stub forwarding old /nostr/ poster URLs and QR codes to the root
  • Python helper package: voxvera/nostr/
  • Design plan: docs/nostr-static-client-spec.md

Guardrails

  • Do not reintroduce the legacy Tor CLI, OnionShare runtime, installer, Electron manager, bundled Tor binaries, generated old flyer site, or packaging workflows on main.
  • Keep the Nostr client static and host-agnostic.
  • Do not load frontend dependencies from CDNs.
  • Treat Nostr event content as untrusted. Escape rendered content and reject unsafe schema input.
  • Preserve print behavior: app controls must not print or shift the flyer sheet in print output.
  • Preserve the old flyer visual language unless the user explicitly asks for a redesign.

Localization

  • Use site/locales.js for flyer content defaults.
  • Use NOSTR_UI in site/nostr-client.js for editor/viewer controls and Nostr-specific labels.
  • Add translations for every supported language when adding user-facing strings.
  • Check right-to-left languages when touching layout.

Verification

Run:

node --check site/nostr-client.js
pytest -q

For visual or print changes, also run a local static server and inspect the site root (/) in a browser.

Cross-browser end-to-end tests live in e2e/ (Playwright; Chromium, Firefox, WebKit, plus mobile emulations). Run them after changes that touch rendering, print, key generation, URL/redirect handling, or the loading state:

npm install && npx playwright install
npm run test:e2e

WebKit/Safari on Linux needs sudo npx playwright install-deps once. See e2e/README.md. Test tooling is a dev dependency only — it must not pull runtime frontend dependencies from CDNs or otherwise weaken the static, host-agnostic client.