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