Commit graph

997 commits

Author SHA1 Message Date
SkateSpots
443c7122d8 fix: version and bypass app-shell worker during native boot 2026-10-30 00:31:40 +07:00
SkateSpots
7719be12d9 fix: clear stale native app-shell service workers before boot 2026-10-30 00:20:32 +07:00
SkateSpots
7a928dae6d feat: profile Lab services strip and dependency-light XLSX export 2026-10-30 00:10:29 +07:00
SkateSpots
262eb32e7c chore: audit fixes, designer stats and form FAB handling 2026-10-29 23:14:12 +07:00
SkateSpots
eaf345e2ec fix: tolerate empty Cordn coordinator tool responses 2026-10-29 22:53:36 +07:00
SkateSpots
6746353670 feat: add Transport Lab craft with self-attested fleet profiles 2026-10-29 22:34:28 +07:00
SkateSpots
569ad9b01c fix: replace floating map links pill with slim footer and fit follower stats 2026-10-29 21:35:45 +07:00
SkateSpots
4a4f398df0 fix: fit follower stats and add grantmaker transparency 2026-10-29 21:25:08 +07:00
SkateSpots
3f35a6f3a4 feat: sponsorship opt-in and Bitcoin grantmaker inquiry 2026-10-29 20:57:43 +07:00
SkateSpots
bc1987f78c feat: sponsor-ready profiles with follow, events and audience stats 2026-10-29 20:20:49 +07:00
SkateSpots
a2ab5750ff feat: Cordn inbox, outbox, room controls and animated splash 2026-10-29 19:18:48 +07:00
SkateSpots
c75ddea8e2 fix: harden community joins, approvals and state backups 2026-10-29 16:29:26 +07:00
SkateSpots
cded5eddb4 chore: community request feedback and host deploy tooling 2026-10-29 13:44:12 +07:00
SkateSpots
f94abcf33e chore: add community bot deploy/health tooling and Cordn web caveat 2026-10-29 13:42:32 +07:00
SkateSpots
89e6438ee1 fix: make community joins self-healing and keep /c in the app 2026-10-29 13:27:12 +07:00
SkateSpots
65d90da26f fix: a11y labels and clearer crew-chat bell aggregation 2026-10-29 12:52:30 +07:00
SkateSpots
673bb983b8 feat: per-thread DM mute, event pass, a11y header, undo mute 2026-10-29 12:37:10 +07:00
SkateSpots
c09f1ff23d feat: event timezone clarity and marketplace retry 2026-10-29 10:37:00 +07:00
SkateSpots
8b895a4858 feat: marketplace saved searches, quick offers, safety 2026-10-29 10:27:02 +07:00
SkateSpots
7a797c0fc6 feat: frictionless first-run tip and inline mute actions 2026-10-29 10:09:50 +07:00
SkateSpots
eb7ea50702 feat: remember map view and add community first-run step 2026-10-28 22:55:27 +07:00
SkateSpots
4ae6b1d5ea feat: envelope-only DM unread in the bell 2026-10-28 22:43:52 +07:00
SkateSpots
7f0524978c feat: track unread NIP-17 group conversations 2026-10-28 18:31:45 +07:00
SkateSpots
534e939f9e feat: global command palette and scroll/layer context 2026-10-28 18:08:45 +07:00
SkateSpots
f86b7a74cf feat: show Amber prompt budget; cache service worker headers 2026-10-28 16:51:41 +07:00
SkateSpots
d741823039 feat: Android back/app links and web app-shell cache 2026-10-28 16:39:07 +07:00
SkateSpots
9b6bdd2b53 feat: gate Amber Cordn notices and refresh Zapstore listing 2026-10-28 14:02:04 +07:00
SkateSpots
075aea7f44 perf: lazy content images and targeted crew member queries 2026-10-28 13:11:10 +07:00
SkateSpots
7bbe73e903 perf: code-split and defer the notification bell 2026-10-28 12:58:14 +07:00
SkateSpots
e94c16a479 perf: batch profiles, gate map layers, warm public cache 2026-10-28 12:42:39 +07:00
SkateSpots
66fc47cc28 feat: restore map footer, inline crew roles, Cordn reactions/push
- Keep the map footer links permanently visible; remove the hide toggle.
- Publish inline founder promote/demote from the member row.
- Add encrypted MLS reaction/delete/read control messages and UI.
- Add the minute Cordn join watcher: NIP-17 DMs + encrypted bell notices.
- Add the browser translation-matrix runner and a low-end performance finding.
2026-10-28 11:02:47 +07:00
SkateSpots
f029b5a516 feat(newsletter): weekly generated drafts, covers, and admin preview
- Add a browser-safe editorial generator with rotating satire and shipped highlights.
- Generate a fresh 1200x630 cover from the Drop #006 foundation and upload it to Blossom.
- Publish weekly drafts as NIP-78; add the admin Load draft/Preview composer flow and banner.
- Add the Monday user timer (draft by default) and a manual newsletter:weekly script.
- Remove static/live issue duplicates; translate the new admin strings to all 24 locales.
2026-10-28 09:42:44 +07:00
SkateSpots
630780753f feat(cordn): device QR, member removal, message reply; patch deps 2026-10-28 09:14:03 +07:00
SkateSpots
7da67cc2c0 feat(cordn): unread and join-request badges; persist pending joins 2026-10-28 08:39:01 +07:00
SkateSpots
13ebea685e fix(auth): keep signup alive across page cards; sanitize trip links 2026-10-28 00:05:28 +07:00
SkateSpots
639afd8550 fix(auth): open sign-in above menus and close the burger first 2026-10-27 20:48:04 +07:00
SkateSpots
2ec861befd feat(community): add the app-wide Cordn room and always-on bot 2026-10-27 17:37:09 +07:00
SkateSpots
27f3434475 feat(cordn): expose and copy the Cordn group share link 2026-10-27 17:02:43 +07:00
SkateSpots
74249e304e fix(menus): move language into its own mobile view; fit crew tabs 2026-10-27 17:00:19 +07:00
SkateSpots
5ac9e67860 fix(cordn): keep the invite poll alive across re-renders 2026-10-27 16:43:49 +07:00
SkateSpots
7881bbc50f fix(cordn): share public invite URL from the native app 2026-10-27 16:38:33 +07:00
SkateSpots
8a5ac47a19 fix(translation): repair Basque tokenizer IDs and evict stale cache 2026-10-27 16:32:29 +07:00
SkateSpots
690c9c93bd feat(cordn): polish private chat onboarding, polling and invites 2026-10-27 16:22:25 +07:00
SkateSpots
1fc91d1192 fix(sasquatch): reply in all 24 locales; record translation/Basque state
- Sasquatch UI/guide/FAQ were already 100% in all 24 locales; the AI reply
  language directive only covered es/th/ja. SASQUATCH_LANGUAGES now maps all 24
  app languages (trick names/core vocabulary stay English).
