Files
OwnCord/.cache/project-map/git-data.json
T
2026-04-05 08:50:01 +02:00

6020 lines
230 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"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-058067) 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-058067) 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-058067) 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-058067) 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-058067) 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
}