Commit Graph
46 Commits
Author SHA1 Message Date
thePR0M3TH3ANandClaude Opus 4.8 98086a0ad4 Add bulletin board page listing recent flyers from the relays
A small screen-only link below the flyer preview (outside the printable
sheet, hidden in print) opens board.html: a spreadsheet-style list of the
most recent VoxVera flyers found on the default relays.

- Columns: title, link (the poster URL shown as "link"), posting npub,
  language, and posted date; every column is sortable (default date
  descending). Replaceable events are de-duplicated per author+d identifier,
  keeping the latest.
- board.js is independent of nostr-client.js (which exports nothing): its UI
  strings live in BOARD_UI for all 14 languages, and it reuses the vendored
  nostr-tools and locales.js (language names + RTL direction).
- The board has its own language selector that reads/writes the same
  voxvera_nostr_lang localStorage key as the main client, so the choice
  carries across pages; switching it re-localizes the chrome, headers,
  language labels, and date formatting and flips RTL.
- Untrusted relay content is escaped, and link URLs are rejected unless
  http(s) so javascript:/data: never render as a link.

Docs updated (README, spec, AGENTS). Playwright: add tests for the
out-of-sheet print-hidden link, the localized sortable columns, and the
board language selector (incl. RTL + persistence). 72 tests pass across
Chromium, Firefox, WebKit, and Android/iOS mobile emulations.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-06-09 16:28:32 -04:00
thePR0M3TH3ANandClaude Opus 4.8 127f9c3134 Locale-aware defaults: browser language list + US Letter/A4 paper size
Language inference:
- Walk navigator.languages (the full ordered preference list), not just
  navigator.language, and pick the first base language we support. A user who
  prefers e.g. Dutch then German now gets German instead of the English
  fallback. De-duplicates the default-language resolution into setDefaultText.

Paper size (US Letter + A4):
- Add A4 (210x297mm) alongside US Letter (8.5x11in). Sheet dimensions move to
  CSS custom properties (--sheet-w/--sheet-h) toggled by a paper-letter/paper-a4
  class on <html>; the tear-off column and QR codes stay fixed physical sizes
  and the content column flexes.
- @page size is injected by JS (id voxvera-page-size) since @page cannot read
  CSS variables across engines; the print block keeps margin:0 and a Letter
  default for the pre-JS state.
- Default paper is chosen from the browser locale's region subtag
  (en-US -> Letter, en-GB/de-DE -> A4) — "by location" without geolocation,
  falling back to Letter when no region is present. A manual override selector
  (topbar + viewer controls) persists in localStorage and wins over the default.
- Paper size is a local print/view preference and is never written into the
  Nostr event, so a flyer reprints on either size unchanged.
- Add paper_size/paper_letter/paper_a4 labels for all 14 languages.

Docs + tests:
- Spec gains a "Print paper size" section; AGENTS.md records the
  not-in-payload invariant; README adds a feature bullet; the field-limits
  cheat sheet gains Letter/A4 columns (re-measured per paper size).
- Playwright: add tests for navigator.languages inference, region-based paper
  default (A4 and Letter), and override persistence. 54 tests pass across
  Chromium, Firefox, WebKit, and Android/iOS mobile emulations.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-06-09 15:56:25 -04:00
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
thePR0M3TH3ANandClaude Opus 4.8 77bfef1bbe Serve client at site root; redirect legacy /nostr/
The /nostr/ path was a leftover from when the site also hosted a Tor
client. The app is Nostr-only now, so move the client to the site root
and shorten poster URLs to https://voxvera.org/#naddr1... (drops both
/nostr/ and the ?addr= query key, for a cleaner/smaller tear-off QR).

- Move site/nostr/{nostr-client.js,css,locales.js,vendor} to site/.
- site/index.html is now the client; site/nostr/index.html is a redirect
  stub that forwards /nostr/ to / while preserving the query string and
  #naddr fragment, so older poster URLs and printed QR codes still
  resolve.
