Commit Graph

  • 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
  • 45e1c88bdc feat(federation): reset detection (markPeerReset) via handshake + probe Jannis Braun 2026-07-01 22:09:43 +02:00
  • 3b1a0b64a3 feat(federation): relay envelope populates peer epoch baseline Jannis Braun 2026-07-01 21:58:03 +02:00
  • 8f60e92f94 feat(federation): deterministic baseline epoch-refresh worker Jannis Braun 2026-07-01 21:49:18 +02:00
  • bf74aa8bb2 feat(federation): signed /api/federation/epoch endpoint + caller Jannis Braun 2026-07-01 21:43:02 +02:00
  • 538519fcd2 feat(federation): exchange + store peer epoch on handshake Jannis Braun 2026-07-01 21:35:20 +02:00
  • 7acf48d0a4 feat(federation): shared epoch types + getInstanceId() Jannis Braun 2026-07-01 21:19:25 +02:00
  • d8f2b1a9c7 feat(federation): instance epoch schema + minting Jannis Braun 2026-07-01 21:11:34 +02:00
  • 807b2f6234 refactor(web): fold final-review polish into join modal feature Jannis Braun 2026-07-01 19:06:10 +02:00
  • cf9bcfbf1a docs(spaces): document discovery-first Join a Space modal Jannis Braun 2026-07-01 18:59:48 +02:00
  • 309abd86e2 feat(web): discovery-first Join a Space modal Jannis Braun 2026-07-01 18:56:56 +02:00
  • fc8df54cb0 feat(web): compact ExploreSpacePreviewCard for join modal Jannis Braun 2026-07-01 18:51:31 +02:00
  • e840dcbe40 refactor(web): SpaceCard uses shared useSpaceJoin hook Jannis Braun 2026-07-01 18:47:16 +02:00
  • 6c66af7a88 feat(web): add shared useSpaceJoin hook over exploreStore Jannis Braun 2026-07-01 18:42:45 +02:00
  • 215750cb7a fix(install): harden prereq/DNS paths against set -euo pipefail aborts Jannis Braun 2026-07-01 18:35:20 +02:00
  • 737402b5d2 docs(deployment): note install.sh commit injection + HTTPS reachability check Jannis Braun 2026-07-01 18:14:38 +02:00
  • 20ba7b42f9 feat(install): production-hardening for public self-hosting Jannis Braun 2026-07-01 18:14:38 +02:00
  • f481e1fe9e license: relicense to AGPL-3.0-only with commercial dual-license Jannis Braun 2026-07-01 16:38:22 +02:00
  • 16d75f2806 docs(readme): drop private-test-instance mention from status Jannis Braun 2026-07-01 13:25:52 +02:00
  • 3be8b36064 docs(readme): finalize for 1.0.0 public launch Jannis Braun 2026-07-01 13:22:37 +02:00
  • ac20f22c72 fix(voice): consistent state on DM-call ↔ space-channel transitions Jannis Braun 2026-07-01 02:08:53 +02:00
  • 7a3d892c6e deploy: never rsync over the host-owned Caddyfile Jannis Braun 2026-07-01 01:34:16 +02:00
  • d2e9b92e80 docs(readme): correct project-status + bans wording Jannis Braun 2026-07-01 01:28:28 +02:00
  • bdf957514c docs: accurate read-state wording + mobile/PWA and app-store-roadmap mention Jannis Braun 2026-07-01 01:15:33 +02:00
  • 3f5b2920a4 docs: fix screenshot caption overclaiming read states Jannis Braun 2026-07-01 01:11:47 +02:00
  • cb16c8feac docs: add screenshot showcase to README + gallery Jannis Braun 2026-07-01 01:06:08 +02:00
  • cfe4fd80c4 fix(icons): render small favicons from 3D raster to kill white tab-border Jannis Braun 2026-07-01 00:58:51 +02:00
  • 0eb65b6608 fix(uploads): keep HEVC inline playback for Safari/WebKit Jannis Braun 2026-06-30 17:41:42 +02:00
  • 209aef7e9d fix(uploads): graceful fallback for browser-unplayable video (HEVC .mov) Jannis Braun 2026-06-30 17:38:11 +02:00
  • e84daf57aa fix(voice): push voice presence to user on mid-session space join Jannis Braun 2026-06-30 17:00:37 +02:00
  • f807524103 docs: public-release prep polish (README, CLA, CONTRIBUTING, prep script/spec) Jannis Braun 2026-06-26 14:25:11 +02:00
  • 77ceda148a docs(federation): document demand-driven peer recovery + recheck endpoint Jannis Braun 2026-06-26 14:03:27 +02:00
  • e372a7a571 feat(web): Check now button to manually recover unreachable federation peers Jannis Braun 2026-06-26 13:58:38 +02:00
  • 4ad83a7cc1 feat(federation): POST /peers/:id/recheck — manual reachability probe Jannis Braun 2026-06-26 13:53:57 +02:00
  • 603973a02e feat(federation): demand-driven recovery tick; health-check tick keeps rotation only Jannis Braun 2026-06-26 13:49:40 +02:00
  • a6c7584e0c feat(federation): lean federationRecovery module (probe + markPeerRecovered) Jannis Braun 2026-06-26 13:44:37 +02:00
  • bafc7fbb47 feat(federation): add last_probe_at/probe_attempts columns for peer recovery pacing Jannis Braun 2026-06-26 13:41:29 +02:00
  • 00a2876e96 fix(channels): newly created channel sometimes hidden until space reopened Jannis Braun 2026-06-25 12:34:11 +02:00
  • a4af708a41 fix(web): uniform category spacing in channel sidebar Jannis Braun 2026-06-25 12:21:37 +02:00
  • 8dd76f3435 Public-release prep: ELv2 license, README/CLA/NOTICE, SSRF safeFetch, identifier genericization, export tooling Jannis Braun 2026-06-22 16:04:03 +02:00
  • c0a6477059 fix(install): post-install message reflects first-user-becomes-admin (no seeded admin/admin123) Jannis Braun 2026-06-20 03:14:16 +02:00
  • a91702a255 fix(backup): manual snapshot CLI must open its own DB handle (getRawDb undefined in standalone process) Jannis Braun 2026-06-20 02:58:46 +02:00
  • baf3a7d047 merge: deploy pipeline launch hardening (admin bootstrap, DB backups, image pinning, reproducible builds) Jannis Braun 2026-06-20 02:52:22 +02:00
  • 5107f63e60 harden(security): chmod seed-admin-rotated.txt to 0600 (guarantee perms on overwrite) Jannis Braun 2026-06-20 02:51:13 +02:00
  • 1c23c1fb60 docs(deploy): deployment.md (backup/restore, admin bootstrap, pinning) + env + CLAUDE.md Jannis Braun 2026-06-20 02:45:33 +02:00
  • 239578edc9 build(deploy): drop non-reproducible lockfile fallback; require frozen install Jannis Braun 2026-06-20 02:41:26 +02:00
  • 63732b9efb build: pin Docker image tags for reproducible builds Jannis Braun 2026-06-20 02:40:09 +02:00
  • a4333c4c23 fix(restore): robust empty-dir listing + injection-proof container swap Jannis Braun 2026-06-20 02:38:07 +02:00
  • 70da1ede64 feat(backup): manual-snapshot CLI + host-side backup.sh and restore.sh (safe restore) Jannis Braun 2026-06-20 02:34:30 +02:00
  • 9407e48293 feat(backup): scheduled snapshot worker wired into server lifecycle Jannis Braun 2026-06-20 02:32:17 +02:00
  • 154feb2dd6 feat(backup): pre-migration snapshot gated on pending migrations; checkpoint WAL on shutdown Jannis Braun 2026-06-20 02:26:51 +02:00
  • 48bcd69031 feat(backup): VACUUM INTO snapshot core (create/list/prune) + config + off-box hook Jannis Braun 2026-06-20 02:21:22 +02:00