59 Commits
Author SHA1 Message Date
koka d139034044 feat(watch): add Twitch account mode 2026-08-10 07:31:49 +02:00
koka 5b049c9cad feat(watch): add YouTube Premium account mode 2026-08-10 07:15:32 +02:00
botsu 8ad9c5b320 feat(branding): replace Cinny logos with BOTSU mark 2026-08-09 17:32:36 +02:00
koka 0951b48fba feat(watch): add immersive OLED fullscreen 2026-08-09 14:05:52 +02:00
koka ba0ade6983 feat(rooms): refine story layout and room icons 2026-08-09 13:22:48 +02:00
koka 4f5cf0292c feat(client): polish shared Kanban room 2026-08-09 13:07:34 +02:00
botsu a298b1bbeb feat(client): add shared Kanban rooms 2026-08-09 12:05:34 +02:00
botsu ac990d9adc [verified] fix: serialize TCG discovery claims 2026-08-08 21:25:01 +02:00
botsu 5a48ba98c3 [verified] chore: prepare macOS Codex development 2026-08-08 21:13:30 +02:00
botsu ed3f934b61 feat: expand BOTSU creative rooms and apps 2026-08-08 20:31:07 +02:00
koka eae9333307 feat: add watch and voxel rooms 2026-08-08 16:00:42 +02:00
botsu 4c136b0f09 feat: add drawing rooms and Godot workspace support 2026-08-08 15:08:11 +02:00
botsu b532c6cd7f Add 5 shader backgrounds (fractal, isolayers, vortex, waves, cells) to BOTSU start page 2026-08-07 14:16:52 +02:00
botsu 27bfdd3deb feat: unify botsu shader options and add dust background 2026-08-07 01:20:49 +02:00
botsu 77eee8f4cc feat(sidebar): rename home tab tooltip to Reseau with hash icon 2026-08-07 00:29:16 +02:00
botsu 4245de0231 feat(nav): restructure BOTSU panel — applications, generations, services, cookies 2026-08-07 00:12:41 +02:00
botsu c14ed521ab fix(protocol): parse presence.map.viewport server message so viewport sync works end-to-end 2026-08-06 23:45:46 +02:00
botsu ad4374384a feat(openstreetmap): search addresses and places via Nominatim geocoding 2026-08-06 23:32:58 +02:00
botsu 17331a5792 fix(openstreetmap): use map.once('moveend') for reliable viewport sync 2026-08-06 23:23:15 +02:00
botsu 7f07a563b6 fix(openstreetmap): tolerate missing MapViewportProvider (noop bridge) 2026-08-06 23:15:56 +02:00
botsu 8494c18fa9 feat(openstreetmap): shared map with realtime viewport sync via presence.map.viewport 2026-08-06 23:09:07 +02:00
botsu b6c4fc6165 fix(wikipedia): remove shell padding for Wikipedia pages (edge-to-edge inset) 2026-08-06 21:47:44 +02:00
botsu 93f6dcd29d fix(wikipedia): edge-to-edge layout, no padding/max-width 2026-08-06 21:43:49 +02:00
botsu 5c92dab16c fix(wikipedia): wrap link rewrite in try/catch to handle invalid slugs 2026-08-06 21:39:32 +02:00
botsu c912996b4b feat(wikipedia): rewrite internal links to BOTSU paths so users stay on the same page 2026-08-06 21:33:06 +02:00
botsu 47e3cbafb7 feat(wikipedia): Wikipedia reader with search and article view 2026-08-06 21:11:30 +02:00
botsu 31fbf571ee feat(tcg): add burn UI to collection, build passes
- CollectionView: burn mode with 5-card selection (commons only)
- Burn bar with confirmation, reward cookies credited
- Selected cards highlighted with fire emoji
- Non-common cards dimmed in burn mode
- a11y: role/tabIndex/onKeyDown for keyboard navigation
- Vite build: EXIT_CODE=0 (max-old-space-size=3072)
- All 250 tests pass (106 backend + 46 protocol + 98 frontend)
2026-08-06 03:55:22 +02:00
botsu f42134e1d0 feat(tcg): Botsu Emoji TCG MVP — boosters, collection, graveyard
Backend (apps/presence-api):
- tcg-config: centralized rarity/price/shiny config, daily reset Europe/Paris
- tcg-index-catalog: idempotent Emoji Kitchen sticker indexer (23139 combos)
- tcg-catalog-store: in-memory catalog with path-traversal guard
- tcg-card-store: card instances, discoveries (unique constraint), daily tracking
- tcg-booster-store: daily/paid/admin boosters, per-user mutex, replay protection
- tcg-economy-log: JSONL audit log
- cookie-store: added debitCookies/creditCookies (atomic, no negative balance)
- server.ts: 11 HTTP routes (/tcg/images, /tcg/booster/*, /tcg/collection, etc.)
- 47 backend tests (concurrence, atomicity, path traversal, admin auth)

Protocol (packages/protocol):
- tcg.ts: shared types + strict parsers (rarity, burn, pagination)

Frontend (apps/client):
- tcg-controller: client API controller (Matrix OpenID auth)
- BotsuTcgPage: 3 tabs (Booster, Collection, Cimetière) with filters/pagination
- catalog.ts: emoji-tcg app registered
- Router.tsx + paths.ts: /botsu/tcg/ route
- BotsuNav: nav entry with Smile icon

Docs:
- docs/emoji-tcg-licence.md: Emoji Kitchen attribution and licence note

Config: EMOJI_KITCHEN_ROOT, DAILY_BOOSTER_SIZE=3, BOOSTER_PRICE=1000,
SHINY_RATE=0.01, RARITY_* (sum=1 validated at startup), BURN_REWARD=50

Tests: 106 backend + 98 frontend + 46 protocol = 250 pass
2026-08-06 03:50:14 +02:00
botsu d07dc35c03 fix(presence-api): tolerate corrupt cookie JSON instead of crashing the process
An interrupted atomic write can leave a player file truncated (0 bytes).
JSON.parse of such a file threw SyntaxError, which was unhandled and
crashed the whole presence process (cursors/Yjs/cookies all share it),
putting the canary into a crash loop.

Add tryReadJsonFile() that treats ENOENT and invalid JSON the same way
(as absent) and route readPlayerRecord, getLeaderboard and
sumAllBalances through it. A corrupt file is rebuilt on next access.

Add a regression test covering a truncated player file.
2026-08-06 02:23:34 +02:00
botsu 16eb0647ce fix(documents): collaborative cursors visible with user names
- Fix awareness state: setLocalState({ user: cursorUser }) so the default
  y-prosemirror cursorBuilder reads state.user correctly
- Custom cursorBuilder: span.botsu-collab-cursor with inline borderColor,
  div.botsu-collab-cursor-label with explicit color (no color:transparent
  inheritance issue)
- CSS: caret 2px solid, label absolute below caret, 0.625rem, opacity 0.85
- Unwrap state.user ?? state in builder for robustness
2026-08-05 22:00:58 +02:00
botsu 4e921949cf feat(botsu): translate, presence cursors, background options, nav links
- Add translate feature (LibreTranslate integration) with preview dialog
  in RoomInput and per-message translate action
- Add remote cursor pointers rendering in presence layer
- Add point-grid and plasma background options for start page
- Add BotsuLinks component and update nav layout
- Update settings state and General settings panel for new options
- Update tests for cursor-publisher, cursor-state, layout, background-options
2026-08-05 13:07:54 +02:00
botsu 18237d5832 feat(botsu): park documents behind files 2026-08-04 18:20:38 +02:00
botsu 511b37d5a8 feat(documents): bridge shared pages with Yjs 2026-08-04 17:20:51 +02:00
botsu 20251ac8a3 feat(documents): sync shared pages in realtime
Add a client document sync bridge on the authenticated presence websocket, with snapshot/patch handling, revisioned update publishing, conflict/gap resubscribe, and stale transport guards.

Wire shared BOTSU documents into the editor after import while preserving local recovery drafts.
2026-08-04 16:59:51 +02:00
botsu 74eeaa1a5a feat: add shared BOTSU documents and cookie counter
Add authenticated document objects persisted on the BOTSU drive, opaque shared references for local drafts, and websocket document snapshots/patches.

Add synchronized cookie counter API/client slice and keep the canary UI icon updates covered by BOTSU tests.
2026-08-04 16:49:41 +02:00
botsu 2beae6847c feat(documents): add rich local page experience
Add Tiptap editing, page symbols, compact page navigation, visual document gallery, and updated local draft metadata migration.
2026-08-04 09:38:05 +02:00
botsu fa5d74a4d7 feat: filter local BOTSU documents
Add a bounded accent-insensitive local search helper and expose a search field on the Documents list so local drafts can be found by title or document identifier.
2026-08-04 06:58:15 +02:00
botsu 6f60b7b365 feat: show local document update metadata
Format local BOTSU document updatedAt values in Paris time and show the metadata in the Documents list beside each locally saved draft.
2026-08-04 06:51:52 +02:00
botsu 6f3cc55ec1 feat: suggest room titles for workspace documents
Use the Matrix room name as the initial local BOTSU document title when creating a document from the workspace d+ control. Keep the title bounded and preserve immediate document links in the saved workspace summary.
2026-08-04 06:42:43 +02:00
botsu 3fb8c02ceb feat: create workspace documents locally
Allow the room workspace editor to create a local BOTSU document and attach it as a valid Document tab in one action. Prevent orphan draft creation when the workspace tab limit is reached.
2026-08-04 06:32:16 +02:00
botsu ed8b61efef feat: auto-save local BOTSU documents
Add a strict local draft update helper and wire the document editor to auto-save changes on this device. Keep the UI honest about local-only persistence while adding editor coverage to test:botsu.
2026-08-04 06:24:01 +02:00
botsu 7aa628f952 fix: allow public home presence locations
Accept exactly /home/ as a public BOTSU presence path while continuing to reject nested /home routes and non-suite destinations.
2026-08-04 06:13:35 +02:00
botsu fad9e50e89 feat: refine BOTSU navigation and workspace chrome
Restore the BOTSU left page panel, add the global BOTSU logo and panel icons, compact presence avatars, and make the conversation workspace bar button-only and visually discreet.
2026-08-04 06:13:27 +02:00
botsu 0608ae3052 feat: add global BOTSU appearance controls
Add app-wide font selection, corner radius, custom accent color, extra themes, and bundled BOTSU display fonts through the existing Appearance settings surface.
2026-08-04 06:13:19 +02:00
botsu 73d1032b36 feat: clean BOTSU home and portal surfaces
Move /home/ to the community canvas surface and simplify the /botsu/ portal around the clock/search experience. Keep drawing explicitly toggleable while preserving the shared pixel canvas.
2026-08-04 06:13:13 +02:00
botsu b272c5b765 [verified] add BOTSU start page and shared canvas 2026-08-03 23:04:04 +02:00
botsu 7fe26ccc01 feat: link Matrix rooms to BOTSU workspaces 2026-08-03 20:29:59 +02:00
botsu c699ee540b [verified] fix: preserve call footer and compact presence 2026-08-03 19:20:33 +02:00
botsu 7726614aa0 [verified] feat: add shared presence cursors 2026-08-03 18:54:37 +02:00
botsu ad31385a1b [verified] feat: add BOTSU presence 2026-08-03 17:51:29 +02:00