mirror of
https://github.com/PR0M3TH3AN/VoxVera.git
synced 2026-10-27 09:40:40 +00:00
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]>
2.1 KiB
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.htmlis 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.jsfor flyer content defaults. - Use
NOSTR_UIinsite/nostr-client.jsfor 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.