Commit Graph

118 Commits

Author SHA1 Message Date
Storm Dragon 0a149e51ef Chalkboard feature added. 2026-05-24 22:36:27 -04:00
Storm Dragon c3a9b05392 Announce participant joins and leaves 2026-05-21 22:42:52 -04:00
Storm Dragon 965347cad4 Checkpoint audio-only Skald fork work 2026-05-18 13:06:57 -04:00
Storm Dragon bda0e548d3 Rebrand project as Skald 2026-05-17 22:16:08 -04:00
Juliusz Chroboczek 7bf098a57c Use binaryType=blob for file transfer.
This was the intended behaviour, but the default value changed
at some point.  This should in principle allow receiving files
larger than available RAM.
2025-08-21 22:55:41 +02:00
Juliusz Chroboczek c782102567 Remove stray debugging message. 2025-08-10 16:22:28 +02:00
Juliusz Chroboczek b88e2f4d93 Implement /sharescreen.
Also rename /stopshare to /unsharescreen.
2025-07-30 14:18:44 +02:00
Juliusz Chroboczek 48b9e82d3d Fix syntax of typing in protocol.js. 2025-03-23 22:05:54 +01:00
Juliusz Chroboczek 7ae11a8e54 More precise typing in TransferredFile.event. 2025-01-05 23:36:11 +01:00
Juliusz Chroboczek 192e6de6ef Remove onicecandidate callback when closing file transfer.
This avoids an unsightly warning when an ICE candidate arrives
late.
2024-12-02 13:52:57 +01:00
Juliusz Chroboczek 86eeb3d8cf Protect against sending a file to oneself.
When a user sends a file to oneself (which is only possible
as a chat command), then the two file transfer data structures
have the same id, which causes confusion.  We used to detect
this case too late, detect it earlier.