- Carry the naddr in the URL fragment (#) instead of ?addr=; the viewer
  reads query, fragment, or the full URL, so old links keep working.
- Update README, AGENTS.md, and the spec to the new paths.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-06-09 10:49:36 -04:00
thePR0M3TH3ANandClaude Opus 4.8 aedb381dfb Improve flyer tear-offs, shorten poster URL, adaptive tracking
- Tear-off tabs: single hyperlinked statement (no printed URL), with
  "Share and reprint." on its own line; localize "Click to open this
  poster." across all 14 languages.
- Show the full event ID, bottom-anchored on each tab, split into two
  32-char lines at max readable monospace size.
- Shorten the poster URL by encoding the naddr with a single relay hint
  instead of the full relay list (~233 -> ~171 chars) for an easier-to-
  scan QR; still a standard naddr, older URLs resolve unchanged.
- Add per-script letter-spacing policy (ls-full/ls-cjk/ls-none) to fit
  more text per line where safe, and turn tracking off for Arabic,
  Persian, and Hindi (fixes broken cursive joins / combining marks).
- Move the "field too long" warning inline under the offending field
  instead of a single bottom status line.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-06-09 10:13:55 -04:00
thePR0M3TH3AN 1bda451604 Flag flyer language in Nostr events 2026-06-05 13:33:18 -04:00
thePR0M3TH3AN 5afda54a21 Keep content URL separate from poster URL 2026-06-05 10:18:03 -04:00
thePR0M3TH3AN 9aa90773e6 Remove legacy Tor app from main 2026-06-05 10:13:41 -04:00
thePR0M3TH3AN d415eb26a3 Add VoxVera Nostr static client 2026-06-04 20:15:50 -04:00
thePR0M3TH3AN 83e9e3d511 feat: harden docker runtime validation 2026-03-19 22:30:28 -04:00
thePR0M3TH3AN 004cce2a4f chore: release v0.3.11 2026-03-19 22:05:16 -04:00
thePR0M3TH3AN 4e49762a85 docs: add linux hosting validation runbook 2026-03-19 16:24:22 -04:00
thePR0M3TH3AN 6c4d6d6aef feat: formalize platform runtime contracts 2026-03-19 15:57:50 -04:00
thePR0M3TH3AN e6ff21c069 chore: release v0.3.6 2026-03-17 16:16:17 -04:00
thePR0M3TH3AN c5573075b6 chore: release v0.1.7 2026-03-14 17:10:03 -04:00
thePR0M3TH3AN 193345e616 feat: simplify viral distribution to source ZIP and add uninstall scripts 2026-03-14 16:48:55 -04:00
thePR0M3TH3AN 883823f5bc docs: synchronize localized documentation with updated binary names and download links 2026-03-13 22:44:44 -04:00
thePR0M3TH3AN 4d2ecb63d1 build: rename standalone binaries to system-specific names
- Updated release.yml to build voxvera-linux
- Updated build_appimage.sh to expect voxvera-linux
- Added OS detection to install.sh to fetch correct binary
- Updated README.md and usage docs with links to new binaries
2026-03-13 22:40:53 -04:00
thePR0M3TH3AN 31628dadbd docs: Add detailed technical roadmap for v0.2.0 2026-03-13 22:14:30 -04:00
thePR0M3TH3AN 67a79852f8 docs: Expand contributing and agent guides with dependency and layout mandates across 14 languages 2026-03-13 16:57:04 -04:00
thePR0M3TH3AN 4e0bc20f88 feat: Final global expansion to 14 languages including Portuguese, Chinese, Farsi, and Turkish 2026-03-13 16:27:53 -04:00
thePR0M3TH3AN 768b615317 docs: Fully localize usage manuals for all 10 supported languages 2026-03-13 16:24:23 -04:00
thePR0M3TH3AN 053ad79736 feat: Expand to 10 languages including French, Japanese, Hindi, and Swahili with full RTL/CJK/Devanagari support 2026-03-13 16:20:45 -04:00
thePR0M3TH3AN ece805a6d2 feat: Add support for Russian, Hebrew (RTL), and Arabic (RTL) with visual width validation 2026-03-13 16:17:54 -04:00
thePR0M3TH3AN 4e6508acf8 docs: Call out Markdown strike-through support in contributing and agent guides 2026-03-13 16:05:33 -04:00
thePR0M3TH3AN 2be169d137 docs: Update contributing and agent guides with landing site special handling 2026-03-13 15:59:03 -04:00
thePR0M3TH3AN 40f7efee38 chore: Final project cleanup, import optimization, and full doc tokenization 2026-03-13 15:44:30 -04:00
thePR0M3TH3AN af306f33fe docs: Add localized Contributing and AI Agent guides with Doc-Sync integration 2026-03-13 15:37:23 -04:00
thePR0M3TH3AN 12c4e00ece feat: Implement Doc-Sync engine for automated multi-language documentation 2026-03-13 15:34:48 -04:00
thePR0M3TH3AN 3968b679a6 docs: Clarify language switching shortcuts and supported codes 2026-03-13 15:31:48 -04:00
thePR0M3TH3AN 73928a6e4b docs: Update detailed usage and README with binaries, mirroring, and localized aliases 2026-03-13 15:30:06 -04:00
thePR0M3TH3AN 6eef0d7ae3 docs: Update usage and README to include server management and export/import tools 2026-03-13 15:00:02 -04:00
thePR0M3TH3AN a0368dbeed docs: Add developer plan for multi-language support and viral distribution 2026-03-13 14:13:49 -04:00
thePR0M3TH3AN e429a6e21b feat: Rename subdomain to folder_name, add Tor bootstrap progress, and auto-start server after init 2026-03-13 09:02:45 -04:00
thePR0M3TH3AN 444a60fb44 Simplify setup: auto Tor config, remove HTTPS hosting, add e2e tests and landing site
- Remove HTTPS hosting option; flyers are served exclusively over Tor
- Auto-detect Tor SOCKS/control ports (no manual env vars needed)
- Auto-set tear-off links to .onion address from serve; keep content
  link user-configurable
- Fix onionshare-cli flags (remove nonexistent --use-running-tor)
- Graceful QR generation when URLs not yet configured
- Add get_tor_ports() with port probing and sensible defaults
- Add e2e test suite including live Tor reachability test
- Add unit tests for port detection, partial URLs, backward compat
- Add site/ directory with VoxVera-generated landing page for voxvera.org
- Rewrite all documentation to reflect simplified workflow
- Add flyer config field reference with char limits and layout diagram
2026-03-13 07:06:35 -04:00
thePR0M3TH3AN 28429aa380 update 2026-03-13 06:12:00 -04:00
thePR0M3TH3AN db1b616c81 Fix OnionShare flags 2025-06-21 19:56:08 -04:00
thePR0M3TH3AN 79663b314d Add Tor placeholders instructions and fallback 2025-06-21 19:18:28 -04:00
thePR0M3TH3AN 998241d4dd docs: add OnionShare crash troubleshooting 2025-06-21 15:15:27 -04:00
thePR0M3TH3AN 745e485d78 docs: update installation instructions 2025-06-21 13:36:06 -04:00
thePR0M3TH3AN cdcbd5ff90 docs: explain download zip usage 2025-06-21 11:19:17 -04:00
thePR0M3TH3AN 931af2566d Add dependency check subcommand 2025-06-19 21:11:50 -04:00
thePR0M3TH3AN 3c7b8ab7da electron: show error when CLI missing 2025-06-19 17:23:54 -04:00
thePR0M3TH3AN dce003b5f7 Add docs and CI/CD workflows 2025-06-19 11:58:39 -04:00
thePR0M3TH3AN 592dc04abb Move flyer examples to templates and add template support 2025-06-19 11:47:48 -04:00
thePR0M3TH3AN ce6dc4ffdb Add Dockerfile and devcontainer 2025-06-19 11:35:23 -04:00