{ "timestamp": "2026-03-31T09:22:37.883Z", "commitsByModule": { "root": { "count": 80, "lastCommit": "2026-03-30 22:36:38 +0200", "commits": [ { "hash": "f7372aec3219d36b76bc269bb7940ee914e660eb", "date": "2026-03-30 22:36:38 +0200", "message": "docs: add screenshots to README", "type": "docs" }, { "hash": "86541ac3aa4af84c4d787d73a1f0ffc1e4119d7f", "date": "2026-03-30 22:32:31 +0200", "message": "chore: gitignore internal docs subdirectories", "type": "chore" }, { "hash": "cec6ca6a97df645d41c781cc257dad24e5a407ca", "date": "2026-03-30 22:31:06 +0200", "message": "docs: add public documentation for contributors and users", "type": "docs" }, { "hash": "bfe3404e14ab7143410a77c69bf7c28b4a161af1", "date": "2026-03-30 21:07:50 +0200", "message": "updated gitignore", "type": "other" }, { "hash": "44390ad886be392b55d1a15995eba0fb9c4a80d1", "date": "2026-03-30 21:05:28 +0200", "message": "chore: clean up tracked files for v1.0.0 public release", "type": "chore" }, { "hash": "ad7ac75c74d0351d37e0eded5e4594528041866d", "date": "2026-03-30 20:50:44 +0200", "message": "docs: v1.0.0 release prep — version bump, license, README overhaul", "type": "docs" }, { "hash": "4f489a1a4d037e16e84d9f0f3e10d9fea7d47065", "date": "2026-03-30 19:12:36 +0200", "message": "feat: sidebar stream preview + screenshare focus fix", "type": "feat" }, { "hash": "8882cfa330e28f273cd1e53234e4e95b37a6c7eb", "date": "2026-03-30 16:47:19 +0200", "message": "docs: regenerate codemaps from current codebase", "type": "docs" }, { "hash": "ad76d4a4139460d24974d6c436ba9782ac5ddfb2", "date": "2026-03-30 16:37:28 +0200", "message": "docs: update session log with TS error fix details", "type": "docs" }, { "hash": "1eeaa4909489c565857cebfa24515181a05e8f5f", "date": "2026-03-30 16:35:02 +0200", "message": "test: fix 10 test quality bugs (BUG-058–067) and resolve 115 TS type errors", "type": "test" }, { "hash": "3f0d5309374562116f211eab06e170ca2f31818c", "date": "2026-03-30 14:24:12 +0200", "message": "yu", "type": "other" }, { "hash": "773c811f06c6523b599a880908ac670c654437fb", "date": "2026-03-30 14:23:39 +0200", "message": "docs: add repo copilot assets section to CLAUDE.md and README", "type": "docs" }, { "hash": "34f1fe3454157a41d3e0e567a7cb45c1bb67bd30", "date": "2026-03-30 12:42:31 +0200", "message": "fix: settings tab bug fixes, expanded tests, and coverage improvements", "type": "fix" }, { "hash": "9bb99f76eb90b28754f50ffd584c3246c592f3b3", "date": "2026-03-29 21:31:18 +0200", "message": "feat: TOTP 2FA settings UI, server hardening, full validation pass", "type": "feat" }, { "hash": "5eeff05e892ec554f0a3f6c4903301f48c14e7c8", "date": "2026-03-29 19:42:07 +0200", "message": "chore: remove accidental empty file", "type": "chore" }, { "hash": "7521fbb41fa474d2d0cd6dfd85f319897a12e67e", "date": "2026-03-29 19:40:47 +0200", "message": "docs: update task tracking and dashboard for v1.3.0", "type": "docs" }, { "hash": "b386163dabdaa4c046a692cdeb517974affa4ec5", "date": "2026-03-29 19:40:11 +0200", "message": "chore: ESLint config, 61 lint fixes across 22 client files, CLAUDE.md update", "type": "chore" }, { "hash": "1294d9a2b104df51b48607bf8491b1028cf9c620", "date": "2026-03-29 12:35:29 +0200", "message": "chore: remove accidental empty files", "type": "chore" }, { "hash": "9ec875d450b53bebb4a18f6e7b1c27715d44e4c1", "date": "2026-03-29 12:35:04 +0200", "message": "fix: security hardening — 45 issues from full-project Copilot audit", "type": "fix" }, { "hash": "829a8b0efddabb52e58b9e8bf8a7324be30d0cea", "date": "2026-03-29 10:13:04 +0200", "message": "fix: repair 14 failing E2E tests and expand voice lifecycle coverage", "type": "fix" }, { "hash": "e98ac2a36a76a912b122b898ad24f36bda38e71c", "date": "2026-03-29 08:28:54 +0200", "message": "docs: update CLAUDE.md with voice polish changes, mark TODOS complete", "type": "docs" }, { "hash": "8a972fad433ef4a3ee7316c966749b5f04812b2e", "date": "2026-03-29 00:51:54 +0100", "message": "feat: voice/video polish — refactor, AudioWorklet VAD, bug fixes, UX improvements", "type": "feat" }, { "hash": "effa9a69e2cb157facc671965e1b2736943a6f08", "date": "2026-03-28 21:09:00 +0100", "message": "docs: update CLAUDE.md with observability features and new files", "type": "docs" }, { "hash": "894b4ed829e6820d6199121f4c6709363df7280d", "date": "2026-03-28 13:21:07 +0100", "message": "fix: resolve all 11 open bugs, add account deletion, harden security", "type": "fix" }, { "hash": "f15db645c7f79886196b61695f5a8827c85ce86e", "date": "2026-03-28 12:23:29 +0100", "message": "docs: update CLAUDE.md with settings panel redesign and accent color fix", "type": "docs" }, { "hash": "435f00964728e747e159640793e4ca7fb358fd79", "date": "2026-03-28 11:30:02 +0100", "message": "docs: update CLAUDE.md with auto-login, health endpoint, sidebar changes", "type": "docs" }, { "hash": "c2b5d8e15b814e7ce5d065446fce738b8f7d3c4c", "date": "2026-03-28 10:39:23 +0100", "message": "feat: comprehensive spec docs, test suite, E2E overhaul, and security hardening", "type": "feat" }, { "hash": "534e993d965a8be91e0033d39529602ed2da2ee4", "date": "2026-03-27 16:17:18 +0100", "message": "docs: update CLAUDE.md with voice timer, accent restore, DM auth rule", "type": "docs" }, { "hash": "35ac3a268485d16598737d1004c800abd813fa5d", "date": "2026-03-27 15:02:09 +0100", "message": "docs: add DM system, unified sidebar, themes, and quick-switch features", "type": "docs" }, { "hash": "568237ef7fa1c941edc8209d34510d97478edac8", "date": "2026-03-27 13:41:58 +0100", "message": "docs: add DM system design spec", "type": "docs" }, { "hash": "21e92ec1ec9051b585c764b0adfd4cddbe0625e7", "date": "2026-03-27 10:52:16 +0100", "message": "docs: add connection quality indicator to CLAUDE.md features + lib listing", "type": "docs" }, { "hash": "c838e92d87a6d1a3248c211325c112580bb8fbed", "date": "2026-03-27 10:47:06 +0100", "message": "chore: add .superpowers/ to gitignore", "type": "chore" }, { "hash": "03c8acd2213343bab99c2d72d46a61e0f6359d43", "date": "2026-03-26 22:13:47 +0100", "message": "t", "type": "other" }, { "hash": "63a3dfd79000e7d0e970207d8143471bd1249db7", "date": "2026-03-26 22:09:56 +0100", "message": "chore: remaining unstaged changes — rnnoise worklet, tests, renderers", "type": "chore" }, { "hash": "21fe4b8991ed63b884e71385fa82bae324bac551", "date": "2026-03-26 18:39:50 +0100", "message": "docs: add specs for screenshare audio and video focus mode", "type": "docs" }, { "hash": "d1cce204f1f09c27c922cf6fff9d8d1b7ce1c59d", "date": "2026-03-25 17:29:34 +0100", "message": "chore: gitignore .claude-flow/ and .mcp.json", "type": "chore" }, { "hash": "019cafd90a1dc07a0b9ed011bebc27f1fb99a847", "date": "2026-03-24 21:42:16 +0100", "message": "docs: sync documentation with codebase — version alignment, config fixes, test scripts", "type": "docs" }, { "hash": "d498e8fcce75ec39eee072f307d1b62f16be29d9", "date": "2026-03-22 21:10:02 +0100", "message": "fix: resolve LiveKit voice issues — duplicate audio, tunnel effect with 5+ users", "type": "fix" }, { "hash": "25625cfd6ec3527247fb5c134d0509a067cbe51e", "date": "2026-03-22 19:30:11 +0100", "message": "docs: add voice metrics and DESIGN.md TODOs from review", "type": "docs" }, { "hash": "9949e9de9ea8e84a6b8448bc78e04df83cb392be", "date": "2026-03-22 15:34:26 +0100", "message": "fix: restore audio track attachment for remote playback", "type": "fix" }, { "hash": "1f1432376acf6cda97b3c58fbaeddb62efabf5b0", "date": "2026-03-21 11:59:14 +0100", "message": "fix: security hardening, LiveKit class refactor, and eng review fixes", "type": "fix" }, { "hash": "c3b44d1972c5d09a75d5316dd599d62201c02e63", "date": "2026-03-21 10:08:44 +0100", "message": "refactor: server hardening + client decomposition + protocol resilience", "type": "refactor" }, { "hash": "fc63aec2f9294c6898f9afe4b8b6b7c6c69ece2d", "date": "2026-03-20 05:50:14 +0100", "message": "docs: update specs for LiveKit migration (Phase 4)", "type": "docs" }, { "hash": "c39bd09c714f650650847899bf70ccb9cc53162c", "date": "2026-03-19 19:47:32 +0100", "message": "fix: pass signing key to Tauri build step in CI", "type": "fix" }, { "hash": "bbbe983230d0a807c9e115c9c2c0dfb8b4b2ee1f", "date": "2026-03-19 18:19:51 +0100", "message": "chore: restrict Dependabot to minor/patch bumps only", "type": "chore" }, { "hash": "d1ec5883f688ea130d2be723204ba1d7ca904c49", "date": "2026-03-19 17:54:13 +0100", "message": "docs: update documentation for video chat, GIF picker, PTT, and notifications", "type": "docs" }, { "hash": "d9a33b6c4e727d8205bf6020978445f4df558eb9", "date": "2026-03-19 05:40:22 +0100", "message": "docs: update README and CLAUDE.md for v1.0.0 release", "type": "docs" }, { "hash": "f8c54a7ba5cafe29f28bec19b855b3582d3e1b6c", "date": "2026-03-18 23:09:52 +0100", "message": "docs: update README with voice NAT traversal, per-user volume, noise suppression", "type": "docs" }, { "hash": "def313beb1389cb117d330dc83b29e72ce9dcbdc", "date": "2026-03-18 23:03:14 +0100", "message": "chore: add chatserver.exe~ to gitignore", "type": "chore" }, { "hash": "8fd8d3e91ecebd6d03420133a0d5e6b739ac8d29", "date": "2026-03-18 17:56:03 +0100", "message": "docs: rewrite README with current features, architecture, and config", "type": "docs" }, { "hash": "8272d7e2f97e9661b097cdd8686dc1cdbc739e7e", "date": "2026-03-18 17:47:59 +0100", "message": "feat: client auto-update with Ed25519 signing and dynamic server URL", "type": "feat" }, { "hash": "c0fa05c67d2f231500025d33aeb2bbd6176c7b01", "date": "2026-03-18 07:03:53 +0100", "message": "fix: voice session safety, delete confirm UX, image URL validation, test coverage (BUG-039 through BUG-045)", "type": "fix" }, { "hash": "1548e6496c3677160a0f29538f77edc7276ba37c", "date": "2026-03-17 20:25:15 +0100", "message": "feat: TOFU cert pinning, voice channel sidebar, scroll-to-message, profiles, and review fixes", "type": "feat" }, { "hash": "e92b8fe2df616937c26338fe56319977db194497", "date": "2026-03-17 11:05:52 +0100", "message": "feat: TOFU cert pinning, settings cache refactor, ban enforcement, and 80%+ test coverage", "type": "feat" }, { "hash": "1914067941b8512b895e32075fe2ced0b3da3841", "date": "2026-03-17 03:20:37 +0100", "message": "fix: address PR review findings (issues #3-#8)", "type": "fix" }, { "hash": "79f0040f376c989650af60b35a7449b45f40935b", "date": "2026-03-17 02:56:19 +0100", "message": "feat: server enhancements, client test selectors, and UI polish", "type": "feat" }, { "hash": "264b4f0f65fccc8ec7ec8fa9e8c61a10284a3cb0", "date": "2026-03-17 02:52:49 +0100", "message": "chore: clean up remaining WPF artifacts and track missing files", "type": "chore" }, { "hash": "5c4a232bde25f75b72cbe338d530e15d2631f430", "date": "2026-03-17 02:49:45 +0100", "message": "chore: remove legacy WPF client code and references", "type": "chore" }, { "hash": "fb4b57743d63e0f783a839dc1f14e97cbcc28d4a", "date": "2026-03-17 02:45:44 +0100", "message": "ci: add GitHub best practices config (templates, dependabot, CI optimization)", "type": "other" }, { "hash": "e6247cde5b8c3ee2078938f4337edb3dc095256c", "date": "2026-03-17 02:34:01 +0100", "message": "test: complete E2E improvement phases 4-6", "type": "test" }, { "hash": "4dc61a506f18398c424d04eb6dbf31d44a5cbc30", "date": "2026-03-17 02:25:49 +0100", "message": "feat: add virtual scrolling to MessageList for large channels", "type": "feat" }, { "hash": "ceba8b9cf0401b8d07a3412d9e16dbff46f10236", "date": "2026-03-17 02:21:41 +0100", "message": "docs: mark TODOS #9 (split oversized files) as complete", "type": "docs" }, { "hash": "ff0f761b121d6b14e52b635ade04b328a029c41c", "date": "2026-03-17 02:09:46 +0100", "message": "\"Claude Code Review workflow\"", "type": "other" }, { "hash": "0b9f929d081d8d7d8422084d920633b6bff08168", "date": "2026-03-17 02:09:45 +0100", "message": "\"Claude PR Assistant workflow\"", "type": "other" }, { "hash": "45d1cf9747814e7688155e10a0637e5118e6ae54", "date": "2026-03-17 01:59:34 +0100", "message": "fix: resolve 15 post-review issues across server and client", "type": "fix" }, { "hash": "08049e7275f87f55321024cc2efbee37820bb493", "date": "2026-03-16 17:11:17 +0100", "message": "docs: align API.md paths to /api/v1/, fix CLAUDE.md contradiction, mark review resolved", "type": "docs" }, { "hash": "db982a7cf8f373c74fb56724f0b8d468c018695d", "date": "2026-03-16 16:43:46 +0100", "message": "feat: fix all E2E failures, add credentials/window-state, wire QuickSwitcher + SettingsOverlay", "type": "feat" }, { "hash": "dbbe55275786aa58877f1ade8cf4cd18cb2513e3", "date": "2026-03-15 19:44:02 +0100", "message": "feat: add Tauri v2 desktop client with full chat UI and security hardening", "type": "feat" }, { "hash": "743a2d974738f76db7764bdd43e78fbf25889d4f", "date": "2026-03-15 16:54:55 +0100", "message": "chore: update .gitignore to exclude local tooling, build artifacts, and internal docs", "type": "chore" }, { "hash": "48a0db7224b708bcb7360c1897b78611f0d954f0", "date": "2026-03-15 11:42:25 +0100", "message": "feat: implement full client UI from mockup — 10 phases, 331 tests", "type": "feat" }, { "hash": "7e9a7bbf623a188879b21dc5a792577231a83c27", "date": "2026-03-15 07:09:01 +0100", "message": "chore: gitignore Claude Code local config and research notes", "type": "chore" }, { "hash": "46b7efe5fcacb4df88c54ef22135afdbb515d368", "date": "2026-03-15 07:07:59 +0100", "message": "feat: add Let's Encrypt ACME support, fix security issues, improve server UX", "type": "feat" }, { "hash": "19127598984b1f26e2099afae0c4e9c21675c46b", "date": "2026-03-15 00:31:39 +0100", "message": "feat: redesign login UI, add save-password, fix permissions, add audit logging, member_join broadcast", "type": "feat" }, { "hash": "07636447ab328ced8a3561a1446df76561259010", "date": "2026-03-14 22:38:08 +0100", "message": "chore: gitignore server runtime artifacts (binary, config, data)", "type": "chore" }, { "hash": "03bea4690bf9d4cd16dbf385eb559f44e696ded6", "date": "2026-03-14 22:11:42 +0100", "message": "chore: add .claude/settings.local.json to gitignore", "type": "chore" }, { "hash": "fb6b56e87686550da1f07387e6052bdc1efe6e5e", "date": "2026-03-14 22:09:11 +0100", "message": "docs: add Phase 7 distribution and updates design spec", "type": "docs" }, { "hash": "9083599730b58b84e6b8daf9320a515b94e440de", "date": "2026-03-14 22:03:12 +0100", "message": "docs: add server_restart message type and update endpoints to specs", "type": "docs" }, { "hash": "065715abf5979f1bf43cbf928153ef7947b2bd73", "date": "2026-03-14 21:58:53 +0100", "message": "docs: add README, SECURITY, CONTRIBUTING, and setup guides", "type": "docs" }, { "hash": "95dc1bc1d1734f0664a4848867eeeaf6e8989f64", "date": "2026-03-14 21:58:06 +0100", "message": "ci: add GitHub Actions CI and release workflows", "type": "other" }, { "hash": "a0da1e82c72368dfef08cf54731387ed937c5ebb", "date": "2026-03-14 19:57:39 +0100", "message": "chore: initial commit with project specs and configuration", "type": "chore" } ] }, "ts:config": { "count": 110, "lastCommit": "2026-03-30 21:54:24 +0200", "commits": [ { "hash": "7f31a6aa43b357b8f727f696bf92c7ee9328a0d3", "date": "2026-03-30 21:54:24 +0200", "message": "fix: resolve CI failures — eslint peer dep conflict and errcheck lint errors", "type": "fix" }, { "hash": "ad7ac75c74d0351d37e0eded5e4594528041866d", "date": "2026-03-30 20:50:44 +0200", "message": "docs: v1.0.0 release prep — version bump, license, README overhaul", "type": "docs" }, { "hash": "b059bd4a04aead5271422f74c1094760b14e8c38", "date": "2026-03-30 20:13:34 +0200", "message": "feat: Discord-style video grid with fixed 16:9 aspect ratio", "type": "feat" }, { "hash": "4f489a1a4d037e16e84d9f0f3e10d9fea7d47065", "date": "2026-03-30 19:12:36 +0200", "message": "feat: sidebar stream preview + screenshare focus fix", "type": "feat" }, { "hash": "1eeaa4909489c565857cebfa24515181a05e8f5f", "date": "2026-03-30 16:35:02 +0200", "message": "test: fix 10 test quality bugs (BUG-058–067) and resolve 115 TS type errors", "type": "test" }, { "hash": "4ffa0c5d4755545fb4146fe62d93b7c4bf8c5260", "date": "2026-03-30 14:23:31 +0200", "message": "fix: add missing getFloatTimeDomainData mock to silence VAD timer errors", "type": "fix" }, { "hash": "0b22f073945487c390cf71143061fbfd5812225a", "date": "2026-03-30 14:20:05 +0200", "message": "test: Phase 4 coverage — meaningful behavior tests push client to 95%", "type": "test" }, { "hash": "78d2e70ccea3cb7eff8de19c89618ba38b9205dc", "date": "2026-03-30 13:59:47 +0200", "message": "test: Phase 3 coverage — 22 files bumped from 70-92% to 95-100%", "type": "test" }, { "hash": "5b6d6d4ba24c008ee920b3b03bc0bc4d90784cbd", "date": "2026-03-30 13:38:20 +0200", "message": "test: Phase 2 coverage — below-70% files now at 95-100%", "type": "test" }, { "hash": "414efdbd28d9282acebfaabb652aea54f23e8525", "date": "2026-03-30 13:21:29 +0200", "message": "test: Phase 1 coverage — 10 zero-coverage files now at 95-100%", "type": "test" }, { "hash": "34f1fe3454157a41d3e0e567a7cb45c1bb67bd30", "date": "2026-03-30 12:42:31 +0200", "message": "fix: settings tab bug fixes, expanded tests, and coverage improvements", "type": "fix" }, { "hash": "23b62a964c798ca99996be4de65e210a05b1af02", "date": "2026-03-29 21:34:54 +0200", "message": "fix: TypeScript build errors in embeds.ts and totp-settings test", "type": "fix" }, { "hash": "9bb99f76eb90b28754f50ffd584c3246c592f3b3", "date": "2026-03-29 21:31:18 +0200", "message": "feat: TOTP 2FA settings UI, server hardening, full validation pass", "type": "feat" }, { "hash": "b386163dabdaa4c046a692cdeb517974affa4ec5", "date": "2026-03-29 19:40:11 +0200", "message": "chore: ESLint config, 61 lint fixes across 22 client files, CLAUDE.md update", "type": "chore" }, { "hash": "d8ce044436771842f39f679dcf62c189b9b755dc", "date": "2026-03-29 19:39:22 +0200", "message": "fix: atomic invite registration, fail-closed search, proxy-aware rate limiting", "type": "fix" }, { "hash": "9ec875d450b53bebb4a18f6e7b1c27715d44e4c1", "date": "2026-03-29 12:35:04 +0200", "message": "fix: security hardening — 45 issues from full-project Copilot audit", "type": "fix" }, { "hash": "d7a2e5b8f59808e451c4b0c89e680e76bdf182a5", "date": "2026-03-29 12:19:08 +0200", "message": "refactor: extensibility overhaul — handler registry, permission checker, sidebar decomposition, DX improvements", "type": "refactor" }, { "hash": "829a8b0efddabb52e58b9e8bf8a7324be30d0cea", "date": "2026-03-29 10:13:04 +0200", "message": "fix: repair 14 failing E2E tests and expand voice lifecycle coverage", "type": "fix" }, { "hash": "8a972fad433ef4a3ee7316c966749b5f04812b2e", "date": "2026-03-29 00:51:54 +0100", "message": "feat: voice/video polish — refactor, AudioWorklet VAD, bug fixes, UX improvements", "type": "feat" }, { "hash": "9f31e8b017a0004f8d7d04c33741a484edd7557b", "date": "2026-03-28 20:42:37 +0100", "message": "feat: add observability, debugging, and diagnostics across all layers", "type": "feat" }, { "hash": "57c35c2b6821a3f43297295b2e4edc5cb9943433", "date": "2026-03-28 18:55:11 +0100", "message": "fix: CI failures — correct chat delete test expectations and coverage threshold", "type": "fix" }, { "hash": "297a3694217b29afb61b685af6a280933b1cdbb7", "date": "2026-03-28 18:23:18 +0100", "message": "fix: LiveKit voice connection for remote clients behind reverse proxy", "type": "fix" }, { "hash": "894b4ed829e6820d6199121f4c6709363df7280d", "date": "2026-03-28 13:21:07 +0100", "message": "fix: resolve all 11 open bugs, add account deletion, harden security", "type": "fix" }, { "hash": "c2b5d8e15b814e7ce5d065446fce738b8f7d3c4c", "date": "2026-03-28 10:39:23 +0100", "message": "feat: comprehensive spec docs, test suite, E2E overhaul, and security hardening", "type": "feat" }, { "hash": "c76534a2230904b773316c6d74c1e13b80cff4d4", "date": "2026-03-27 16:14:54 +0100", "message": "fix: security hardening, DM auth, LiveKit stability, and voice call timer", "type": "fix" }, { "hash": "9636d0e9761b69b762ef869a5eaa1eb65cbb1320", "date": "2026-03-27 14:25:54 +0100", "message": "fix: DM header shows @ instead of #, DM welcome message, DM appears in sidebar list", "type": "fix" }, { "hash": "6858c67408f19f973ac02f8658522825db85646e", "date": "2026-03-27 13:10:21 +0100", "message": "chore: stage QuickSwitchOverlay files missed from earlier commit", "type": "chore" }, { "hash": "cfcc76760d0408115971b4224ebcd6e2644301c1", "date": "2026-03-27 12:56:40 +0100", "message": "feat: add member list header/resize, DM section in sidebar, remove member toggle from chat header", "type": "feat" }, { "hash": "2829220f06432cc6ae7e502059b898de79b12357", "date": "2026-03-27 12:22:22 +0100", "message": "fix: address code review — test regression, theme consolidation, validation, dead CSS", "type": "fix" }, { "hash": "00a92851d4e2e92ed9412825fb2a70292770b889", "date": "2026-03-27 12:09:38 +0100", "message": "refactor: remove ServerStrip component and CSS (replaced by unified sidebar)", "type": "refactor" }, { "hash": "e6b5d43e669b1aa1ec4bfccf3aa4a235dc8980f0", "date": "2026-03-27 11:37:57 +0100", "message": "feat: add theme manager with built-in + custom theme support", "type": "feat" }, { "hash": "fbbb87229e13e2247bbe6d2afd91c8ac753188c3", "date": "2026-03-27 11:34:45 +0100", "message": "fix: add sidebarMode/activeDmUserId to test UiState mocks", "type": "fix" }, { "hash": "7be56f95458b31c8435ce50ef52d60bd1820639b", "date": "2026-03-27 11:29:23 +0100", "message": "feat: add sidebarMode and activeDmUserId to UI store", "type": "feat" }, { "hash": "bdff04fd080b5e9a2bd9f4371db4a1e94d9ae146", "date": "2026-03-27 10:25:40 +0100", "message": "fix: regenerate ICO with proper multi-size PNG entries (7 sizes)", "type": "fix" }, { "hash": "9c38bacddb19c0354248b6403b99de15b08befb1", "date": "2026-03-27 10:09:53 +0100", "message": "feat: replace app icon with OC neon glow logo", "type": "feat" }, { "hash": "394b8e4b2da490e269e5d4760ad66925cf4180d1", "date": "2026-03-27 08:05:32 +0100", "message": "fix: client code review — 27 fixes across 17 files", "type": "fix" }, { "hash": "2bc47efc6e4d3d10b091a98be60bdeb0e5eed6f6", "date": "2026-03-26 22:10:49 +0100", "message": "feat: add RNNoise worklet TypeScript source", "type": "feat" }, { "hash": "63a3dfd79000e7d0e970207d8143471bd1249db7", "date": "2026-03-26 22:09:56 +0100", "message": "chore: remaining unstaged changes — rnnoise worklet, tests, renderers", "type": "chore" }, { "hash": "8f2f106399ed19a3d3c53f6b21f25fc6a620acf1", "date": "2026-03-26 22:07:52 +0100", "message": "feat: stream quality presets, nuclear mute, sidebar width fix", "type": "feat" }, { "hash": "3d50b0570d0f314d727b954403e2d7ab8a059038", "date": "2026-03-26 20:53:09 +0100", "message": "fix: voice mute pipeline, security hardening, and video tile controls", "type": "fix" }, { "hash": "d87291e90fa491b4b396ce547b0cfea4a74c7024", "date": "2026-03-26 18:07:20 +0100", "message": "feat: full screenshare support — button state, video grid, auto-reconnect", "type": "feat" }, { "hash": "c496f830aee2145a9f7c6c08c41b6fb67118f327", "date": "2026-03-25 19:07:52 +0100", "message": "fix: voice audio pipeline — autoplay unlock and GainNode-based VAD", "type": "fix" }, { "hash": "2794662a48d480ba06add8132cba2d6f9adfaf5f", "date": "2026-03-24 21:30:23 +0100", "message": "feat: LiveKit migration — permissions, auth hardening, voice improvements", "type": "feat" }, { "hash": "d498e8fcce75ec39eee072f307d1b62f16be29d9", "date": "2026-03-22 21:10:02 +0100", "message": "fix: resolve LiveKit voice issues — duplicate audio, tunnel effect with 5+ users", "type": "fix" }, { "hash": "73a757b47f425fca0c5c6da9748c4fc032d1ec04", "date": "2026-03-22 20:14:27 +0100", "message": "fix: resolve TS2556 spread argument error in livekit-session test", "type": "fix" }, { "hash": "076402ab010e0eb1659cb776bd8bee8417d31e48", "date": "2026-03-22 20:06:59 +0100", "message": "fix: resolve CI failures — lint errors and coverage threshold", "type": "fix" }, { "hash": "067597a507a417d4128c5f7dabcb705681292f6c", "date": "2026-03-22 19:30:02 +0100", "message": "test: fix 4 pre-existing test failures for updated settings UI", "type": "test" }, { "hash": "f89226b68d6f5c1a7a5772f6b46ffa38684f969c", "date": "2026-03-22 10:04:49 +0100", "message": "feat: add user status selector to Account settings tab", "type": "feat" }, { "hash": "c3a13d09a142bcf4b233a278c9178d0f05fc3cfa", "date": "2026-03-22 09:30:03 +0100", "message": "fix: address review issues in settings redesign", "type": "fix" }, { "hash": "32faf87b3c5c67bf730f587921373dfb7e1f3d75", "date": "2026-03-22 08:26:21 +0100", "message": "test: update invite manager selectors for modal redesign", "type": "test" }, { "hash": "2536b619bdecfeb29f084932c9214049ba0c3c1c", "date": "2026-03-21 23:33:18 +0100", "message": "feat: replace all emoji icons with Lucide SVG icons", "type": "feat" }, { "hash": "30a6c7692a1a6b7ca28a88bc135159574c24b7d5", "date": "2026-03-21 22:00:40 +0100", "message": "test: update pinned messages tests for Discord-style panel", "type": "test" }, { "hash": "3365567063ad8d400f4e781300d4cc44b4fd496d", "date": "2026-03-21 21:24:29 +0100", "message": "fix: add missing channelName to test createMessageList calls", "type": "fix" }, { "hash": "659ce1b7517b0890027c17a93d8499e1cc90a162", "date": "2026-03-21 21:08:58 +0100", "message": "feat: add Discord-style welcome state for empty channels", "type": "feat" }, { "hash": "6ee3698525b22e2471c05e9e0addb8b42e963470", "date": "2026-03-21 20:53:47 +0100", "message": "fix: prevent virtual scroll rebuild loops and improve image height caching", "type": "fix" }, { "hash": "c3b44d1972c5d09a75d5316dd599d62201c02e63", "date": "2026-03-21 10:08:44 +0100", "message": "refactor: server hardening + client decomposition + protocol resilience", "type": "refactor" }, { "hash": "2dfb73083f42c00a354cac57187d47c2e8f19401", "date": "2026-03-20 15:21:56 +0100", "message": "refactor: UI architecture improvements + GIF auto-pause", "type": "refactor" }, { "hash": "0b2106af886fe3e3719337ea9a299883ab12b102", "date": "2026-03-20 12:30:12 +0100", "message": "fix: camera button delay and video feed flickering + security hardening", "type": "fix" }, { "hash": "2df58251ac5c674fb73d0079f42f0e012878fe20", "date": "2026-03-20 07:11:45 +0100", "message": "fix: speaking ring, devtools, CSP, and connection fixes", "type": "fix" }, { "hash": "91ebce72727a54fb96c72dadeb257bd92124ef4f", "date": "2026-03-20 06:33:57 +0100", "message": "fix: wire LiveKit speaker detection to voice activation ring", "type": "fix" }, { "hash": "ff2b82280c6002a5363f25af434e1898b15322ca", "date": "2026-03-20 06:27:43 +0100", "message": "fix: resolve LiveKit connection issues", "type": "fix" }, { "hash": "24c6b54c49b2041e3dcef0cd8add2502931df32f", "date": "2026-03-20 05:47:11 +0100", "message": "fix: update settings overlay test for 4 audio toggles", "type": "fix" }, { "hash": "5d67e91ca680247b84ee2f26e23e6d0ba607cf1c", "date": "2026-03-20 05:46:19 +0100", "message": "feat: replace client WebRTC with LiveKit SDK (Phase 2)", "type": "feat" }, { "hash": "bd307eb41c112d51926b6d1324a4464b32da1002", "date": "2026-03-20 05:07:37 +0100", "message": "chore: bump version to 1.2.0 for LiveKit migration", "type": "chore" }, { "hash": "17600081dfef4d5bccf6777279559599acfc1eff", "date": "2026-03-20 02:00:29 +0100", "message": "feat: wire search bar to server FTS5 search API (T-065)", "type": "feat" }, { "hash": "f11a53913ffb192b6d2978834e793d1053e45d27", "date": "2026-03-20 01:33:43 +0100", "message": "refactor: extract MainPage into focused controllers with tests", "type": "refactor" }, { "hash": "f7a6e0e0957bfaa1f3e84d12188cacbf3f749382", "date": "2026-03-19 21:35:18 +0100", "message": "fix: voice rejoin failure, SDP race, deafen bypass + add server voice logging", "type": "fix" }, { "hash": "b387f1880ae8997b745a8054cfd9a24319cebf3c", "date": "2026-03-19 19:22:42 +0100", "message": "update gitignore", "type": "other" }, { "hash": "4505c8d4648e5611907cef68cca9a7a4a13ce886", "date": "2026-03-19 19:22:23 +0100", "message": "chore: update Tauri updater public key for v1.1.0 signing keypair", "type": "chore" }, { "hash": "0f3c9e578279b62182a8d61727ae15dba8cfed71", "date": "2026-03-19 18:44:29 +0100", "message": "chore: bump version to 1.1.0", "type": "chore" }, { "hash": "ec3d7bee921ce202e26aa2cde7cc40a43ae4a8bd", "date": "2026-03-19 18:25:49 +0100", "message": "test: add coverage for GIF picker, Tenor API, PTT, and image rendering", "type": "test" }, { "hash": "445da87055685485522399a4bdcb47f477c8d1d6", "date": "2026-03-19 18:06:07 +0100", "message": "fix: add ResizeObserver stub to message list tests", "type": "fix" }, { "hash": "c6e864580946b4017e67182c777b19936f436458", "date": "2026-03-19 17:43:32 +0100", "message": "fix: stop camera preview and mic meter when settings overlay closes", "type": "fix" }, { "hash": "3010750b6f9dfe171bad7f13be0be2da7dd4ea3e", "date": "2026-03-19 16:51:49 +0100", "message": "test: add unit tests for voice session camera lifecycle", "type": "test" }, { "hash": "9ad91c6393d28dc8b75e9b229b9b4b46bb1386bb", "date": "2026-03-19 16:47:18 +0100", "message": "feat: add webcam device selector and preview to settings", "type": "feat" }, { "hash": "81b45d55e312c7f6a4085073ffbc8842d7c5bd6f", "date": "2026-03-19 16:39:35 +0100", "message": "feat: add VideoGrid component for rendering camera streams", "type": "feat" }, { "hash": "5b10bc28f323b8b2365036de84a72f5d2897e3bc", "date": "2026-03-19 16:39:29 +0100", "message": "feat: add video device manager for camera capture", "type": "feat" }, { "hash": "e972d06765c6189ba524cdf7744db5c957ea0d2d", "date": "2026-03-19 12:23:24 +0100", "message": "feat: settings overhaul, GIF picker, notifications, PTT, scroll fixes", "type": "feat" }, { "hash": "4ac2167570ec73ebb0f8f4ed2b5462bba2e8961e", "date": "2026-03-19 07:41:58 +0100", "message": "fix: use v1Compatible for createUpdaterArtifacts (v2Compatible not valid)", "type": "fix" }, { "hash": "d4fd9e3db26e4ecf6a09600476079a1a2f207aae", "date": "2026-03-19 07:33:59 +0100", "message": "fix: enable Tauri updater artifacts and bump client to v1.0.0", "type": "fix" }, { "hash": "9f5be0819df487fff856a9237fa8ecc8131ce44a", "date": "2026-03-19 06:28:08 +0100", "message": "fix: adjust coverage thresholds and exclude Tauri-runtime files", "type": "fix" }, { "hash": "22706a795581a003059a9838ace4ac05d43fefb2", "date": "2026-03-19 06:20:00 +0100", "message": "fix: resolve CI failures in server lint and client tests", "type": "fix" }, { "hash": "5327b2681a0e31e4342bac24af20dfbb6299df29", "date": "2026-03-18 23:02:06 +0100", "message": "feat: fix voice chat over NAT, audio pipeline, and add comprehensive debugging", "type": "feat" }, { "hash": "8272d7e2f97e9661b097cdd8686dc1cdbc739e7e", "date": "2026-03-18 17:47:59 +0100", "message": "feat: client auto-update with Ed25519 signing and dynamic server URL", "type": "feat" }, { "hash": "6f4579880e52dc38c7130a009cfacd2e6fb67b59", "date": "2026-03-18 17:10:16 +0100", "message": "feat: native file downloads, upload size fix, native E2E tests", "type": "feat" }, { "hash": "6dbb945213901429f50a77c4648a5eab67271418", "date": "2026-03-18 14:13:52 +0100", "message": "feat: file uploads, URL previews, emoji search, voice mute fixes, UX improvements", "type": "feat" }, { "hash": "a37abb47a266fca465ebaaa6866308f3868df373", "date": "2026-03-18 11:33:59 +0100", "message": "fix: remove duplicate mute/deafen buttons from user bar, disable browser context menu", "type": "fix" }, { "hash": "9c63dd6efed184908b192fe60162683019a89d5c", "date": "2026-03-18 11:28:13 +0100", "message": "feat: channel management — create, edit, delete, reorder with category-type enforcement", "type": "feat" }, { "hash": "498d34a3705a11293738c4ba07ef3c1d6eb35886", "date": "2026-03-18 07:09:45 +0100", "message": "fix: add missing localCamera/localScreenshare to VoiceState resets in tests", "type": "fix" }, { "hash": "c0fa05c67d2f231500025d33aeb2bbd6176c7b01", "date": "2026-03-18 07:03:53 +0100", "message": "fix: voice session safety, delete confirm UX, image URL validation, test coverage (BUG-039 through BUG-045)", "type": "fix" }, { "hash": "3b81396964b1a2c762cd28e6569115dfb3541445", "date": "2026-03-18 06:45:05 +0100", "message": "fix: device switching, DM highlight, WebRTC error toast, close false positives (BUG-031, BUG-032, BUG-033, BUG-034, BUG-035, BUG-036)", "type": "fix" }, { "hash": "d3d1e067db271a199c641771604f55e05acd809c", "date": "2026-03-18 06:40:12 +0100", "message": "fix: render actual images for attachments, remove orphaned components (BUG-026, BUG-030)", "type": "fix" }, { "hash": "c1e2733f11a746aef74897bed712f69693e72acb", "date": "2026-03-18 06:28:45 +0100", "message": "fix: wire account settings callbacks and theme store sync (BUG-020, BUG-025)", "type": "fix" }, { "hash": "c49a8bc4d63beba7900459981cdb152f77b6624c", "date": "2026-03-18 05:38:53 +0100", "message": "fix: harden E2E tests with anti-flakiness config and voice widget selector fixes", "type": "fix" }, { "hash": "bc12273ab78155ba942b2d9296736cec8254326b", "date": "2026-03-18 04:30:38 +0100", "message": "fix: resolve CI failures — coverage exclusion and stale test removal", "type": "fix" }, { "hash": "1548e6496c3677160a0f29538f77edc7276ba37c", "date": "2026-03-17 20:25:15 +0100", "message": "feat: TOFU cert pinning, voice channel sidebar, scroll-to-message, profiles, and review fixes", "type": "feat" }, { "hash": "fd3b65b0655ee2fc043491eccf2f0d67b0acd122", "date": "2026-03-17 20:03:34 +0100", "message": "fix: voice channel join/leave visibility and disconnect bugs", "type": "fix" }, { "hash": "17eb67811f7844324d6703bfddce0d7ae8996267", "date": "2026-03-17 14:01:26 +0000", "message": "fix: resolve CI failures — errcheck lint and TS noUncheckedIndexedAccess errors", "type": "fix" }, { "hash": "2cc0be227e0aa31170a6fdc79af660de16d5ecae", "date": "2026-03-17 14:54:50 +0100", "message": "fix: address PR #15 review issues (#16-#23)", "type": "fix" }, { "hash": "e92b8fe2df616937c26338fe56319977db194497", "date": "2026-03-17 11:05:52 +0100", "message": "feat: TOFU cert pinning, settings cache refactor, ban enforcement, and 80%+ test coverage", "type": "feat" }, { "hash": "84f938a6db26d4fbe9db6da0acb20deea53110c3", "date": "2026-03-17 04:11:04 +0100", "message": "fix: address PR review findings (issues #9-#14)", "type": "fix" }, { "hash": "79f0040f376c989650af60b35a7449b45f40935b", "date": "2026-03-17 02:56:19 +0100", "message": "feat: server enhancements, client test selectors, and UI polish", "type": "feat" }, { "hash": "264b4f0f65fccc8ec7ec8fa9e8c61a10284a3cb0", "date": "2026-03-17 02:52:49 +0100", "message": "chore: clean up remaining WPF artifacts and track missing files", "type": "chore" }, { "hash": "e6247cde5b8c3ee2078938f4337edb3dc095256c", "date": "2026-03-17 02:34:01 +0100", "message": "test: complete E2E improvement phases 4-6", "type": "test" }, { "hash": "4dc61a506f18398c424d04eb6dbf31d44a5cbc30", "date": "2026-03-17 02:25:49 +0100", "message": "feat: add virtual scrolling to MessageList for large channels", "type": "feat" }, { "hash": "a1968078806dc7ce2c65dda30e4e685d22594f20", "date": "2026-03-17 02:17:26 +0100", "message": "refactor: split oversized files + add store notification batching", "type": "refactor" }, { "hash": "db982a7cf8f373c74fb56724f0b8d468c018695d", "date": "2026-03-16 16:43:46 +0100", "message": "feat: fix all E2E failures, add credentials/window-state, wire QuickSwitcher + SettingsOverlay", "type": "feat" }, { "hash": "eef229a74fcf70acf92f385f6386d27af32436ac", "date": "2026-03-15 20:46:38 +0100", "message": "test: add test helpers and integration tests for dispatcher + stores", "type": "test" }, { "hash": "a08755e3be44d60e43db3ac1f0a77294add85f63", "date": "2026-03-15 20:43:13 +0100", "message": "feat: align UI to mockup, wire WS handlers, fix 5 HIGH review issues", "type": "feat" }, { "hash": "dbbe55275786aa58877f1ade8cf4cd18cb2513e3", "date": "2026-03-15 19:44:02 +0100", "message": "feat: add Tauri v2 desktop client with full chat UI and security hardening", "type": "feat" } ] }, "go:admin": { "count": 27, "lastCommit": "2026-03-30 21:54:24 +0200", "commits": [ { "hash": "7f31a6aa43b357b8f727f696bf92c7ee9328a0d3", "date": "2026-03-30 21:54:24 +0200", "message": "fix: resolve CI failures — eslint peer dep conflict and errcheck lint errors", "type": "fix" }, { "hash": "d9aaeb5f4c8c018f5ffbd9c64ae87126e5b5348a", "date": "2026-03-30 21:48:14 +0200", "message": "fix: admin panel CSP blocking inline event handlers and boolean toggle display", "type": "fix" }, { "hash": "9bb99f76eb90b28754f50ffd584c3246c592f3b3", "date": "2026-03-29 21:31:18 +0200", "message": "feat: TOTP 2FA settings UI, server hardening, full validation pass", "type": "feat" }, { "hash": "97f186041da8052d054cff73c93f23886bd374d5", "date": "2026-03-29 19:39:46 +0200", "message": "refactor: context propagation, LogAudit deadlock fix, ESLint v9, code quality", "type": "refactor" }, { "hash": "9ec875d450b53bebb4a18f6e7b1c27715d44e4c1", "date": "2026-03-29 12:35:04 +0200", "message": "fix: security hardening — 45 issues from full-project Copilot audit", "type": "fix" }, { "hash": "d7a2e5b8f59808e451c4b0c89e680e76bdf182a5", "date": "2026-03-29 12:19:08 +0200", "message": "refactor: extensibility overhaul — handler registry, permission checker, sidebar decomposition, DX improvements", "type": "refactor" }, { "hash": "b15738c4d80f4983f31d1076e8aaff07171a0a7c", "date": "2026-03-19 05:32:40 +0100", "message": "feat: redesign admin panel, add live server logs and audit log filters", "type": "feat" }, { "hash": "ce6204c4635763b1fa0564e6ae44cf42ae37b965", "date": "2026-03-19 04:19:03 +0100", "message": "fix: resolve 5 remaining medium/low issues from third-pass go-review", "type": "fix" }, { "hash": "a1d1560e76b058fe991d539d5ec03829a15e5ce8", "date": "2026-03-19 04:04:53 +0100", "message": "fix: resolve 6 medium issues from full go-review", "type": "fix" }, { "hash": "9c63dd6efed184908b192fe60162683019a89d5c", "date": "2026-03-18 11:28:13 +0100", "message": "feat: channel management — create, edit, delete, reorder with category-type enforcement", "type": "feat" }, { "hash": "f8ac121cfd684c241fe2d659bb4a7ec1987c96c6", "date": "2026-03-18 05:15:54 +0100", "message": "fix: add nil hub tests for PatchUser ban and role change paths (BUG-001)", "type": "fix" }, { "hash": "2cc0be227e0aa31170a6fdc79af660de16d5ecae", "date": "2026-03-17 14:54:50 +0100", "message": "fix: address PR #15 review issues (#16-#23)", "type": "fix" }, { "hash": "e92b8fe2df616937c26338fe56319977db194497", "date": "2026-03-17 11:05:52 +0100", "message": "feat: TOFU cert pinning, settings cache refactor, ban enforcement, and 80%+ test coverage", "type": "feat" }, { "hash": "8d47f4c2fa78267171ed52aed957639f1842978b", "date": "2026-03-17 08:09:52 +0100", "message": "fix: resolve all golangci-lint issues blocking CI server build", "type": "fix" }, { "hash": "84f938a6db26d4fbe9db6da0acb20deea53110c3", "date": "2026-03-17 04:11:04 +0100", "message": "fix: address PR review findings (issues #9-#14)", "type": "fix" }, { "hash": "1914067941b8512b895e32075fe2ced0b3da3841", "date": "2026-03-17 03:20:37 +0100", "message": "fix: address PR review findings (issues #3-#8)", "type": "fix" }, { "hash": "79f0040f376c989650af60b35a7449b45f40935b", "date": "2026-03-17 02:56:19 +0100", "message": "feat: server enhancements, client test selectors, and UI polish", "type": "feat" }, { "hash": "a1968078806dc7ce2c65dda30e4e685d22594f20", "date": "2026-03-17 02:17:26 +0100", "message": "refactor: split oversized files + add store notification batching", "type": "refactor" }, { "hash": "48a0db7224b708bcb7360c1897b78611f0d954f0", "date": "2026-03-15 11:42:25 +0100", "message": "feat: implement full client UI from mockup — 10 phases, 331 tests", "type": "feat" }, { "hash": "46b7efe5fcacb4df88c54ef22135afdbb515d368", "date": "2026-03-15 07:07:59 +0100", "message": "feat: add Let's Encrypt ACME support, fix security issues, improve server UX", "type": "feat" }, { "hash": "19127598984b1f26e2099afae0c4e9c21675c46b", "date": "2026-03-15 00:31:39 +0100", "message": "feat: redesign login UI, add save-password, fix permissions, add audit logging, member_join broadcast", "type": "feat" }, { "hash": "61dc275a1545f772753bee1585ac8b030d8cae1a", "date": "2026-03-14 22:36:35 +0100", "message": "feat: add setup wizard for initial owner account creation", "type": "feat" }, { "hash": "40c269bc7a60ccfa0ec52c8524834491c554ec67", "date": "2026-03-14 22:06:54 +0100", "message": "feat: add update notification banner to admin dashboard", "type": "feat" }, { "hash": "bcf5f77a4de40e84d40aeedaaa5d7833235341d2", "date": "2026-03-14 22:05:13 +0100", "message": "feat: implement server auto-update API endpoints with download, verify, and restart", "type": "feat" }, { "hash": "dcae0b91b23c178e3b747cdf25176c8d09ffd103", "date": "2026-03-14 21:37:47 +0100", "message": "fix: correct embed path (static not admin/static) and simplify audit_log migration", "type": "fix" }, { "hash": "dad5607721aba88da76b554e6b1af9cadcaa1e3b", "date": "2026-03-14 21:31:03 +0100", "message": "feat: implement Phase 5 (voice/WebRTC signaling) and Phase 6 (admin panel)", "type": "feat" }, { "hash": "5868fdd0b3b00f542ac6fabf4afdcab847dc4a98", "date": "2026-03-14 20:34:37 +0100", "message": "feat: implement Phase 1 server skeleton with TDD", "type": "feat" } ] }, "go:db": { "count": 44, "lastCommit": "2026-03-30 21:54:24 +0200", "commits": [ { "hash": "7f31a6aa43b357b8f727f696bf92c7ee9328a0d3", "date": "2026-03-30 21:54:24 +0200", "message": "fix: resolve CI failures — eslint peer dep conflict and errcheck lint errors", "type": "fix" }, { "hash": "9bb99f76eb90b28754f50ffd584c3246c592f3b3", "date": "2026-03-29 21:31:18 +0200", "message": "feat: TOTP 2FA settings UI, server hardening, full validation pass", "type": "feat" }, { "hash": "97f186041da8052d054cff73c93f23886bd374d5", "date": "2026-03-29 19:39:46 +0200", "message": "refactor: context propagation, LogAudit deadlock fix, ESLint v9, code quality", "type": "refactor" }, { "hash": "d8ce044436771842f39f679dcf62c189b9b755dc", "date": "2026-03-29 19:39:22 +0200", "message": "fix: atomic invite registration, fail-closed search, proxy-aware rate limiting", "type": "fix" }, { "hash": "9ec875d450b53bebb4a18f6e7b1c27715d44e4c1", "date": "2026-03-29 12:35:04 +0200", "message": "fix: security hardening — 45 issues from full-project Copilot audit", "type": "fix" }, { "hash": "894b4ed829e6820d6199121f4c6709363df7280d", "date": "2026-03-28 13:21:07 +0100", "message": "fix: resolve all 11 open bugs, add account deletion, harden security", "type": "fix" }, { "hash": "c2b5d8e15b814e7ce5d065446fce738b8f7d3c4c", "date": "2026-03-28 10:39:23 +0100", "message": "feat: comprehensive spec docs, test suite, E2E overhaul, and security hardening", "type": "feat" }, { "hash": "c76534a2230904b773316c6d74c1e13b80cff4d4", "date": "2026-03-27 16:14:54 +0100", "message": "fix: security hardening, DM auth, LiveKit stability, and voice call timer", "type": "fix" }, { "hash": "3dff9fef64db54cdfe153d48f46d9cc7d7bac9d0", "date": "2026-03-27 13:58:48 +0100", "message": "feat(server): add DM REST endpoints, WebSocket routing, and ready payload", "type": "feat" }, { "hash": "c8d547ce15643085eaed6e65c33044eef098f427", "date": "2026-03-27 13:46:06 +0100", "message": "feat(server): add DM schema migration and database query layer", "type": "feat" }, { "hash": "738f4970576467e285c051549a4d78241966958c", "date": "2026-03-24 21:35:40 +0100", "message": "fix: address code review — 8 issues across server and client", "type": "fix" }, { "hash": "2794662a48d480ba06add8132cba2d6f9adfaf5f", "date": "2026-03-24 21:30:23 +0100", "message": "feat: LiveKit migration — permissions, auth hardening, voice improvements", "type": "feat" }, { "hash": "f52e4d7e49852cf3cbae2ba789a1b382dcc6f1c8", "date": "2026-03-21 21:42:14 +0100", "message": "refactor: deduplicate pin handler and DB scan logic", "type": "refactor" }, { "hash": "85ef4f0d1d8d9e6b9eb2550f4d0b9b74542b792a", "date": "2026-03-21 21:36:10 +0100", "message": "feat: add server-side pin/unpin endpoints", "type": "feat" }, { "hash": "393d277f19a89a5987b0e0fc3993a360f3b62171", "date": "2026-03-21 12:34:31 +0100", "message": "fix: virtual scroll jumping with images/GIFs", "type": "fix" }, { "hash": "1f1432376acf6cda97b3c58fbaeddb62efabf5b0", "date": "2026-03-21 11:59:14 +0100", "message": "fix: security hardening, LiveKit class refactor, and eng review fixes", "type": "fix" }, { "hash": "c3b44d1972c5d09a75d5316dd599d62201c02e63", "date": "2026-03-21 10:08:44 +0100", "message": "refactor: server hardening + client decomposition + protocol resilience", "type": "refactor" }, { "hash": "f7a6e0e0957bfaa1f3e84d12188cacbf3f749382", "date": "2026-03-19 21:35:18 +0100", "message": "fix: voice rejoin failure, SDP race, deafen bypass + add server voice logging", "type": "fix" }, { "hash": "aa713390e4669998f964cc11dec0ddc8c3f443cc", "date": "2026-03-19 04:27:11 +0100", "message": "fix: add rows.Err() check in GetAttachmentsByMessageIDs", "type": "fix" }, { "hash": "ce6204c4635763b1fa0564e6ae44cf42ae37b965", "date": "2026-03-19 04:19:03 +0100", "message": "fix: resolve 5 remaining medium/low issues from third-pass go-review", "type": "fix" }, { "hash": "a1d1560e76b058fe991d539d5ec03829a15e5ce8", "date": "2026-03-19 04:04:53 +0100", "message": "fix: resolve 6 medium issues from full go-review", "type": "fix" }, { "hash": "69564df29b525fbc0a37af95cb5392eb2c4d04f7", "date": "2026-03-19 03:53:40 +0100", "message": "fix: resolve 1 critical and 5 high security/reliability issues from go-review", "type": "fix" }, { "hash": "6dbb945213901429f50a77c4648a5eab67271418", "date": "2026-03-18 14:13:52 +0100", "message": "feat: file uploads, URL previews, emoji search, voice mute fixes, UX improvements", "type": "feat" }, { "hash": "70a8b5f2b80b8f1daf8471d31b6b89a3b0dbf824", "date": "2026-03-18 05:03:38 +0100", "message": "test: boost server test coverage to 80%+ across all packages", "type": "test" }, { "hash": "1548e6496c3677160a0f29538f77edc7276ba37c", "date": "2026-03-17 20:25:15 +0100", "message": "feat: TOFU cert pinning, voice channel sidebar, scroll-to-message, profiles, and review fixes", "type": "feat" }, { "hash": "2cc0be227e0aa31170a6fdc79af660de16d5ecae", "date": "2026-03-17 14:54:50 +0100", "message": "fix: address PR #15 review issues (#16-#23)", "type": "fix" }, { "hash": "8d47f4c2fa78267171ed52aed957639f1842978b", "date": "2026-03-17 08:09:52 +0100", "message": "fix: resolve all golangci-lint issues blocking CI server build", "type": "fix" }, { "hash": "84f938a6db26d4fbe9db6da0acb20deea53110c3", "date": "2026-03-17 04:11:04 +0100", "message": "fix: address PR review findings (issues #9-#14)", "type": "fix" }, { "hash": "1914067941b8512b895e32075fe2ced0b3da3841", "date": "2026-03-17 03:20:37 +0100", "message": "fix: address PR review findings (issues #3-#8)", "type": "fix" }, { "hash": "79f0040f376c989650af60b35a7449b45f40935b", "date": "2026-03-17 02:56:19 +0100", "message": "feat: server enhancements, client test selectors, and UI polish", "type": "feat" }, { "hash": "45d1cf9747814e7688155e10a0637e5118e6ae54", "date": "2026-03-17 01:59:34 +0100", "message": "fix: resolve 15 post-review issues across server and client", "type": "fix" }, { "hash": "642cd541c781649698799245a6a3d0f4a8ae0a02", "date": "2026-03-16 17:00:09 +0100", "message": "feat: add attachment persistence and link on chat_send (High #3)", "type": "feat" }, { "hash": "0bd9165f61f361a5acb9fb85ffd0e3cf8aca6d29", "date": "2026-03-16 16:57:01 +0100", "message": "feat: align REST responses with API.md spec (High #1)", "type": "feat" }, { "hash": "0680a32496e69f60a21d76a80d2a2d40244fe805", "date": "2026-03-16 16:54:56 +0100", "message": "fix: resolve 4 Critical + 2 High + 1 Medium server protocol violations", "type": "fix" }, { "hash": "aa194f45b39c17f9bf74868941f3e31dd5bf73e4", "date": "2026-03-15 12:21:10 +0100", "message": "fix: prevent stale \"online\" status for users not connected via WebSocket", "type": "fix" }, { "hash": "c56244366097c8b44013e130994360d421a50c01", "date": "2026-03-15 12:18:19 +0100", "message": "fix: add JSON tags to Role/VoiceState, fix WebSocket error surfacing", "type": "fix" }, { "hash": "48a0db7224b708bcb7360c1897b78611f0d954f0", "date": "2026-03-15 11:42:25 +0100", "message": "feat: implement full client UI from mockup — 10 phases, 331 tests", "type": "feat" }, { "hash": "46b7efe5fcacb4df88c54ef22135afdbb515d368", "date": "2026-03-15 07:07:59 +0100", "message": "feat: add Let's Encrypt ACME support, fix security issues, improve server UX", "type": "feat" }, { "hash": "19127598984b1f26e2099afae0c4e9c21675c46b", "date": "2026-03-15 00:31:39 +0100", "message": "feat: redesign login UI, add save-password, fix permissions, add audit logging, member_join broadcast", "type": "feat" }, { "hash": "61dc275a1545f772753bee1585ac8b030d8cae1a", "date": "2026-03-14 22:36:35 +0100", "message": "feat: add setup wizard for initial owner account creation", "type": "feat" }, { "hash": "dad5607721aba88da76b554e6b1af9cadcaa1e3b", "date": "2026-03-14 21:31:03 +0100", "message": "feat: implement Phase 5 (voice/WebRTC signaling) and Phase 6 (admin panel)", "type": "feat" }, { "hash": "7b4f6cda1c40d841d3cef62d119f3d1b423e83e9", "date": "2026-03-14 21:17:09 +0100", "message": "feat: implement Phase 4 real-time chat (WebSocket hub + message REST)", "type": "feat" }, { "hash": "7d03f59c2fb92f8a71bd680cf2303ce5a92e3860", "date": "2026-03-14 20:52:11 +0100", "message": "feat: implement Phase 2 auth & security with TDD", "type": "feat" }, { "hash": "5868fdd0b3b00f542ac6fabf4afdcab847dc4a98", "date": "2026-03-14 20:34:37 +0100", "message": "feat: implement Phase 1 server skeleton with TDD", "type": "feat" } ] }, "go:scripts": { "count": 3, "lastCommit": "2026-03-30 21:54:24 +0200", "commits": [ { "hash": "7f31a6aa43b357b8f727f696bf92c7ee9328a0d3", "date": "2026-03-30 21:54:24 +0200", "message": "fix: resolve CI failures — eslint peer dep conflict and errcheck lint errors", "type": "fix" }, { "hash": "d7a2e5b8f59808e451c4b0c89e680e76bdf182a5", "date": "2026-03-29 12:19:08 +0200", "message": "refactor: extensibility overhaul — handler registry, permission checker, sidebar decomposition, DX improvements", "type": "refactor" }, { "hash": "c3b44d1972c5d09a75d5316dd599d62201c02e63", "date": "2026-03-21 10:08:44 +0100", "message": "refactor: server hardening + client decomposition + protocol resilience", "type": "refactor" } ] }, "go:ws": { "count": 72, "lastCommit": "2026-03-30 21:54:24 +0200", "commits": [ { "hash": "7f31a6aa43b357b8f727f696bf92c7ee9328a0d3", "date": "2026-03-30 21:54:24 +0200", "message": "fix: resolve CI failures — eslint peer dep conflict and errcheck lint errors", "type": "fix" }, { "hash": "1eeaa4909489c565857cebfa24515181a05e8f5f", "date": "2026-03-30 16:35:02 +0200", "message": "test: fix 10 test quality bugs (BUG-058–067) and resolve 115 TS type errors", "type": "test" }, { "hash": "97f186041da8052d054cff73c93f23886bd374d5", "date": "2026-03-29 19:39:46 +0200", "message": "refactor: context propagation, LogAudit deadlock fix, ESLint v9, code quality", "type": "refactor" }, { "hash": "9ec875d450b53bebb4a18f6e7b1c27715d44e4c1", "date": "2026-03-29 12:35:04 +0200", "message": "fix: security hardening — 45 issues from full-project Copilot audit", "type": "fix" }, { "hash": "d7a2e5b8f59808e451c4b0c89e680e76bdf182a5", "date": "2026-03-29 12:19:08 +0200", "message": "refactor: extensibility overhaul — handler registry, permission checker, sidebar decomposition, DX improvements", "type": "refactor" }, { "hash": "8a972fad433ef4a3ee7316c966749b5f04812b2e", "date": "2026-03-29 00:51:54 +0100", "message": "feat: voice/video polish — refactor, AudioWorklet VAD, bug fixes, UX improvements", "type": "feat" }, { "hash": "9f31e8b017a0004f8d7d04c33741a484edd7557b", "date": "2026-03-28 20:42:37 +0100", "message": "feat: add observability, debugging, and diagnostics across all layers", "type": "feat" }, { "hash": "57c35c2b6821a3f43297295b2e4edc5cb9943433", "date": "2026-03-28 18:55:11 +0100", "message": "fix: CI failures — correct chat delete test expectations and coverage threshold", "type": "fix" }, { "hash": "26b3f954bf0e165f601f5b562f0c76eb47afb828", "date": "2026-03-28 18:43:23 +0100", "message": "chore: remove unused dmChannelClosePayload and buildDMChannelClose", "type": "chore" }, { "hash": "297a3694217b29afb61b685af6a280933b1cdbb7", "date": "2026-03-28 18:23:18 +0100", "message": "fix: LiveKit voice connection for remote clients behind reverse proxy", "type": "fix" }, { "hash": "c2b5d8e15b814e7ce5d065446fce738b8f7d3c4c", "date": "2026-03-28 10:39:23 +0100", "message": "feat: comprehensive spec docs, test suite, E2E overhaul, and security hardening", "type": "feat" }, { "hash": "c76534a2230904b773316c6d74c1e13b80cff4d4", "date": "2026-03-27 16:14:54 +0100", "message": "fix: security hardening, DM auth, LiveKit stability, and voice call timer", "type": "fix" }, { "hash": "3dff9fef64db54cdfe153d48f46d9cc7d7bac9d0", "date": "2026-03-27 13:58:48 +0100", "message": "feat(server): add DM REST endpoints, WebSocket routing, and ready payload", "type": "feat" }, { "hash": "3d50b0570d0f314d727b954403e2d7ab8a059038", "date": "2026-03-26 20:53:09 +0100", "message": "fix: voice mute pipeline, security hardening, and video tile controls", "type": "fix" }, { "hash": "30b5c0203971be61594535a3df9e58044c2c0648", "date": "2026-03-25 17:28:14 +0100", "message": "fix: remove invalid active_loopback_prevention from LiveKit config", "type": "fix" }, { "hash": "738f4970576467e285c051549a4d78241966958c", "date": "2026-03-24 21:35:40 +0100", "message": "fix: address code review — 8 issues across server and client", "type": "fix" }, { "hash": "2794662a48d480ba06add8132cba2d6f9adfaf5f", "date": "2026-03-24 21:30:23 +0100", "message": "feat: LiveKit migration — permissions, auth hardening, voice improvements", "type": "feat" }, { "hash": "edf4d9e48b0eb417a5bd7003d18688b81bc8dbbb", "date": "2026-03-24 20:23:40 +0100", "message": "fix: address code review — security hardening, leak fixes, credential safety", "type": "fix" }, { "hash": "d498e8fcce75ec39eee072f307d1b62f16be29d9", "date": "2026-03-22 21:10:02 +0100", "message": "fix: resolve LiveKit voice issues — duplicate audio, tunnel effect with 5+ users", "type": "fix" }, { "hash": "076402ab010e0eb1659cb776bd8bee8417d31e48", "date": "2026-03-22 20:06:59 +0100", "message": "fix: resolve CI failures — lint errors and coverage threshold", "type": "fix" }, { "hash": "19aa699f17ecb3cadf770b70b15009dd8e1572fb", "date": "2026-03-22 19:29:42 +0100", "message": "fix: address CEO review findings — health check, error logging, camera guard, metrics, tests", "type": "fix" }, { "hash": "393d277f19a89a5987b0e0fc3993a360f3b62171", "date": "2026-03-21 12:34:31 +0100", "message": "fix: virtual scroll jumping with images/GIFs", "type": "fix" }, { "hash": "1f1432376acf6cda97b3c58fbaeddb62efabf5b0", "date": "2026-03-21 11:59:14 +0100", "message": "fix: security hardening, LiveKit class refactor, and eng review fixes", "type": "fix" }, { "hash": "c3b44d1972c5d09a75d5316dd599d62201c02e63", "date": "2026-03-21 10:08:44 +0100", "message": "refactor: server hardening + client decomposition + protocol resilience", "type": "refactor" }, { "hash": "2dfb73083f42c00a354cac57187d47c2e8f19401", "date": "2026-03-20 15:21:56 +0100", "message": "refactor: UI architecture improvements + GIF auto-pause", "type": "refactor" }, { "hash": "0b2106af886fe3e3719337ea9a299883ab12b102", "date": "2026-03-20 12:30:12 +0100", "message": "fix: camera button delay and video feed flickering + security hardening", "type": "fix" }, { "hash": "ff2b82280c6002a5363f25af434e1898b15322ca", "date": "2026-03-20 06:27:43 +0100", "message": "fix: resolve LiveKit connection issues", "type": "fix" }, { "hash": "da760b34bf2c956e3597cd6aafafe7c22ba133e8", "date": "2026-03-20 06:11:09 +0100", "message": "fix: proxy LiveKit through HTTPS to fix mixed-content block", "type": "fix" }, { "hash": "3d37758baf1388f939b030d9f596fe88b4c6735b", "date": "2026-03-20 05:34:38 +0100", "message": "feat: add LiveKit webhook handler (Phase 1.5)", "type": "feat" }, { "hash": "a7b53d42f30bbdf99d13a943d0e3b24aab261eb2", "date": "2026-03-20 05:30:27 +0100", "message": "feat: rewrite server voice handlers for LiveKit (Phase 1)", "type": "feat" }, { "hash": "923d071a71342c771f3314744e81f5f16e8ce845", "date": "2026-03-20 05:14:52 +0100", "message": "feat: add LiveKit infrastructure (Phase 0)", "type": "feat" }, { "hash": "f7a6e0e0957bfaa1f3e84d12188cacbf3f749382", "date": "2026-03-19 21:35:18 +0100", "message": "fix: voice rejoin failure, SDP race, deafen bypass + add server voice logging", "type": "fix" }, { "hash": "92be1372292e3dc1fb342752bf326d87af6f2a57", "date": "2026-03-19 17:13:59 +0100", "message": "fix: use unique stream IDs for audio and video tracks to prevent dedup collision", "type": "fix" }, { "hash": "e16651093770e7920ad6e84df93d458ab72887ab", "date": "2026-03-19 16:52:15 +0100", "message": "test: add video track coexistence integration test", "type": "test" }, { "hash": "0be1250c71d5726eb44d7f4281e0d8535bac81d7", "date": "2026-03-19 16:33:47 +0100", "message": "feat: extend SFU to forward video tracks and enforce MaxVideo limit", "type": "feat" }, { "hash": "2bab20ea4f45aa10867280c4e86f89b4a0e428fe", "date": "2026-03-19 16:25:12 +0100", "message": "refactor: use composite track keys in VoiceRoom for multi-track support", "type": "refactor" }, { "hash": "22706a795581a003059a9838ace4ac05d43fefb2", "date": "2026-03-19 06:20:00 +0100", "message": "fix: resolve CI failures in server lint and client tests", "type": "fix" }, { "hash": "a1d1560e76b058fe991d539d5ec03829a15e5ce8", "date": "2026-03-19 04:04:53 +0100", "message": "fix: resolve 6 medium issues from full go-review", "type": "fix" }, { "hash": "69564df29b525fbc0a37af95cb5392eb2c4d04f7", "date": "2026-03-19 03:53:40 +0100", "message": "fix: resolve 1 critical and 5 high security/reliability issues from go-review", "type": "fix" }, { "hash": "5327b2681a0e31e4342bac24af20dfbb6299df29", "date": "2026-03-18 23:02:06 +0100", "message": "feat: fix voice chat over NAT, audio pipeline, and add comprehensive debugging", "type": "feat" }, { "hash": "6dbb945213901429f50a77c4648a5eab67271418", "date": "2026-03-18 14:13:52 +0100", "message": "feat: file uploads, URL previews, emoji search, voice mute fixes, UX improvements", "type": "feat" }, { "hash": "a9b816cf2646f7aa6689812feb770d83af95c0e7", "date": "2026-03-18 07:24:19 +0100", "message": "fix: prevent stale PeerConnection callbacks from killing new voice sessions", "type": "fix" }, { "hash": "70a8b5f2b80b8f1daf8471d31b6b89a3b0dbf824", "date": "2026-03-18 05:03:38 +0100", "message": "test: boost server test coverage to 80%+ across all packages", "type": "test" }, { "hash": "bc12273ab78155ba942b2d9296736cec8254326b", "date": "2026-03-18 04:30:38 +0100", "message": "fix: resolve CI failures — coverage exclusion and stale test removal", "type": "fix" }, { "hash": "a97c4e928ce471ee92c836ad964d7b284cd49be1", "date": "2026-03-18 04:16:49 +0100", "message": "fix: guard ICE close handler to prevent double voice_leave and SQLITE_BUSY", "type": "fix" }, { "hash": "9cc9ae95cc69cf85ad2e49826cd9aa89ca6bbfed", "date": "2026-03-18 04:13:12 +0100", "message": "fix: voice session cleanup on ICE close and connection failure", "type": "fix" }, { "hash": "74736439302946749bce01f4d23f38221315bf7f", "date": "2026-03-18 03:53:22 +0100", "message": "feat: wire SFU track forwarding and renegotiation in voice handlers", "type": "feat" }, { "hash": "fe4b5494d1e6cf00500a8d79ea6acc70e9f70181", "date": "2026-03-18 03:49:23 +0100", "message": "feat: add renegotiateParticipant with Perfect Negotiation", "type": "feat" }, { "hash": "62efd74a4dc2e7649b6a976c31bb8a6b0cf4efac", "date": "2026-03-18 03:47:30 +0100", "message": "feat: add GetClient helper and ICE candidate callback", "type": "feat" }, { "hash": "e3ee8a460a1470284446ebb646c5c45488e3a8c7", "date": "2026-03-18 03:44:38 +0100", "message": "feat: add buildVoiceOffer and buildVoiceICE message builders", "type": "feat" }, { "hash": "63ca0b8e00469754e13c978fee9eef8dfc499b83", "date": "2026-03-18 03:41:48 +0100", "message": "feat: add VoiceTrack struct and track CRUD to VoiceRoom", "type": "feat" }, { "hash": "00bbb46b62c3aab6e5791795c3602ed2a1f05ed8", "date": "2026-03-18 02:41:55 +0100", "message": "fix: reject duplicate WebSocket logins to prevent reconnect ping-pong", "type": "fix" }, { "hash": "1548e6496c3677160a0f29538f77edc7276ba37c", "date": "2026-03-17 20:25:15 +0100", "message": "feat: TOFU cert pinning, voice channel sidebar, scroll-to-message, profiles, and review fixes", "type": "feat" }, { "hash": "fd3b65b0655ee2fc043491eccf2f0d67b0acd122", "date": "2026-03-17 20:03:34 +0100", "message": "fix: voice channel join/leave visibility and disconnect bugs", "type": "fix" }, { "hash": "17eb67811f7844324d6703bfddce0d7ae8996267", "date": "2026-03-17 14:01:26 +0000", "message": "fix: resolve CI failures — errcheck lint and TS noUncheckedIndexedAccess errors", "type": "fix" }, { "hash": "2cc0be227e0aa31170a6fdc79af660de16d5ecae", "date": "2026-03-17 14:54:50 +0100", "message": "fix: address PR #15 review issues (#16-#23)", "type": "fix" }, { "hash": "e92b8fe2df616937c26338fe56319977db194497", "date": "2026-03-17 11:05:52 +0100", "message": "feat: TOFU cert pinning, settings cache refactor, ban enforcement, and 80%+ test coverage", "type": "feat" }, { "hash": "8d47f4c2fa78267171ed52aed957639f1842978b", "date": "2026-03-17 08:09:52 +0100", "message": "fix: resolve all golangci-lint issues blocking CI server build", "type": "fix" }, { "hash": "84f938a6db26d4fbe9db6da0acb20deea53110c3", "date": "2026-03-17 04:11:04 +0100", "message": "fix: address PR review findings (issues #9-#14)", "type": "fix" }, { "hash": "1914067941b8512b895e32075fe2ced0b3da3841", "date": "2026-03-17 03:20:37 +0100", "message": "fix: address PR review findings (issues #3-#8)", "type": "fix" }, { "hash": "79f0040f376c989650af60b35a7449b45f40935b", "date": "2026-03-17 02:56:19 +0100", "message": "feat: server enhancements, client test selectors, and UI polish", "type": "feat" }, { "hash": "45d1cf9747814e7688155e10a0637e5118e6ae54", "date": "2026-03-17 01:59:34 +0100", "message": "fix: resolve 15 post-review issues across server and client", "type": "fix" }, { "hash": "46e811031e23a6631ab475926af034e35802903a", "date": "2026-03-16 17:17:00 +0100", "message": "test: add authorization and contract tests for channel access", "type": "test" }, { "hash": "642cd541c781649698799245a6a3d0f4a8ae0a02", "date": "2026-03-16 17:00:09 +0100", "message": "feat: add attachment persistence and link on chat_send (High #3)", "type": "feat" }, { "hash": "0680a32496e69f60a21d76a80d2a2d40244fe805", "date": "2026-03-16 16:54:56 +0100", "message": "fix: resolve 4 Critical + 2 High + 1 Medium server protocol violations", "type": "fix" }, { "hash": "48a0db7224b708bcb7360c1897b78611f0d954f0", "date": "2026-03-15 11:42:25 +0100", "message": "feat: implement full client UI from mockup — 10 phases, 331 tests", "type": "feat" }, { "hash": "46b7efe5fcacb4df88c54ef22135afdbb515d368", "date": "2026-03-15 07:07:59 +0100", "message": "feat: add Let's Encrypt ACME support, fix security issues, improve server UX", "type": "feat" }, { "hash": "19127598984b1f26e2099afae0c4e9c21675c46b", "date": "2026-03-15 00:31:39 +0100", "message": "feat: redesign login UI, add save-password, fix permissions, add audit logging, member_join broadcast", "type": "feat" }, { "hash": "09efb58697a546435cd3258f89249dbc97662254", "date": "2026-03-14 21:58:18 +0100", "message": "feat: add server_restart WebSocket message type for update notifications", "type": "feat" }, { "hash": "dad5607721aba88da76b554e6b1af9cadcaa1e3b", "date": "2026-03-14 21:31:03 +0100", "message": "feat: implement Phase 5 (voice/WebRTC signaling) and Phase 6 (admin panel)", "type": "feat" }, { "hash": "7b4f6cda1c40d841d3cef62d119f3d1b423e83e9", "date": "2026-03-14 21:17:09 +0100", "message": "feat: implement Phase 4 real-time chat (WebSocket hub + message REST)", "type": "feat" }, { "hash": "5868fdd0b3b00f542ac6fabf4afdcab847dc4a98", "date": "2026-03-14 20:34:37 +0100", "message": "feat: implement Phase 1 server skeleton with TDD", "type": "feat" } ] }, "client:other": { "count": 15, "lastCommit": "2026-03-30 21:05:28 +0200", "commits": [ { "hash": "44390ad886be392b55d1a15995eba0fb9c4a80d1", "date": "2026-03-30 21:05:28 +0200", "message": "chore: clean up tracked files for v1.0.0 public release", "type": "chore" }, { "hash": "264b4f0f65fccc8ec7ec8fa9e8c61a10284a3cb0", "date": "2026-03-17 02:52:49 +0100", "message": "chore: clean up remaining WPF artifacts and track missing files", "type": "chore" }, { "hash": "5c4a232bde25f75b72cbe338d530e15d2631f430", "date": "2026-03-17 02:49:45 +0100", "message": "chore: remove legacy WPF client code and references", "type": "chore" }, { "hash": "743a2d974738f76db7764bdd43e78fbf25889d4f", "date": "2026-03-15 16:54:55 +0100", "message": "chore: update .gitignore to exclude local tooling, build artifacts, and internal docs", "type": "chore" }, { "hash": "c56244366097c8b44013e130994360d421a50c01", "date": "2026-03-15 12:18:19 +0100", "message": "fix: add JSON tags to Role/VoiceState, fix WebSocket error surfacing", "type": "fix" }, { "hash": "eac665ac88f3ce301b6ab523d507d934dc432777", "date": "2026-03-15 12:00:28 +0100", "message": "perf: fix O(n) allocations, freeze brushes, improve disposal and nullability", "type": "perf" }, { "hash": "86f95173051af898db3e623c746d2b37ca01e3c2", "date": "2026-03-15 11:53:52 +0100", "message": "fix: resolve critical TLS race, invisible messages, and 5 other review issues", "type": "fix" }, { "hash": "48a0db7224b708bcb7360c1897b78611f0d954f0", "date": "2026-03-15 11:42:25 +0100", "message": "feat: implement full client UI from mockup — 10 phases, 331 tests", "type": "feat" }, { "hash": "46b7efe5fcacb4df88c54ef22135afdbb515d368", "date": "2026-03-15 07:07:59 +0100", "message": "feat: add Let's Encrypt ACME support, fix security issues, improve server UX", "type": "feat" }, { "hash": "32f2833eb458e9472c865439d3b2832967eab496", "date": "2026-03-15 00:33:07 +0100", "message": "chore: gitignore client publish output directories", "type": "chore" }, { "hash": "6de2764cf72a5eee45682bb9ab3a9b825220d683", "date": "2026-03-15 00:31:56 +0100", "message": "fix: include SavePassword/LoadPassword/DeletePassword in ICredentialService interface", "type": "fix" }, { "hash": "19127598984b1f26e2099afae0c4e9c21675c46b", "date": "2026-03-15 00:31:39 +0100", "message": "feat: redesign login UI, add save-password, fix permissions, add audit logging, member_join broadcast", "type": "feat" }, { "hash": "a7ef09c69b9da0d70b60722826fb4f178d02da10", "date": "2026-03-14 22:04:24 +0100", "message": "feat: implement client auto-update with GitHub Release checking and update dialog", "type": "feat" }, { "hash": "94d0539f7f8d9065381e92bf69572ae6467eece7", "date": "2026-03-14 21:07:25 +0100", "message": "chore: add Client .gitignore, remove tracked build artifacts", "type": "chore" }, { "hash": "213c346bfaa292aaaca1eb81ef6b7a020ddf6417", "date": "2026-03-14 21:07:07 +0100", "message": "feat: scaffold Phase 3 WPF client shell with MVVM and TDD structure", "type": "feat" } ] }, "ts:components": { "count": 102, "lastCommit": "2026-03-30 20:13:34 +0200", "commits": [ { "hash": "b059bd4a04aead5271422f74c1094760b14e8c38", "date": "2026-03-30 20:13:34 +0200", "message": "feat: Discord-style video grid with fixed 16:9 aspect ratio", "type": "feat" }, { "hash": "4f489a1a4d037e16e84d9f0f3e10d9fea7d47065", "date": "2026-03-30 19:12:36 +0200", "message": "feat: sidebar stream preview + screenshare focus fix", "type": "feat" }, { "hash": "34f1fe3454157a41d3e0e567a7cb45c1bb67bd30", "date": "2026-03-30 12:42:31 +0200", "message": "fix: settings tab bug fixes, expanded tests, and coverage improvements", "type": "fix" }, { "hash": "23b62a964c798ca99996be4de65e210a05b1af02", "date": "2026-03-29 21:34:54 +0200", "message": "fix: TypeScript build errors in embeds.ts and totp-settings test", "type": "fix" }, { "hash": "9bb99f76eb90b28754f50ffd584c3246c592f3b3", "date": "2026-03-29 21:31:18 +0200", "message": "feat: TOTP 2FA settings UI, server hardening, full validation pass", "type": "feat" }, { "hash": "b386163dabdaa4c046a692cdeb517974affa4ec5", "date": "2026-03-29 19:40:11 +0200", "message": "chore: ESLint config, 61 lint fixes across 22 client files, CLAUDE.md update", "type": "chore" }, { "hash": "d8ce044436771842f39f679dcf62c189b9b755dc", "date": "2026-03-29 19:39:22 +0200", "message": "fix: atomic invite registration, fail-closed search, proxy-aware rate limiting", "type": "fix" }, { "hash": "9ec875d450b53bebb4a18f6e7b1c27715d44e4c1", "date": "2026-03-29 12:35:04 +0200", "message": "fix: security hardening — 45 issues from full-project Copilot audit", "type": "fix" }, { "hash": "d7a2e5b8f59808e451c4b0c89e680e76bdf182a5", "date": "2026-03-29 12:19:08 +0200", "message": "refactor: extensibility overhaul — handler registry, permission checker, sidebar decomposition, DX improvements", "type": "refactor" }, { "hash": "8a972fad433ef4a3ee7316c966749b5f04812b2e", "date": "2026-03-29 00:51:54 +0100", "message": "feat: voice/video polish — refactor, AudioWorklet VAD, bug fixes, UX improvements", "type": "feat" }, { "hash": "9f31e8b017a0004f8d7d04c33741a484edd7557b", "date": "2026-03-28 20:42:37 +0100", "message": "feat: add observability, debugging, and diagnostics across all layers", "type": "feat" }, { "hash": "894b4ed829e6820d6199121f4c6709363df7280d", "date": "2026-03-28 13:21:07 +0100", "message": "fix: resolve all 11 open bugs, add account deletion, harden security", "type": "fix" }, { "hash": "21a438dca52f7c20ac31a03b900900fc3c09973e", "date": "2026-03-28 12:16:57 +0100", "message": "fix: accent color persistence and Discord-style settings panel", "type": "fix" }, { "hash": "c76534a2230904b773316c6d74c1e13b80cff4d4", "date": "2026-03-27 16:14:54 +0100", "message": "fix: security hardening, DM auth, LiveKit stability, and voice call timer", "type": "fix" }, { "hash": "9636d0e9761b69b762ef869a5eaa1eb65cbb1320", "date": "2026-03-27 14:25:54 +0100", "message": "fix: DM header shows @ instead of #, DM welcome message, DM appears in sidebar list", "type": "fix" }, { "hash": "29d16f5976cc2d92050c56e88cff7295bc62a0c4", "date": "2026-03-27 13:19:07 +0100", "message": "fix: make neon-glow default theme, accent color picker now overrides theme accent", "type": "fix" }, { "hash": "6858c67408f19f973ac02f8658522825db85646e", "date": "2026-03-27 13:10:21 +0100", "message": "chore: stage QuickSwitchOverlay files missed from earlier commit", "type": "chore" }, { "hash": "2829220f06432cc6ae7e502059b898de79b12357", "date": "2026-03-27 12:22:22 +0100", "message": "fix: address code review — test regression, theme consolidation, validation, dead CSS", "type": "fix" }, { "hash": "80cd05923678a8552faf970c3f1e101d44f48938", "date": "2026-03-27 12:09:47 +0100", "message": "feat: add neon-glow to theme selector and apply body class on theme switch", "type": "feat" }, { "hash": "00a92851d4e2e92ed9412825fb2a70292770b889", "date": "2026-03-27 12:09:38 +0100", "message": "refactor: remove ServerStrip component and CSS (replaced by unified sidebar)", "type": "refactor" }, { "hash": "de5952fd269275179111c100031947ce49fd1ddd", "date": "2026-03-27 11:46:40 +0100", "message": "feat: add back-to-server header to DmSidebar", "type": "feat" }, { "hash": "57985d0a7f40496bc1dd65527fcbe617176b9ca7", "date": "2026-03-27 11:39:48 +0100", "message": "feat: add disconnect/switch-server button to UserBar", "type": "feat" }, { "hash": "8731750f75ca66c8870ddca5a03bce5fa2d5cb03", "date": "2026-03-27 08:35:37 +0100", "message": "feat: voice connection quality indicator with transport stats", "type": "feat" }, { "hash": "394b8e4b2da490e269e5d4760ad66925cf4180d1", "date": "2026-03-27 08:05:32 +0100", "message": "fix: client code review — 27 fixes across 17 files", "type": "fix" }, { "hash": "63a3dfd79000e7d0e970207d8143471bd1249db7", "date": "2026-03-26 22:09:56 +0100", "message": "chore: remaining unstaged changes — rnnoise worklet, tests, renderers", "type": "chore" }, { "hash": "8f2f106399ed19a3d3c53f6b21f25fc6a620acf1", "date": "2026-03-26 22:07:52 +0100", "message": "feat: stream quality presets, nuclear mute, sidebar width fix", "type": "feat" }, { "hash": "3d50b0570d0f314d727b954403e2d7ab8a059038", "date": "2026-03-26 20:53:09 +0100", "message": "fix: voice mute pipeline, security hardening, and video tile controls", "type": "fix" }, { "hash": "d87291e90fa491b4b396ce547b0cfea4a74c7024", "date": "2026-03-26 18:07:20 +0100", "message": "feat: full screenshare support — button state, video grid, auto-reconnect", "type": "feat" }, { "hash": "c1d3d34768be3213e6dff6728e9b558c208d1283", "date": "2026-03-25 19:15:50 +0100", "message": "fix: invert sensitivity slider direction to match Discord UX", "type": "fix" }, { "hash": "c496f830aee2145a9f7c6c08c41b6fb67118f327", "date": "2026-03-25 19:07:52 +0100", "message": "fix: voice audio pipeline — autoplay unlock and GainNode-based VAD", "type": "fix" }, { "hash": "738f4970576467e285c051549a4d78241966958c", "date": "2026-03-24 21:35:40 +0100", "message": "fix: address code review — 8 issues across server and client", "type": "fix" }, { "hash": "2794662a48d480ba06add8132cba2d6f9adfaf5f", "date": "2026-03-24 21:30:23 +0100", "message": "feat: LiveKit migration — permissions, auth hardening, voice improvements", "type": "feat" }, { "hash": "edf4d9e48b0eb417a5bd7003d18688b81bc8dbbb", "date": "2026-03-24 20:23:40 +0100", "message": "fix: address code review — security hardening, leak fixes, credential safety", "type": "fix" }, { "hash": "10063e0487172f606cab3fe385e33edd57befd29", "date": "2026-03-22 19:29:53 +0100", "message": "fix: address design review findings — empty states, ARIA, token refresh", "type": "fix" }, { "hash": "46be81081a009c022710b0275a3994ed1cbb191a", "date": "2026-03-22 12:07:24 +0100", "message": "fix: address code review issues in settings and message rendering", "type": "fix" }, { "hash": "78c13c7ec43e0867cbe6d7b4cb9a705c3d99c1bb", "date": "2026-03-22 11:16:21 +0100", "message": "fix: use Rust invoke for Open DevTools button", "type": "fix" }, { "hash": "5df1cf71cb05ff82a2c9c67ff3d263fad4a0dee6", "date": "2026-03-22 11:02:38 +0100", "message": "feat: wire up settings preferences to their consuming features", "type": "feat" }, { "hash": "6734deb57e0f3247089c2dc5eeb5c8c84136d554", "date": "2026-03-22 10:31:00 +0100", "message": "fix: scope settings CSS classes and use correct separator class", "type": "fix" }, { "hash": "8215c500cbbf4a60edcef31e5dfccec75c10f743", "date": "2026-03-22 10:29:46 +0100", "message": "feat: add Navigation, Communication, and Messages sections to Keybinds tab", "type": "feat" }, { "hash": "7a2feb1a55eb85037e68b0a9fa385a749d680287", "date": "2026-03-22 10:26:41 +0100", "message": "feat: add Advanced settings tab with Developer Mode, Hardware Acceleration, and DevTools", "type": "feat" }, { "hash": "57137d1a416374dd4f4c46943ec6bc7cf5634779", "date": "2026-03-22 10:18:18 +0100", "message": "feat: add Accessibility settings tab with reduced motion, high contrast, and large font", "type": "feat" }, { "hash": "f9bdeca12e1cd70fb0885afb41ec4f0aab5fd63f", "date": "2026-03-22 10:09:41 +0100", "message": "feat: add Text & Images settings tab", "type": "feat" }, { "hash": "f89226b68d6f5c1a7a5772f6b46ffa38684f969c", "date": "2026-03-22 10:04:49 +0100", "message": "feat: add user status selector to Account settings tab", "type": "feat" }, { "hash": "aed8734828503b21e5a908bcac8b592e9e184a1a", "date": "2026-03-22 09:54:07 +0100", "message": "feat: add input/output volume sliders to Voice & Audio settings tab", "type": "feat" }, { "hash": "20e30bee96237c1d8970c294a4c249fe1f864137", "date": "2026-03-22 09:50:32 +0100", "message": "feat: add accent color picker to Appearance settings tab", "type": "feat" }, { "hash": "ea2edcd6896d58a8f6d0b4b466aa92912136f1bd", "date": "2026-03-22 09:44:46 +0100", "message": "fix: remove duplicate h1 headers in settings tabs and guard camera auto-start", "type": "fix" }, { "hash": "c3a13d09a142bcf4b233a278c9178d0f05fc3cfa", "date": "2026-03-22 09:30:03 +0100", "message": "fix: address review issues in settings redesign", "type": "fix" }, { "hash": "5bf9f89ed3aa1546d0e16577425d6553210eb434", "date": "2026-03-22 09:18:52 +0100", "message": "feat: Discord-style account profile card redesign (Phase 2 + 3)", "type": "feat" }, { "hash": "39eb2ab2b8545fe875cf5a5c80451ac3d0d035cf", "date": "2026-03-22 09:14:55 +0100", "message": "feat: Discord-style settings sidebar with icons, profile section, and categories", "type": "feat" }, { "hash": "e0a811fc156c90f24cdb92232699cbf3d1bc4825", "date": "2026-03-22 09:00:48 +0100", "message": "feat: Discord-style timestamps, reply avatars, virtual scroll fixes", "type": "feat" }, { "hash": "1679d071783a26d514d1a603d0e9912c8f398da6", "date": "2026-03-22 08:47:09 +0100", "message": "feat: add Discord-style timestamp formatting and message layout tokens", "type": "feat" }, { "hash": "5048a077810934e800d1e2e26b15da257f511fcc", "date": "2026-03-22 08:19:22 +0100", "message": "style: redesign server invites modal with card layout and icons", "type": "other" }, { "hash": "2536b619bdecfeb29f084932c9214049ba0c3c1c", "date": "2026-03-21 23:33:18 +0100", "message": "feat: replace all emoji icons with Lucide SVG icons", "type": "feat" }, { "hash": "fa690a9ad41ac70fc20c10282ed148382209d4fe", "date": "2026-03-21 21:55:28 +0100", "message": "polish: pinned panel — avatar colors, timestamp formatting, CSS tokens", "type": "other" }, { "hash": "8445fa6799341ef00b0a1fd668a726423ea5b0d2", "date": "2026-03-21 21:51:05 +0100", "message": "feat: Discord-style pinned messages panel with avatars and animations", "type": "feat" }, { "hash": "e9ddef659ea489550f0787cfad4c528de604ff3c", "date": "2026-03-21 21:15:55 +0100", "message": "feat: add copy button to code blocks", "type": "feat" }, { "hash": "a522ff4aa26b85413a91aa73ac4458cc10a0eb72", "date": "2026-03-21 21:14:23 +0100", "message": "fix: Escape cancels reply/edit + full date tooltips on timestamps", "type": "fix" }, { "hash": "6878138b33c3fb7b79bb898a1c6dfb025eaf5bdf", "date": "2026-03-21 21:12:42 +0100", "message": "feat: add scroll-to-bottom floating button in MessageList", "type": "feat" }, { "hash": "659ce1b7517b0890027c17a93d8499e1cc90a162", "date": "2026-03-21 21:08:58 +0100", "message": "feat: add Discord-style welcome state for empty channels", "type": "feat" }, { "hash": "b460bf925523db1fb28464dd143d686b05308287", "date": "2026-03-21 21:00:54 +0100", "message": "perf: only rebuild message list DOM on member role changes", "type": "perf" }, { "hash": "b1868a99fef8fdf8a60e0c2ba65ef29220a0908b", "date": "2026-03-21 21:00:54 +0100", "message": "fix: use null-safe check for file input selection in MessageInput", "type": "fix" }, { "hash": "f9bc7b1a6b33dd33f619178ddb7255455ce4015b", "date": "2026-03-21 20:59:32 +0100", "message": "fix: remove duplicate lightbox and fix event listener leaks in openImageLightbox", "type": "fix" }, { "hash": "a7fb5a95ddc599b39cde297f58f8f3c96699cce7", "date": "2026-03-21 20:55:57 +0100", "message": "fix: remove duplicate lightbox and fix event listener leaks in openImageLightbox", "type": "fix" }, { "hash": "6ee3698525b22e2471c05e9e0addb8b42e963470", "date": "2026-03-21 20:53:47 +0100", "message": "fix: prevent virtual scroll rebuild loops and improve image height caching", "type": "fix" }, { "hash": "4dd1580f43564f6faa0f500914e2ac1b62eb08ae", "date": "2026-03-21 12:39:17 +0100", "message": "fix: measure DOM before setting spacers + update spacers on unchanged range", "type": "fix" }, { "hash": "393d277f19a89a5987b0e0fc3993a360f3b62171", "date": "2026-03-21 12:34:31 +0100", "message": "fix: virtual scroll jumping with images/GIFs", "type": "fix" }, { "hash": "1f1432376acf6cda97b3c58fbaeddb62efabf5b0", "date": "2026-03-21 11:59:14 +0100", "message": "fix: security hardening, LiveKit class refactor, and eng review fixes", "type": "fix" }, { "hash": "c3b44d1972c5d09a75d5316dd599d62201c02e63", "date": "2026-03-21 10:08:44 +0100", "message": "refactor: server hardening + client decomposition + protocol resilience", "type": "refactor" }, { "hash": "2dfb73083f42c00a354cac57187d47c2e8f19401", "date": "2026-03-20 15:21:56 +0100", "message": "refactor: UI architecture improvements + GIF auto-pause", "type": "refactor" }, { "hash": "0b2106af886fe3e3719337ea9a299883ab12b102", "date": "2026-03-20 12:30:12 +0100", "message": "fix: camera button delay and video feed flickering + security hardening", "type": "fix" }, { "hash": "dba5f75fd8c8f066af3520e9194e15ae0750ee4b", "date": "2026-03-20 07:48:13 +0100", "message": "feat: sensitivity slider controls mic gating + speaking ring", "type": "feat" }, { "hash": "5d67e91ca680247b84ee2f26e23e6d0ba607cf1c", "date": "2026-03-20 05:46:19 +0100", "message": "feat: replace client WebRTC with LiveKit SDK (Phase 2)", "type": "feat" }, { "hash": "f8e41180f48632937e8184d48106dc05287c1721", "date": "2026-03-20 02:21:53 +0100", "message": "fix: settings bugs, accessibility, and camera stream leak", "type": "fix" }, { "hash": "17600081dfef4d5bccf6777279559599acfc1eff", "date": "2026-03-20 02:00:29 +0100", "message": "feat: wire search bar to server FTS5 search API (T-065)", "type": "feat" }, { "hash": "d1ec5883f688ea130d2be723204ba1d7ca904c49", "date": "2026-03-19 17:54:13 +0100", "message": "docs: update documentation for video chat, GIF picker, PTT, and notifications", "type": "docs" }, { "hash": "c6e864580946b4017e67182c777b19936f436458", "date": "2026-03-19 17:43:32 +0100", "message": "fix: stop camera preview and mic meter when settings overlay closes", "type": "fix" }, { "hash": "ccc51015fc984f12438c9ceb6594449867e41018", "date": "2026-03-19 16:47:26 +0100", "message": "feat: add camera active indicator to voice widget", "type": "feat" }, { "hash": "9ad91c6393d28dc8b75e9b229b9b4b46bb1386bb", "date": "2026-03-19 16:47:18 +0100", "message": "feat: add webcam device selector and preview to settings", "type": "feat" }, { "hash": "81b45d55e312c7f6a4085073ffbc8842d7c5bd6f", "date": "2026-03-19 16:39:35 +0100", "message": "feat: add VideoGrid component for rendering camera streams", "type": "feat" }, { "hash": "e972d06765c6189ba524cdf7744db5c957ea0d2d", "date": "2026-03-19 12:23:24 +0100", "message": "feat: settings overhaul, GIF picker, notifications, PTT, scroll fixes", "type": "feat" }, { "hash": "04ae86b0b2166cd8a74e18d36e74f29bfd25b4c5", "date": "2026-03-19 09:51:16 +0100", "message": "feat: show client version on settings Logs tab", "type": "feat" }, { "hash": "5327b2681a0e31e4342bac24af20dfbb6299df29", "date": "2026-03-18 23:02:06 +0100", "message": "feat: fix voice chat over NAT, audio pipeline, and add comprehensive debugging", "type": "feat" }, { "hash": "8272d7e2f97e9661b097cdd8686dc1cdbc739e7e", "date": "2026-03-18 17:47:59 +0100", "message": "feat: client auto-update with Ed25519 signing and dynamic server URL", "type": "feat" }, { "hash": "6f4579880e52dc38c7130a009cfacd2e6fb67b59", "date": "2026-03-18 17:10:16 +0100", "message": "feat: native file downloads, upload size fix, native E2E tests", "type": "feat" }, { "hash": "6dbb945213901429f50a77c4648a5eab67271418", "date": "2026-03-18 14:13:52 +0100", "message": "feat: file uploads, URL previews, emoji search, voice mute fixes, UX improvements", "type": "feat" }, { "hash": "a37abb47a266fca465ebaaa6866308f3868df373", "date": "2026-03-18 11:33:59 +0100", "message": "fix: remove duplicate mute/deafen buttons from user bar, disable browser context menu", "type": "fix" }, { "hash": "9c63dd6efed184908b192fe60162683019a89d5c", "date": "2026-03-18 11:28:13 +0100", "message": "feat: channel management — create, edit, delete, reorder with category-type enforcement", "type": "feat" }, { "hash": "c0fa05c67d2f231500025d33aeb2bbd6176c7b01", "date": "2026-03-18 07:03:53 +0100", "message": "fix: voice session safety, delete confirm UX, image URL validation, test coverage (BUG-039 through BUG-045)", "type": "fix" }, { "hash": "3b81396964b1a2c762cd28e6569115dfb3541445", "date": "2026-03-18 06:45:05 +0100", "message": "fix: device switching, DM highlight, WebRTC error toast, close false positives (BUG-031, BUG-032, BUG-033, BUG-034, BUG-035, BUG-036)", "type": "fix" }, { "hash": "d3d1e067db271a199c641771604f55e05acd809c", "date": "2026-03-18 06:40:12 +0100", "message": "fix: render actual images for attachments, remove orphaned components (BUG-026, BUG-030)", "type": "fix" }, { "hash": "e1a0610f9fdc77f576817903e35dc4ca1891630a", "date": "2026-03-18 06:33:17 +0100", "message": "fix: wire voice controls — camera, screenshare, UserBar mute/deafen, VAD (BUG-021, BUG-022, BUG-023, BUG-027)", "type": "fix" }, { "hash": "c1e2733f11a746aef74897bed712f69693e72acb", "date": "2026-03-18 06:28:45 +0100", "message": "fix: wire account settings callbacks and theme store sync (BUG-020, BUG-025)", "type": "fix" }, { "hash": "1548e6496c3677160a0f29538f77edc7276ba37c", "date": "2026-03-17 20:25:15 +0100", "message": "feat: TOFU cert pinning, voice channel sidebar, scroll-to-message, profiles, and review fixes", "type": "feat" }, { "hash": "fd3b65b0655ee2fc043491eccf2f0d67b0acd122", "date": "2026-03-17 20:03:34 +0100", "message": "fix: voice channel join/leave visibility and disconnect bugs", "type": "fix" }, { "hash": "1914067941b8512b895e32075fe2ced0b3da3841", "date": "2026-03-17 03:20:37 +0100", "message": "fix: address PR review findings (issues #3-#8)", "type": "fix" }, { "hash": "79f0040f376c989650af60b35a7449b45f40935b", "date": "2026-03-17 02:56:19 +0100", "message": "feat: server enhancements, client test selectors, and UI polish", "type": "feat" }, { "hash": "4dc61a506f18398c424d04eb6dbf31d44a5cbc30", "date": "2026-03-17 02:25:49 +0100", "message": "feat: add virtual scrolling to MessageList for large channels", "type": "feat" }, { "hash": "a1968078806dc7ce2c65dda30e4e685d22594f20", "date": "2026-03-17 02:17:26 +0100", "message": "refactor: split oversized files + add store notification batching", "type": "refactor" }, { "hash": "45d1cf9747814e7688155e10a0637e5118e6ae54", "date": "2026-03-17 01:59:34 +0100", "message": "fix: resolve 15 post-review issues across server and client", "type": "fix" }, { "hash": "db982a7cf8f373c74fb56724f0b8d468c018695d", "date": "2026-03-16 16:43:46 +0100", "message": "feat: fix all E2E failures, add credentials/window-state, wire QuickSwitcher + SettingsOverlay", "type": "feat" }, { "hash": "a08755e3be44d60e43db3ac1f0a77294add85f63", "date": "2026-03-15 20:43:13 +0100", "message": "feat: align UI to mockup, wire WS handlers, fix 5 HIGH review issues", "type": "feat" }, { "hash": "dbbe55275786aa58877f1ade8cf4cd18cb2513e3", "date": "2026-03-15 19:44:02 +0100", "message": "feat: add Tauri v2 desktop client with full chat UI and security hardening", "type": "feat" } ] }, "ts:styles": { "count": 61, "lastCommit": "2026-03-30 20:13:34 +0200", "commits": [ { "hash": "b059bd4a04aead5271422f74c1094760b14e8c38", "date": "2026-03-30 20:13:34 +0200", "message": "feat: Discord-style video grid with fixed 16:9 aspect ratio", "type": "feat" }, { "hash": "4f489a1a4d037e16e84d9f0f3e10d9fea7d47065", "date": "2026-03-30 19:12:36 +0200", "message": "feat: sidebar stream preview + screenshare focus fix", "type": "feat" }, { "hash": "8a972fad433ef4a3ee7316c966749b5f04812b2e", "date": "2026-03-29 00:51:54 +0100", "message": "feat: voice/video polish — refactor, AudioWorklet VAD, bug fixes, UX improvements", "type": "feat" }, { "hash": "894b4ed829e6820d6199121f4c6709363df7280d", "date": "2026-03-28 13:21:07 +0100", "message": "fix: resolve all 11 open bugs, add account deletion, harden security", "type": "fix" }, { "hash": "21a438dca52f7c20ac31a03b900900fc3c09973e", "date": "2026-03-28 12:16:57 +0100", "message": "fix: accent color persistence and Discord-style settings panel", "type": "fix" }, { "hash": "a9dcb47b6d946e50bfd8ab5015cfdf53724e5f2b", "date": "2026-03-28 11:24:31 +0100", "message": "feat: auto-login, online user count, DM sidebar improvements, periodic health checks", "type": "feat" }, { "hash": "c76534a2230904b773316c6d74c1e13b80cff4d4", "date": "2026-03-27 16:14:54 +0100", "message": "fix: security hardening, DM auth, LiveKit stability, and voice call timer", "type": "fix" }, { "hash": "81d97c027929a2c308e328f073ef4a094805bd2b", "date": "2026-03-27 14:51:38 +0100", "message": "feat: move invite button to unified header, hide duplicate channel-sidebar-header", "type": "feat" }, { "hash": "29d16f5976cc2d92050c56e88cff7295bc62a0c4", "date": "2026-03-27 13:19:07 +0100", "message": "fix: make neon-glow default theme, accent color picker now overrides theme accent", "type": "fix" }, { "hash": "b8be76041a879e6ed256c745d2fe10fbd945088a", "date": "2026-03-27 13:04:35 +0100", "message": "fix: compact member items in sidebar, increase max resize height to 65%", "type": "fix" }, { "hash": "cfcc76760d0408115971b4224ebcd6e2644301c1", "date": "2026-03-27 12:56:40 +0100", "message": "feat: add member list header/resize, DM section in sidebar, remove member toggle from chat header", "type": "feat" }, { "hash": "ca0016ecac8b96ba25977de1e5d04316020987b6", "date": "2026-03-27 12:29:44 +0100", "message": "feat: relocate MemberList into unified sidebar as collapsible section", "type": "feat" }, { "hash": "2829220f06432cc6ae7e502059b898de79b12357", "date": "2026-03-27 12:22:22 +0100", "message": "fix: address code review — test regression, theme consolidation, validation, dead CSS", "type": "fix" }, { "hash": "00a92851d4e2e92ed9412825fb2a70292770b889", "date": "2026-03-27 12:09:38 +0100", "message": "refactor: remove ServerStrip component and CSS (replaced by unified sidebar)", "type": "refactor" }, { "hash": "1f4875c781845a7408d89fa6a5934e06edf884a3", "date": "2026-03-27 12:01:25 +0100", "message": "feat: rewrite SidebarArea as unified sidebar (removes ServerStrip)", "type": "feat" }, { "hash": "de5952fd269275179111c100031947ce49fd1ddd", "date": "2026-03-27 11:46:40 +0100", "message": "feat: add back-to-server header to DmSidebar", "type": "feat" }, { "hash": "7715ac29553df52a6632fe34729823ca99a5f299", "date": "2026-03-27 11:32:36 +0100", "message": "feat: add OC Neon Glow theme CSS with theme contract variables", "type": "feat" }, { "hash": "e19b0aa05f828850da3f27dd5142bbda64251d8a", "date": "2026-03-27 10:00:03 +0100", "message": "feat: login screen redesign with OC branding and animations", "type": "feat" }, { "hash": "8731750f75ca66c8870ddca5a03bce5fa2d5cb03", "date": "2026-03-27 08:35:37 +0100", "message": "feat: voice connection quality indicator with transport stats", "type": "feat" }, { "hash": "8f2f106399ed19a3d3c53f6b21f25fc6a620acf1", "date": "2026-03-26 22:07:52 +0100", "message": "feat: stream quality presets, nuclear mute, sidebar width fix", "type": "feat" }, { "hash": "3d50b0570d0f314d727b954403e2d7ab8a059038", "date": "2026-03-26 20:53:09 +0100", "message": "fix: voice mute pipeline, security hardening, and video tile controls", "type": "fix" }, { "hash": "c496f830aee2145a9f7c6c08c41b6fb67118f327", "date": "2026-03-25 19:07:52 +0100", "message": "fix: voice audio pipeline — autoplay unlock and GainNode-based VAD", "type": "fix" }, { "hash": "10063e0487172f606cab3fe385e33edd57befd29", "date": "2026-03-22 19:29:53 +0100", "message": "fix: address design review findings — empty states, ARIA, token refresh", "type": "fix" }, { "hash": "46be81081a009c022710b0275a3994ed1cbb191a", "date": "2026-03-22 12:07:24 +0100", "message": "fix: address code review issues in settings and message rendering", "type": "fix" }, { "hash": "57137d1a416374dd4f4c46943ec6bc7cf5634779", "date": "2026-03-22 10:18:18 +0100", "message": "feat: add Accessibility settings tab with reduced motion, high contrast, and large font", "type": "feat" }, { "hash": "f89226b68d6f5c1a7a5772f6b46ffa38684f969c", "date": "2026-03-22 10:04:49 +0100", "message": "feat: add user status selector to Account settings tab", "type": "feat" }, { "hash": "20e30bee96237c1d8970c294a4c249fe1f864137", "date": "2026-03-22 09:50:32 +0100", "message": "feat: add accent color picker to Appearance settings tab", "type": "feat" }, { "hash": "c3a13d09a142bcf4b233a278c9178d0f05fc3cfa", "date": "2026-03-22 09:30:03 +0100", "message": "fix: address review issues in settings redesign", "type": "fix" }, { "hash": "5bf9f89ed3aa1546d0e16577425d6553210eb434", "date": "2026-03-22 09:18:52 +0100", "message": "feat: Discord-style account profile card redesign (Phase 2 + 3)", "type": "feat" }, { "hash": "39eb2ab2b8545fe875cf5a5c80451ac3d0d035cf", "date": "2026-03-22 09:14:55 +0100", "message": "feat: Discord-style settings sidebar with icons, profile section, and categories", "type": "feat" }, { "hash": "e0a811fc156c90f24cdb92232699cbf3d1bc4825", "date": "2026-03-22 09:00:48 +0100", "message": "feat: Discord-style timestamps, reply avatars, virtual scroll fixes", "type": "feat" }, { "hash": "94a4bdd0ef960df16c238a13cc563f892281b840", "date": "2026-03-22 08:58:15 +0100", "message": "style: update compact mode spacing for Discord layout", "type": "other" }, { "hash": "1679d071783a26d514d1a603d0e9912c8f398da6", "date": "2026-03-22 08:47:09 +0100", "message": "feat: add Discord-style timestamp formatting and message layout tokens", "type": "feat" }, { "hash": "5048a077810934e800d1e2e26b15da257f511fcc", "date": "2026-03-22 08:19:22 +0100", "message": "style: redesign server invites modal with card layout and icons", "type": "other" }, { "hash": "2536b619bdecfeb29f084932c9214049ba0c3c1c", "date": "2026-03-21 23:33:18 +0100", "message": "feat: replace all emoji icons with Lucide SVG icons", "type": "feat" }, { "hash": "3cf8544cca8477671ffafc3b16565184457dcc1f", "date": "2026-03-21 22:27:55 +0100", "message": "fix: address code review — spin keyframe collision, mentioned border shift, use hover token", "type": "fix" }, { "hash": "359cb2802a3cfd771fe886d1547a3d55b28d243c", "date": "2026-03-21 22:23:38 +0100", "message": "style: mention highlights, skeleton loaders, tooltips, role color support", "type": "other" }, { "hash": "7557d4bb8361345af455e28241c1638774c0eaae", "date": "2026-03-21 22:21:33 +0100", "message": "style: input focus glow, picker/action animations, spring popup", "type": "other" }, { "hash": "6e3143c4a864fcac01465fee41b14c087f763b2f", "date": "2026-03-21 22:19:23 +0100", "message": "style: Discord polish — unread pill, offline desaturation, hover tints, animations", "type": "other" }, { "hash": "2cb0e99e6a8979ae5c5e905b938ddad1a93f0f9d", "date": "2026-03-21 22:12:11 +0100", "message": "style: Discord-style scrollbars, font rendering, and header elevation shadows", "type": "other" }, { "hash": "413f0c0022fa68bace6ba3844a072e9c4fdd5cfc", "date": "2026-03-21 22:10:30 +0100", "message": "style: add Discord-style design tokens for hover, interactive, elevation, typography", "type": "other" }, { "hash": "fa690a9ad41ac70fc20c10282ed148382209d4fe", "date": "2026-03-21 21:55:28 +0100", "message": "polish: pinned panel — avatar colors, timestamp formatting, CSS tokens", "type": "other" }, { "hash": "8445fa6799341ef00b0a1fd668a726423ea5b0d2", "date": "2026-03-21 21:51:05 +0100", "message": "feat: Discord-style pinned messages panel with avatars and animations", "type": "feat" }, { "hash": "f39f7c6d7e1ba2664731f30667bd16e9cb675482", "date": "2026-03-21 21:19:48 +0100", "message": "polish: CSS visual consistency pass — hover/focus/transitions", "type": "other" }, { "hash": "e9ddef659ea489550f0787cfad4c528de604ff3c", "date": "2026-03-21 21:15:55 +0100", "message": "feat: add copy button to code blocks", "type": "feat" }, { "hash": "6878138b33c3fb7b79bb898a1c6dfb025eaf5bdf", "date": "2026-03-21 21:12:42 +0100", "message": "feat: add scroll-to-bottom floating button in MessageList", "type": "feat" }, { "hash": "659ce1b7517b0890027c17a93d8499e1cc90a162", "date": "2026-03-21 21:08:58 +0100", "message": "feat: add Discord-style welcome state for empty channels", "type": "feat" }, { "hash": "393d277f19a89a5987b0e0fc3993a360f3b62171", "date": "2026-03-21 12:34:31 +0100", "message": "fix: virtual scroll jumping with images/GIFs", "type": "fix" }, { "hash": "2dfb73083f42c00a354cac57187d47c2e8f19401", "date": "2026-03-20 15:21:56 +0100", "message": "refactor: UI architecture improvements + GIF auto-pause", "type": "refactor" }, { "hash": "17600081dfef4d5bccf6777279559599acfc1eff", "date": "2026-03-20 02:00:29 +0100", "message": "feat: wire search bar to server FTS5 search API (T-065)", "type": "feat" }, { "hash": "a764d12bafb818dc0ffe1a93bf85f4d33cb00e8d", "date": "2026-03-19 16:47:34 +0100", "message": "feat: add video grid CSS styles", "type": "feat" }, { "hash": "e972d06765c6189ba524cdf7744db5c957ea0d2d", "date": "2026-03-19 12:23:24 +0100", "message": "feat: settings overhaul, GIF picker, notifications, PTT, scroll fixes", "type": "feat" }, { "hash": "5327b2681a0e31e4342bac24af20dfbb6299df29", "date": "2026-03-18 23:02:06 +0100", "message": "feat: fix voice chat over NAT, audio pipeline, and add comprehensive debugging", "type": "feat" }, { "hash": "8272d7e2f97e9661b097cdd8686dc1cdbc739e7e", "date": "2026-03-18 17:47:59 +0100", "message": "feat: client auto-update with Ed25519 signing and dynamic server URL", "type": "feat" }, { "hash": "6f4579880e52dc38c7130a009cfacd2e6fb67b59", "date": "2026-03-18 17:10:16 +0100", "message": "feat: native file downloads, upload size fix, native E2E tests", "type": "feat" }, { "hash": "6dbb945213901429f50a77c4648a5eab67271418", "date": "2026-03-18 14:13:52 +0100", "message": "feat: file uploads, URL previews, emoji search, voice mute fixes, UX improvements", "type": "feat" }, { "hash": "9c63dd6efed184908b192fe60162683019a89d5c", "date": "2026-03-18 11:28:13 +0100", "message": "feat: channel management — create, edit, delete, reorder with category-type enforcement", "type": "feat" }, { "hash": "1548e6496c3677160a0f29538f77edc7276ba37c", "date": "2026-03-17 20:25:15 +0100", "message": "feat: TOFU cert pinning, voice channel sidebar, scroll-to-message, profiles, and review fixes", "type": "feat" }, { "hash": "79f0040f376c989650af60b35a7449b45f40935b", "date": "2026-03-17 02:56:19 +0100", "message": "feat: server enhancements, client test selectors, and UI polish", "type": "feat" }, { "hash": "a08755e3be44d60e43db3ac1f0a77294add85f63", "date": "2026-03-15 20:43:13 +0100", "message": "feat: align UI to mockup, wire WS handlers, fix 5 HIGH review issues", "type": "feat" }, { "hash": "dbbe55275786aa58877f1ade8cf4cd18cb2513e3", "date": "2026-03-15 19:44:02 +0100", "message": "feat: add Tauri v2 desktop client with full chat UI and security hardening", "type": "feat" } ] }, "ts:lib": { "count": 85, "lastCommit": "2026-03-30 19:12:36 +0200", "commits": [ { "hash": "4f489a1a4d037e16e84d9f0f3e10d9fea7d47065", "date": "2026-03-30 19:12:36 +0200", "message": "feat: sidebar stream preview + screenshare focus fix", "type": "feat" }, { "hash": "34f1fe3454157a41d3e0e567a7cb45c1bb67bd30", "date": "2026-03-30 12:42:31 +0200", "message": "fix: settings tab bug fixes, expanded tests, and coverage improvements", "type": "fix" }, { "hash": "9bb99f76eb90b28754f50ffd584c3246c592f3b3", "date": "2026-03-29 21:31:18 +0200", "message": "feat: TOTP 2FA settings UI, server hardening, full validation pass", "type": "feat" }, { "hash": "b386163dabdaa4c046a692cdeb517974affa4ec5", "date": "2026-03-29 19:40:11 +0200", "message": "chore: ESLint config, 61 lint fixes across 22 client files, CLAUDE.md update", "type": "chore" }, { "hash": "9ec875d450b53bebb4a18f6e7b1c27715d44e4c1", "date": "2026-03-29 12:35:04 +0200", "message": "fix: security hardening — 45 issues from full-project Copilot audit", "type": "fix" }, { "hash": "d7a2e5b8f59808e451c4b0c89e680e76bdf182a5", "date": "2026-03-29 12:19:08 +0200", "message": "refactor: extensibility overhaul — handler registry, permission checker, sidebar decomposition, DX improvements", "type": "refactor" }, { "hash": "8a972fad433ef4a3ee7316c966749b5f04812b2e", "date": "2026-03-29 00:51:54 +0100", "message": "feat: voice/video polish — refactor, AudioWorklet VAD, bug fixes, UX improvements", "type": "feat" }, { "hash": "9f31e8b017a0004f8d7d04c33741a484edd7557b", "date": "2026-03-28 20:42:37 +0100", "message": "feat: add observability, debugging, and diagnostics across all layers", "type": "feat" }, { "hash": "297a3694217b29afb61b685af6a280933b1cdbb7", "date": "2026-03-28 18:23:18 +0100", "message": "fix: LiveKit voice connection for remote clients behind reverse proxy", "type": "fix" }, { "hash": "894b4ed829e6820d6199121f4c6709363df7280d", "date": "2026-03-28 13:21:07 +0100", "message": "fix: resolve all 11 open bugs, add account deletion, harden security", "type": "fix" }, { "hash": "21a438dca52f7c20ac31a03b900900fc3c09973e", "date": "2026-03-28 12:16:57 +0100", "message": "fix: accent color persistence and Discord-style settings panel", "type": "fix" }, { "hash": "a9dcb47b6d946e50bfd8ab5015cfdf53724e5f2b", "date": "2026-03-28 11:24:31 +0100", "message": "feat: auto-login, online user count, DM sidebar improvements, periodic health checks", "type": "feat" }, { "hash": "c2b5d8e15b814e7ce5d065446fce738b8f7d3c4c", "date": "2026-03-28 10:39:23 +0100", "message": "feat: comprehensive spec docs, test suite, E2E overhaul, and security hardening", "type": "feat" }, { "hash": "c76534a2230904b773316c6d74c1e13b80cff4d4", "date": "2026-03-27 16:14:54 +0100", "message": "fix: security hardening, DM auth, LiveKit stability, and voice call timer", "type": "fix" }, { "hash": "e5afe7d20136f78e09ffd7fd951814a036c84fb3", "date": "2026-03-27 14:08:25 +0100", "message": "feat(client): add DM store, API methods, dispatcher events, and sidebar wiring", "type": "feat" }, { "hash": "29d16f5976cc2d92050c56e88cff7295bc62a0c4", "date": "2026-03-27 13:19:07 +0100", "message": "fix: make neon-glow default theme, accent color picker now overrides theme accent", "type": "fix" }, { "hash": "2829220f06432cc6ae7e502059b898de79b12357", "date": "2026-03-27 12:22:22 +0100", "message": "fix: address code review — test regression, theme consolidation, validation, dead CSS", "type": "fix" }, { "hash": "57985d0a7f40496bc1dd65527fcbe617176b9ca7", "date": "2026-03-27 11:39:48 +0100", "message": "feat: add disconnect/switch-server button to UserBar", "type": "feat" }, { "hash": "e6b5d43e669b1aa1ec4bfccf3aa4a235dc8980f0", "date": "2026-03-27 11:37:57 +0100", "message": "feat: add theme manager with built-in + custom theme support", "type": "feat" }, { "hash": "c7809347499263f3b4de078a19b6043eb4470f88", "date": "2026-03-27 08:41:34 +0100", "message": "fix: connection stats RTT detection and rate formatting", "type": "fix" }, { "hash": "8731750f75ca66c8870ddca5a03bce5fa2d5cb03", "date": "2026-03-27 08:35:37 +0100", "message": "feat: voice connection quality indicator with transport stats", "type": "feat" }, { "hash": "394b8e4b2da490e269e5d4760ad66925cf4180d1", "date": "2026-03-27 08:05:32 +0100", "message": "fix: client code review — 27 fixes across 17 files", "type": "fix" }, { "hash": "8f2f106399ed19a3d3c53f6b21f25fc6a620acf1", "date": "2026-03-26 22:07:52 +0100", "message": "feat: stream quality presets, nuclear mute, sidebar width fix", "type": "feat" }, { "hash": "3d50b0570d0f314d727b954403e2d7ab8a059038", "date": "2026-03-26 20:53:09 +0100", "message": "fix: voice mute pipeline, security hardening, and video tile controls", "type": "fix" }, { "hash": "d87291e90fa491b4b396ce547b0cfea4a74c7024", "date": "2026-03-26 18:07:20 +0100", "message": "feat: full screenshare support — button state, video grid, auto-reconnect", "type": "feat" }, { "hash": "c496f830aee2145a9f7c6c08c41b6fb67118f327", "date": "2026-03-25 19:07:52 +0100", "message": "fix: voice audio pipeline — autoplay unlock and GainNode-based VAD", "type": "fix" }, { "hash": "738f4970576467e285c051549a4d78241966958c", "date": "2026-03-24 21:35:40 +0100", "message": "fix: address code review — 8 issues across server and client", "type": "fix" }, { "hash": "2794662a48d480ba06add8132cba2d6f9adfaf5f", "date": "2026-03-24 21:30:23 +0100", "message": "feat: LiveKit migration — permissions, auth hardening, voice improvements", "type": "feat" }, { "hash": "edf4d9e48b0eb417a5bd7003d18688b81bc8dbbb", "date": "2026-03-24 20:23:40 +0100", "message": "fix: address code review — security hardening, leak fixes, credential safety", "type": "fix" }, { "hash": "d498e8fcce75ec39eee072f307d1b62f16be29d9", "date": "2026-03-22 21:10:02 +0100", "message": "fix: resolve LiveKit voice issues — duplicate audio, tunnel effect with 5+ users", "type": "fix" }, { "hash": "10063e0487172f606cab3fe385e33edd57befd29", "date": "2026-03-22 19:29:53 +0100", "message": "fix: address design review findings — empty states, ARIA, token refresh", "type": "fix" }, { "hash": "9949e9de9ea8e84a6b8448bc78e04df83cb392be", "date": "2026-03-22 15:34:26 +0100", "message": "fix: restore audio track attachment for remote playback", "type": "fix" }, { "hash": "46be81081a009c022710b0275a3994ed1cbb191a", "date": "2026-03-22 12:07:24 +0100", "message": "fix: address code review issues in settings and message rendering", "type": "fix" }, { "hash": "5df1cf71cb05ff82a2c9c67ff3d263fad4a0dee6", "date": "2026-03-22 11:02:38 +0100", "message": "feat: wire up settings preferences to their consuming features", "type": "feat" }, { "hash": "f9bdeca12e1cd70fb0885afb41ec4f0aab5fd63f", "date": "2026-03-22 10:09:41 +0100", "message": "feat: add Text & Images settings tab", "type": "feat" }, { "hash": "aed8734828503b21e5a908bcac8b592e9e184a1a", "date": "2026-03-22 09:54:07 +0100", "message": "feat: add input/output volume sliders to Voice & Audio settings tab", "type": "feat" }, { "hash": "39eb2ab2b8545fe875cf5a5c80451ac3d0d035cf", "date": "2026-03-22 09:14:55 +0100", "message": "feat: Discord-style settings sidebar with icons, profile section, and categories", "type": "feat" }, { "hash": "2536b619bdecfeb29f084932c9214049ba0c3c1c", "date": "2026-03-21 23:33:18 +0100", "message": "feat: replace all emoji icons with Lucide SVG icons", "type": "feat" }, { "hash": "6ee3698525b22e2471c05e9e0addb8b42e963470", "date": "2026-03-21 20:53:47 +0100", "message": "fix: prevent virtual scroll rebuild loops and improve image height caching", "type": "fix" }, { "hash": "393d277f19a89a5987b0e0fc3993a360f3b62171", "date": "2026-03-21 12:34:31 +0100", "message": "fix: virtual scroll jumping with images/GIFs", "type": "fix" }, { "hash": "a9998714d7b39ae40a30dd1b66829a83683d97fd", "date": "2026-03-21 12:07:34 +0100", "message": "fix: reset camera state on voice leave to prevent stale video grid", "type": "fix" }, { "hash": "1f1432376acf6cda97b3c58fbaeddb62efabf5b0", "date": "2026-03-21 11:59:14 +0100", "message": "fix: security hardening, LiveKit class refactor, and eng review fixes", "type": "fix" }, { "hash": "c3b44d1972c5d09a75d5316dd599d62201c02e63", "date": "2026-03-21 10:08:44 +0100", "message": "refactor: server hardening + client decomposition + protocol resilience", "type": "refactor" }, { "hash": "2dfb73083f42c00a354cac57187d47c2e8f19401", "date": "2026-03-20 15:21:56 +0100", "message": "refactor: UI architecture improvements + GIF auto-pause", "type": "refactor" }, { "hash": "0b2106af886fe3e3719337ea9a299883ab12b102", "date": "2026-03-20 12:30:12 +0100", "message": "fix: camera button delay and video feed flickering + security hardening", "type": "fix" }, { "hash": "dba5f75fd8c8f066af3520e9194e15ae0750ee4b", "date": "2026-03-20 07:48:13 +0100", "message": "feat: sensitivity slider controls mic gating + speaking ring", "type": "feat" }, { "hash": "2df58251ac5c674fb73d0079f42f0e012878fe20", "date": "2026-03-20 07:11:45 +0100", "message": "fix: speaking ring, devtools, CSP, and connection fixes", "type": "fix" }, { "hash": "91ebce72727a54fb96c72dadeb257bd92124ef4f", "date": "2026-03-20 06:33:57 +0100", "message": "fix: wire LiveKit speaker detection to voice activation ring", "type": "fix" }, { "hash": "ff2b82280c6002a5363f25af434e1898b15322ca", "date": "2026-03-20 06:27:43 +0100", "message": "fix: resolve LiveKit connection issues", "type": "fix" }, { "hash": "da760b34bf2c956e3597cd6aafafe7c22ba133e8", "date": "2026-03-20 06:11:09 +0100", "message": "fix: proxy LiveKit through HTTPS to fix mixed-content block", "type": "fix" }, { "hash": "5d67e91ca680247b84ee2f26e23e6d0ba607cf1c", "date": "2026-03-20 05:46:19 +0100", "message": "feat: replace client WebRTC with LiveKit SDK (Phase 2)", "type": "feat" }, { "hash": "f8e41180f48632937e8184d48106dc05287c1721", "date": "2026-03-20 02:21:53 +0100", "message": "fix: settings bugs, accessibility, and camera stream leak", "type": "fix" }, { "hash": "f11a53913ffb192b6d2978834e793d1053e45d27", "date": "2026-03-20 01:33:43 +0100", "message": "refactor: extract MainPage into focused controllers with tests", "type": "refactor" }, { "hash": "f7a6e0e0957bfaa1f3e84d12188cacbf3f749382", "date": "2026-03-19 21:35:18 +0100", "message": "fix: voice rejoin failure, SDP race, deafen bypass + add server voice logging", "type": "fix" }, { "hash": "d1ec5883f688ea130d2be723204ba1d7ca904c49", "date": "2026-03-19 17:54:13 +0100", "message": "docs: update documentation for video chat, GIF picker, PTT, and notifications", "type": "docs" }, { "hash": "92be1372292e3dc1fb342752bf326d87af6f2a57", "date": "2026-03-19 17:13:59 +0100", "message": "fix: use unique stream IDs for audio and video tracks to prevent dedup collision", "type": "fix" }, { "hash": "594fe3ebb486e2a6cd1f8a06c06635cc993f6a45", "date": "2026-03-19 17:07:30 +0100", "message": "fix: add local camera self-view to video grid", "type": "fix" }, { "hash": "e41da3707094a7a38eb8a0884058e326d60f2607", "date": "2026-03-19 16:42:24 +0100", "message": "feat: add camera enable/disable and remote video handling to voice session", "type": "feat" }, { "hash": "5b10bc28f323b8b2365036de84a72f5d2897e3bc", "date": "2026-03-19 16:39:29 +0100", "message": "feat: add video device manager for camera capture", "type": "feat" }, { "hash": "9399dfe1254f16d72a6c6c8ae490c0fc48a7e7be", "date": "2026-03-19 16:38:43 +0100", "message": "feat: add video track add/remove to WebRTC service", "type": "feat" }, { "hash": "e972d06765c6189ba524cdf7744db5c957ea0d2d", "date": "2026-03-19 12:23:24 +0100", "message": "feat: settings overhaul, GIF picker, notifications, PTT, scroll fixes", "type": "feat" }, { "hash": "5327b2681a0e31e4342bac24af20dfbb6299df29", "date": "2026-03-18 23:02:06 +0100", "message": "feat: fix voice chat over NAT, audio pipeline, and add comprehensive debugging", "type": "feat" }, { "hash": "8272d7e2f97e9661b097cdd8686dc1cdbc739e7e", "date": "2026-03-18 17:47:59 +0100", "message": "feat: client auto-update with Ed25519 signing and dynamic server URL", "type": "feat" }, { "hash": "6dbb945213901429f50a77c4648a5eab67271418", "date": "2026-03-18 14:13:52 +0100", "message": "feat: file uploads, URL previews, emoji search, voice mute fixes, UX improvements", "type": "feat" }, { "hash": "9c63dd6efed184908b192fe60162683019a89d5c", "date": "2026-03-18 11:28:13 +0100", "message": "feat: channel management — create, edit, delete, reorder with category-type enforcement", "type": "feat" }, { "hash": "a9b816cf2646f7aa6689812feb770d83af95c0e7", "date": "2026-03-18 07:24:19 +0100", "message": "fix: prevent stale PeerConnection callbacks from killing new voice sessions", "type": "fix" }, { "hash": "c0fa05c67d2f231500025d33aeb2bbd6176c7b01", "date": "2026-03-18 07:03:53 +0100", "message": "fix: voice session safety, delete confirm UX, image URL validation, test coverage (BUG-039 through BUG-045)", "type": "fix" }, { "hash": "3b81396964b1a2c762cd28e6569115dfb3541445", "date": "2026-03-18 06:45:05 +0100", "message": "fix: device switching, DM highlight, WebRTC error toast, close false positives (BUG-031, BUG-032, BUG-033, BUG-034, BUG-035, BUG-036)", "type": "fix" }, { "hash": "e1a0610f9fdc77f576817903e35dc4ca1891630a", "date": "2026-03-18 06:33:17 +0100", "message": "fix: wire voice controls — camera, screenshare, UserBar mute/deafen, VAD (BUG-021, BUG-022, BUG-023, BUG-027)", "type": "fix" }, { "hash": "9cc9ae95cc69cf85ad2e49826cd9aa89ca6bbfed", "date": "2026-03-18 04:13:12 +0100", "message": "fix: voice session cleanup on ICE close and connection failure", "type": "fix" }, { "hash": "eb5f399075bc19e6d004adf1d09b0f2a87f71e78", "date": "2026-03-18 03:59:41 +0100", "message": "feat: add voice_offer/answer/ice dispatcher handlers", "type": "feat" }, { "hash": "be5efad53661ea32c385f911cc236be070893669", "date": "2026-03-18 03:57:57 +0100", "message": "feat: create voiceSession module for voice lifecycle orchestration", "type": "feat" }, { "hash": "a66b2d24062366867f60c2ad78e63b16e938ae9b", "date": "2026-03-18 03:55:49 +0100", "message": "feat: add handleServerOffer with SDP rollback and createOffer", "type": "feat" }, { "hash": "ffc9252810072c2dba70c0da12df510314fa6b85", "date": "2026-03-18 03:38:04 +0100", "message": "fix: correct VoiceIcePayload candidate type to RTCIceCandidateInit", "type": "fix" }, { "hash": "00bbb46b62c3aab6e5791795c3602ed2a1f05ed8", "date": "2026-03-18 02:41:55 +0100", "message": "fix: reject duplicate WebSocket logins to prevent reconnect ping-pong", "type": "fix" }, { "hash": "1548e6496c3677160a0f29538f77edc7276ba37c", "date": "2026-03-17 20:25:15 +0100", "message": "feat: TOFU cert pinning, voice channel sidebar, scroll-to-message, profiles, and review fixes", "type": "feat" }, { "hash": "17eb67811f7844324d6703bfddce0d7ae8996267", "date": "2026-03-17 14:01:26 +0000", "message": "fix: resolve CI failures — errcheck lint and TS noUncheckedIndexedAccess errors", "type": "fix" }, { "hash": "2cc0be227e0aa31170a6fdc79af660de16d5ecae", "date": "2026-03-17 14:54:50 +0100", "message": "fix: address PR #15 review issues (#16-#23)", "type": "fix" }, { "hash": "e92b8fe2df616937c26338fe56319977db194497", "date": "2026-03-17 11:05:52 +0100", "message": "feat: TOFU cert pinning, settings cache refactor, ban enforcement, and 80%+ test coverage", "type": "feat" }, { "hash": "84f938a6db26d4fbe9db6da0acb20deea53110c3", "date": "2026-03-17 04:11:04 +0100", "message": "fix: address PR review findings (issues #9-#14)", "type": "fix" }, { "hash": "a1968078806dc7ce2c65dda30e4e685d22594f20", "date": "2026-03-17 02:17:26 +0100", "message": "refactor: split oversized files + add store notification batching", "type": "refactor" }, { "hash": "45d1cf9747814e7688155e10a0637e5118e6ae54", "date": "2026-03-17 01:59:34 +0100", "message": "fix: resolve 15 post-review issues across server and client", "type": "fix" }, { "hash": "db982a7cf8f373c74fb56724f0b8d468c018695d", "date": "2026-03-16 16:43:46 +0100", "message": "feat: fix all E2E failures, add credentials/window-state, wire QuickSwitcher + SettingsOverlay", "type": "feat" }, { "hash": "a08755e3be44d60e43db3ac1f0a77294add85f63", "date": "2026-03-15 20:43:13 +0100", "message": "feat: align UI to mockup, wire WS handlers, fix 5 HIGH review issues", "type": "feat" }, { "hash": "dbbe55275786aa58877f1ade8cf4cd18cb2513e3", "date": "2026-03-15 19:44:02 +0100", "message": "feat: add Tauri v2 desktop client with full chat UI and security hardening", "type": "feat" } ] }, "ts:pages": { "count": 72, "lastCommit": "2026-03-30 19:12:36 +0200", "commits": [ { "hash": "4f489a1a4d037e16e84d9f0f3e10d9fea7d47065", "date": "2026-03-30 19:12:36 +0200", "message": "feat: sidebar stream preview + screenshare focus fix", "type": "feat" }, { "hash": "34f1fe3454157a41d3e0e567a7cb45c1bb67bd30", "date": "2026-03-30 12:42:31 +0200", "message": "fix: settings tab bug fixes, expanded tests, and coverage improvements", "type": "fix" }, { "hash": "9bb99f76eb90b28754f50ffd584c3246c592f3b3", "date": "2026-03-29 21:31:18 +0200", "message": "feat: TOTP 2FA settings UI, server hardening, full validation pass", "type": "feat" }, { "hash": "b386163dabdaa4c046a692cdeb517974affa4ec5", "date": "2026-03-29 19:40:11 +0200", "message": "chore: ESLint config, 61 lint fixes across 22 client files, CLAUDE.md update", "type": "chore" }, { "hash": "9ec875d450b53bebb4a18f6e7b1c27715d44e4c1", "date": "2026-03-29 12:35:04 +0200", "message": "fix: security hardening — 45 issues from full-project Copilot audit", "type": "fix" }, { "hash": "d7a2e5b8f59808e451c4b0c89e680e76bdf182a5", "date": "2026-03-29 12:19:08 +0200", "message": "refactor: extensibility overhaul — handler registry, permission checker, sidebar decomposition, DX improvements", "type": "refactor" }, { "hash": "894b4ed829e6820d6199121f4c6709363df7280d", "date": "2026-03-28 13:21:07 +0100", "message": "fix: resolve all 11 open bugs, add account deletion, harden security", "type": "fix" }, { "hash": "a9dcb47b6d946e50bfd8ab5015cfdf53724e5f2b", "date": "2026-03-28 11:24:31 +0100", "message": "feat: auto-login, online user count, DM sidebar improvements, periodic health checks", "type": "feat" }, { "hash": "c2b5d8e15b814e7ce5d065446fce738b8f7d3c4c", "date": "2026-03-28 10:39:23 +0100", "message": "feat: comprehensive spec docs, test suite, E2E overhaul, and security hardening", "type": "feat" }, { "hash": "c76534a2230904b773316c6d74c1e13b80cff4d4", "date": "2026-03-27 16:14:54 +0100", "message": "fix: security hardening, DM auth, LiveKit stability, and voice call timer", "type": "fix" }, { "hash": "81d97c027929a2c308e328f073ef4a094805bd2b", "date": "2026-03-27 14:51:38 +0100", "message": "feat: move invite button to unified header, hide duplicate channel-sidebar-header", "type": "feat" }, { "hash": "3dba5dd42c923c80de180c38be4ec51acd77e711", "date": "2026-03-27 14:46:09 +0100", "message": "fix: closing DM switches to next DM or channels, resolve DM recipient name for header", "type": "fix" }, { "hash": "f96be172b40560287f482aaee18294ea95dc0bab", "date": "2026-03-27 14:41:36 +0100", "message": "fix: only save non-DM channels as \"channel before DM\" for back navigation", "type": "fix" }, { "hash": "1331fce0ae6509cbf9c12a233e3a15719a049349", "date": "2026-03-27 14:39:47 +0100", "message": "fix: DM close removes from sidebar, DM header shows real user status", "type": "fix" }, { "hash": "6207a0c936d3e3170ec2b5d816969b5b21f6a1b6", "date": "2026-03-27 14:35:17 +0100", "message": "fix: restore previous channel when leaving DM mode via back button", "type": "fix" }, { "hash": "9636d0e9761b69b762ef869a5eaa1eb65cbb1320", "date": "2026-03-27 14:25:54 +0100", "message": "fix: DM header shows @ instead of #, DM welcome message, DM appears in sidebar list", "type": "fix" }, { "hash": "59a752bd3b1e357509586a4dbf138640542f030e", "date": "2026-03-27 14:13:52 +0100", "message": "fix: add visible class to DM member picker modal overlay", "type": "fix" }, { "hash": "e5afe7d20136f78e09ffd7fd951814a036c84fb3", "date": "2026-03-27 14:08:25 +0100", "message": "feat(client): add DM store, API methods, dispatcher events, and sidebar wiring", "type": "feat" }, { "hash": "b8be76041a879e6ed256c745d2fe10fbd945088a", "date": "2026-03-27 13:04:35 +0100", "message": "fix: compact member items in sidebar, increase max resize height to 65%", "type": "fix" }, { "hash": "cfcc76760d0408115971b4224ebcd6e2644301c1", "date": "2026-03-27 12:56:40 +0100", "message": "feat: add member list header/resize, DM section in sidebar, remove member toggle from chat header", "type": "feat" }, { "hash": "5a2d943960ca816b0c853815adef5dace99b4983", "date": "2026-03-27 12:39:34 +0100", "message": "feat: wire DM conversations to member data in sidebar", "type": "feat" }, { "hash": "3c98e1b984e181df2f58387880b6e2332b7258dc", "date": "2026-03-27 12:34:28 +0100", "message": "feat: wire quick-switch overlay to disconnect and navigate to ConnectPage", "type": "feat" }, { "hash": "ca0016ecac8b96ba25977de1e5d04316020987b6", "date": "2026-03-27 12:29:44 +0100", "message": "feat: relocate MemberList into unified sidebar as collapsible section", "type": "feat" }, { "hash": "90230a2f90b0a86c33db4973b726968ea291b6da", "date": "2026-03-27 12:04:48 +0100", "message": "feat: update MainPage layout — remove server strip and standalone member list", "type": "feat" }, { "hash": "1f4875c781845a7408d89fa6a5934e06edf884a3", "date": "2026-03-27 12:01:25 +0100", "message": "feat: rewrite SidebarArea as unified sidebar (removes ServerStrip)", "type": "feat" }, { "hash": "39b036220679c77ca421a9a153f086d59f244dbb", "date": "2026-03-27 11:46:49 +0100", "message": "feat: add DM mode support to ChatHeader with recipient info", "type": "feat" }, { "hash": "e92772ce79ef6b7750c69e9e3ec00e71f1baed79", "date": "2026-03-27 10:13:31 +0100", "message": "fix: move status dot out of icon div to fix letter centering", "type": "fix" }, { "hash": "e954348d8e279c0213fa516e08ffc968746dd601", "date": "2026-03-27 10:05:18 +0100", "message": "fix: replace form logo with OC neon glow SVG to match branding", "type": "fix" }, { "hash": "aee0e5659a6166010b9ee3ac268e2ae922e44b4c", "date": "2026-03-27 10:04:08 +0100", "message": "fix: server icon shows single initial for compact 28px size", "type": "fix" }, { "hash": "e19b0aa05f828850da3f27dd5142bbda64251d8a", "date": "2026-03-27 10:00:03 +0100", "message": "feat: login screen redesign with OC branding and animations", "type": "feat" }, { "hash": "63a3dfd79000e7d0e970207d8143471bd1249db7", "date": "2026-03-26 22:09:56 +0100", "message": "chore: remaining unstaged changes — rnnoise worklet, tests, renderers", "type": "chore" }, { "hash": "d87291e90fa491b4b396ce547b0cfea4a74c7024", "date": "2026-03-26 18:07:20 +0100", "message": "feat: full screenshare support — button state, video grid, auto-reconnect", "type": "feat" }, { "hash": "2794662a48d480ba06add8132cba2d6f9adfaf5f", "date": "2026-03-24 21:30:23 +0100", "message": "feat: LiveKit migration — permissions, auth hardening, voice improvements", "type": "feat" }, { "hash": "f89226b68d6f5c1a7a5772f6b46ffa38684f969c", "date": "2026-03-22 10:04:49 +0100", "message": "feat: add user status selector to Account settings tab", "type": "feat" }, { "hash": "2536b619bdecfeb29f084932c9214049ba0c3c1c", "date": "2026-03-21 23:33:18 +0100", "message": "feat: replace all emoji icons with Lucide SVG icons", "type": "feat" }, { "hash": "fa690a9ad41ac70fc20c10282ed148382209d4fe", "date": "2026-03-21 21:55:28 +0100", "message": "polish: pinned panel — avatar colors, timestamp formatting, CSS tokens", "type": "other" }, { "hash": "8445fa6799341ef00b0a1fd668a726423ea5b0d2", "date": "2026-03-21 21:51:05 +0100", "message": "feat: Discord-style pinned messages panel with avatars and animations", "type": "feat" }, { "hash": "659ce1b7517b0890027c17a93d8499e1cc90a162", "date": "2026-03-21 21:08:58 +0100", "message": "feat: add Discord-style welcome state for empty channels", "type": "feat" }, { "hash": "1f1432376acf6cda97b3c58fbaeddb62efabf5b0", "date": "2026-03-21 11:59:14 +0100", "message": "fix: security hardening, LiveKit class refactor, and eng review fixes", "type": "fix" }, { "hash": "c3b44d1972c5d09a75d5316dd599d62201c02e63", "date": "2026-03-21 10:08:44 +0100", "message": "refactor: server hardening + client decomposition + protocol resilience", "type": "refactor" }, { "hash": "2dfb73083f42c00a354cac57187d47c2e8f19401", "date": "2026-03-20 15:21:56 +0100", "message": "refactor: UI architecture improvements + GIF auto-pause", "type": "refactor" }, { "hash": "0b2106af886fe3e3719337ea9a299883ab12b102", "date": "2026-03-20 12:30:12 +0100", "message": "fix: camera button delay and video feed flickering + security hardening", "type": "fix" }, { "hash": "da760b34bf2c956e3597cd6aafafe7c22ba133e8", "date": "2026-03-20 06:11:09 +0100", "message": "fix: proxy LiveKit through HTTPS to fix mixed-content block", "type": "fix" }, { "hash": "5d67e91ca680247b84ee2f26e23e6d0ba607cf1c", "date": "2026-03-20 05:46:19 +0100", "message": "feat: replace client WebRTC with LiveKit SDK (Phase 2)", "type": "feat" }, { "hash": "17600081dfef4d5bccf6777279559599acfc1eff", "date": "2026-03-20 02:00:29 +0100", "message": "feat: wire search bar to server FTS5 search API (T-065)", "type": "feat" }, { "hash": "f11a53913ffb192b6d2978834e793d1053e45d27", "date": "2026-03-20 01:33:43 +0100", "message": "refactor: extract MainPage into focused controllers with tests", "type": "refactor" }, { "hash": "21d1622893919cee4d22d5a87b8245a6d0066db8", "date": "2026-03-19 17:29:20 +0100", "message": "fix: remove frozen video tiles when remote user disables camera", "type": "fix" }, { "hash": "d28321fe48d385dc277d5b0bca84adc49bb0295d", "date": "2026-03-19 17:19:56 +0100", "message": "fix: add USE_VIDEO permission to Member role and fix single-user video mode", "type": "fix" }, { "hash": "594fe3ebb486e2a6cd1f8a06c06635cc993f6a45", "date": "2026-03-19 17:07:30 +0100", "message": "fix: add local camera self-view to video grid", "type": "fix" }, { "hash": "ed7af5ff2d383916a03ba903a74fd1f67e66101e", "date": "2026-03-19 16:46:49 +0100", "message": "feat: wire video grid into main page with chat/video toggle", "type": "feat" }, { "hash": "e972d06765c6189ba524cdf7744db5c957ea0d2d", "date": "2026-03-19 12:23:24 +0100", "message": "feat: settings overhaul, GIF picker, notifications, PTT, scroll fixes", "type": "feat" }, { "hash": "5327b2681a0e31e4342bac24af20dfbb6299df29", "date": "2026-03-18 23:02:06 +0100", "message": "feat: fix voice chat over NAT, audio pipeline, and add comprehensive debugging", "type": "feat" }, { "hash": "8272d7e2f97e9661b097cdd8686dc1cdbc739e7e", "date": "2026-03-18 17:47:59 +0100", "message": "feat: client auto-update with Ed25519 signing and dynamic server URL", "type": "feat" }, { "hash": "6dbb945213901429f50a77c4648a5eab67271418", "date": "2026-03-18 14:13:52 +0100", "message": "feat: file uploads, URL previews, emoji search, voice mute fixes, UX improvements", "type": "feat" }, { "hash": "a37abb47a266fca465ebaaa6866308f3868df373", "date": "2026-03-18 11:33:59 +0100", "message": "fix: remove duplicate mute/deafen buttons from user bar, disable browser context menu", "type": "fix" }, { "hash": "9c63dd6efed184908b192fe60162683019a89d5c", "date": "2026-03-18 11:28:13 +0100", "message": "feat: channel management — create, edit, delete, reorder with category-type enforcement", "type": "feat" }, { "hash": "c0fa05c67d2f231500025d33aeb2bbd6176c7b01", "date": "2026-03-18 07:03:53 +0100", "message": "fix: voice session safety, delete confirm UX, image URL validation, test coverage (BUG-039 through BUG-045)", "type": "fix" }, { "hash": "3b81396964b1a2c762cd28e6569115dfb3541445", "date": "2026-03-18 06:45:05 +0100", "message": "fix: device switching, DM highlight, WebRTC error toast, close false positives (BUG-031, BUG-032, BUG-033, BUG-034, BUG-035, BUG-036)", "type": "fix" }, { "hash": "48be1e43e8ec64036fcf7aa4e89afca70238760f", "date": "2026-03-18 06:35:55 +0100", "message": "fix: message operations — reaction toggle, delete confirm, edit validation, toasts (BUG-024, BUG-028, BUG-029, BUG-037, BUG-038)", "type": "fix" }, { "hash": "e1a0610f9fdc77f576817903e35dc4ca1891630a", "date": "2026-03-18 06:33:17 +0100", "message": "fix: wire voice controls — camera, screenshare, UserBar mute/deafen, VAD (BUG-021, BUG-022, BUG-023, BUG-027)", "type": "fix" }, { "hash": "c1e2733f11a746aef74897bed712f69693e72acb", "date": "2026-03-18 06:28:45 +0100", "message": "fix: wire account settings callbacks and theme store sync (BUG-020, BUG-025)", "type": "fix" }, { "hash": "9cc9ae95cc69cf85ad2e49826cd9aa89ca6bbfed", "date": "2026-03-18 04:13:12 +0100", "message": "fix: voice session cleanup on ICE close and connection failure", "type": "fix" }, { "hash": "1f8c517df8560f8715ee1f5d44e7ca5b84260ed7", "date": "2026-03-18 04:02:05 +0100", "message": "feat: wire voiceSession into MainPage and main.ts lifecycle", "type": "feat" }, { "hash": "00bbb46b62c3aab6e5791795c3602ed2a1f05ed8", "date": "2026-03-18 02:41:55 +0100", "message": "fix: reject duplicate WebSocket logins to prevent reconnect ping-pong", "type": "fix" }, { "hash": "1548e6496c3677160a0f29538f77edc7276ba37c", "date": "2026-03-17 20:25:15 +0100", "message": "feat: TOFU cert pinning, voice channel sidebar, scroll-to-message, profiles, and review fixes", "type": "feat" }, { "hash": "fd3b65b0655ee2fc043491eccf2f0d67b0acd122", "date": "2026-03-17 20:03:34 +0100", "message": "fix: voice channel join/leave visibility and disconnect bugs", "type": "fix" }, { "hash": "1914067941b8512b895e32075fe2ced0b3da3841", "date": "2026-03-17 03:20:37 +0100", "message": "fix: address PR review findings (issues #3-#8)", "type": "fix" }, { "hash": "644bd05842886115c24d3bd1c1ceeaca79fd1880", "date": "2026-03-17 02:21:03 +0100", "message": "refactor: split MainPage.ts into ChatHeader and OverlayManagers modules", "type": "refactor" }, { "hash": "45d1cf9747814e7688155e10a0637e5118e6ae54", "date": "2026-03-17 01:59:34 +0100", "message": "fix: resolve 15 post-review issues across server and client", "type": "fix" }, { "hash": "db982a7cf8f373c74fb56724f0b8d468c018695d", "date": "2026-03-16 16:43:46 +0100", "message": "feat: fix all E2E failures, add credentials/window-state, wire QuickSwitcher + SettingsOverlay", "type": "feat" }, { "hash": "a08755e3be44d60e43db3ac1f0a77294add85f63", "date": "2026-03-15 20:43:13 +0100", "message": "feat: align UI to mockup, wire WS handlers, fix 5 HIGH review issues", "type": "feat" }, { "hash": "dbbe55275786aa58877f1ade8cf4cd18cb2513e3", "date": "2026-03-15 19:44:02 +0100", "message": "feat: add Tauri v2 desktop client with full chat UI and security hardening", "type": "feat" } ] }, "tauri-rust": { "count": 20, "lastCommit": "2026-03-30 16:35:02 +0200", "commits": [ { "hash": "1eeaa4909489c565857cebfa24515181a05e8f5f", "date": "2026-03-30 16:35:02 +0200", "message": "test: fix 10 test quality bugs (BUG-058–067) and resolve 115 TS type errors", "type": "test" }, { "hash": "9f31e8b017a0004f8d7d04c33741a484edd7557b", "date": "2026-03-28 20:42:37 +0100", "message": "feat: add observability, debugging, and diagnostics across all layers", "type": "feat" }, { "hash": "297a3694217b29afb61b685af6a280933b1cdbb7", "date": "2026-03-28 18:23:18 +0100", "message": "fix: LiveKit voice connection for remote clients behind reverse proxy", "type": "fix" }, { "hash": "c2b5d8e15b814e7ce5d065446fce738b8f7d3c4c", "date": "2026-03-28 10:39:23 +0100", "message": "feat: comprehensive spec docs, test suite, E2E overhaul, and security hardening", "type": "feat" }, { "hash": "27f05a5a1ac1426b9758a9222aaec4f0ab9cb1b6", "date": "2026-03-27 08:48:54 +0100", "message": "fix: remember password now actually stores the password", "type": "fix" }, { "hash": "2794662a48d480ba06add8132cba2d6f9adfaf5f", "date": "2026-03-24 21:30:23 +0100", "message": "feat: LiveKit migration — permissions, auth hardening, voice improvements", "type": "feat" }, { "hash": "edf4d9e48b0eb417a5bd7003d18688b81bc8dbbb", "date": "2026-03-24 20:23:40 +0100", "message": "fix: address code review — security hardening, leak fixes, credential safety", "type": "fix" }, { "hash": "0b2106af886fe3e3719337ea9a299883ab12b102", "date": "2026-03-20 12:30:12 +0100", "message": "fix: camera button delay and video feed flickering + security hardening", "type": "fix" }, { "hash": "2df58251ac5c674fb73d0079f42f0e012878fe20", "date": "2026-03-20 07:11:45 +0100", "message": "fix: speaking ring, devtools, CSP, and connection fixes", "type": "fix" }, { "hash": "f8e41180f48632937e8184d48106dc05287c1721", "date": "2026-03-20 02:21:53 +0100", "message": "fix: settings bugs, accessibility, and camera stream leak", "type": "fix" }, { "hash": "d1ec5883f688ea130d2be723204ba1d7ca904c49", "date": "2026-03-19 17:54:13 +0100", "message": "docs: update documentation for video chat, GIF picker, PTT, and notifications", "type": "docs" }, { "hash": "e972d06765c6189ba524cdf7744db5c957ea0d2d", "date": "2026-03-19 12:23:24 +0100", "message": "feat: settings overhaul, GIF picker, notifications, PTT, scroll fixes", "type": "feat" }, { "hash": "8272d7e2f97e9661b097cdd8686dc1cdbc739e7e", "date": "2026-03-18 17:47:59 +0100", "message": "feat: client auto-update with Ed25519 signing and dynamic server URL", "type": "feat" }, { "hash": "6f4579880e52dc38c7130a009cfacd2e6fb67b59", "date": "2026-03-18 17:10:16 +0100", "message": "feat: native file downloads, upload size fix, native E2E tests", "type": "feat" }, { "hash": "6dbb945213901429f50a77c4648a5eab67271418", "date": "2026-03-18 14:13:52 +0100", "message": "feat: file uploads, URL previews, emoji search, voice mute fixes, UX improvements", "type": "feat" }, { "hash": "1548e6496c3677160a0f29538f77edc7276ba37c", "date": "2026-03-17 20:25:15 +0100", "message": "feat: TOFU cert pinning, voice channel sidebar, scroll-to-message, profiles, and review fixes", "type": "feat" }, { "hash": "2cc0be227e0aa31170a6fdc79af660de16d5ecae", "date": "2026-03-17 14:54:50 +0100", "message": "fix: address PR #15 review issues (#16-#23)", "type": "fix" }, { "hash": "e92b8fe2df616937c26338fe56319977db194497", "date": "2026-03-17 11:05:52 +0100", "message": "feat: TOFU cert pinning, settings cache refactor, ban enforcement, and 80%+ test coverage", "type": "feat" }, { "hash": "db982a7cf8f373c74fb56724f0b8d468c018695d", "date": "2026-03-16 16:43:46 +0100", "message": "feat: fix all E2E failures, add credentials/window-state, wire QuickSwitcher + SettingsOverlay", "type": "feat" }, { "hash": "dbbe55275786aa58877f1ade8cf4cd18cb2513e3", "date": "2026-03-15 19:44:02 +0100", "message": "feat: add Tauri v2 desktop client with full chat UI and security hardening", "type": "feat" } ] }, "go:api": { "count": 53, "lastCommit": "2026-03-29 21:31:18 +0200", "commits": [ { "hash": "9bb99f76eb90b28754f50ffd584c3246c592f3b3", "date": "2026-03-29 21:31:18 +0200", "message": "feat: TOTP 2FA settings UI, server hardening, full validation pass", "type": "feat" }, { "hash": "d8ce044436771842f39f679dcf62c189b9b755dc", "date": "2026-03-29 19:39:22 +0200", "message": "fix: atomic invite registration, fail-closed search, proxy-aware rate limiting", "type": "fix" }, { "hash": "9ec875d450b53bebb4a18f6e7b1c27715d44e4c1", "date": "2026-03-29 12:35:04 +0200", "message": "fix: security hardening — 45 issues from full-project Copilot audit", "type": "fix" }, { "hash": "8a972fad433ef4a3ee7316c966749b5f04812b2e", "date": "2026-03-29 00:51:54 +0100", "message": "feat: voice/video polish — refactor, AudioWorklet VAD, bug fixes, UX improvements", "type": "feat" }, { "hash": "9f31e8b017a0004f8d7d04c33741a484edd7557b", "date": "2026-03-28 20:42:37 +0100", "message": "feat: add observability, debugging, and diagnostics across all layers", "type": "feat" }, { "hash": "894b4ed829e6820d6199121f4c6709363df7280d", "date": "2026-03-28 13:21:07 +0100", "message": "fix: resolve all 11 open bugs, add account deletion, harden security", "type": "fix" }, { "hash": "a9dcb47b6d946e50bfd8ab5015cfdf53724e5f2b", "date": "2026-03-28 11:24:31 +0100", "message": "feat: auto-login, online user count, DM sidebar improvements, periodic health checks", "type": "feat" }, { "hash": "c2b5d8e15b814e7ce5d065446fce738b8f7d3c4c", "date": "2026-03-28 10:39:23 +0100", "message": "feat: comprehensive spec docs, test suite, E2E overhaul, and security hardening", "type": "feat" }, { "hash": "c76534a2230904b773316c6d74c1e13b80cff4d4", "date": "2026-03-27 16:14:54 +0100", "message": "fix: security hardening, DM auth, LiveKit stability, and voice call timer", "type": "fix" }, { "hash": "3dff9fef64db54cdfe153d48f46d9cc7d7bac9d0", "date": "2026-03-27 13:58:48 +0100", "message": "feat(server): add DM REST endpoints, WebSocket routing, and ready payload", "type": "feat" }, { "hash": "3d50b0570d0f314d727b954403e2d7ab8a059038", "date": "2026-03-26 20:53:09 +0100", "message": "fix: voice mute pipeline, security hardening, and video tile controls", "type": "fix" }, { "hash": "738f4970576467e285c051549a4d78241966958c", "date": "2026-03-24 21:35:40 +0100", "message": "fix: address code review — 8 issues across server and client", "type": "fix" }, { "hash": "2794662a48d480ba06add8132cba2d6f9adfaf5f", "date": "2026-03-24 21:30:23 +0100", "message": "feat: LiveKit migration — permissions, auth hardening, voice improvements", "type": "feat" }, { "hash": "edf4d9e48b0eb417a5bd7003d18688b81bc8dbbb", "date": "2026-03-24 20:23:40 +0100", "message": "fix: address code review — security hardening, leak fixes, credential safety", "type": "fix" }, { "hash": "076402ab010e0eb1659cb776bd8bee8417d31e48", "date": "2026-03-22 20:06:59 +0100", "message": "fix: resolve CI failures — lint errors and coverage threshold", "type": "fix" }, { "hash": "19aa699f17ecb3cadf770b70b15009dd8e1572fb", "date": "2026-03-22 19:29:42 +0100", "message": "fix: address CEO review findings — health check, error logging, camera guard, metrics, tests", "type": "fix" }, { "hash": "f52e4d7e49852cf3cbae2ba789a1b382dcc6f1c8", "date": "2026-03-21 21:42:14 +0100", "message": "refactor: deduplicate pin handler and DB scan logic", "type": "refactor" }, { "hash": "85ef4f0d1d8d9e6b9eb2550f4d0b9b74542b792a", "date": "2026-03-21 21:36:10 +0100", "message": "feat: add server-side pin/unpin endpoints", "type": "feat" }, { "hash": "393d277f19a89a5987b0e0fc3993a360f3b62171", "date": "2026-03-21 12:34:31 +0100", "message": "fix: virtual scroll jumping with images/GIFs", "type": "fix" }, { "hash": "1f1432376acf6cda97b3c58fbaeddb62efabf5b0", "date": "2026-03-21 11:59:14 +0100", "message": "fix: security hardening, LiveKit class refactor, and eng review fixes", "type": "fix" }, { "hash": "c3b44d1972c5d09a75d5316dd599d62201c02e63", "date": "2026-03-21 10:08:44 +0100", "message": "refactor: server hardening + client decomposition + protocol resilience", "type": "refactor" }, { "hash": "2dfb73083f42c00a354cac57187d47c2e8f19401", "date": "2026-03-20 15:21:56 +0100", "message": "refactor: UI architecture improvements + GIF auto-pause", "type": "refactor" }, { "hash": "da760b34bf2c956e3597cd6aafafe7c22ba133e8", "date": "2026-03-20 06:11:09 +0100", "message": "fix: proxy LiveKit through HTTPS to fix mixed-content block", "type": "fix" }, { "hash": "3d37758baf1388f939b030d9f596fe88b4c6735b", "date": "2026-03-20 05:34:38 +0100", "message": "feat: add LiveKit webhook handler (Phase 1.5)", "type": "feat" }, { "hash": "a7b53d42f30bbdf99d13a943d0e3b24aab261eb2", "date": "2026-03-20 05:30:27 +0100", "message": "feat: rewrite server voice handlers for LiveKit (Phase 1)", "type": "feat" }, { "hash": "e972d06765c6189ba524cdf7744db5c957ea0d2d", "date": "2026-03-19 12:23:24 +0100", "message": "feat: settings overhaul, GIF picker, notifications, PTT, scroll fixes", "type": "feat" }, { "hash": "22706a795581a003059a9838ace4ac05d43fefb2", "date": "2026-03-19 06:20:00 +0100", "message": "fix: resolve CI failures in server lint and client tests", "type": "fix" }, { "hash": "b15738c4d80f4983f31d1076e8aaff07171a0a7c", "date": "2026-03-19 05:32:40 +0100", "message": "feat: redesign admin panel, add live server logs and audit log filters", "type": "feat" }, { "hash": "ce6204c4635763b1fa0564e6ae44cf42ae37b965", "date": "2026-03-19 04:19:03 +0100", "message": "fix: resolve 5 remaining medium/low issues from third-pass go-review", "type": "fix" }, { "hash": "a1d1560e76b058fe991d539d5ec03829a15e5ce8", "date": "2026-03-19 04:04:53 +0100", "message": "fix: resolve 6 medium issues from full go-review", "type": "fix" }, { "hash": "69564df29b525fbc0a37af95cb5392eb2c4d04f7", "date": "2026-03-19 03:53:40 +0100", "message": "fix: resolve 1 critical and 5 high security/reliability issues from go-review", "type": "fix" }, { "hash": "5327b2681a0e31e4342bac24af20dfbb6299df29", "date": "2026-03-18 23:02:06 +0100", "message": "feat: fix voice chat over NAT, audio pipeline, and add comprehensive debugging", "type": "feat" }, { "hash": "8272d7e2f97e9661b097cdd8686dc1cdbc739e7e", "date": "2026-03-18 17:47:59 +0100", "message": "feat: client auto-update with Ed25519 signing and dynamic server URL", "type": "feat" }, { "hash": "6f4579880e52dc38c7130a009cfacd2e6fb67b59", "date": "2026-03-18 17:10:16 +0100", "message": "feat: native file downloads, upload size fix, native E2E tests", "type": "feat" }, { "hash": "6dbb945213901429f50a77c4648a5eab67271418", "date": "2026-03-18 14:13:52 +0100", "message": "feat: file uploads, URL previews, emoji search, voice mute fixes, UX improvements", "type": "feat" }, { "hash": "1548e6496c3677160a0f29538f77edc7276ba37c", "date": "2026-03-17 20:25:15 +0100", "message": "feat: TOFU cert pinning, voice channel sidebar, scroll-to-message, profiles, and review fixes", "type": "feat" }, { "hash": "e92b8fe2df616937c26338fe56319977db194497", "date": "2026-03-17 11:05:52 +0100", "message": "feat: TOFU cert pinning, settings cache refactor, ban enforcement, and 80%+ test coverage", "type": "feat" }, { "hash": "8d47f4c2fa78267171ed52aed957639f1842978b", "date": "2026-03-17 08:09:52 +0100", "message": "fix: resolve all golangci-lint issues blocking CI server build", "type": "fix" }, { "hash": "84f938a6db26d4fbe9db6da0acb20deea53110c3", "date": "2026-03-17 04:11:04 +0100", "message": "fix: address PR review findings (issues #9-#14)", "type": "fix" }, { "hash": "79f0040f376c989650af60b35a7449b45f40935b", "date": "2026-03-17 02:56:19 +0100", "message": "feat: server enhancements, client test selectors, and UI polish", "type": "feat" }, { "hash": "46e811031e23a6631ab475926af034e35802903a", "date": "2026-03-16 17:17:00 +0100", "message": "test: add authorization and contract tests for channel access", "type": "test" }, { "hash": "642cd541c781649698799245a6a3d0f4a8ae0a02", "date": "2026-03-16 17:00:09 +0100", "message": "feat: add attachment persistence and link on chat_send (High #3)", "type": "feat" }, { "hash": "0bd9165f61f361a5acb9fb85ffd0e3cf8aca6d29", "date": "2026-03-16 16:57:01 +0100", "message": "feat: align REST responses with API.md spec (High #1)", "type": "feat" }, { "hash": "0680a32496e69f60a21d76a80d2a2d40244fe805", "date": "2026-03-16 16:54:56 +0100", "message": "fix: resolve 4 Critical + 2 High + 1 Medium server protocol violations", "type": "fix" }, { "hash": "aa194f45b39c17f9bf74868941f3e31dd5bf73e4", "date": "2026-03-15 12:21:10 +0100", "message": "fix: prevent stale \"online\" status for users not connected via WebSocket", "type": "fix" }, { "hash": "48a0db7224b708bcb7360c1897b78611f0d954f0", "date": "2026-03-15 11:42:25 +0100", "message": "feat: implement full client UI from mockup — 10 phases, 331 tests", "type": "feat" }, { "hash": "46b7efe5fcacb4df88c54ef22135afdbb515d368", "date": "2026-03-15 07:07:59 +0100", "message": "feat: add Let's Encrypt ACME support, fix security issues, improve server UX", "type": "feat" }, { "hash": "19127598984b1f26e2099afae0c4e9c21675c46b", "date": "2026-03-15 00:31:39 +0100", "message": "feat: redesign login UI, add save-password, fix permissions, add audit logging, member_join broadcast", "type": "feat" }, { "hash": "bcf5f77a4de40e84d40aeedaaa5d7833235341d2", "date": "2026-03-14 22:05:13 +0100", "message": "feat: implement server auto-update API endpoints with download, verify, and restart", "type": "feat" }, { "hash": "dad5607721aba88da76b554e6b1af9cadcaa1e3b", "date": "2026-03-14 21:31:03 +0100", "message": "feat: implement Phase 5 (voice/WebRTC signaling) and Phase 6 (admin panel)", "type": "feat" }, { "hash": "7b4f6cda1c40d841d3cef62d119f3d1b423e83e9", "date": "2026-03-14 21:17:09 +0100", "message": "feat: implement Phase 4 real-time chat (WebSocket hub + message REST)", "type": "feat" }, { "hash": "7d03f59c2fb92f8a71bd680cf2303ce5a92e3860", "date": "2026-03-14 20:52:11 +0100", "message": "feat: implement Phase 2 auth & security with TDD", "type": "feat" }, { "hash": "5868fdd0b3b00f542ac6fabf4afdcab847dc4a98", "date": "2026-03-14 20:34:37 +0100", "message": "feat: implement Phase 1 server skeleton with TDD", "type": "feat" } ] }, "go:auth": { "count": 9, "lastCommit": "2026-03-29 21:31:18 +0200", "commits": [ { "hash": "9bb99f76eb90b28754f50ffd584c3246c592f3b3", "date": "2026-03-29 21:31:18 +0200", "message": "feat: TOTP 2FA settings UI, server hardening, full validation pass", "type": "feat" }, { "hash": "d8ce044436771842f39f679dcf62c189b9b755dc", "date": "2026-03-29 19:39:22 +0200", "message": "fix: atomic invite registration, fail-closed search, proxy-aware rate limiting", "type": "fix" }, { "hash": "738f4970576467e285c051549a4d78241966958c", "date": "2026-03-24 21:35:40 +0100", "message": "fix: address code review — 8 issues across server and client", "type": "fix" }, { "hash": "2794662a48d480ba06add8132cba2d6f9adfaf5f", "date": "2026-03-24 21:30:23 +0100", "message": "feat: LiveKit migration — permissions, auth hardening, voice improvements", "type": "feat" }, { "hash": "8d47f4c2fa78267171ed52aed957639f1842978b", "date": "2026-03-17 08:09:52 +0100", "message": "fix: resolve all golangci-lint issues blocking CI server build", "type": "fix" }, { "hash": "84f938a6db26d4fbe9db6da0acb20deea53110c3", "date": "2026-03-17 04:11:04 +0100", "message": "fix: address PR review findings (issues #9-#14)", "type": "fix" }, { "hash": "46b7efe5fcacb4df88c54ef22135afdbb515d368", "date": "2026-03-15 07:07:59 +0100", "message": "feat: add Let's Encrypt ACME support, fix security issues, improve server UX", "type": "feat" }, { "hash": "7d03f59c2fb92f8a71bd680cf2303ce5a92e3860", "date": "2026-03-14 20:52:11 +0100", "message": "feat: implement Phase 2 auth & security with TDD", "type": "feat" }, { "hash": "5868fdd0b3b00f542ac6fabf4afdcab847dc4a98", "date": "2026-03-14 20:34:37 +0100", "message": "feat: implement Phase 1 server skeleton with TDD", "type": "feat" } ] }, "ts:main.ts": { "count": 22, "lastCommit": "2026-03-29 19:40:11 +0200", "commits": [ { "hash": "b386163dabdaa4c046a692cdeb517974affa4ec5", "date": "2026-03-29 19:40:11 +0200", "message": "chore: ESLint config, 61 lint fixes across 22 client files, CLAUDE.md update", "type": "chore" }, { "hash": "9ec875d450b53bebb4a18f6e7b1c27715d44e4c1", "date": "2026-03-29 12:35:04 +0200", "message": "fix: security hardening — 45 issues from full-project Copilot audit", "type": "fix" }, { "hash": "9f31e8b017a0004f8d7d04c33741a484edd7557b", "date": "2026-03-28 20:42:37 +0100", "message": "feat: add observability, debugging, and diagnostics across all layers", "type": "feat" }, { "hash": "a9dcb47b6d946e50bfd8ab5015cfdf53724e5f2b", "date": "2026-03-28 11:24:31 +0100", "message": "feat: auto-login, online user count, DM sidebar improvements, periodic health checks", "type": "feat" }, { "hash": "3c98e1b984e181df2f58387880b6e2332b7258dc", "date": "2026-03-27 12:34:28 +0100", "message": "feat: wire quick-switch overlay to disconnect and navigate to ConnectPage", "type": "feat" }, { "hash": "72f34ea8f6d9a9ad82e60d82c62b14ce98c0e0de", "date": "2026-03-27 12:09:56 +0100", "message": "feat: restore saved theme on app startup", "type": "feat" }, { "hash": "7715ac29553df52a6632fe34729823ca99a5f299", "date": "2026-03-27 11:32:36 +0100", "message": "feat: add OC Neon Glow theme CSS with theme contract variables", "type": "feat" }, { "hash": "27f05a5a1ac1426b9758a9222aaec4f0ab9cb1b6", "date": "2026-03-27 08:48:54 +0100", "message": "fix: remember password now actually stores the password", "type": "fix" }, { "hash": "2dfb73083f42c00a354cac57187d47c2e8f19401", "date": "2026-03-20 15:21:56 +0100", "message": "refactor: UI architecture improvements + GIF auto-pause", "type": "refactor" }, { "hash": "0b2106af886fe3e3719337ea9a299883ab12b102", "date": "2026-03-20 12:30:12 +0100", "message": "fix: camera button delay and video feed flickering + security hardening", "type": "fix" }, { "hash": "2df58251ac5c674fb73d0079f42f0e012878fe20", "date": "2026-03-20 07:11:45 +0100", "message": "fix: speaking ring, devtools, CSP, and connection fixes", "type": "fix" }, { "hash": "5d67e91ca680247b84ee2f26e23e6d0ba607cf1c", "date": "2026-03-20 05:46:19 +0100", "message": "feat: replace client WebRTC with LiveKit SDK (Phase 2)", "type": "feat" }, { "hash": "e972d06765c6189ba524cdf7744db5c957ea0d2d", "date": "2026-03-19 12:23:24 +0100", "message": "feat: settings overhaul, GIF picker, notifications, PTT, scroll fixes", "type": "feat" }, { "hash": "6dbb945213901429f50a77c4648a5eab67271418", "date": "2026-03-18 14:13:52 +0100", "message": "feat: file uploads, URL previews, emoji search, voice mute fixes, UX improvements", "type": "feat" }, { "hash": "a37abb47a266fca465ebaaa6866308f3868df373", "date": "2026-03-18 11:33:59 +0100", "message": "fix: remove duplicate mute/deafen buttons from user bar, disable browser context menu", "type": "fix" }, { "hash": "9cc9ae95cc69cf85ad2e49826cd9aa89ca6bbfed", "date": "2026-03-18 04:13:12 +0100", "message": "fix: voice session cleanup on ICE close and connection failure", "type": "fix" }, { "hash": "1f8c517df8560f8715ee1f5d44e7ca5b84260ed7", "date": "2026-03-18 04:02:05 +0100", "message": "feat: wire voiceSession into MainPage and main.ts lifecycle", "type": "feat" }, { "hash": "fd3b65b0655ee2fc043491eccf2f0d67b0acd122", "date": "2026-03-17 20:03:34 +0100", "message": "fix: voice channel join/leave visibility and disconnect bugs", "type": "fix" }, { "hash": "45d1cf9747814e7688155e10a0637e5118e6ae54", "date": "2026-03-17 01:59:34 +0100", "message": "fix: resolve 15 post-review issues across server and client", "type": "fix" }, { "hash": "db982a7cf8f373c74fb56724f0b8d468c018695d", "date": "2026-03-16 16:43:46 +0100", "message": "feat: fix all E2E failures, add credentials/window-state, wire QuickSwitcher + SettingsOverlay", "type": "feat" }, { "hash": "a08755e3be44d60e43db3ac1f0a77294add85f63", "date": "2026-03-15 20:43:13 +0100", "message": "feat: align UI to mockup, wire WS handlers, fix 5 HIGH review issues", "type": "feat" }, { "hash": "dbbe55275786aa58877f1ade8cf4cd18cb2513e3", "date": "2026-03-15 19:44:02 +0100", "message": "feat: add Tauri v2 desktop client with full chat UI and security hardening", "type": "feat" } ] }, "ts:stores": { "count": 28, "lastCommit": "2026-03-29 19:40:11 +0200", "commits": [ { "hash": "b386163dabdaa4c046a692cdeb517974affa4ec5", "date": "2026-03-29 19:40:11 +0200", "message": "chore: ESLint config, 61 lint fixes across 22 client files, CLAUDE.md update", "type": "chore" }, { "hash": "9ec875d450b53bebb4a18f6e7b1c27715d44e4c1", "date": "2026-03-29 12:35:04 +0200", "message": "fix: security hardening — 45 issues from full-project Copilot audit", "type": "fix" }, { "hash": "d7a2e5b8f59808e451c4b0c89e680e76bdf182a5", "date": "2026-03-29 12:19:08 +0200", "message": "refactor: extensibility overhaul — handler registry, permission checker, sidebar decomposition, DX improvements", "type": "refactor" }, { "hash": "8a972fad433ef4a3ee7316c966749b5f04812b2e", "date": "2026-03-29 00:51:54 +0100", "message": "feat: voice/video polish — refactor, AudioWorklet VAD, bug fixes, UX improvements", "type": "feat" }, { "hash": "a9dcb47b6d946e50bfd8ab5015cfdf53724e5f2b", "date": "2026-03-28 11:24:31 +0100", "message": "feat: auto-login, online user count, DM sidebar improvements, periodic health checks", "type": "feat" }, { "hash": "c2b5d8e15b814e7ce5d065446fce738b8f7d3c4c", "date": "2026-03-28 10:39:23 +0100", "message": "feat: comprehensive spec docs, test suite, E2E overhaul, and security hardening", "type": "feat" }, { "hash": "c76534a2230904b773316c6d74c1e13b80cff4d4", "date": "2026-03-27 16:14:54 +0100", "message": "fix: security hardening, DM auth, LiveKit stability, and voice call timer", "type": "fix" }, { "hash": "cb07a57254d6c6e981971229003f2b1fb914909b", "date": "2026-03-27 14:31:00 +0100", "message": "fix: filter DM channels from channel sidebar list", "type": "fix" }, { "hash": "e5afe7d20136f78e09ffd7fd951814a036c84fb3", "date": "2026-03-27 14:08:25 +0100", "message": "feat(client): add DM store, API methods, dispatcher events, and sidebar wiring", "type": "feat" }, { "hash": "a34f4cb971b4439e84707dc8a939f66e07ec197c", "date": "2026-03-27 12:39:46 +0100", "message": "feat: persist collapsible section state per-server in localStorage", "type": "feat" }, { "hash": "80cd05923678a8552faf970c3f1e101d44f48938", "date": "2026-03-27 12:09:47 +0100", "message": "feat: add neon-glow to theme selector and apply body class on theme switch", "type": "feat" }, { "hash": "7be56f95458b31c8435ce50ef52d60bd1820639b", "date": "2026-03-27 11:29:23 +0100", "message": "feat: add sidebarMode and activeDmUserId to UI store", "type": "feat" }, { "hash": "394b8e4b2da490e269e5d4760ad66925cf4180d1", "date": "2026-03-27 08:05:32 +0100", "message": "fix: client code review — 27 fixes across 17 files", "type": "fix" }, { "hash": "738f4970576467e285c051549a4d78241966958c", "date": "2026-03-24 21:35:40 +0100", "message": "fix: address code review — 8 issues across server and client", "type": "fix" }, { "hash": "2794662a48d480ba06add8132cba2d6f9adfaf5f", "date": "2026-03-24 21:30:23 +0100", "message": "feat: LiveKit migration — permissions, auth hardening, voice improvements", "type": "feat" }, { "hash": "c3b44d1972c5d09a75d5316dd599d62201c02e63", "date": "2026-03-21 10:08:44 +0100", "message": "refactor: server hardening + client decomposition + protocol resilience", "type": "refactor" }, { "hash": "91ebce72727a54fb96c72dadeb257bd92124ef4f", "date": "2026-03-20 06:33:57 +0100", "message": "fix: wire LiveKit speaker detection to voice activation ring", "type": "fix" }, { "hash": "5d67e91ca680247b84ee2f26e23e6d0ba607cf1c", "date": "2026-03-20 05:46:19 +0100", "message": "feat: replace client WebRTC with LiveKit SDK (Phase 2)", "type": "feat" }, { "hash": "5327b2681a0e31e4342bac24af20dfbb6299df29", "date": "2026-03-18 23:02:06 +0100", "message": "feat: fix voice chat over NAT, audio pipeline, and add comprehensive debugging", "type": "feat" }, { "hash": "6dbb945213901429f50a77c4648a5eab67271418", "date": "2026-03-18 14:13:52 +0100", "message": "feat: file uploads, URL previews, emoji search, voice mute fixes, UX improvements", "type": "feat" }, { "hash": "9c63dd6efed184908b192fe60162683019a89d5c", "date": "2026-03-18 11:28:13 +0100", "message": "feat: channel management — create, edit, delete, reorder with category-type enforcement", "type": "feat" }, { "hash": "e1a0610f9fdc77f576817903e35dc4ca1891630a", "date": "2026-03-18 06:33:17 +0100", "message": "fix: wire voice controls — camera, screenshare, UserBar mute/deafen, VAD (BUG-021, BUG-022, BUG-023, BUG-027)", "type": "fix" }, { "hash": "c1e2733f11a746aef74897bed712f69693e72acb", "date": "2026-03-18 06:28:45 +0100", "message": "fix: wire account settings callbacks and theme store sync (BUG-020, BUG-025)", "type": "fix" }, { "hash": "1548e6496c3677160a0f29538f77edc7276ba37c", "date": "2026-03-17 20:25:15 +0100", "message": "feat: TOFU cert pinning, voice channel sidebar, scroll-to-message, profiles, and review fixes", "type": "feat" }, { "hash": "45d1cf9747814e7688155e10a0637e5118e6ae54", "date": "2026-03-17 01:59:34 +0100", "message": "fix: resolve 15 post-review issues across server and client", "type": "fix" }, { "hash": "db982a7cf8f373c74fb56724f0b8d468c018695d", "date": "2026-03-16 16:43:46 +0100", "message": "feat: fix all E2E failures, add credentials/window-state, wire QuickSwitcher + SettingsOverlay", "type": "feat" }, { "hash": "a08755e3be44d60e43db3ac1f0a77294add85f63", "date": "2026-03-15 20:43:13 +0100", "message": "feat: align UI to mockup, wire WS handlers, fix 5 HIGH review issues", "type": "feat" }, { "hash": "dbbe55275786aa58877f1ade8cf4cd18cb2513e3", "date": "2026-03-15 19:44:02 +0100", "message": "feat: add Tauri v2 desktop client with full chat UI and security hardening", "type": "feat" } ] }, "go:go.mod": { "count": 10, "lastCommit": "2026-03-29 19:39:46 +0200", "commits": [ { "hash": "97f186041da8052d054cff73c93f23886bd374d5", "date": "2026-03-29 19:39:46 +0200", "message": "refactor: context propagation, LogAudit deadlock fix, ESLint v9, code quality", "type": "refactor" }, { "hash": "3d37758baf1388f939b030d9f596fe88b4c6735b", "date": "2026-03-20 05:34:38 +0100", "message": "feat: add LiveKit webhook handler (Phase 1.5)", "type": "feat" }, { "hash": "a7b53d42f30bbdf99d13a943d0e3b24aab261eb2", "date": "2026-03-20 05:30:27 +0100", "message": "feat: rewrite server voice handlers for LiveKit (Phase 1)", "type": "feat" }, { "hash": "923d071a71342c771f3314744e81f5f16e8ce845", "date": "2026-03-20 05:14:52 +0100", "message": "feat: add LiveKit infrastructure (Phase 0)", "type": "feat" }, { "hash": "48a0db7224b708bcb7360c1897b78611f0d954f0", "date": "2026-03-15 11:42:25 +0100", "message": "feat: implement full client UI from mockup — 10 phases, 331 tests", "type": "feat" }, { "hash": "46b7efe5fcacb4df88c54ef22135afdbb515d368", "date": "2026-03-15 07:07:59 +0100", "message": "feat: add Let's Encrypt ACME support, fix security issues, improve server UX", "type": "feat" }, { "hash": "b4d5de6cb70f565b34ea7e4bf74b3db0380800f2", "date": "2026-03-14 21:59:58 +0100", "message": "feat: add updater package with GitHub Release checking and checksum verification", "type": "feat" }, { "hash": "7b4f6cda1c40d841d3cef62d119f3d1b423e83e9", "date": "2026-03-14 21:17:09 +0100", "message": "feat: implement Phase 4 real-time chat (WebSocket hub + message REST)", "type": "feat" }, { "hash": "7d03f59c2fb92f8a71bd680cf2303ce5a92e3860", "date": "2026-03-14 20:52:11 +0100", "message": "feat: implement Phase 2 auth & security with TDD", "type": "feat" }, { "hash": "5868fdd0b3b00f542ac6fabf4afdcab847dc4a98", "date": "2026-03-14 20:34:37 +0100", "message": "feat: implement Phase 1 server skeleton with TDD", "type": "feat" } ] }, "go:go.sum": { "count": 9, "lastCommit": "2026-03-29 19:39:46 +0200", "commits": [ { "hash": "97f186041da8052d054cff73c93f23886bd374d5", "date": "2026-03-29 19:39:46 +0200", "message": "refactor: context propagation, LogAudit deadlock fix, ESLint v9, code quality", "type": "refactor" }, { "hash": "3d37758baf1388f939b030d9f596fe88b4c6735b", "date": "2026-03-20 05:34:38 +0100", "message": "feat: add LiveKit webhook handler (Phase 1.5)", "type": "feat" }, { "hash": "923d071a71342c771f3314744e81f5f16e8ce845", "date": "2026-03-20 05:14:52 +0100", "message": "feat: add LiveKit infrastructure (Phase 0)", "type": "feat" }, { "hash": "48a0db7224b708bcb7360c1897b78611f0d954f0", "date": "2026-03-15 11:42:25 +0100", "message": "feat: implement full client UI from mockup — 10 phases, 331 tests", "type": "feat" }, { "hash": "46b7efe5fcacb4df88c54ef22135afdbb515d368", "date": "2026-03-15 07:07:59 +0100", "message": "feat: add Let's Encrypt ACME support, fix security issues, improve server UX", "type": "feat" }, { "hash": "b4d5de6cb70f565b34ea7e4bf74b3db0380800f2", "date": "2026-03-14 21:59:58 +0100", "message": "feat: add updater package with GitHub Release checking and checksum verification", "type": "feat" }, { "hash": "7b4f6cda1c40d841d3cef62d119f3d1b423e83e9", "date": "2026-03-14 21:17:09 +0100", "message": "feat: implement Phase 4 real-time chat (WebSocket hub + message REST)", "type": "feat" }, { "hash": "7d03f59c2fb92f8a71bd680cf2303ce5a92e3860", "date": "2026-03-14 20:52:11 +0100", "message": "feat: implement Phase 2 auth & security with TDD", "type": "feat" }, { "hash": "5868fdd0b3b00f542ac6fabf4afdcab847dc4a98", "date": "2026-03-14 20:34:37 +0100", "message": "feat: implement Phase 1 server skeleton with TDD", "type": "feat" } ] }, "go:main.go": { "count": 12, "lastCommit": "2026-03-29 19:39:46 +0200", "commits": [ { "hash": "97f186041da8052d054cff73c93f23886bd374d5", "date": "2026-03-29 19:39:46 +0200", "message": "refactor: context propagation, LogAudit deadlock fix, ESLint v9, code quality", "type": "refactor" }, { "hash": "1f1432376acf6cda97b3c58fbaeddb62efabf5b0", "date": "2026-03-21 11:59:14 +0100", "message": "fix: security hardening, LiveKit class refactor, and eng review fixes", "type": "fix" }, { "hash": "c3b44d1972c5d09a75d5316dd599d62201c02e63", "date": "2026-03-21 10:08:44 +0100", "message": "refactor: server hardening + client decomposition + protocol resilience", "type": "refactor" }, { "hash": "b15738c4d80f4983f31d1076e8aaff07171a0a7c", "date": "2026-03-19 05:32:40 +0100", "message": "feat: redesign admin panel, add live server logs and audit log filters", "type": "feat" }, { "hash": "69564df29b525fbc0a37af95cb5392eb2c4d04f7", "date": "2026-03-19 03:53:40 +0100", "message": "fix: resolve 1 critical and 5 high security/reliability issues from go-review", "type": "fix" }, { "hash": "8d47f4c2fa78267171ed52aed957639f1842978b", "date": "2026-03-17 08:09:52 +0100", "message": "fix: resolve all golangci-lint issues blocking CI server build", "type": "fix" }, { "hash": "84f938a6db26d4fbe9db6da0acb20deea53110c3", "date": "2026-03-17 04:11:04 +0100", "message": "fix: address PR review findings (issues #9-#14)", "type": "fix" }, { "hash": "aa194f45b39c17f9bf74868941f3e31dd5bf73e4", "date": "2026-03-15 12:21:10 +0100", "message": "fix: prevent stale \"online\" status for users not connected via WebSocket", "type": "fix" }, { "hash": "48a0db7224b708bcb7360c1897b78611f0d954f0", "date": "2026-03-15 11:42:25 +0100", "message": "feat: implement full client UI from mockup — 10 phases, 331 tests", "type": "feat" }, { "hash": "46b7efe5fcacb4df88c54ef22135afdbb515d368", "date": "2026-03-15 07:07:59 +0100", "message": "feat: add Let's Encrypt ACME support, fix security issues, improve server UX", "type": "feat" }, { "hash": "bcf5f77a4de40e84d40aeedaaa5d7833235341d2", "date": "2026-03-14 22:05:13 +0100", "message": "feat: implement server auto-update API endpoints with download, verify, and restart", "type": "feat" }, { "hash": "5868fdd0b3b00f542ac6fabf4afdcab847dc4a98", "date": "2026-03-14 20:34:37 +0100", "message": "feat: implement Phase 1 server skeleton with TDD", "type": "feat" } ] }, "go:storage": { "count": 6, "lastCommit": "2026-03-29 12:35:04 +0200", "commits": [ { "hash": "9ec875d450b53bebb4a18f6e7b1c27715d44e4c1", "date": "2026-03-29 12:35:04 +0200", "message": "fix: security hardening — 45 issues from full-project Copilot audit", "type": "fix" }, { "hash": "c3b44d1972c5d09a75d5316dd599d62201c02e63", "date": "2026-03-21 10:08:44 +0100", "message": "refactor: server hardening + client decomposition + protocol resilience", "type": "refactor" }, { "hash": "70a8b5f2b80b8f1daf8471d31b6b89a3b0dbf824", "date": "2026-03-18 05:03:38 +0100", "message": "test: boost server test coverage to 80%+ across all packages", "type": "test" }, { "hash": "8d47f4c2fa78267171ed52aed957639f1842978b", "date": "2026-03-17 08:09:52 +0100", "message": "fix: resolve all golangci-lint issues blocking CI server build", "type": "fix" }, { "hash": "46b7efe5fcacb4df88c54ef22135afdbb515d368", "date": "2026-03-15 07:07:59 +0100", "message": "feat: add Let's Encrypt ACME support, fix security issues, improve server UX", "type": "feat" }, { "hash": "5868fdd0b3b00f542ac6fabf4afdcab847dc4a98", "date": "2026-03-14 20:34:37 +0100", "message": "feat: implement Phase 1 server skeleton with TDD", "type": "feat" } ] }, "go:updater": { "count": 10, "lastCommit": "2026-03-29 12:35:04 +0200", "commits": [ { "hash": "9ec875d450b53bebb4a18f6e7b1c27715d44e4c1", "date": "2026-03-29 12:35:04 +0200", "message": "fix: security hardening — 45 issues from full-project Copilot audit", "type": "fix" }, { "hash": "680f060dda8d1c82208c61f66f8d46f3e68e6228", "date": "2026-03-19 09:49:21 +0100", "message": "feat: add negative caching to updater to avoid API spam", "type": "feat" }, { "hash": "22706a795581a003059a9838ace4ac05d43fefb2", "date": "2026-03-19 06:20:00 +0100", "message": "fix: resolve CI failures in server lint and client tests", "type": "fix" }, { "hash": "ce6204c4635763b1fa0564e6ae44cf42ae37b965", "date": "2026-03-19 04:19:03 +0100", "message": "fix: resolve 5 remaining medium/low issues from third-pass go-review", "type": "fix" }, { "hash": "8272d7e2f97e9661b097cdd8686dc1cdbc739e7e", "date": "2026-03-18 17:47:59 +0100", "message": "feat: client auto-update with Ed25519 signing and dynamic server URL", "type": "feat" }, { "hash": "70a8b5f2b80b8f1daf8471d31b6b89a3b0dbf824", "date": "2026-03-18 05:03:38 +0100", "message": "test: boost server test coverage to 80%+ across all packages", "type": "test" }, { "hash": "8d47f4c2fa78267171ed52aed957639f1842978b", "date": "2026-03-17 08:09:52 +0100", "message": "fix: resolve all golangci-lint issues blocking CI server build", "type": "fix" }, { "hash": "46b7efe5fcacb4df88c54ef22135afdbb515d368", "date": "2026-03-15 07:07:59 +0100", "message": "feat: add Let's Encrypt ACME support, fix security issues, improve server UX", "type": "feat" }, { "hash": "bcf5f77a4de40e84d40aeedaaa5d7833235341d2", "date": "2026-03-14 22:05:13 +0100", "message": "feat: implement server auto-update API endpoints with download, verify, and restart", "type": "feat" }, { "hash": "b4d5de6cb70f565b34ea7e4bf74b3db0380800f2", "date": "2026-03-14 21:59:58 +0100", "message": "feat: add updater package with GitHub Release checking and checksum verification", "type": "feat" } ] }, "go:.air.toml": { "count": 1, "lastCommit": "2026-03-29 12:19:08 +0200", "commits": [ { "hash": "d7a2e5b8f59808e451c4b0c89e680e76bdf182a5", "date": "2026-03-29 12:19:08 +0200", "message": "refactor: extensibility overhaul — handler registry, permission checker, sidebar decomposition, DX improvements", "type": "refactor" } ] }, "go:permissions": { "count": 2, "lastCommit": "2026-03-29 12:19:08 +0200", "commits": [ { "hash": "d7a2e5b8f59808e451c4b0c89e680e76bdf182a5", "date": "2026-03-29 12:19:08 +0200", "message": "refactor: extensibility overhaul — handler registry, permission checker, sidebar decomposition, DX improvements", "type": "refactor" }, { "hash": "46b7efe5fcacb4df88c54ef22135afdbb515d368", "date": "2026-03-15 07:07:59 +0100", "message": "feat: add Let's Encrypt ACME support, fix security issues, improve server UX", "type": "feat" } ] }, "go:config": { "count": 16, "lastCommit": "2026-03-28 18:23:18 +0100", "commits": [ { "hash": "297a3694217b29afb61b685af6a280933b1cdbb7", "date": "2026-03-28 18:23:18 +0100", "message": "fix: LiveKit voice connection for remote clients behind reverse proxy", "type": "fix" }, { "hash": "3d50b0570d0f314d727b954403e2d7ab8a059038", "date": "2026-03-26 20:53:09 +0100", "message": "fix: voice mute pipeline, security hardening, and video tile controls", "type": "fix" }, { "hash": "2794662a48d480ba06add8132cba2d6f9adfaf5f", "date": "2026-03-24 21:30:23 +0100", "message": "feat: LiveKit migration — permissions, auth hardening, voice improvements", "type": "feat" }, { "hash": "edf4d9e48b0eb417a5bd7003d18688b81bc8dbbb", "date": "2026-03-24 20:23:40 +0100", "message": "fix: address code review — security hardening, leak fixes, credential safety", "type": "fix" }, { "hash": "0b2106af886fe3e3719337ea9a299883ab12b102", "date": "2026-03-20 12:30:12 +0100", "message": "fix: camera button delay and video feed flickering + security hardening", "type": "fix" }, { "hash": "da760b34bf2c956e3597cd6aafafe7c22ba133e8", "date": "2026-03-20 06:11:09 +0100", "message": "fix: proxy LiveKit through HTTPS to fix mixed-content block", "type": "fix" }, { "hash": "923d071a71342c771f3314744e81f5f16e8ce845", "date": "2026-03-20 05:14:52 +0100", "message": "feat: add LiveKit infrastructure (Phase 0)", "type": "feat" }, { "hash": "e972d06765c6189ba524cdf7744db5c957ea0d2d", "date": "2026-03-19 12:23:24 +0100", "message": "feat: settings overhaul, GIF picker, notifications, PTT, scroll fixes", "type": "feat" }, { "hash": "5327b2681a0e31e4342bac24af20dfbb6299df29", "date": "2026-03-18 23:02:06 +0100", "message": "feat: fix voice chat over NAT, audio pipeline, and add comprehensive debugging", "type": "feat" }, { "hash": "84f938a6db26d4fbe9db6da0acb20deea53110c3", "date": "2026-03-17 04:11:04 +0100", "message": "fix: address PR review findings (issues #9-#14)", "type": "fix" }, { "hash": "48a0db7224b708bcb7360c1897b78611f0d954f0", "date": "2026-03-15 11:42:25 +0100", "message": "feat: implement full client UI from mockup — 10 phases, 331 tests", "type": "feat" }, { "hash": "46b7efe5fcacb4df88c54ef22135afdbb515d368", "date": "2026-03-15 07:07:59 +0100", "message": "feat: add Let's Encrypt ACME support, fix security issues, improve server UX", "type": "feat" }, { "hash": "d8dbb081cbe4f0981285f27e25a78819b1c27cab", "date": "2026-03-14 22:17:47 +0100", "message": "fix: set default TLS cert/key paths to data/cert.pem and data/key.pem", "type": "fix" }, { "hash": "b4d5de6cb70f565b34ea7e4bf74b3db0380800f2", "date": "2026-03-14 21:59:58 +0100", "message": "feat: add updater package with GitHub Release checking and checksum verification", "type": "feat" }, { "hash": "dad5607721aba88da76b554e6b1af9cadcaa1e3b", "date": "2026-03-14 21:31:03 +0100", "message": "feat: implement Phase 5 (voice/WebRTC signaling) and Phase 6 (admin panel)", "type": "feat" }, { "hash": "5868fdd0b3b00f542ac6fabf4afdcab847dc4a98", "date": "2026-03-14 20:34:37 +0100", "message": "feat: implement Phase 1 server skeleton with TDD", "type": "feat" } ] }, "go:migrations": { "count": 10, "lastCommit": "2026-03-27 13:46:06 +0100", "commits": [ { "hash": "c8d547ce15643085eaed6e65c33044eef098f427", "date": "2026-03-27 13:46:06 +0100", "message": "feat(server): add DM schema migration and database query layer", "type": "feat" }, { "hash": "393d277f19a89a5987b0e0fc3993a360f3b62171", "date": "2026-03-21 12:34:31 +0100", "message": "fix: virtual scroll jumping with images/GIFs", "type": "fix" }, { "hash": "1f1432376acf6cda97b3c58fbaeddb62efabf5b0", "date": "2026-03-21 11:59:14 +0100", "message": "fix: security hardening, LiveKit class refactor, and eng review fixes", "type": "fix" }, { "hash": "d28321fe48d385dc277d5b0bca84adc49bb0295d", "date": "2026-03-19 17:19:56 +0100", "message": "fix: add USE_VIDEO permission to Member role and fix single-user video mode", "type": "fix" }, { "hash": "e92b8fe2df616937c26338fe56319977db194497", "date": "2026-03-17 11:05:52 +0100", "message": "feat: TOFU cert pinning, settings cache refactor, ban enforcement, and 80%+ test coverage", "type": "feat" }, { "hash": "48a0db7224b708bcb7360c1897b78611f0d954f0", "date": "2026-03-15 11:42:25 +0100", "message": "feat: implement full client UI from mockup — 10 phases, 331 tests", "type": "feat" }, { "hash": "19127598984b1f26e2099afae0c4e9c21675c46b", "date": "2026-03-15 00:31:39 +0100", "message": "feat: redesign login UI, add save-password, fix permissions, add audit logging, member_join broadcast", "type": "feat" }, { "hash": "dcae0b91b23c178e3b747cdf25176c8d09ffd103", "date": "2026-03-14 21:37:47 +0100", "message": "fix: correct embed path (static not admin/static) and simplify audit_log migration", "type": "fix" }, { "hash": "dad5607721aba88da76b554e6b1af9cadcaa1e3b", "date": "2026-03-14 21:31:03 +0100", "message": "feat: implement Phase 5 (voice/WebRTC signaling) and Phase 6 (admin panel)", "type": "feat" }, { "hash": "5868fdd0b3b00f542ac6fabf4afdcab847dc4a98", "date": "2026-03-14 20:34:37 +0100", "message": "feat: implement Phase 1 server skeleton with TDD", "type": "feat" } ] }, "ts:types": { "count": 1, "lastCommit": "2026-03-18 23:02:06 +0100", "commits": [ { "hash": "5327b2681a0e31e4342bac24af20dfbb6299df29", "date": "2026-03-18 23:02:06 +0100", "message": "feat: fix voice chat over NAT, audio pipeline, and add comprehensive debugging", "type": "feat" } ] }, "go:.golangci.yml": { "count": 1, "lastCommit": "2026-03-17 04:11:04 +0100", "commits": [ { "hash": "84f938a6db26d4fbe9db6da0acb20deea53110c3", "date": "2026-03-17 04:11:04 +0100", "message": "fix: address PR review findings (issues #9-#14)", "type": "fix" } ] }, "go:ws_cov.out": { "count": 2, "lastCommit": "2026-03-15 16:54:55 +0100", "commits": [ { "hash": "743a2d974738f76db7764bdd43e78fbf25889d4f", "date": "2026-03-15 16:54:55 +0100", "message": "chore: update .gitignore to exclude local tooling, build artifacts, and internal docs", "type": "chore" }, { "hash": "48a0db7224b708bcb7360c1897b78611f0d954f0", "date": "2026-03-15 11:42:25 +0100", "message": "feat: implement full client UI from mockup — 10 phases, 331 tests", "type": "feat" } ] }, "go:chatserver.exe": { "count": 6, "lastCommit": "2026-03-14 22:38:08 +0100", "commits": [ { "hash": "07636447ab328ced8a3561a1446df76561259010", "date": "2026-03-14 22:38:08 +0100", "message": "chore: gitignore server runtime artifacts (binary, config, data)", "type": "chore" }, { "hash": "bcf5f77a4de40e84d40aeedaaa5d7833235341d2", "date": "2026-03-14 22:05:13 +0100", "message": "feat: implement server auto-update API endpoints with download, verify, and restart", "type": "feat" }, { "hash": "dad5607721aba88da76b554e6b1af9cadcaa1e3b", "date": "2026-03-14 21:31:03 +0100", "message": "feat: implement Phase 5 (voice/WebRTC signaling) and Phase 6 (admin panel)", "type": "feat" }, { "hash": "7b4f6cda1c40d841d3cef62d119f3d1b423e83e9", "date": "2026-03-14 21:17:09 +0100", "message": "feat: implement Phase 4 real-time chat (WebSocket hub + message REST)", "type": "feat" }, { "hash": "7d03f59c2fb92f8a71bd680cf2303ce5a92e3860", "date": "2026-03-14 20:52:11 +0100", "message": "feat: implement Phase 2 auth & security with TDD", "type": "feat" }, { "hash": "5868fdd0b3b00f542ac6fabf4afdcab847dc4a98", "date": "2026-03-14 20:34:37 +0100", "message": "feat: implement Phase 1 server skeleton with TDD", "type": "feat" } ] } }, "fileChurn": [ { "file": "Client/tauri-client/src/styles/app.css", "commits": 54, "module": "ts:styles" }, { "file": "Client/tauri-client/src/pages/MainPage.ts", "commits": 44, "module": "ts:pages" }, { "file": "Server/api/router.go", "commits": 35, "module": "go:api" }, { "file": "Client/tauri-client/src/lib/livekitSession.ts", "commits": 30, "module": "ts:lib" }, { "file": "CLAUDE.md", "commits": 28, "module": "root" }, { "file": "Server/ws/voice_handlers.go", "commits": 24, "module": "go:ws" }, { "file": "Client/tauri-client/src/components/SettingsOverlay.ts", "commits": 23, "module": "ts:components" }, { "file": "Server/ws/handlers.go", "commits": 23, "module": "go:ws" }, { "file": "Server/ws/hub.go", "commits": 23, "module": "go:ws" }, { "file": "Client/tauri-client/src/main.ts", "commits": 22, "module": "ts:main.ts" }, { "file": "Client/tauri-client/src/components/MessageList.ts", "commits": 21, "module": "ts:components" }, { "file": "Client/tauri-client/src/pages/main-page/SidebarArea.ts", "commits": 21, "module": "ts:pages" }, { "file": "Server/ws/messages.go", "commits": 20, "module": "go:ws" }, { "file": "Client/tauri-client/tests/unit/settings-overlay.test.ts", "commits": 19, "module": "ts:config" }, { "file": "Client/tauri-client/src/lib/dispatcher.ts", "commits": 19, "module": "ts:lib" }, { "file": "Client/tauri-client/src-tauri/tauri.conf.json", "commits": 17, "module": "ts:config" }, { "file": "Client/tauri-client/src/components/message-list/media.ts", "commits": 17, "module": "ts:components" }, { "file": "Client/tauri-client/src/components/settings/VoiceAudioTab.ts", "commits": 17, "module": "ts:components" }, { "file": "Server/ws/serve.go", "commits": 17, "module": "go:ws" }, { "file": ".gitignore", "commits": 16, "module": "root" } ], "staleness": { "root": { "daysSinceLastCommit": 0, "lastCommitDate": "2026-03-30 22:36:38 +0200" }, "ts:config": { "daysSinceLastCommit": 0, "lastCommitDate": "2026-03-30 21:54:24 +0200" }, "go:admin": { "daysSinceLastCommit": 0, "lastCommitDate": "2026-03-30 21:54:24 +0200" }, "go:db": { "daysSinceLastCommit": 0, "lastCommitDate": "2026-03-30 21:54:24 +0200" }, "go:scripts": { "daysSinceLastCommit": 0, "lastCommitDate": "2026-03-30 21:54:24 +0200" }, "go:ws": { "daysSinceLastCommit": 0, "lastCommitDate": "2026-03-30 21:54:24 +0200" }, "client:other": { "daysSinceLastCommit": 0, "lastCommitDate": "2026-03-30 21:05:28 +0200" }, "ts:components": { "daysSinceLastCommit": 0, "lastCommitDate": "2026-03-30 20:13:34 +0200" }, "ts:styles": { "daysSinceLastCommit": 0, "lastCommitDate": "2026-03-30 20:13:34 +0200" }, "ts:lib": { "daysSinceLastCommit": 0, "lastCommitDate": "2026-03-30 19:12:36 +0200" }, "ts:pages": { "daysSinceLastCommit": 0, "lastCommitDate": "2026-03-30 19:12:36 +0200" }, "tauri-rust": { "daysSinceLastCommit": 0, "lastCommitDate": "2026-03-30 16:35:02 +0200" }, "go:api": { "daysSinceLastCommit": 1, "lastCommitDate": "2026-03-29 21:31:18 +0200" }, "go:auth": { "daysSinceLastCommit": 1, "lastCommitDate": "2026-03-29 21:31:18 +0200" }, "ts:main.ts": { "daysSinceLastCommit": 1, "lastCommitDate": "2026-03-29 19:40:11 +0200" }, "ts:stores": { "daysSinceLastCommit": 1, "lastCommitDate": "2026-03-29 19:40:11 +0200" }, "go:go.mod": { "daysSinceLastCommit": 1, "lastCommitDate": "2026-03-29 19:39:46 +0200" }, "go:go.sum": { "daysSinceLastCommit": 1, "lastCommitDate": "2026-03-29 19:39:46 +0200" }, "go:main.go": { "daysSinceLastCommit": 1, "lastCommitDate": "2026-03-29 19:39:46 +0200" }, "go:storage": { "daysSinceLastCommit": 1, "lastCommitDate": "2026-03-29 12:35:04 +0200" }, "go:updater": { "daysSinceLastCommit": 1, "lastCommitDate": "2026-03-29 12:35:04 +0200" }, "go:.air.toml": { "daysSinceLastCommit": 1, "lastCommitDate": "2026-03-29 12:19:08 +0200" }, "go:permissions": { "daysSinceLastCommit": 1, "lastCommitDate": "2026-03-29 12:19:08 +0200" }, "go:config": { "daysSinceLastCommit": 2, "lastCommitDate": "2026-03-28 18:23:18 +0100" }, "go:migrations": { "daysSinceLastCommit": 3, "lastCommitDate": "2026-03-27 13:46:06 +0100" }, "ts:types": { "daysSinceLastCommit": 12, "lastCommitDate": "2026-03-18 23:02:06 +0100" }, "go:.golangci.yml": { "daysSinceLastCommit": 14, "lastCommitDate": "2026-03-17 04:11:04 +0100" }, "go:ws_cov.out": { "daysSinceLastCommit": 15, "lastCommitDate": "2026-03-15 16:54:55 +0100" }, "go:chatserver.exe": { "daysSinceLastCommit": 16, "lastCommitDate": "2026-03-14 22:38:08 +0100" } }, "velocity": { "daily": [ { "date": "2026-03-02", "count": 0 }, { "date": "2026-03-03", "count": 0 }, { "date": "2026-03-04", "count": 0 }, { "date": "2026-03-05", "count": 0 }, { "date": "2026-03-06", "count": 0 }, { "date": "2026-03-07", "count": 0 }, { "date": "2026-03-08", "count": 0 }, { "date": "2026-03-09", "count": 0 }, { "date": "2026-03-10", "count": 0 }, { "date": "2026-03-11", "count": 0 }, { "date": "2026-03-12", "count": 0 }, { "date": "2026-03-13", "count": 0 }, { "date": "2026-03-14", "count": 21 }, { "date": "2026-03-15", "count": 14 }, { "date": "2026-03-16", "count": 6 }, { "date": "2026-03-17", "count": 23 }, { "date": "2026-03-18", "count": 35 }, { "date": "2026-03-19", "count": 46 }, { "date": "2026-03-20", "count": 17 }, { "date": "2026-03-21", "count": 28 }, { "date": "2026-03-22", "count": 31 }, { "date": "2026-03-23", "count": 0 }, { "date": "2026-03-24", "count": 4 }, { "date": "2026-03-25", "count": 4 }, { "date": "2026-03-26", "count": 7 }, { "date": "2026-03-27", "count": 48 }, { "date": "2026-03-28", "count": 13 }, { "date": "2026-03-29", "count": 13 }, { "date": "2026-03-30", "count": 22 }, { "date": "2026-03-31", "count": 0 } ], "weeklyAvg": 15.29, "trend": "accelerating" }, "commitTypes": { "feat": 107, "fix": 112, "test": 15, "refactor": 10, "docs": 28, "chore": 24, "other": 36 }, "recentCommits": [ { "hash": "f7372aec3219d36b76bc269bb7940ee914e660eb", "date": "2026-03-30 22:36:38 +0200", "message": "docs: add screenshots to README", "type": "docs", "modules": [ "root" ] }, { "hash": "86541ac3aa4af84c4d787d73a1f0ffc1e4119d7f", "date": "2026-03-30 22:32:31 +0200", "message": "chore: gitignore internal docs subdirectories", "type": "chore", "modules": [ "root" ] }, { "hash": "cec6ca6a97df645d41c781cc257dad24e5a407ca", "date": "2026-03-30 22:31:06 +0200", "message": "docs: add public documentation for contributors and users", "type": "docs", "modules": [ "root" ] }, { "hash": "22daadacfa5199c29a3061743350838ae9b65b0c", "date": "2026-03-30 22:17:14 +0200", "message": "Merge pull request #84 from J3vb/dev", "type": "other", "modules": [] }, { "hash": "7f31a6aa43b357b8f727f696bf92c7ee9328a0d3", "date": "2026-03-30 21:54:24 +0200", "message": "fix: resolve CI failures — eslint peer dep conflict and errcheck lint errors", "type": "fix", "modules": [ "ts:config", "go:admin", "go:db", "go:scripts", "go:ws" ] }, { "hash": "d9aaeb5f4c8c018f5ffbd9c64ae87126e5b5348a", "date": "2026-03-30 21:48:14 +0200", "message": "fix: admin panel CSP blocking inline event handlers and boolean toggle display", "type": "fix", "modules": [ "go:admin" ] }, { "hash": "bfe3404e14ab7143410a77c69bf7c28b4a161af1", "date": "2026-03-30 21:07:50 +0200", "message": "updated gitignore", "type": "other", "modules": [ "root" ] }, { "hash": "44390ad886be392b55d1a15995eba0fb9c4a80d1", "date": "2026-03-30 21:05:28 +0200", "message": "chore: clean up tracked files for v1.0.0 public release", "type": "chore", "modules": [ "root", "client:other" ] }, { "hash": "ad7ac75c74d0351d37e0eded5e4594528041866d", "date": "2026-03-30 20:50:44 +0200", "message": "docs: v1.0.0 release prep — version bump, license, README overhaul", "type": "docs", "modules": [ "root", "ts:config" ] }, { "hash": "b059bd4a04aead5271422f74c1094760b14e8c38", "date": "2026-03-30 20:13:34 +0200", "message": "feat: Discord-style video grid with fixed 16:9 aspect ratio", "type": "feat", "modules": [ "ts:components", "ts:styles", "ts:config" ] }, { "hash": "4f489a1a4d037e16e84d9f0f3e10d9fea7d47065", "date": "2026-03-30 19:12:36 +0200", "message": "feat: sidebar stream preview + screenshare focus fix", "type": "feat", "modules": [ "ts:components", "ts:lib", "ts:pages", "ts:styles", "ts:config", "root" ] }, { "hash": "8882cfa330e28f273cd1e53234e4e95b37a6c7eb", "date": "2026-03-30 16:47:19 +0200", "message": "docs: regenerate codemaps from current codebase", "type": "docs", "modules": [ "root" ] }, { "hash": "ad76d4a4139460d24974d6c436ba9782ac5ddfb2", "date": "2026-03-30 16:37:28 +0200", "message": "docs: update session log with TS error fix details", "type": "docs", "modules": [ "root" ] }, { "hash": "1eeaa4909489c565857cebfa24515181a05e8f5f", "date": "2026-03-30 16:35:02 +0200", "message": "test: fix 10 test quality bugs (BUG-058–067) and resolve 115 TS type errors", "type": "test", "modules": [ "root", "ts:config", "tauri-rust", "go:ws" ] }, { "hash": "3f0d5309374562116f211eab06e170ca2f31818c", "date": "2026-03-30 14:24:12 +0200", "message": "yu", "type": "other", "modules": [ "root" ] } ], "totalCommits30d": 332 }