Thanks to J.-J. Sarton for the report.
2024-12-01 21:40:50 +01:00
Juliusz Chroboczek d85a6ea203 Add versioning to file transfer protocol. 2024-11-02 14:22:52 +01:00
Juliusz Chroboczek 1745b6294e Remove remainder of obsolete file transfer protocol. 2024-10-30 17:59:07 +01:00
Juliusz Chroboczek 1c71a73f8e Fix remainders of old file transfer protocol. 2024-10-28 15:55:09 +01:00
Juliusz Chroboczek eb72069c9b Add id to chat messages. 2024-08-17 16:56:06 +02:00
Juliusz Chroboczek 4fb0b3334a Simplify peer-to-peer file transfer. 2024-08-17 16:56:06 +02:00
Juliusz Chroboczek dd979652c2 Handle cancelled file transfer in initial callback.
If the client cancelled a file upload in the initial callback,
we would incorrectly proceed with the handshake.
2024-08-11 17:38:55 +02:00
Juliusz Chroboczek 242875e55c Implement a client-side timeout.
We already had a server-side timeout, but it didn't prevent
a client from hanging when it lost connectivity with the server.
2024-06-10 21:33:31 +02:00
Juliusz Chroboczek 7151fad149 Simplify the initial connection protocol.
The ServerConnection.connect method is no longer async,
we rely on the onconnected callback only.  The onconnected
callback is now only called after the initial handshake
completes.  There is a new onerror callback.
2024-06-10 21:12:47 +02:00
Juliusz Chroboczek 0fc9136774 Allow HTML elements in addToChatbox. 2023-12-08 23:41:51 +01:00
Juliusz Chroboczek cc2ed14484 Reset c.sc after calling onclose.
The onclose callback might want to access c.sc.
2023-08-29 01:42:48 +02:00
Juliusz Chroboczek 892a4b8401 Fix parsing of server version. 2023-08-28 23:07:01 +02:00
Jackson Vieira 1ad91adf89 Fix audio activity detection for downstreams
Replaced the non-existent `track` property in `RTCStatsType`
with the valid `inbound-rtp` property.
2023-08-28 22:47:46 +02:00
Juliusz Chroboczek a701d8c6fa Remove client-side support for protocol version 1. 2023-07-16 15:54:58 +02:00
Juliusz Chroboczek e786e1bd11 Pass file transfer cancel message to callback. 2023-04-28 16:57:00 +02:00
Juliusz Chroboczek ac1dc77b30 Reconnect when server complains about a username.
If a token does not specify a username, the server will request
one by failing the join message.  Disconnect from the WebSocket
in that case, and display the login dialog with the password
field invisible.
2023-04-04 01:22:05 +02:00
Juliusz Chroboczek 8c1510023f Implement user interface for token management. 2023-04-04 01:22:05 +02:00
Juliusz Chroboczek 59ff25310d Don't set group if joining failed.
We used to set sc.group even if joining failed, which would cause
us to spuriously call the onJoined callback when we disconnected.
2023-04-03 22:57:36 +02:00
Juliusz Chroboczek 58ef60f974 Minor tweaks to file transfer.
Avoid copying data when sending, improve error handling.
2023-01-22 22:24:51 +01:00
Juliusz Chroboczek fae045fb61 Client-side support for protocol version 2.
This does not yet support the new 'need-username' error.
2022-12-16 18:38:30 +01:00
Juliusz Chroboczek 397892d906 Add forgotten time field to message typedef. 2022-12-16 17:56:41 +01:00
Juliusz Chroboczek 56baddc948 Make groupAction take an arbitrary parameter. 2022-10-23 16:04:10 +02:00
Juliusz Chroboczek 533e4b9b32 Version the protocol.
The handshake message now contains a list of supported protocol
versions.  Version mismatch is currently a warning, but it will be a
hard error in the future.
2022-09-02 14:30:51 +02:00
Jeroen van Veen a21134d310 Fix usage of serverConnection in protocol.js
serverConnection is the global value in galene.js.
2022-08-29 20:15:19 +02:00
Juliusz Chroboczek c5e5455e47 Document file transfer javascript. 2022-08-04 19:14:35 +02:00
Juliusz Chroboczek b821cd71a9 Check MIME type in auth server response. 2022-08-03 15:00:50 +02:00
Juliusz Chroboczek d69c517137 Allow auth server to fallback to password auth.
The authorisation server can now reply with 204 (no content)
in order to request that the client should continue with password
authentication.
2022-08-02 18:12:17 +02:00
Juliusz Chroboczek 3bdd82f06d Rework file transfer.
Split into the protocol (in protocol.js) and the user interface
(in galene.js).  Make the state automaton explicit, and improve
error-handling.  The new protocol is incompatible with the old one.
2022-07-25 18:54:52 +02:00
Juliusz Chroboczek eb21c1ab20 Maintain stream information for oneself.
We used to maintain stream information for all users except oneself.
2022-03-25 18:21:03 +01:00
Juliusz Chroboczek e303992e45 Call onuser when deleting stream. 2022-03-25 17:04:31 +01:00
Juliusz Chroboczek 55ae4a684b Remove parameter from the onpeerconnection callback.
The distinction is not likely to be useful, and it doesn't make
sense in all cases.
2022-03-23 00:11:12 +01:00
Juliusz Chroboczek 8d4bafe05c Tweak documentation of protocol.js. 2022-03-23 00:08:16 +01:00
Juliusz Chroboczek 34b21a2598 Add preference forceRelay.
This may be useful to get around network blocks in some cases.
2022-03-22 18:23:16 +01:00
Juliusz Chroboczek d798cfec75 Fix simulcast statistics display for Firefox.
Firefox doesn't include the rid in the statistics result.
Use the SSID instead.
2022-03-20 22:34:39 +01:00
Juliusz Chroboczek a86fb08f6c Replace ClientPermissions with a list of strings.
Now that we support external auth, the permissions list is
open-ended.  Make it a list for simplicity.
2022-02-19 23:44:57 +01:00
Juliusz Chroboczek 03811db37d Implement token authentication. 2022-02-18 13:35:17 +01:00
Juliusz Chroboczek 14ca47651b Fix data parameter of ServerConnection.join.
This was broken when we renamed status to data.  Thanks to
Sylvie Tissot.
2022-02-05 13:48:05 +01:00
Juliusz Chroboczek 24187430e8 Rename client status to data, add group data.
We now distinguish between status, which is maintained by the server,
and data, which is provided by the client.  In addition to client data,
we now support group data.
2022-01-29 23:28:08 +01:00
Juliusz Chroboczek 710cc3cc14 Add ability to set initial user status.
Setting the status after joining (using the "setstatus" action)
may cause multiple "user" messages to be sent to clients.  Add
the ability to set the initial status at join time.
2022-01-28 22:21:19 +01:00
Juliusz Chroboczek 29b4734bc4 Adapt typing to TypeScript 4.5.4. 2022-01-25 01:22:59 +01:00