72 Commits
Author SHA1 Message Date
Lucy Havok 324e98abbd Add UI for setting stream resolution (#252) 2026-10-25 19:36:58 +01:00
landmineHQ fc9890235d fix(ui): decode room id from URL and encode it when writing back
The room id was read from the query string with a hand-rolled parser that
never decoded it, while the id was written back into the URL without any
encoding:

    getFromURL = (key, search) =>
        search.slice(1).split('&')
            .find((param) => param.startsWith(`${key}=`))?.split('=')[1];

    window.history.pushState({roomId: id}, '', id ? `?room=${id}` : '?');

Browsers percent-encode non-ASCII characters when a URL is serialized, so a
room named "不辞" is shared as `?room=%E4%B8%8D%E8%BE%9E`, but the client then
joins the literal `%E4%B8%8D%E8%BE%9E` room, which does not exist:

    -> {"type":"join","payload":{"id":"%E4%B8%8D%E8%BE%9E"}}
    <- close 1000 "room with id %E4%B8%8D%E8%BE%9E does not exist"

The same asymmetry also broke ids containing `&`, `=`, `+`, `#` or `%`, and
made ids that already contain percent escapes gain another encoding level on
every write, producing broken (double encoded) share links.

Use the platform URL API, which decodes on read and encodes on write exactly
once:

    new URLSearchParams(search).get(key) ?? undefined
    const params = new URLSearchParams();
    params.set('room', id);
    window.history.pushState({roomId: id}, '', `?${params.toString()}`);

No server change is needed: the room id stays the raw, human-readable string
that the ws `create`/`join` payload and the server-side room map already use,
and existing share links keep working.

Verified: URL round-trip for 不辞 / "my room" / "a+b" / "a&b=c" / "100%",
protocol-level e2e against a live server (encoded id -> "does not exist",
decoded id -> joins, cleanup on owner leave), `yarn build` (tsc + vite) and
`prettier --check src/useRoomID.ts`.
2026-09-26 02:52:21 -04:00
SWINDI 9f87229a8f fix: don't close peer connection on transient 'disconnected' state
Both connectionstatechange handlers treated 'disconnected' the same as
'closed' and 'failed' and immediately called peer.close().

Per the WebRTC spec, 'disconnected' only means that ICE connectivity checks
are currently failing. The connection frequently recovers on its own -- brief
network hiccups, Wi-Fi roaming between access points, or NAT rebinding all
trigger it. Calling close() makes that recovery impossible, because a closed
RTCPeerConnection cannot be reopened.

The result was that a short network glitch permanently killed the stream and
the viewer had to reload the page. Leaving 'disconnected' unhandled lets the
browser's own ICE recovery do its job.

Refs #53
2026-08-20 20:25:04 +02:00
Jannis Mattheis 20f3356604 fix: update dependencies 2026-04-25 10:14:07 +02:00
Jannis Mattheis 08db40b3d0 fix: update deps 2026-01-01 13:37:00 +01:00
Jannis Mattheis 3f33538816 feat: system/tab audio on supported systems 2025-05-08 13:18:12 +02:00
Jannis Mattheis 7928a4203e fix: crash in chrome
See #215
2025-04-12 18:00:59 +02:00
Jannis Mattheis 14ff43d812 fix: update dependencies 2025-04-12 18:00:59 +02:00
Jannis Mattheis 46467a3f79 fix: update dependencies 2024-09-27 16:20:15 +02:00
Jannis Mattheis a24ca719e0 fix: add unsupported browser error 2024-08-16 11:01:25 +02:00
Jannis Mattheis 34167c99ac fix: update dependencies 2024-02-10 20:21:45 +01:00
Jannis Mattheis 6bc29f93da fix: better room name generation
See #173
2023-11-20 18:40:09 +01:00
Jannis Mattheis af3e1bbfff fix: update frontend deps 2023-09-21 19:44:46 +02:00
Jannis Mattheis 0734a99c5f fix: migrate to vite 2023-09-21 19:44:46 +02:00
Jannis Mattheis 9bc9a6717a fix: use urlWithSlash everywhere 2023-09-21 19:16:58 +02:00
Jannis Mattheis f3898e7537 Add double click to fullscreen
Fixes #37
2023-07-29 15:58:41 +02:00
Jannis Mattheis 5c2805d4e0 Add framerate setting 2023-07-26 15:34:13 +02:00
Jannis Mattheis 5affc6b9e5 Fix deprecations 2023-05-21 10:50:26 +02:00
Jannis Mattheis 977629ab59 Log play exception 2023-05-21 10:50:26 +02:00
Jannis Mattheis 5933a0d352 Update ui deps 2023-05-21 10:28:58 +02:00
Jannis Mattheis b018267529 Update ui deps 2022-10-29 15:05:01 +02:00
Jannis Mattheis 65814465e0 Update golangci-lint 2022-10-29 14:58:58 +02:00
Nicolò Luigi Allegris 6e4a9532bb Join room if it already exist 2022-10-29 12:51:57 +00:00
Tomonso EjangandJannis Mattheis 3fad376c6a Fix fullscreen on safari (#136)
Co-authored-by: Jannis Mattheis <contact@jmattheis.de>
2022-08-11 17:35:20 +00:00
Jannis Mattheis 39662ee741 Use browser default as default codec
Having a high frame rate is probably more useful for most users of
screego.
2022-07-17 18:23:29 +02:00
Jannis Mattheis d36caf85e0 Use settings icon & fix fullscreen icon 2022-07-14 20:44:41 +02:00
Jannis Mattheis db02f5c1dc Fix screen getting cut off
Fixes #133
2022-07-14 20:38:32 +02:00
Jannis Mattheisandcore.equip db0a180b2e Add preferred codec setting
Co-authored-by: core.equip <coreequip@users.noreply.github.com>
2022-07-13 23:03:18 +02:00
Jannis Mattheis cdf2176d74 Add social graph meta data 2022-07-13 20:23:01 +02:00
Jannis Mattheis d803a8d2a3 Update UI dependencies 2022-06-25 22:09:11 +02:00
Jannis Mattheis 89669a60bf Fix logo on prod build
Fixes #123
2022-03-30 18:00:56 +02:00
Jannis Mattheis 1e9ca4f589 Update dependencies 2022-03-27 13:39:36 +02:00
Jannis Mattheis 58c5061eab Add create on join 2022-02-13 18:42:18 +01:00
Jannis Mattheis 570beb9d5e Make getRoomFromURL generic 2022-02-13 18:42:18 +01:00
Jannis Mattheis 54a7a29895 Extract authModeToRoomMode 2022-02-13 18:42:18 +01:00
Jannis Mattheis 7ba06e0eba Update ui 2021-11-29 19:52:16 +01:00
Jannis Mattheis ccdd67c8e9 Update go deps 2021-11-29 19:52:16 +01:00
Jannis Mattheis 557c1eba6b Migrate to go embed 2021-11-29 19:52:16 +01:00
Dennis Becker 15349b9294 feat: align video to vertical and horizontal center 2021-11-16 20:55:18 +01:00
Sven Kube c016f201cc Add video display mode setting 2021-08-23 19:22:10 +02:00
Jannis Mattheis aeb55c7387 Fix warnings 2021-06-16 17:59:29 +00:00
Jannis Mattheis 927c012abf Update ui deps 2021-06-16 17:59:29 +00:00
Maxim Baz e5f046ebab Show NAT traversal mode as label 2021-05-24 17:39:56 +00:00
Sven Kube be61f348e1 feat: add configurable default value for room closing policy in room creation dialog 2021-05-15 08:25:39 +00:00
Jannis Mattheis b322968428 Update caniuse 2021-04-17 08:30:28 +00:00
Jannis Mattheis 5d587d9479 Upgrade typescript 2021-04-17 08:30:28 +00:00
Jannis Mattheis 28ab3abf82 Remove unused testing library 2021-04-17 08:30:28 +00:00
Jannis Mattheis 30d15be15f Remove unused react-router dependency 2021-04-17 08:30:28 +00:00
Jannis Mattheis f90a0bafe1 Update react 2021-04-17 08:30:28 +00:00
Jannis Mattheis 5ce7c6cb27 Update hooks & notistack 2021-04-17 08:30:28 +00:00