feat: complete docked chat interactions

This commit is contained in:
Timo
2026-07-29 22:31:28 +02:00
parent 172073896f
commit 0b6ae803c8
27 changed files with 473 additions and 60 deletions
+10
View File
@@ -4,6 +4,16 @@ All notable changes to the KoalaSync browser extension and relay server.
---
## Unreleased
### Added
- **Extension: Quick reactions** — Adds six encrypted one-click reactions with a local choice between chat-only display and bounded falling reactions over the video.
- **Extension: Resilient chat activity** — Keeps a bounded per-room browser-session timeline for play, pause, seek, force-sync, join, and leave rows so overlay reinjection no longer loses them.
### Changed
- **Extension: Real dock behavior** — Anchors the collapsed Koala chat launcher to the selected side, reserves a page column in normal and fullscreen layouts, and clips viewport-bound page layers away from the open dock; detached mode remains freely movable.
- **Extension: Koala chat launcher** — Replaces the generic speech-bubble emoji with the KoalaSync extension icon plus a chat marker.
## [v3.0.1] — 2026-07-26
### Added
+15 -1
View File
@@ -52,6 +52,8 @@ the stamped value as AAD.
- Maximum plaintext length: 500 Unicode code points.
- Decrypted text is untrusted. Escape HTML before applying the supported limited
Markdown formatting.
- Quick reactions use the same encrypted message path as text. They remain readable
by current chat clients without adding a relay-visible reaction event.
- No read receipts and no typing indicators.
- The local message DOM is bounded; this is presentation state, not server history.
@@ -61,9 +63,21 @@ the stamped value as AAD.
- Live modes: right, left, and detached.
- Detached mode is draggable and moderately resizable. Size and position are stored
per origin and clamped to the current viewport.
- The overlay uses a Shadow DOM and never changes host-page layout.
- Left and right modes anchor the launcher to the selected edge and reserve a
full-height page column while the panel is open. Detached mode is the only freely
movable launcher.
- Docking keeps a reserved column on narrow pages and in fullscreen instead of
silently falling back to an overlay.
- The overlay uses a Shadow DOM. Docking changes root-page or fullscreen-container
width and margins while the dock is open and clips viewport-bound page layers to
the remaining page column. The overrides stop applying when chat is detached or
closed, and the injected style element is removed when chat is destroyed.
- On `fullscreenchange`, its host moves into `document.fullscreenElement` and remains
visible.
- Six encrypted quick reactions are available from the composer. Users can keep them
in chat or additionally show a bounded falling-emoji animation over the video.
- Playback and room activity is retained in a bounded per-room browser-session
timeline so overlay reinjection does not lose command rows. It is not relay history.
- It follows all eucalyptus, cyber, and graphite light/dark theme combinations.
- Without a key, the panel stays closed and a disabled chat control explains that a
current invite link is required.
+6 -5
View File
@@ -37,9 +37,10 @@
- **Category:** Social / Communication / Privacy
- **Status:** Planned. This is a roadmap target, not a release announcement.
- **Existing foundation:** Opt-in, live-only end-to-end encrypted room chat; a floating
chat bubble over the selected player opens a dockable, detachable, resizable overlay.
The relay stores no chat history and mixed extension versions use capability-gated
delivery.
Koala launcher over the selected player opens a dockable, detachable, resizable
overlay. Quick reactions can stay in chat or fall over the video, and a bounded
browser-session activity timeline survives overlay reinjection. The relay stores no
chat history and mixed extension versions use capability-gated delivery.
#### Core experience
@@ -57,8 +58,8 @@
#### Messaging
- Replies with quoted context, emoji reactions, emoji picker, mentions, and typing
indicators.
- Replies with quoted context, per-message reaction counters, a full emoji picker,
mentions, and typing indicators.
- Edit and delete own messages with clear local tombstones; no silent mutation.
- Delivery states (`sending`, `sent`, `failed`, `retry`) with idempotent retries and
duplicate suppression after reconnects.