Commit Graph

109 Commits

Author SHA1 Message Date
MacBook 01ce3ec99e chore: migrate domains from shik3i.net to koalastuff.net v1.4.0 2026-05-16 13:08:53 +02:00
MacBook d9b26f9fb4 docs: link Caddyfile.example and finalize website documentation v1.3.2 2026-05-04 05:55:46 +02:00
MacBook 1e3bb94660 website: fix HTML issues, mobile nav, i18n, and SEO
Bug Fixes:
- index.html: remove duplicate <title> tags (invalid HTML), use single
  title + JS swap; fix og:image relative→absolute URL (logo.png)
- join.html: fix hardcoded lang=de, add language detection IIFE,
  add lang toggle to nav, make badge/title/desc/actions bilingual,
  add missing </head> closing tag, add noindex meta
- app.js: join status handler was German-only; now fully bilingual
  (Success/Error titles, countdown, close/retry button labels)

Improvements:
- Add Firefox 'Add to Firefox' button to hero CTA (placeholder href=#)
- impressum.html / datenschutz.html: add noindex meta to keep legal
  pages out of search results
- robots.txt: add Sitemap directive for SEO crawlability
- sitemap.xml: new file listing main page + legal pages with priorities
- style.css: mobile nav hamburger menu (☰) replaces display:none
  blackout; nav-links drop down on mobile with backdrop blur
- style.css: cta-group flex-wrap for narrow screens
- Hamburger button added to all 4 page navs
2026-05-04 05:49:16 +02:00
MacBook 90882f91ef docs: clarify ws:// vs wss:// for self-hosted servers 2026-05-04 05:42:31 +02:00
MacBook 5157428e74 docs: comprehensive repository polish + step-by-step user guide
Documentation Rewrites:
- AI_INIT.md: fix duplicate section numbers, add file responsibility map,
  fix stale manual mirror instruction, add room ID constraint
- PRIVACY.md: add TL;DR statement, data retention table, explicit
  <all_urls> justification, self-hosted instance disclaimer
- CONTRIBUTING.md: add local testing guide, version warning, room ID
  constraint, bug report requirements
- shared/README.md: complete event table (all 15 events), fix stale
  manifest.json reference
- docs/SYNC_GUIDE.md: Chrome→Browser, add README.md to sync list,
  drop stale RC5 reference
- server/README.md: sync env defaults with .env.example (1000/50)

New Documentation:
- docs/HOW_IT_WORKS.md: 10-step walkthrough covering room creation,
  invitation bridge flow, synchronized playback, force sync protocol,
  heartbeat system, and episode auto-sync. Includes exact data payloads.

Infrastructure Cleanup:
- docker-compose.yml: remove deprecated version key
- .dockerignore: remove dead .bat/.sh patterns
- README.md: add self-hosting extension config tip, link HOW_IT_WORKS
2026-05-04 05:41:43 +02:00
MacBook 47ca7563b7 ci: auto-inject version from git tag + unify shared/ mirroring
- CI release workflow now extracts version from tag (v1.4.0 → 1.4.0)
  and injects it into manifest.base.json, shared/constants.js, and
  package.json before building — the tag is the single source of truth
- Build script now copies README.md alongside constants.js and
  blacklist.js from /shared → /extension/shared/ (full mirror)
- .gitignore updated: extension/shared/ is fully generated by build
- AI_INIT.md: simplified release workflow, fixed Chrome-only reference
2026-05-04 05:27:07 +02:00
MacBook f7829bbebb security: harden server relay + documentation audit
Server Security (S-1 through S-8):
- S-1: Type-check and clamp peerId, protocolVersion, password
- S-2: Validate numeric/boolean/enum fields in relay peerData
- S-3: Construct explicit relay payload (stop spreading raw data)
- S-4: Type-check targetId and actionTimestamp in EVENT_ACK
- S-5: Restrict room IDs to [a-zA-Z0-9-] only
- S-7: Add eventCounts periodic cleanup alongside connectionCounts
- S-8: Guard version parsing against NaN bypass

Documentation (P-1, R-1 through R-6):
- P-1: Fix PRIVACY.md typo, document all in-memory data maps
- R-1/R-5: Fix stale sync-constants.bat references in shared/
- R-2: Fix stale lastTargetState ref in ARCHITECTURE.md
- R-3: Extension README title reflects cross-browser support
- R-6: Document content injection markers in scripts/README.md
2026-05-04 05:19:18 +02:00
MacBook 6093da4dc6 feat: add docker-compose example and update GHCR deployment links 2026-05-04 05:12:22 +02:00
MacBook 583e15745f docs: improve transparency in privacy policy and readme 2026-05-04 04:55:04 +02:00
MacBook bd8c7edc3a docs: clean up README marketing language and remove banner 2026-05-04 04:51:29 +02:00
MacBook bd4c53f9c7 docs: overhaul root README with premium branding and badges 2026-05-04 04:48:51 +02:00
MacBook 5440d136fe docs: complete audit of all READMEs for consistency 2026-05-04 04:46:27 +02:00
MacBook c9ec6ce3e0 docs: final polish and refined protocol automation 2026-05-04 04:45:02 +02:00
MacBook 652f1cef4f refactor: automate protocol sync and reorganize repo for store readiness 2026-05-04 04:43:30 +02:00
MacBook 0f1f8bde1b docs: clean up obsolete scripts and update documentation for store readiness 2026-05-04 04:37:59 +02:00
MacBook fa4e4039b3 fix: bump APP_VERSION in shared/constants.js to 1.3.1 2026-05-02 02:09:23 +02:00
MacBook cb466d3865 chore: bump version to 1.3.1
- update manifest.base.json, package.json and index.html to v1.3.1

- add SECURITY.md file
2026-05-02 02:07:22 +02:00
MacBook 54be9f9a39 feat: SEO and localization improvements
- Add language toggle and German translation to website

- Optimize manifest description

- Add robots.txt

- Add open source transparency clause to privacy policy
2026-05-02 02:00:06 +02:00
MacBook 47a9c08f48 docs: enforce strict version bumping in AI release workflow 2026-05-02 00:37:09 +02:00
MacBook b0bcab77e3 docs: restructure README for end-users and developers, add browser support, add badges 2026-05-01 06:18:27 +02:00
MacBook 6624bcc1ca docs: remove hardcoded version string and link to releases tab 2026-05-01 06:14:11 +02:00
MacBook ca391ca83b docs: add AI guardrails for networking, routing, and identity 2026-05-01 06:11:50 +02:00
MacBook 1438a4d41f docs: add release tag 'v' prefix requirement to AI_INIT.md 2026-05-01 06:10:25 +02:00
MacBook c9cf7c49dc Fix logic flaws and update documentation v1.3.1 2026-05-01 06:06:46 +02:00
MacBook bcbd46d658 fix: make shared file sync fail-fast in build script v1.3.0 2026-05-01 05:41:07 +02:00
MacBook 4d489ec992 chore: implement cross-browser build pipeline for extension
- Extract manifest.json to manifest.base.json
- Add Node.js build script to compile Chrome and Firefox artifacts
- Remove legacy sync-constants bat/sh scripts
- Update GitHub Actions workflow to use new build pipeline
2026-05-01 05:37:47 +02:00
Timo 65ad4b5c6b chore: Bump version to 1.2.1
Patch release for:
- fix: Seek relay filtering (HLS/DASH buffering micro-seeks no longer relayed)
- feat: Seek diagnostic logging in Dev tab (Filtered/Relayed with delta)
- feat: Log buffer increased from 50 to 200 entries
v1.2.1
2026-04-25 17:47:59 +02:00
Timo c2857dbdda feat: Improve seek logging and increase log buffer to 200 entries
- Log [Seek] Filtered when delta < 3s threshold (warn level) showing exact delta
- Log [Seek] Relayed when a seek passes all filters (info level) showing target time + delta
- Programmatic seeks (force sync, peer commands) remain silent in logs
- Increase log ring buffer from 50 -> 200 entries in all three enforcement points
2026-04-25 17:45:06 +02:00
Timo d07bf745a3 fix: Add seek delta threshold and debounce to prevent HLS/DASH buffering micro-seeks from being relayed as user seeks
Streaming players (Emby, Jellyfin, etc.) perform frequent internal seeks
for buffering that are < 1s in magnitude. These were being relayed to
peers, causing brief video freezes every few minutes.

Fix:
- MIN_SEEK_DELTA = 3.0s: ignore seeks smaller than 3 seconds
- 800ms debounce: settle rapid-fire seeks (e.g. scrubbing) before relaying
- Programmatic seek suppression still takes priority via expectedEvents
- lastReportedSeekTime baseline updated on programmatic seeks too
2026-04-25 17:42:55 +02:00
Timo bd54e893b4 docs: Update root README for v1.2.0 features v1.2.0 2026-04-25 16:50:09 +02:00
Timo 50c9ba4ec8 docs: Update website for v1.2.0 release and add Episode Auto-Sync feature card 2026-04-25 16:49:52 +02:00
Timo 55c2d4ed0d feat: Auto-Sync Next Episode v1.2.0
Adds a new toggleable feature that detects episode transitions via
mediaTitle mutation (loadeddata/MutationObserver), pauses the video,
and waits for all room peers to load the same episode before
executing a coordinated Force Sync play at 0:00.

Protocol:
- Add EPISODE_LOBBY and EPISODE_READY events to shared/constants.js
- Add EPISODE_LOBBY_TIMEOUT (60s) constant
- Relay both new events in server/index.js

Content Script (content.js):
- Layered detection: loadeddata + MutationObserver src-change + heartbeat
- Debounced onEpisodeTransition() sends signal ONLY; no eager pause
- PAUSE_FOR_LOBBY handler pauses only after background confirms feature enabled
- startLobbyPoll() polls title match without premature pause for non-initiators
- checkAndReportLobbyReady() pauses and sends EPISODE_READY_LOCAL on match
- CONTENT_BOOT recovery for re-injection after hard navigation

Background (background.js):
- Episode lobby state persisted in chrome.storage.session with recovery
- EPISODE_CHANGED: checks setting, creates lobby, sends PAUSE_FOR_LOBBY to tab
- EPISODE_LOBBY/READY server event handlers with dedup logic
- 60s timeout cancels lobby (Option B) with Chrome failure notification
- Peer departure handled: removes from readyPeers, re-checks completion
- executeEpisodeLobby() reuses existing Force Sync pipeline at targetTime 0.0
- Lobby cleared on LEAVE_ROOM; status exposed in GET_STATUS

Popup:
- Auto-Sync Next Episode toggle in Settings tab (default: off, opt-in)
- Episode Lobby status card in Sync tab with peer readiness display
- LOBBY_UPDATE message handler for real-time UI updates

Bumps APP_VERSION and manifest to 1.2.0
2026-04-25 16:43:10 +02:00
Timo 02afc193c6 fix: extend input sanitization to relay path and remove whitespace artefact v1.1.5 2026-04-25 16:17:16 +02:00
Timo 7fc156977a feat: add graceful shutdown, input validation, and peer data factory (Phase 3) 2026-04-25 16:15:11 +02:00
Timo 99cb07bc2a refactor: centralize room cleanup logic to fix DRY violation (H-1) 2026-04-25 16:12:51 +02:00
Timo 77ffda3e42 fix: address phase 1 audit findings (xss, cors, dead code) 2026-04-25 16:10:20 +02:00
Timo 01bc95e176 docs: add github link and version info to dev tab (v1.1.4) v1.1.4 2026-04-25 03:49:42 +02:00
Timo 7417c21217 feat: enhance peer list with volume icons, play/pause status, and time interpolation (v1.1.3) v1.1.3 2026-04-25 03:47:57 +02:00
Timo 3e63602559 docs(shared): add strict warning headers and README to prevent out-of-sync edits v1.1.2 2026-04-23 22:01:35 +02:00
Timo 4785c9625c chore(extension): bump version, fix targeted injection and race conditions 2026-04-23 21:58:19 +02:00
Timo 0d08711398 fix: restore CONNECT handler else branch, sync APP_VERSION, clean dead return-true 2026-04-23 20:09:30 +02:00
MacBook abe876e04e fix: remove legacy fallback for 100% strict tab targeting 2026-04-23 08:41:16 +02:00
MacBook 3771243b3c fix: ensure routeToContent prioritizes saved target tab settings 2026-04-23 08:35:14 +02:00
MacBook ee79d66ac0 fix: enforce strict tab targeting and update badge logic 2026-04-23 08:30:28 +02:00
MacBook ac8d73ef4f feat: add ARM64 support to Docker build 2026-04-23 07:16:10 +02:00
MacBook f3ee7b47b9 chore: bump version to 1.1.1 and fix self-metadata sync and UI visibility v1.1.1 2026-04-22 18:44:20 +02:00
MacBook 0f611fa112 chore: bump version to 1.1.0 v1.1.0 2026-04-22 18:31:28 +02:00
MacBook 67f872ffd2 feat(sync): implement end-to-end media title synchronization 2026-04-22 18:29:53 +02:00
MacBook e40e2e5101 feat(dev): implement extended video metadata and data-attribute inspector 2026-04-22 18:22:59 +02:00
MacBook 0e7b57ce71 chore: bump version to 1.0.4 v1.0.4 2026-04-22 18:05:55 +02:00