This website requires JavaScript.
22b01c35f5
feat(server): DISABLE_RATE_LIMITS env replaces NODE_ENV-based bypass
Jannis Braun
2026-05-04 00:17:10 +02:00
f4c9ed880f
test(federation-identity): #9 unreachable / #10 no_active_peer
Jannis Braun
2026-05-04 00:14:09 +02:00
b5df3d5075
test(federation-identity): #7 #8 — owned-spaces 409 + transfer-and-retry
Jannis Braun
2026-05-04 00:13:14 +02:00
22daaafb63
test(federation-identity): #2 #4 #6 — all-remotes fan-out variants
Jannis Braun
2026-05-04 00:06:44 +02:00
3c0e024213
test(harness): document why peerInstances inserts two rows per direction
Jannis Braun
2026-05-03 23:57:18 +02:00
d55e85d2c5
feat(federation): PUBLIC_ORIGIN env override for getOurOrigin
Jannis Braun
2026-05-03 23:57:06 +02:00
c5e3d36689
test(federation-identity): #3 soft / #5 full — DB cascade verification + setup fixture
Jannis Braun
2026-05-03 23:46:20 +02:00
957cfd9094
test(federation-identity): #1 leave mode — registry cleaned, remote untouched, no S2S call
Jannis Braun
2026-05-03 23:38:02 +02:00
b62ffdf03b
test(federation-identity): #11 invalid mode / #12 empty origins
Jannis Braun
2026-05-03 23:35:15 +02:00
2df346cf03
test(federation-identity): scaffold + harness boot smoke
Jannis Braun
2026-05-03 23:34:57 +02:00
a2fadf7e93
test(harness): wsListener helper for capturing real WS events
Jannis Braun
2026-05-03 23:30:39 +02:00
e06b5fec3c
test(harness): testUsers helpers — registerLocal + createFederatedUser via production endpoints
Jannis Braun
2026-05-03 23:26:47 +02:00
5fe6e7f225
test(harness): hmacSign + seedSpaceWithStubOwner helpers
Jannis Braun
2026-05-03 23:21:53 +02:00
e95d3ef065
test(harness): read-only DB inspector helpers
Jannis Braun
2026-05-03 23:20:59 +02:00
db70064a5a
test(harness): seedPeer helpers — peer pair + unreachable peer
Jannis Braun
2026-05-03 23:20:30 +02:00
cd6c51f893
test(harness): N-remote child-process harness + log-tail helpers
Jannis Braun
2026-05-03 23:11:11 +02:00
c25aecc81b
chore: add test scripts for federation identity deletion suite
Jannis Braun
2026-05-03 23:07:37 +02:00
f661d112fa
chore: gitignore tests/.tmp/ and tests/reports/ scratch dirs
Jannis Braun
2026-05-03 23:07:22 +02:00
35072dc11f
docs: correct soft-mode purge claim — orphaned DMs always purge regardless of mode
Jannis Braun
2026-05-03 23:03:09 +02:00
03165a3b7d
feat(server): test-only seed-peer route gated by NODE_ENV+ENABLE_TEST_ROUTES
Jannis Braun
2026-05-03 22:54:43 +02:00
3dbf4dab5e
feat(server): DISABLE_FEDERATION_WORKERS env gate for test isolation
Jannis Braun
2026-05-03 22:46:17 +02:00
2b0f93ec62
polish(desktop): rename userData folder to Backspace with first-launch migration
Jannis Braun
2026-05-03 14:36:34 +02:00
309484dca9
fix(testing): smoke-recovery.sh — correct userData path, http.server scenarios, missing helper
Jannis Braun
2026-05-03 14:02:05 +02:00
833dedd4a1
fix(desktop): boot-timer race — handle rendererReady ping arriving before arm
Jannis Braun
2026-05-03 13:51:04 +02:00
7e30db3773
feat(testing): smoke-test script + VITE_FORCE_BOOT_STALL gate
Jannis Braun
2026-05-03 13:21:54 +02:00
fff39f8d76
polish(desktop): non-destructive Change Instance + recovery enter/exit logs
Jannis Braun
2026-05-03 13:16:55 +02:00
cff9a8e2cf
polish(desktop): final cross-cutting fixes
Jannis Braun
2026-05-03 12:19:51 +02:00
6356e2e526
docs(desktop): document Recovery Mode and updated Auto-Update integration
Jannis Braun
2026-05-03 12:13:15 +02:00
d21459129c
polish(desktop): recovery.html — await version alongside state in init
Jannis Braun
2026-05-03 12:09:06 +02:00
d2a225a4b9
feat(desktop): add recovery.html UI page
Jannis Braun
2026-05-03 12:05:40 +02:00
6929c460aa
feat(web): ping rendererReady from App.tsx and ErrorBoundary
Jannis Braun
2026-05-03 12:01:28 +02:00
ece81a2b71
feat(desktop): add recovery bridge methods to preload + types
Jannis Braun
2026-05-03 11:57:51 +02:00
d8266e62da
feat(desktop): wire auto-updater events into recovery store
Jannis Braun
2026-05-03 11:52:21 +02:00
56677da8ad
refactor(desktop): pass trayActions to buildAppMenuTemplate, remove appMenuActions duplication
Jannis Braun
2026-05-03 11:49:42 +02:00
bb25a3ba5e
feat(desktop): wire recovery store into main process
Jannis Braun
2026-05-03 04:30:58 +02:00
1c4bde3029
feat(desktop): attach Electron webContents handlers for recovery detection
Jannis Braun
2026-05-03 04:25:03 +02:00
0c489701fc
feat(desktop): add enterRecoveryMode and recovery action funnel
Jannis Braun
2026-05-03 04:20:22 +02:00
323b9017d7
feat(desktop): add boot-completion timer with packaged-only and URL-protocol guards
Jannis Braun
2026-05-03 04:16:22 +02:00
a9122d1fdf
feat(desktop): add macOS app menu template builder
Jannis Braun
2026-05-03 04:12:28 +02:00
172f53e3a5
feat(desktop): add tray menu template builder with state-driven labels
Jannis Braun
2026-05-03 04:10:11 +02:00
b5273b596a
feat(desktop): add extractErrorCode helper for updater errors
Jannis Braun
2026-05-03 04:07:46 +02:00
d3b3abacff
harden(desktop): RecoveryStateStore listener safety + frozen state
Jannis Braun
2026-05-03 04:06:43 +02:00
15dfa0a68c
feat(desktop): add RecoveryStateStore with subscriber lifecycle
Jannis Braun
2026-05-03 04:03:07 +02:00
dcbae46e0e
refactor(desktop): extract instance-URL helpers to instanceUrl.ts
Jannis Braun
2026-05-03 03:58:00 +02:00
3dc3043faf
Merge branch 'feature/audio-device-ux': polish audio device UX
Jannis Braun
2026-05-03 02:31:27 +02:00
19d42445b0
polish(web): clear device lists on permission revoke; document probe-constraint omission
Jannis Braun
2026-05-03 02:09:13 +02:00
4044e910c3
docs(voice): add Audio Device Selection section parallel to Camera Device Selection
Jannis Braun
2026-05-03 02:01:09 +02:00
6905071459
refactor(web): UserAreaPanel uses useAudioDevices — kills unconditional getUserMedia probe; reuses shared DropdownItem
Jannis Braun
2026-05-03 01:56:24 +02:00
ff8dcc28ea
feat(web): wire AudioInput/Output sections into Voice & Video settings; fix EC tooltip
Jannis Braun
2026-05-03 01:52:20 +02:00
5b8af14e12
feat(web): AudioOutputSection — output picker, volume, test tone, lifecycle-aware sinkId check
Jannis Braun
2026-05-03 01:47:49 +02:00
8e67f1d553
fix(web): mic meter reacts to AudioContext lifecycle; extract picker primitives
Jannis Braun
2026-05-03 01:43:01 +02:00
3aea8210bd
feat(web): AudioInputSection — full input picker with level meter and resolved-default hint
Jannis Braun
2026-05-03 01:37:37 +02:00
8907bb305d
fix(web): mic-loss recovery uses 'could not be restored' for unclassified errors
Jannis Braun
2026-05-03 01:35:07 +02:00
63bf9e684c
fix(web): mic-loss detection observes upstream stream, not published clone
Jannis Braun
2026-05-03 01:20:13 +02:00
9a26513009
feat(web): mic-track-loss recovery — probe, attempt re-acquire, toast
Jannis Braun
2026-05-03 01:09:04 +02:00
674d011d3c
fix(web): debounce devicechange handler and gate listener on baseline seeding
Jannis Braun
2026-05-03 01:05:37 +02:00
d992b2bb41
feat(web): seamless audio hot-plug — re-acquire live stream + toast new devices
Jannis Braun
2026-05-03 01:01:03 +02:00
2726cc5c5a
feat(web): expose AudioManager helpers for device introspection + test tone
Jannis Braun
2026-05-03 00:57:26 +02:00
a1ebb23264
feat(web): add useAudioDevices hook for permission-aware audio enumeration
Jannis Braun
2026-05-03 00:51:20 +02:00
c0e71b1ded
fix(federation): hydrate downloads replicated avatars locally + backfill stale URL rows
Jannis Braun
2026-05-02 22:45:27 +02:00
c0fd7e3a75
feat(web): home tile uses primary purple when active/hovered, grey when idle
Jannis Braun
2026-05-02 22:12:18 +02:00
12a71a12d4
fix(web): close writable on download pause/abort so partial bytes flush (resume continues from offset)
Jannis Braun
2026-05-02 21:13:09 +02:00
f33ebe2aa7
chore(web): drop unused React import; static-import idbHandles consistently
Jannis Braun
2026-05-02 20:54:50 +02:00
bc32eccc2d
fix(server): CORS allows tus headers (federated uploads no longer blocked at preflight)
Jannis Braun
2026-05-02 20:42:02 +02:00
3a050f475b
fix(web): tus uploads use per-origin token (federation auth)
Jannis Braun
2026-05-02 20:37:17 +02:00
33cfc66ac4
fix(web): boot rehydrate normalizes transfers; paused has its own visual
Jannis Braun
2026-05-02 19:10:29 +02:00
61be9d013f
fix(web): hide Retry when blob unavailable; failed-state surfaces actionable error
Jannis Braun
2026-05-02 18:58:05 +02:00
2f0940c30b
feat(admin): manual cleanup of stale tus upload sessions + visibility
Jannis Braun
2026-05-02 18:44:19 +02:00
4e5a440176
fix(web): server-side DELETE for failed/discarded uploads (no janitor wait)
Jannis Braun
2026-05-02 18:22:45 +02:00
dd91f5f349
fix(web): retry-after-abort starts fresh tus session; preserve File past abort
Jannis Braun
2026-05-02 18:18:07 +02:00
61dea725a3
fix(web): polish failed-upload row — pill-shaped, content-width, proper button affordance
Jannis Braun
2026-05-02 18:11:31 +02:00
a58b7459fb
fix(web): in-session pause/resume preserves File ref; aborted transfers flip bubble to failed
Jannis Braun
2026-05-02 18:03:12 +02:00
403c6e9075
fix(web): orchestrator dispatches eager-upload bubbles via pendingMessageStore subscribe
Jannis Braun
2026-05-02 17:52:05 +02:00
b8da1c1778
docs(design): tray as .glass popover; radial-progress ring primitive
Jannis Braun
2026-05-02 17:16:26 +02:00
38a3d4fba8
docs(api,federation): tus upload endpoints; federation worker boundary note
Jannis Braun
2026-05-02 17:16:00 +02:00
fb7add4f83
docs(uploads): tus protocol, three-store architecture, download pipeline, capability matrix
Jannis Braun
2026-05-02 17:15:38 +02:00
348800bfca
feat(web): channel-header transfer indicator + global tray panel
Jannis Braun
2026-05-02 17:11:41 +02:00
0be69808e4
feat(web): right-click Save Video / Save Audio via transferStore
Jannis Braun
2026-05-02 17:07:39 +02:00
aaa15cef88
feat(web): file-card download routes through transferStore
Jannis Braun
2026-05-02 17:06:26 +02:00
d3f45dbda4
feat(web): saveImage routes through transferStore
Jannis Braun
2026-05-02 17:05:51 +02:00
2be243336b
feat: all profile uploads through transferStore; delete legacy POST /api/uploads
Jannis Braun
2026-05-02 16:46:29 +02:00
727c51f659
feat(web): RegisterPage avatar uses transferStore + waitForTransfer helper
Jannis Braun
2026-05-02 16:40:50 +02:00
48d199515a
feat(web): chatStore dedups WS echo against pendingMessageStore (FIFO)
Jannis Braun
2026-05-02 16:37:22 +02:00
e534644e57
feat(web): Message renders pending-bubble overlay + retry/discard chrome
Jannis Braun
2026-05-02 16:31:53 +02:00
7b6586110d
feat(web): MessageList interleaves pending bubbles by createdAtLocal
Jannis Braun
2026-05-02 16:22:33 +02:00
b97326ef18
feat(web): MessageInput uses composerStore + transferStore (eager upload, FS handles)
Jannis Braun
2026-05-02 16:09:24 +02:00
65d8a19c87
feat(web): AttachmentProgress overlay component
Jannis Braun
2026-05-02 16:02:47 +02:00
5128a625b8
feat(web): pending-message orchestrator (TTL discard, deferred send, online retry)
Jannis Braun
2026-05-02 15:53:23 +02:00
b01ad4edb8
feat(web): pendingMessageStore with FIFO dedup matcher and TTL discard
Jannis Braun
2026-05-02 15:45:06 +02:00
c986f734ee
feat(web): composerStore (per-channel draft + staged transfer ids)
Jannis Braun
2026-05-02 15:37:08 +02:00
2864d84a0f
feat(web): transferStore.startDownload + pause/resume/abort with FS-handle path
Jannis Braun
2026-04-30 02:16:38 +02:00
bde00e2d9f
feat(web): transferStore upload + resume via tus-js-client
Jannis Braun
2026-04-30 02:11:43 +02:00
bdfe7b453a
feat(web): transferStore skeleton with versioned persistence
Jannis Braun
2026-04-30 02:06:17 +02:00
054f063f1f
feat(web): IDB persistence + capability detection for FileSystemFileHandle
Jannis Braun
2026-04-30 02:03:01 +02:00
097976538d
deps(web): add tus-js-client, idb, fake-indexeddb
Jannis Braun
2026-04-30 02:00:43 +02:00
2e6dabd7ff
feat(server): janitor sweeps for tus expired uploads and stragglers
Jannis Braun
2026-04-30 01:56:39 +02:00
974fbf759e
feat(server): tus upload endpoint at /api/files with auth, ownership, size, finalize hooks
Jannis Braun
2026-04-30 01:24:45 +02:00
21022eaa73
feat(server): tus hook helpers (metadata parse, extension extract, ownership check)
Jannis Braun
2026-04-30 01:13:45 +02:00
9902130916
feat(server): config keys for tus upload directory and expiration
Jannis Braun
2026-04-30 01:11:34 +02:00
4477554f8a
deps(server): add @tus/server and @tus/file-store
Jannis Braun
2026-04-30 01:08:26 +02:00