90 Commits

Author SHA1 Message Date
GitHub Action 529b4425b5 chore(release): update versions to v3.3.2 [skip ci] 2026-10-26 08:13:02 +00:00
GitHub Action eeb8d2c7eb chore(release): update versions to v3.3.1 [skip ci] 2026-10-18 09:00:33 +00:00
GitHub Action 06a6e63995 chore(release): update versions to v3.3.0 [skip ci] 2026-10-16 01:45:16 +00:00
Claude 38bc72ac0f fix(shared): scan every invite fragment and unwrap wrapped legacy links
- Try each #j2:/#join: fragment in text order, so a broken example
  earlier in a message no longer hides the real invite link.
- Drop a closing delimiter only when the link itself was wrapped
  ("<link>", "(link)", "[text](link)"), so wrapped legacy links no
  longer add ">" or ")" to the password while raw legacy passwords
  keep their punctuation.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012qx2BQfvCSescFYEacvute
2026-10-16 00:57:28 +00:00
Claude 3fb1d51be2 fix(extension): make invite paste discoverable and robust
- Listen for paste on the whole join view, so Ctrl+V works without
  first opening the collapsed Manual Connect section; other text
  fields keep their normal paste.
- Open the Manual Connect section after an invite is applied, so the
  filled-in room, password and relay are visible.
- Strip trailing brackets and punctuation from j2 links pasted from
  messages ("(link)", "<link>", "link."), which previously corrupted
  the chat key.
- Fix the e2e spec lint error and test real keyboard paste.
- Document the paste flow in the changelog, README and HOW_IT_WORKS.

Refs #47

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012qx2BQfvCSescFYEacvute
2026-10-16 00:26:09 +00:00
Claude eff2935b2e feat(extension): fill join form from pasted invite links
Pasting an invite link into the room ID or password field now fills
room, password, chat key and relay, regardless of the link's domain.
Only the #j2:/#join: fragment is parsed, so self-hosted invite links
work without opening the page and without injecting into other sites.
The paste event is used directly, so no clipboard permission is needed.

Refs #47

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012qx2BQfvCSescFYEacvute
2026-10-15 23:27:52 +00:00
GitHub Action 77e3e829c6 chore(release): update versions to v3.2.0 [skip ci] 2026-09-01 05:14:36 +00:00
Timo dc7eb86ce6 fix(sync): harden episode transition compatibility 2026-09-01 07:08:39 +02:00
Timo 77e7d0c103 fix(sync): make episode transitions relay-authoritative 2026-09-01 03:21:02 +02:00
Timo 0d23859a9f fix(sync): close canonical recovery merge blockers 2026-08-25 22:24:37 +02:00
Timo def5e1a380 fix(sync): harden canonical recovery 2026-08-25 21:21:18 +02:00
Timo a65fe2f576 merge main and harden canonical media recovery 2026-08-25 16:58:15 +02:00
KoalaDev 204f1d0a8f fix: harden room teardown and popup containment 2026-08-25 01:10:41 +02:00
KoalaDev 230e7f5932 test: harden coverage and browser release gates 2026-08-21 14:10:35 +02:00
GitHub Action 368daa6e2e chore(release): update versions to v3.1.4 [skip ci] 2026-08-21 10:33:30 +00:00
KoalaDev c064953cca feat(sync): add canonical room media state 2026-08-20 17:27:08 +02:00
GitHub Action 1e41d98c2f chore(release): update versions to v3.1.3 [skip ci] 2026-08-18 19:38:09 +00:00
GitHub Action b06d6773af chore(release): update versions to v3.1.2 [skip ci] 2026-08-17 15:14:41 +00:00
GitHub Action 77bdf21405 chore(release): update versions to v3.1.1 [skip ci] 2026-08-15 15:22:46 +00:00
GitHub Action 2ea981b68f chore(release): update versions to v3.1.0 [skip ci] 2026-08-14 06:48:31 +00:00
KoalaDev 79a2204a97 feat: store the hide-clutter list as a delta, not a snapshot
Saving the editor used to persist the full effective list, which froze the
shipped defaults at that moment: every default added in a later version
never reached anyone who had touched the list once.

Storage now keeps only { removedDefaults, addedDomains }, and the effective
list is resolved against whatever ships in the running version. Entries are
tagged default or user, the editor groups them under comment headers, and
'#' lines are ignored on save. Lists saved by earlier versions are migrated
to the delta form on first read and the legacy key is removed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-14 06:57:41 +02:00
KoalaDev 477dad03a3 fix: harden frame observation and unblock supported Drive tabs
Audit follow-ups on the same-origin frame walk:
- prune detached frames from the load-hook set so ad/SPA frame churn
  no longer grows it for the page's lifetime
- hook load on nested frames, not just top-level ones
- re-observe from scratch after a frame reload instead of leaving the
  replaced document's tree registered
- reset the frame registry when the heartbeat error path disconnects

