Commit Graph

  • 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
  • 4b44996aac feat(security): idempotent remediation script to rotate seeded admin123 on existing instances Jannis Braun 2026-06-20 02:15:39 +02:00
  • ae61786335 feat(security): remove hardcoded admin/admin123 seed; first registered user is admin Jannis Braun 2026-06-20 02:07:47 +02:00
  • 3c134fe0e8 feat(sounds): self-made Ogg cues + watch/mute/pop fixes Jannis Braun 2026-06-20 00:52:58 +02:00
  • 4829746efc chore: gitignore .claude/worktrees and scheduled_tasks.lock Jannis Braun 2026-05-15 15:05:41 +02:00
  • bc286c2750 merge: fix(chat): pagination skeleton no layout shift into main Jannis Braun 2026-05-15 12:57:38 +02:00
  • 3f51db7ea1 docs(message-list): document top-of-list reservation slot and 2026-05-15 fix Jannis Braun 2026-05-15 12:34:10 +02:00
  • fb38fee965 fix(chat): lower pagination skeleton delay threshold to 50ms Jannis Braun 2026-05-15 12:30:20 +02:00
  • 8beb093aab fix(chat): eliminate pagination skeleton layout shift via constant-height slot Jannis Braun 2026-05-15 12:25:27 +02:00
  • 886111b21a test(useDelayedLoading): lock in custom threshold parameter behavior Jannis Braun 2026-05-15 12:20:27 +02:00
  • dc6caa0125 merge: wip(mobile): in-progress mobile + voice polish into main Jannis Braun 2026-05-12 13:36:08 +02:00
  • 7351b3d90d fix(dm): surface dm.name on chat header/placeholder; collapse unnamed-group placeholder Jannis Braun 2026-05-10 23:41:11 +02:00
  • 87ecf0f4f3 fix(ui): AvatarStack — center inner Avatar in each tile (off-center clipping) Jannis Braun 2026-05-10 23:18:24 +02:00
  • 3c7bb02901 fix(dm): ownership transfer divergence after back-and-forth — canonicalize ownerHomeInstance + normalize authority checks Jannis Braun 2026-05-10 22:38:03 +02:00
  • b6842c5590 fix(dm): owner-only group DM ops accept federated target identification Jannis Braun 2026-05-10 22:09:14 +02:00
  • 9279ac78e5 fix(ui): AvatarStack — radial overlap layout for 3-10 members (replaces 2x2 grid) Jannis Braun 2026-05-10 21:57:38 +02:00
  • 9f9a7c556b fix(ui): mount GroupDmSettings on desktop too — Open Group Settings button now opens the modal Jannis Braun 2026-05-10 21:50:58 +02:00
  • dbb9b2c34b wip(mobile): in-progress mobile + voice polish Jannis Braun 2026-05-10 21:26:40 +02:00
  • 24240f24f4 fix(janitor): protect dm_channels.icon files from cleanup (owner + receiver) Jannis Braun 2026-05-10 21:18:58 +02:00
  • 0acdbbc4eb docs(design-system): AvatarStack reusable component Jannis Braun 2026-05-10 21:03:05 +02:00
  • 941a365224 docs(mobile-ui): MobileGroupDmInfo + members-button rule for group DMs Jannis Braun 2026-05-10 21:02:32 +02:00
  • a694522931 docs(api): three new group DM endpoints Jannis Braun 2026-05-10 21:01:32 +02:00
  • 62eb2c8be1 docs(federation): group_metadata_update event + bootstrap payload extension Jannis Braun 2026-05-10 21:00:54 +02:00
  • 1d24fe2182 docs(dm-system): group metadata update + owner-routing helper + bootstrap extension Jannis Braun 2026-05-10 20:59:23 +02:00
  • f499176c01 docs(database): dm_channels.name + icon + metadata_updated_at Jannis Braun 2026-05-10 20:57:05 +02:00
  • 94a1d28a4c feat(mobile): MobileDmsScreen uses AvatarStack + dm.name + group globe Jannis Braun 2026-05-10 20:51:09 +02:00
  • 058cf36d5a feat(mobile): MobileChatScreen members button shows for group DMs Jannis Braun 2026-05-10 20:50:05 +02:00
  • c0a61dc0fc feat(mobile): MobileGroupDmInfo pushed screen with inline edit Jannis Braun 2026-05-10 20:49:42 +02:00
  • a6c37e9e49 chore(ui): remove dead Pinned Messages buttons (DM + space chat headers) Jannis Braun 2026-05-10 20:42:42 +02:00
  • 86a668032a feat(ui): DmListItem uses AvatarStack + dm.name + group globe Jannis Braun 2026-05-10 20:40:35 +02:00
  • 1b99f65d07 feat(ui): WelcomeHeader polish — AvatarStack, Owner label, Open Group Settings, Leave hover fix Jannis Braun 2026-05-10 20:40:31 +02:00
  • f583d9186d feat(ui): group DM chat-header polish — avatar stack, globe, cog, name + count click targets Jannis Braun 2026-05-10 20:36:27 +02:00
  • f04477c812 test(ui): GroupDmSettings — mock ImageCropModal to harden cancel + save-with-icon tests Jannis Braun 2026-05-10 20:33:06 +02:00
  • 5e739b170e feat(ui): GroupDmSettings modal with Overview + Members tabs Jannis Braun 2026-05-10 20:26:25 +02:00
  • b34caf5f2d fix(ui): DmMemberRow anchors profile popout to row bounds (matches MemberSidebar) Jannis Braun 2026-05-10 20:18:05 +02:00
  • c21bc8078b feat(ui): right-side DmRosterPanel for group DMs Jannis Braun 2026-05-10 20:10:16 +02:00
  • 68c4133abd feat(ui): shared DmMemberRow component (used by roster panel, settings modal, mobile info) Jannis Braun 2026-05-10 19:59:18 +02:00
  • c0151996c4 feat(client): chat timeline renders name_changed + icon_changed system messages Jannis Braun 2026-05-10 19:47:18 +02:00
  • 91aa06b48b feat(client): sidebar previews for name_changed + icon_changed Jannis Braun 2026-05-10 19:43:31 +02:00
  • d508fecfb0 feat(client): dm_channel_updated WS handler + updateDmMetadata store action Jannis Braun 2026-05-10 19:42:05 +02:00
  • e77fae0402 feat(client): api.dm.updateMetadata + kickMember + transferOwnership Jannis Braun 2026-05-10 19:41:24 +02:00
  • 22c3fd6d50 feat(client): getOwnerInstanceForDm — route owner-only DM ops to current owner instance Jannis Braun 2026-05-10 19:39:13 +02:00
  • 063ed2dd64 refactor(federation): extract normalizeIconForWire helper Jannis Braun 2026-05-10 19:31:06 +02:00
  • 04d7910077 feat(federation): bootstrap carries group name + icon + metadataUpdatedAt Jannis Braun 2026-05-10 19:23:47 +02:00
  • 7c8de29eff test(federation): lock kick authority behavior in member_remove receiver Jannis Braun 2026-05-10 19:14:48 +02:00
  • 78d2ab496d refactor(federation): drop dead export on downloadProfileAsset Jannis Braun 2026-05-10 19:10:56 +02:00
  • 240df49d1d feat(federation): processGroupMetadataUpdateEvent with receiver hardening Jannis Braun 2026-05-10 19:04:00 +02:00
  • 7f8d650cab refactor(server): extract transferGroupDmOwnership helper + wrap in transaction Jannis Braun 2026-05-10 18:56:01 +02:00
  • 35c720429e feat(server): POST /api/dm/:id/transfer — manual ownership transfer Jannis Braun 2026-05-10 18:46:41 +02:00
  • ce11fd12b5 refactor(server): extract evictUserFromDmVoiceRoom helper + drop redundant optional chains Jannis Braun 2026-05-10 18:42:25 +02:00