Commit Graph
65 Commits
Author SHA1 Message Date
myxeliumandCursor e45e165a6f style: drop the remaining member-ordering disable
Same dead rule as the previous style pass, missed because this file disables
several rules on one line.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 03:21:02 +02:00
myxelium 92c2f578e2 fix(voice): route media on evidence and switch devices without dropping the call
Outgoing voice was gated on the observer's roster copy of the remote user's
voice state, which is signaling gossip. The signal server broadcasts
`user_left` for any socket it declares dead, so a suspended laptop or a flaky
hop wiped that copy and the observer detached its microphone from a peer that
never left the channel - a silent member with no way back through the UI.

`decideVoicePathRouting` now closes a path only on positive evidence: we left
voice, the peer itself reported another channel or none, or the connection is
gone. Missing gossip holds an established path instead. Opening still needs
confirmation, so a guess never starts sending; the same rule gates playback,
camera video, and the microphone a new connection puts in its first offer.
Peers are also asked for their voice state when a connection or data channel
comes up, so a rebuilt path re-confirms itself.

Alongside it, the microphone can be switched mid-call: capture moves to a
device service and rules, the live track is swapped with `replaceTrack` so
the session is never renegotiated, and the speaking indicator follows the new
stream.
2026-08-14 03:19:29 +02:00
myxelium a83f5aa750 fix(realtime): survive signal outages and per-server identities
Peer recovery burned its whole retry budget while signaling was down, then
dropped the tracker with no re-arm, so a peer stayed dead until an unrelated
roster event healed it. Recovery now waits for a usable transport before
spending an attempt.

Initiator election also compared a home actor id against foreign roster ids,
which is not antisymmetric across signal servers - both sides offered, or
neither did. Election moves into `peer-role.rules` and compares ids only
within one signal server's identity space.
2026-08-14 03:19:29 +02:00
myxelium d71e3a98da style: drop obsolete member-ordering eslint disables
`@typescript-eslint/member-ordering` is off repo-wide because bulk member
reordering breaks Angular inject()/field init order, so the per-file disables
are dead weight. Removing them left a blank first line, stripped here too.
2026-08-14 03:19:29 +02:00
myxeliumandCursor d3d22846e7 fix: Bug - User login status showing as both logged in and logged out
Stop treating transient auth_required as home-session expiry, keep auth scope
consistent across login redirect and server-rail joins, and leave /login when
the in-memory user is still authenticated.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-14 01:54:01 +02:00
myxelium 59dfd2de85 perf: performance improvements 1 2026-07-14 01:34:33 +02:00
myxelium edc4d935d8 chore: Fix app 2026-07-14 00:41:05 +02:00
myxeliumandCursor fa45052432 fix: Bug - Sending files and attachment issues
Hydrate playable media after disk receive, relay file-announce to sibling
devices via account_sync, bind DM attachments to pre-allocated message ids,
and improve gallery retry/cancel UX with bounded parallel auto-downloads.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-14 13:05:23 +02:00
myxeliumandCursor bb0ac930ad Improve attachment memory safety, downloads, and high-memory alert UX.
Queue Release Build / prepare (push) Successful in 20s
Deploy Web Apps / deploy (push) Successful in 9m2s
Queue Release Build / build-windows (push) Successful in 28m8s
Queue Release Build / build-linux (push) Successful in 47m26s
Queue Release Build / build-android (push) Successful in 19m52s
Queue Release Build / finalize (push) Successful in 4m42s
Stream large receives to disk with chunk acks to cap renderer RAM, evict
off-screen display blobs, and route exports through a disk-aware download
service. Fix the high-memory dialog (backdrop dismiss, copy, log actions),
allow diagnostics paths in the path jail, and restore persisted image
hydration after reload.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-14 00:25:22 +02:00
myxeliumandCursor c3c2f01cc6 fix: Bug - User automatically leaves voice after short period of time
Queue Release Build / prepare (push) Successful in 22s
Deploy Web Apps / deploy (push) Successful in 7m32s
Queue Release Build / build-linux (push) Successful in 44m56s
Queue Release Build / build-android (push) Successful in 18m52s
Queue Release Build / finalize (push) Successful in 21s
Queue Release Build / build-windows (push) Successful in 27m41s
Ignore stale P2P self-disconnect voice-state echoes while this client actively owns voice, refresh noise-reduction input on re-join, and repair dual-signal E2E harness expectations.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-12 04:04:31 +02:00
myxelium dac5cb42a5 perf: diagnoistics improvements 2026-06-12 01:22:01 +02:00
myxeliumandCursor 07e91a0d09 fix: Bug - Add logout in mobile version of settings, allow clearing data on android
Queue Release Build / prepare (push) Successful in 19s
Deploy Web Apps / deploy (push) Successful in 7m55s
Queue Release Build / build-linux (push) Successful in 47m3s
Queue Release Build / build-android (push) Successful in 20m33s
Queue Release Build / finalize (push) Successful in 3m48s
Queue Release Build / build-windows (push) Successful in 28m37s
Expose settings logout on mobile where the title bar is hidden, and enable
Capacitor data settings with storage visibility and local erase/sign-out.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-11 22:31:40 +02:00
myxeliumandCursor 6b9a39fe4a fix: Bug - Android app view is below titlebar and action bar on android
Respect Android system bar insets with safe-area shell padding, inset-aware modal and bottom-sheet layouts, transparent edge-to-edge themes, and a Capacitor SystemBars refresh on mobile startup.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-11 21:24:48 +02:00
myxeliumandCursor a01abbb1bf fix: Bug - Android app is zoomed in
Scale launcher and splash brand assets to the adaptive-icon safe zone and a smaller splash ratio so circular launcher masks and the launch splash no longer crop the cat face.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-11 21:20:01 +02:00
myxeliumandCursor bdea95511d fix: Bug - Android app doesn't ask for permissions
Prompt for microphone, camera, and notification runtime permissions during Capacitor startup, and fall back to WebView getUserMedia when the native preflight bridge fails so voice joins still surface Android permission dialogs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-11 21:06:51 +02:00
myxeliumandCursor 31962aeb1a fix: restore build and stabilize E2E cross-signal behavior
Revert the automated member-ordering pass that broke Angular field init
(TS2729) and disable that rule until a safe reorder strategy exists.
Fix modal/confirm dialog i18n defaults via template fallbacks, search all
active endpoints (including offline), register foreign rooms with actor
owner IDs, sync profile display names from avatar summaries, and guard
dm-chat when a private call converts to a group conversation.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-11 12:16:40 +02:00
myxeliumandCursor 79c6f91cd6 chore: enforce lint across codebase and ban "maybe" in identifiers
Remove member-ordering and complexity eslint-disable comments by reordering
class members and applying targeted fixes. Add metoyou/no-maybe-in-naming,
type-safe WebRTC e2e harness helpers, and resolve remaining lint errors so
npm run lint exits cleanly.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-11 11:08:26 +02:00
myxelium b630bacdc6 test: fix most e2e tests 2026-06-11 10:21:28 +02:00
myxeliumandCursor 1671a04f03 fix: Bug - Emojis should be user bound not client bound
Bind custom emoji library membership to the signed-in user instead of the
client. CustomEmojiService now tracks saved emoji ids per user id in
localStorage (metoyou_custom_emoji_saved:<userId>) and the picker only shows
the active user's set, seeded on first load from legacy savedByUser rows the
user created. This stops a second account on the same client (or Electron's
shared SQLite database) from inheriting another user's emoji picker, while
keeping synced assets available for message rendering.