- Document the Sasquatch privacy difference: its AI calls the CVM/AI proxy
  (OpenRouter), unlike the on-device translation.
- Record the Basque status: IR 9->8 and target-side tokenizer fixed; model now
  emits Basque but loops on EOS/generation; remaining gap before 1.7.2.
2026-10-27 16:06:50 +07:00
SkateSpots
e85b9aacb6 feat(chat): all-language on-device translation (M2M100 + Basque Opus)
- M2M100 418M (MIT, 617 MB q8) covers 23 app languages; Basque uses converted
  Opus eu-en/en-eu q8 packs; all self-hosted under relay.skate-spots.org/models.
- Worker uses M2M100 directly and pivots Basque through English; UI targets all
  languages; old pilot restriction/note removed; memory-only + guard unchanged.
- Verified en<->es, ca<->gl, hi<->en from the host. Basque packs are converted
  and hosted; the final MarianTokenizer/ONNX runtime check is still pending.
- 138 tests, 24 locales, build and smoke green. SpotChat deliberately skipped.
2026-10-27 13:06:04 +07:00
SkateSpots
67bc89861d fix(chat): clear translation memory + worker on logout
Translations are memory-only; on logout/account switch we now clear the cache,
reject pending requests and terminate the worker (the model itself is public
and stays in the browser cache).
2026-10-27 10:52:01 +07:00
SkateSpots
d2a24679f0 feat(chat): on-device translation pilot (English ↔ Spanish)
- @xenova/transformers 2.17.2 in a Web Worker; Opus-MT en↔es ONNX q8 packs
  self-hosted on the relay VPS (/models + CORS); ONNX Runtime 1.14 WASM
  self-hosted in public/ort/ (37MB) loaded from ../ort/.
- Hard network guard: only model GET/HEAD (no query) and /ort/ assets allowed.
  Message text travels only via postMessage; 9 tests prove fetch is never called
  with the text and every other request is blocked.
- TranslateMessage in DMs + crew chat; Settings auto-translate off by default;
  memory-only translations; per-model download progress; 12 UI strings in all
  24 locales.
- Both model directions verified from the hosted files; tsc, 138 tests, build
  and smoke green.
2026-10-27 10:49:54 +07:00
SkateSpots
8c7de4d86d feat(chat): on-device language detector (translation Phase 1)
- tinyld (MIT, lazy, local) + script rules + a weighted
  Catalan/Galician/Basque/Spanish/Portuguese rule for the close/short cases
  tinyld confuses. No network, no logs, no storage; conversation/contact prior
  supported.
- Lingua with 24 languages produced a 99 MB WASM, so it was rejected as a
  detector; tinyld + the gl rule covers all 24 at a fraction of the size.
- 28/28 language samples pass, including a test that fetch is never called.
- Phase 2: on-device Opus-MT (English pivot) in a worker, memory-only
  translations, model packs on Blossom, sentinel/network-guard test.
2026-10-27 10:30:50 +07:00
SkateSpots
d53b8cd0cc fix(ui): harden menus for all locales
- LanguageSelector was still rendering the new SVG flag paths as text; use
  <Flag> there too and give every flag a fixed 24px slot (SVG/emoji align).
- Language dropdown w-48 -> w-72 with truncate + hover titles, so
  'Português (Brasil)' / 'Português (Portugal)' no longer clip.
- Settings language grid 1 column on phones / 2 on sm+.
- Header More menu w-48 -> w-64; header nav keeps its scroll, bottom nav keeps
  truncation.
- :lang(hi/th/ja/ko/zh) disables uppercase/tracking-wide so Devanagari, Thai
  and CJK menu labels are not letter-spaced.
- tsc, 101 tests, build and full-route smoke green.
2026-10-26 21:44:16 +07:00
SkateSpots
828684cf15 feat(i18n): add Hindi (24 dictionaries, 25 codes, all 100%)
- Full 8,703-key Hindi dictionary in src/i18n/hi (7 namespace batches),
  placeholders verified, only 2% identical strings (brand/protocol names).
- Register hi in Language/LANGUAGE_LOADERS, detectLanguage (hi-IN),
  LanguageToggle (🇮🇳, हिन्दी) and dateFnsI18n (hi-IN).
- Lazy-load Noto Sans Devanagari for hi via lib/localeFonts.ts (renamed from
  cjkFonts.ts) and add it to the CSS font stack; other locales don't download it.
- check-i18n covers hi: 24 dictionaries / 25 codes at 100%; tsc/tests/build green.
2026-10-26 16:35:53 +07:00