Commit Graph

  • 3f75ff6e36 ci(security): add CodeQL SAST workflow (javascript-typescript) Jannis Braun 2026-07-12 23:27:35 +02:00
  • 74ae929ab4 ci(security): add report-only security scan workflow (gitleaks, OSV, Trivy) Jannis Braun 2026-07-12 23:25:26 +02:00
  • 807afba45a ci(security): add Dependabot config (npm + actions + docker) Jannis Braun 2026-07-12 23:23:27 +02:00
  • 1e6c7c6042 Enhance Windows dev support (#13) BadAtCaptchasandJannis Braun 2026-07-12 07:10:43 -04:00
  • 43cab41e60 fix(spaces): clearer 403 for non-members on invite endpoint (#14) TheZwissandBadAtCaptchas 2026-07-12 12:51:37 +02:00
  • d76e06a023 refactor(federation): consolidate inbound S2S-auth preamble into one helper (#11) TheZwiss 2026-07-10 03:08:09 +02:00
  • c79bf91398 refactor(server): dedupe federation rate limiters and response signing (#10) TheZwiss 2026-07-10 02:23:14 +02:00
  • 94fe73522d refactor(server): split federation routes into cohesive modules (#9) TheZwiss 2026-07-10 02:08:03 +02:00
  • 180228f2d1 ci: bump actions to Node 24 runtimes to clear deprecation warning (#8) TheZwiss 2026-07-10 01:02:47 +02:00
  • c7d88481ad test: give federation integration suites a realistic per-test timeout (#7) TheZwiss 2026-07-10 00:51:18 +02:00
  • 9b6d1b18eb Fix federated attachment downloads allowing SSRF via redirects (#1) BadAtCaptchasandJannis Braun 2026-07-09 18:27:05 -04:00
  • 628e4dec3e ci: run typecheck, build & tests on PRs and main (#6) TheZwiss 2026-07-10 00:15:41 +02:00
  • 0727d5a3b3 Add landing page and Pages deploy workflow TheZwiss 2026-07-08 00:45:31 +02:00
  • 3513a3dde9 docs: tighten public copy, add comparison, templates, and social preview TheZwiss 2026-07-07 23:39:33 +02:00
  • 95b545d8b2 chore(deploy): allow a gitignored local override for deploy targets Jannis Braun 2026-07-07 19:44:26 +02:00
  • 85e1975fa5 fix(permissions): deny space permissions to non-members (invite-bypass) Jannis Braun 2026-07-07 19:44:16 +02:00
  • 26bb0be7af @BadAtCaptchas has signed the CLA in TheZwiss/backspace#1 github-actions[bot] 2026-07-07 14:36:01 +00:00
  • e27e52f267 Creating file for storing CLA Signatures github-actions[bot] 2026-07-07 14:35:11 +00:00
  • 531b496618 feat(deploy): three deployment modes + prebuilt multi-arch image for robust self-hosting Jannis Braun 2026-07-06 13:36:29 +02:00
  • e7f41b5609 fix(desktop): don't let uiohook-napi rebuild abort the whole workspace install Jannis Braun 2026-07-06 01:52:06 +02:00
  • 24accc3647 docs(env): make the JWT_SECRET requirement explicit in .env.example Jannis Braun 2026-07-06 01:20:08 +02:00
  • 028005d487 fix(compose): fail fast on missing JWT_SECRET instead of a silent restart loop Jannis Braun 2026-07-06 01:12:14 +02:00
  • 9d3f72be75 chore: pin Node 20 (LTS) and pnpm 10.34.3 Jannis Braun 2026-07-06 01:04:59 +02:00
  • ef020601eb ci(release): build arm64 .deb with host-native fpm (USE_SYSTEM_FPM) v1.0.0 Jannis Braun 2026-07-03 13:54:56 +02:00
  • 9c293b9731 ci(release): fix native uiohook-napi build on Windows + Linux Jannis Braun 2026-07-03 13:47:29 +02:00
  • 90fe262676 docs(desktop): document unsigned-build auto-update status and CI release pipeline Jannis Braun 2026-07-03 13:28:37 +02:00
  • 45cee93e7d docs(readme): add desktop download section with per-platform install notes Jannis Braun 2026-07-03 13:28:37 +02:00
  • 70a648d209 ci(release): build Linux arm64 on native arm runner; pin unsigned mac builds Jannis Braun 2026-07-03 13:17:13 +02:00
  • 28b6fb677b Merge federation orphaned-account detach + sync-filtering + re-attach + DM reconciliation Jannis Braun 2026-07-03 13:11:23 +02:00
  • acde64a642 docs(federation/dm): re-attach 1-on-1 federatedId reconciliation + drift sweep Jannis Braun 2026-07-03 12:46:12 +02:00
  • 21c8731f3a feat(web): refetch DM list after re-attach so reconciled conversation replaces the split (reattach-dm-reconcile spec §3.4) Jannis Braun 2026-07-03 12:44:00 +02:00
  • 011a9be92a feat(federation): startup sweep reconciles drifted 1-on-1 DM federatedIds — heals pre-fix re-attaches (reattach-dm-reconcile spec §3.3) Jannis Braun 2026-07-03 12:36:17 +02:00
  • 0bb4ef8cad feat(federation): re-attach reconciles the account's 1-on-1 DM federatedIds inline (reattach-dm-reconcile spec §3.2) Jannis Braun 2026-07-03 12:34:18 +02:00
  • 1da44c8d6b feat(federation): reconcileDmChannelFederatedId — re-key/merge 1-on-1 DM channels on identity change (reattach-dm-reconcile spec §3.1) Jannis Braun 2026-07-03 12:28:21 +02:00
  • d3af4f2170 fix(federation): close re-attach final-review findings — client/server domain normalization, merge attachment repoint, empty-domain guard, test hardening Jannis Braun 2026-07-03 02:43:45 +02:00
  • 521aff6e52 docs(federation/auth/api/db/client): detached-account re-attach flow; reset-cleanup panel mentions re-attach Jannis Braun 2026-07-03 02:28:35 +02:00
  • 344a429e98 feat(web): automatic re-attach on connect + AccountPanel fallback action (re-attach spec §3.4) Jannis Braun 2026-07-03 02:19:51 +02:00
  • d45366c4ff feat(federation): owner-initiated detached-account re-attach — proof-gated re-bind with stub merge (re-attach spec §3.2, §3.3) Jannis Braun 2026-07-03 02:06:00 +02:00
  • 7bff6c1a1b feat(federation): outbound attach-proof verification + home-profile fetch helpers (re-attach spec §3.1) Jannis Braun 2026-07-03 01:54:50 +02:00
  • 093d5f3f26 docs(federation): document S2S verify-attach-proof endpoint (re-attach spec §3.1) Jannis Braun 2026-07-03 01:49:27 +02:00
  • af94f12389 feat(federation): S2S verify-attach-proof endpoint — single-use, peer-domain-bound, signed response (re-attach spec §3.1) Jannis Braun 2026-07-03 01:49:20 +02:00
  • 1c962ded12 feat(auth): attach-proof mint endpoint for detached-account re-attach (re-attach spec §3.1) Jannis Braun 2026-07-03 01:41:08 +02:00
  • 669d80d7c7 feat(federation): federation_attach_proofs table (re-attach spec §3.1) Jannis Braun 2026-07-03 01:36:30 +02:00
  • 70a68ebe1e docs(federation): sync relevance scoping, self-homed guard, deleted-snapshot flag, dead-incarnation sweep Jannis Braun 2026-07-03 01:13:33 +02:00
  • a0238eabc2 feat(federation): startup sweep removes dead-incarnation channels and self-homed stubs (dead-incarnation spec §3.4) Jannis Braun 2026-07-03 01:05:26 +02:00
  • 3591773a4c feat(federation): deleted flag on wire profile snapshots — tombstone markers never leave the instance (dead-incarnation spec §3.3) Jannis Braun 2026-07-03 00:59:37 +02:00
  • 5ffc7c565e feat(federation): sync endpoint scopes friend events to the requesting peer, pagination-safe (dead-incarnation spec §3.2) Jannis Braun 2026-07-03 00:50:31 +02:00
  • bd40058613 feat(federation): sync endpoint scopes DM channels to the requesting peer (dead-incarnation spec §3.2) Jannis Braun 2026-07-03 00:42:02 +02:00
  • 99c8361b75 feat(federation): receiver guard — never create replicated stubs homed at our own domain (dead-incarnation spec §3.1) Jannis Braun 2026-07-03 00:37:27 +02:00
  • 54ab660204 feat(federation): near-instant reset detection — probe epoch at the auth-failure transition + on worker startup Jannis Braun 2026-07-02 20:10:35 +02:00
  • 13d050c1bb fix(federation): close detached-account gaps from final review — presence/hydrate guards, ack re-detect clear, self-delete password (detach spec §4.3/§4.4/§4.6) Jannis Braun 2026-07-02 19:34:32 +02:00
  • 172398171a docs(systems): finish detach consolidation — federation.md §6.3b, database.md, stale comments (detach spec §8) Jannis Braun 2026-07-02 19:15:24 +02:00
  • 9e917d5117 feat(federation): account-settings notice for detached accounts (detach spec §4.7) Jannis Braun 2026-07-02 19:10:35 +02:00
  • 5ad8aefaff feat(federation): reset-cleanup panel — informational detach copy, real server-side Dismiss, Keep removed (detach spec §4.6) Jannis Braun 2026-07-02 19:06:21 +02:00
  • 42ad5e141d feat(federation): server-side acknowledge for reset events (acknowledged_at + admin endpoint) (detach spec §4.6) Jannis Braun 2026-07-02 18:59:33 +02:00
  • 7e1e32de69 feat(federation): detached accounts get local profile+password self-service; self-view flag (detach spec §4.4, §4.7) Jannis Braun 2026-07-02 18:54:37 +02:00
  • ea66ec5dbd test(federation): pin registration 409 + suffixed stub creation against detached accounts (detach spec §4.3.5) Jannis Braun 2026-07-02 18:47:29 +02:00
  • 68be2e26b1 feat(federation): S2S surfaces exclude detached accounts — tier-2, profile_update, identity delete (detach spec §4.3) Jannis Braun 2026-07-02 18:39:54 +02:00
  • d37919b5a0 feat(federation): reset heal detaches real accounts instead of freeze+rename (detach spec §4.2) Jannis Braun 2026-07-02 18:33:47 +02:00
  • 79c1138813 feat(federation): detached accounts keep local-password login; self-heal permanently disabled (detach spec §4.1) Jannis Braun 2026-07-02 18:28:55 +02:00
  • 1629f8fbe1 fix(dm): enforce read-only guard on DM reactions (WS) + harden purge/ownership tests Jannis Braun 2026-07-02 16:45:44 +02:00
  • e4e83eb3fb docs(dm): document Deleted-User DM tombstone semantics + heal broadcast Jannis Braun 2026-07-02 16:26:30 +02:00
  • 3da18bc87c test(dm): cover zero-other and mixed-others branches of isDeletedPartnerDm Jannis Braun 2026-07-02 16:22:44 +02:00
  • ae07ae66e4 feat(dm): read-only composer notice for Deleted-User 1-on-1 threads (C2) Jannis Braun 2026-07-02 16:20:38 +02:00
  • 2a0574ee6c test(dm): lock Deleted-User name resolution + updateUserEverywhere DM patch (C1) Jannis Braun 2026-07-02 16:02:44 +02:00
  • a380927e72 test(dm): assert JOIN users guard drops orphan author in DM membership backfill (S5 review) Jannis Braun 2026-07-02 16:00:19 +02:00
  • 3470bb1914 fix(dm): idempotent backfill restores pre-existing broken Deleted-User 1-on-1 threads (S5) Jannis Braun 2026-07-02 15:54:46 +02:00
  • d03f8e4f77 fix(federation): heal path broadcasts user_updated so tombstoned-stub DMs update live (S4) Jannis Braun 2026-07-02 15:50:08 +02:00
  • 3ebdd048bd feat(dm): read-only guard blocks message create/edit/delete in a Deleted-User 1-on-1 (S3) Jannis Braun 2026-07-02 15:43:07 +02:00
  • 12d8256f65 fix(dm): purge DMs with zero live members (exclude-uid, scoped) so dead-both threads clean up (S2) Jannis Braun 2026-07-02 15:37:33 +02:00
  • e5a1cc9506 fix(dm): keep 1-on-1 dm_members on tombstone, drop only group membership (S1) Jannis Braun 2026-07-02 15:32:04 +02:00
  • 411e9baaa9 docs(readme): drop redundant ELv2→AGPL relicensing note Jannis Braun 2026-07-02 13:40:10 +02:00
  • 6926bdb8f8 fix(federation): /peer/initiate handles needs_attention/awaiting_approval/rejected rows instead of 500ing Jannis Braun 2026-07-02 13:29:46 +02:00
  • 83ebc06759 docs(federation): document honest handshake contract; mark BUG-0/1/2/4/5 resolved Jannis Braun 2026-07-02 13:14:48 +02:00
  • cd28c0336c refactor(federation): store verified epoch as peer baseline; drop redundant assertion Jannis Braun 2026-07-02 13:07:35 +02:00
  • ad7c86e89e fix(web): Re-peer surfaces incomplete outcome instead of false success (BUG-2) Jannis Braun 2026-07-02 13:03:03 +02:00
  • c6f0e6f25d fix(federation): initiator handles 409 + verifies handshake before activating (BUG-1b/BUG-2) Jannis Braun 2026-07-02 12:56:26 +02:00
  • edcb4cb72a fix(federation): /peer/accept returns honest 409 instead of false 200 for existing peer (BUG-1a) Jannis Braun 2026-07-02 12:40:16 +02:00
  • 442811e600 test(federation): reproduce handshake desync BUG-1/BUG-2 over real handshake (RED) (BUG-0) Jannis Braun 2026-07-02 12:32:09 +02:00
  • 085670cff3 fix(federation): handshake sourceOrigin honors PUBLIC_ORIGIN (align with S2S auth origin) Jannis Braun 2026-07-02 12:31:02 +02:00
  • aa7bf5b532 test(federation): real-handshake two-instance harness helpers (BUG-0) Jannis Braun 2026-07-02 11:51:54 +02:00
  • df1e457971 feat(federation): add needs_attention_reason 'repeer_incomplete' (BUG-2 prep) Jannis Braun 2026-07-02 11:46:10 +02:00
  • fd0ff4d199 fix(federation): clear federation_home_orphaned on tombstone (BUG-5) Jannis Braun 2026-07-02 11:42:48 +02:00
  • 6de14b281b fix(federation): friend-add returns graceful 503 instead of 500 on peer lookup failure (BUG-3) Jannis Braun 2026-07-02 11:23:08 +02:00
  • 43d1dad1d7 fix(federation): carry error body on HttpError so Reset-cleanup owns-spaces copy reaches the UI Jannis Braun 2026-07-02 02:19:13 +02:00
  • 493deefc64 docs(federation): document instance-epoch self-healing (Phase 2) Jannis Braun 2026-07-02 02:09:19 +02:00
  • be7749b83f fix(federation): scope Reset-cleanup Remove owns-spaces detection to ownedSpaces payload Jannis Braun 2026-07-02 02:01:50 +02:00
  • 946255c4a1 feat(federation): admin Reset cleanup UI (Re-peer + Keep/Remove) Jannis Braun 2026-07-02 01:57:30 +02:00
  • 9d00cf024a feat(federation): client handler for federation_peer_reset_detected Jannis Braun 2026-07-02 01:51:18 +02:00
  • 290cd606c0 feat(federation): GET /reset-events admin endpoint + types Jannis Braun 2026-07-02 01:47:58 +02:00
  • ee52ff0c7b feat(federation): expose needsAttentionReason on peer API Jannis Braun 2026-07-02 01:43:12 +02:00
  • 732d146396 feat(federation): quarantine real accounts on reset heal (freeze + free-handle) Jannis Braun 2026-07-02 01:39:26 +02:00
  • e0a0d92fe7 feat(federation): login self-heal epoch guard (fetchPeerEpoch, fail-closed) Jannis Braun 2026-07-02 01:33:42 +02:00
  • 9b945ba5b7 feat(federation): freeze login for reset-orphaned federated accounts Jannis Braun 2026-07-02 01:27:47 +02:00
  • 954ff6e3dd Merge branch 'feat/federation-instance-epoch': federation instance-epoch split-brain self-healing (Phase 1) Jannis Braun 2026-07-02 00:57:13 +02:00
  • d8fec00905 feat(federation): detect peer reset on needs_attention peers (§4.1) Jannis Braun 2026-07-02 00:34:33 +02:00
  • 769ed64314 docs(federation): document instance-epoch self-healing (Phase 1) Jannis Braun 2026-07-02 00:20:43 +02:00
  • 7d8c9c9d8d feat(federation): peer_reset_pending guard during limbo window Jannis Braun 2026-07-01 22:32:40 +02:00
  • 7ef1ded116 test(federation): lock reset admissibility for peer_reset_detected peers Jannis Braun 2026-07-01 22:22:43 +02:00
  • 8ae8dcfd86 feat(federation): heal on re-peer with false-positive guard Jannis Braun 2026-07-01 22:17:14 +02:00