Adds unit coverage for per-user scoping and a single-page-load Playwright e2e
that switches users client-side (second user joins the first user's server)
and asserts no library leak.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-11 04:09:06 +02:00
myxeliumandCursor 182828bb1e fix: Bug - Two devices sharing same user says "Shared from your device"
Gate the "Shared from your device" label and the hidden download
affordance on whether this device actually holds the file bytes, not on
whether the current user uploaded it. uploaderPeerId is the user id, so
the old check claimed ownership on every device of the uploader,
blocking view/download on second devices that only synced metadata.

Also include attachment metadata in the account_sync chat-sync-batch so
sibling devices learn about synced attachments at all.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-11 03:29:47 +02:00
myxelium 49b602dbda fix: Bug - No android app icon 2026-06-11 03:03:10 +02:00
myxelium d174536272 fix: Chats doesn't sync for multi client users 2026-06-11 00:04:49 +02:00
myxelium d0aff6319d fix: should now sync with other devices
Queue Release Build / prepare (push) Successful in 25s
Deploy Web Apps / deploy (push) Successful in 7m8s
Queue Release Build / build-windows (push) Successful in 28m10s
Queue Release Build / build-linux (push) Successful in 44m38s
Queue Release Build / build-android (push) Successful in 18m36s
Queue Release Build / finalize (push) Successful in 1m40s
2026-06-09 22:00:39 +02:00
myxelium eb51f043ac fix: Major bug cleanup pass 1
Queue Release Build / prepare (push) Successful in 19s
Deploy Web Apps / deploy (push) Successful in 8m12s
Queue Release Build / build-windows (push) Successful in 27m44s
Queue Release Build / build-linux (push) Successful in 48m1s
Queue Release Build / finalize (push) Successful in 2m42s
Queue Release Build / build-android (push) Successful in 22m7s
2026-06-09 17:59:54 +02:00
myxelium 80d7728e66 fix: No longer displays edited on all messages and fix Disconnected from signaling server on multiple clients
Queue Release Build / prepare (push) Successful in 19s
Deploy Web Apps / deploy (push) Successful in 8m19s
Queue Release Build / build-windows (push) Successful in 27m48s
Queue Release Build / build-linux (push) Successful in 47m35s
Queue Release Build / build-android (push) Successful in 21m15s
Queue Release Build / finalize (push) Successful in 2m30s
2026-06-07 15:05:12 +02:00
myxelium 83456c018c fix: Fix multiple bugs with new authentication flow 2026-06-07 15:04:21 +02:00
myxelium 45675192a5 feat: Security 2026-06-05 18:34:01 +02:00
myxelium ee293d7daf feat: Rename to Toju and add translation
Deploy Web Apps / deploy (push) Successful in 5m52s
Build Android APK / build-android-apk (push) Failing after 23m15s
Queue Release Build / prepare (push) Successful in 1m42s
Queue Release Build / build-linux (push) Failing after 9m33s
Queue Release Build / build-windows (push) Successful in 26m5s
Queue Release Build / finalize (push) Has been skipped
2026-06-05 17:17:29 +02:00
myxelium 8ecfc9a1fe feat: Add slashcommand api 2026-06-05 17:12:26 +02:00
myxelium a675f12e61 feat: Add deafen to pc, fix mobiel view, fix freeze on startup 2026-06-05 15:27:06 +02:00
myxelium 9a1305f976 feat: Android APP V1 - Experimental Alpha 2026-06-05 07:40:25 +02:00
myxelium bf4e6891d1 feat: signal server tag 2026-06-05 06:16:02 +02:00
myxelium 6865147e8f feat: Add emoji and alot of other fixes 2026-06-05 05:40:18 +02:00
myxelium 2f6c52e73c feat: dashboard 2026-06-05 01:51:03 +02:00
myxelium 155fe20862 wip: optimizations 2026-05-23 15:28:40 +02:00
myxelium 54e8b9a5e4 feat: Update how messages load and sync, allow plugins to import messages
Queue Release Build / prepare (push) Successful in 23s
Deploy Web Apps / deploy (push) Successful in 7m36s
Queue Release Build / build-windows (push) Successful in 28m3s
Queue Release Build / build-linux (push) Successful in 44m14s
Queue Release Build / finalize (push) Successful in 39s
2026-05-18 23:21:09 +02:00
myxelium afb64520ed perf: server navigation 2026-05-18 19:38:08 +02:00
myxelium 0152ed9dd2 fix: memory leak hunting and reconnecting on data error 2026-05-18 19:37:30 +02:00
myxelium ecb1a4b3a0 refactor: Remove hardcoded values
Queue Release Build / prepare (push) Successful in 2m28s
Deploy Web Apps / deploy (push) Successful in 7m58s
Queue Release Build / build-linux (push) Successful in 46m59s
Queue Release Build / build-windows (push) Successful in 26m2s
Queue Release Build / finalize (push) Successful in 23s
2026-05-17 18:18:14 +02:00
myxelium 8631290c01 fix: Improve plugin ui entry points, Fix chat scroll, fix notifications, fix user rights 2026-05-17 16:09:16 +02:00
myxelium 9d0a4478b2 Repair connectivity correctly v1 2026-05-17 15:15:14 +02:00
myxelium e769a6ee4a Fix private calls 2026-05-17 15:14:52 +02:00
myxelium a49e18b9f0 fix: recurriing network issue
Queue Release Build / prepare (push) Successful in 18s
Deploy Web Apps / deploy (push) Successful in 6m32s
Queue Release Build / build-windows (push) Successful in 26m8s
Queue Release Build / build-linux (push) Successful in 40m18s
Queue Release Build / finalize (push) Successful in 42s
2026-04-30 04:04:34 +02:00
myxelium fa2cca6fa4 fix: improve plugins functionality with server management 2026-04-29 20:33:54 +02:00
myxelium b8f6d58d99 test: repair broken tests 2026-04-29 19:05:38 +02:00
myxelium e1ac1d1bc0 feat: server image 2026-04-29 18:54:08 +02:00
myxelium ec3802ade6 test: fix broken dm test
Queue Release Build / prepare (push) Successful in 23s
Deploy Web Apps / deploy (push) Successful in 6m5s
Queue Release Build / build-windows (push) Successful in 17m1s
Queue Release Build / build-linux (push) Successful in 29m15s
Queue Release Build / finalize (push) Successful in 38s
2026-04-27 22:48:45 +02:00
myxelium bc2fa7de22 fix: multiple bug fixes
isolated users, db backup, weird disconnect issues for long voice sessions,
2026-04-26 22:54:13 +02:00
myxelium 44588e8789 feat: Add TURN server support
Queue Release Build / prepare (push) Successful in 15s
Deploy Web Apps / deploy (push) Successful in 5m35s
Queue Release Build / build-linux (push) Successful in 24m45s
Queue Release Build / build-windows (push) Successful in 13m52s
Queue Release Build / finalize (push) Successful in 23s
2026-04-18 21:27:04 +02:00
myxelium 167c45ba8d test: Add 8 people voice tests 2026-04-18 14:24:11 +02:00