Also: a broad parent domain in the blacklist no longer hides a host with
its own supported player path (drive.google.com behind google.com), while
an exact user entry for that host still filters it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-14 06:45:33 +02:00
Timo 48d6c1dc0b feat:local-blacklist-and-audio-boost 2026-08-12 02:07:34 +02:00
GitHub Action da93c09a93 chore(release): update versions to v3.0.2 [skip ci] 2026-07-31 07:48:55 +00:00
GitHub Action b3f9693d34 chore(release): update versions to v3.0.1 [skip ci] 2026-07-26 03:56:23 +00:00
GitHub Action 90a58eb507 chore(release): update versions to v3.0.0 [skip ci] 2026-07-26 00:25:06 +00:00
Timo 77790a279c fix(chat): preserve mixed-version compatibility 2026-07-26 01:02:20 +02:00
Timo e9d735cd39 Merge remote-tracking branch 'origin/main' into feature/textchat
# Conflicts:
#	extension/background.js
#	extension/popup.js
2026-07-19 20:32:24 +02:00
GitHub Action 7f898e6eb4 chore(release): update versions to v2.6.4 [skip ci] 2026-07-16 09:51:25 +00:00
Timo 2b485fed53 chore(release): update versions to v2.6.3 [skip ci] 2026-07-15 13:34:24 +02:00
GitHub Action 649c8796a9 chore(release): update versions to v2.6.2 [skip ci] 2026-07-15 10:47:24 +00:00
KoalaDev f2eee6dc41 feat(chat): add stateless ciphertext relay 2026-07-15 07:02:08 +02:00
KoalaDev 8fee98834c feat(chat): add encrypted invite contract 2026-07-15 06:58:22 +02:00
GitHub Action 477a814a79 chore(release): update versions to v2.6.1 [skip ci] 2026-07-15 03:57:56 +00:00
GitHub Action d4181b2eaf chore(release): update versions to v2.6.0 [skip ci] 2026-07-15 03:14:35 +00:00
GitHub Action 861bb05ec2 chore(release): update versions to v2.5.4 [skip ci] 2026-07-08 14:25:32 +00:00
KoalaDev c3827fa4b7 refactor: remove cloud storage providers from domains blacklist 2026-07-08 16:04:00 +02:00
KoalaDev 61ba32addf refactor: remove localhost from domains blacklist 2026-07-08 16:03:53 +02:00
KoalaDev e093a8afae docs: refresh onboarding and examples 2026-07-06 17:31:24 +02:00
GitHub Action 72ea5d1ee9 chore(release): update versions to v2.5.3 [skip ci] 2026-07-02 14:59:12 +00:00
GitHub Action 6ccaf45f8e chore(release): update versions to v2.5.2 [skip ci] 2026-07-02 13:34:11 +00:00
GitHub Action 1f5196e1e6 chore(release): update versions to v2.5.1 [skip ci] 2026-07-01 17:48:39 +00:00
GitHub Action e683466bf0 chore(release): update versions to v2.5.0 [skip ci] 2026-06-29 10:58:06 +00:00
KoalaDev a326087ca5 feat(co-host): server-side multi-controller (owner promotes peers to drive)
Generalizes host-only from a single host to a controller SET. The owner (creator)
can promote/demote peers; in host-only mode the relay gate allows any controller,
not just the owner. Single-host is now the special case controllers={owner}, so
existing behavior/tests are unchanged.

- shared: CAPABILITIES.CO_HOST enabled; new SET_PEER_ROLE event; CONTROL_MODE
  payload carries controllers.
- server: room.controllers Set (always incl. owner), advertised in ROOM_DATA;
  gate checks controllers.has(peerId); SET_PEER_ROLE handler (owner-only, target
  must be present, MAX_CONTROLLERS=10 cap, re-sync on reject); controlModePayload
  helper for consistent emits; owner-leave resets controllers + falls back to
  everyone, co-host-leave broadcasts the updated list (dedup/reconnect guarded).
- WS test: promote→drive, plain guest still gated, non-owner can't promote,
  demote→re-gated.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 03:36:22 +02:00
KoalaDev 9963da2ebc feat(host-control-mode): explicit server capabilities for feature detection
Replace the implicit "hostPeerId present ⇒ feature supported" heuristic with an
explicit capabilities list the relay advertises in ROOM_DATA. Cleaner, self-
documenting, and the extensible hook for the planned co-host feature (owner
promotes guests to extra controllers) — a future 'co-host' capability + events
slot in without a protocol bump.

- shared: CAPABILITIES { HOST_CONTROL }.
- server: SERVER_CAPABILITIES advertised in ROOM_DATA.
- background: track serverCapabilities (empty against older relay), serverSupports(),
  thread hostControlSupported through GET_STATUS / GET_CONTROL_MODE / CONTROL_MODE.
- popup: gate the host-control card on the explicit capability instead of hostPeerId.

Backwards-compatible both ways: old relay omits the field → feature stays hidden
(no errors); old client ignores the field. WS test asserts ROOM_DATA advertises
the capability. Adds docs/host-control-mode-TESTING.md (beta-server setup, wss
caveat, two-new-clients note, verification checklist).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 04:48:45 +02:00
KoalaDev a968f708b3 feat(protocol): add host control mode events & constants
Step 1 of host control mode. Adds the protocol surface only — no behavior yet:
- EVENTS.SET_CONTROL_MODE (client->server: host sets mode)
- EVENTS.CONTROL_MODE   (server->client: mode changed)
- CONTROL_MODES { EVERYONE, HOST_ONLY }

Purely additive; old clients ignore the new events. Propagated to
extension/shared via build-extension. Also records the audited design
decisions in the edge-case log.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 23:27:19 +02:00
KoalaDev 6276ee134c fix(ui): Correct false idle state on connection errors
Bump version to 2.4.6
2026-06-23 18:36:05 +02:00
GitHub Action d847389eef chore(release): update versions to v2.4.5 [skip ci] 2026-06-23 15:40:16 +00:00
GitHub Action 68b2205b0d chore(release): update versions to v2.4.4 [skip ci] 2026-06-22 22:46:03 +00:00
GitHub Action c7b29c277c chore(release): update versions to v2.4.3 [skip ci] 2026-06-19 14:39:06 +00:00