HomelabARR CE Changelog¶
Latest releases and what changed in each.
[Unreleased]¶
⬆️ Dependencies & Framework¶
- React 18 → 19: upgraded
react,react-dom, and their@typesto 19.2.7. Resolves the recurring mismatched-major hazard where Dependabot tried to bumpreact-domto 19 alone. - shadcn/ui modernization: all
React.forwardRefwrappers across the 16ui/components converted to React 19 ref-as-prop. No behavioral change. - lucide-react 0.344 → 1.21 (React 19 peer support), radix-ui group to latest, dockerode 4 → 5, better-sqlite3 12.11.1, nodemailer 8 → 9, @types/node 26.
✅ Tests¶
- Added the project's first unit test (
server/email.test.js) covering the email transporter and nodemailer 9.
[v2.6.1] - 2026-11-04¶
🐛 Bug Fixes¶
- log the Docker endpoint the backend really uses by @smashingtags in #635
- start on root-owned appdata by taking ownership and dropping to uid 1001 by @smashingtags in #636
📚 Documentation¶
- changelog for v2.6.0 by @github-actions[bot] in #633
- list Movviz in the v2.6.0 changelog by @smashingtags in #634
🔧 Maintenance¶
- release v2.6.1 by @smashingtags in #637
[v2.6.0] - 2026-11-04¶
🐛 Bug Fixes¶
- watch every filesystem that holds guests in the host alert by @smashingtags in #608
- retry image signing so a lost Rekor reply cannot ship an unsigned image by @smashingtags in #631
📚 Documentation¶
- changelog for v2.5.2 by @github-actions[bot] in #556
- drop the stale admin/admin warning from the wiki home page by @smashingtags in #629
- finish the v2.6.0 changelog and fill in v2.4.0 to v2.5.2 by @smashingtags in #632
⬆️ Dependencies¶
- bump the production group with 8 updates by @dependabot[bot] in #559
- bump the actions group with 2 updates by @dependabot[bot] in #560
- bump the development group with 23 updates by @dependabot[bot] in #561
- bump fast-uri from 3.1.7 to 3.1.8 by @dependabot[bot] in #562
- bump obug from 2.1.4 to 2.2.1 by @dependabot[bot] in #563
- bump undici from 7.29.0 to 7.30.0 by @dependabot[bot] in #564
- bump nanoid from 3.3.18 to 3.3.19 by @dependabot[bot] in #565
- bump nginx from
adad2aetodf221dbby @dependabot[bot] in #568 - bump the production group with 8 updates by @dependabot[bot] in #569
- bump mikepenz/release-changelog-builder-action from 6.3.0 to 6.4.0 in the actions group by @dependabot[bot] in #570
- bump the development group with 28 updates by @dependabot[bot] in #571
- bump nanoid from 3.3.19 to 3.3.20 by @dependabot[bot] in #572
- bump the actions group with 5 updates by @dependabot[bot] in #579
- bump shell-quote and concurrently by @dependabot[bot] in #581
- bump @babel/helpers from 7.29.7 to 7.29.10 by @dependabot[bot] in #583
- bump @babel/traverse from 7.29.8 to 7.29.10 by @dependabot[bot] in #584
- bump @babel/runtime from 7.29.7 to 7.29.10 by @dependabot[bot] in #585
- bump the development group across 1 directory with 35 updates by @dependabot[bot] in #586
- bump nginx from 1.31.6-alpine to 1.31.7-alpine in the docker group by @dependabot[bot] in #588
- bump node from
ebfe2f9to44fce69by @dependabot[bot] in #589 - bump the development group with 16 updates by @dependabot[bot] in #591
- bump the actions group with 4 updates by @dependabot[bot] in #592
- bump nginx from 1.31.7-alpine to 1.31.8-alpine in the docker group by @dependabot[bot] in #594
- bump the actions group with 4 updates by @dependabot[bot] in #596
- bump nodemailer from 10.0.13 to 10.1.4 by @dependabot[bot] in #598
- bump fast-uri from 3.1.8 to 3.1.9 by @dependabot[bot] in #599
- bump ip-address from 10.7.3 to 10.7.5 by @dependabot[bot] in #600
- bump body-parser from 2.3.0 to 2.4.0 by @dependabot[bot] in #601
- bump node from
44fce69to06d7adfby @dependabot[bot] in #595 - bump @babel/parser from 7.29.9 to 7.29.11 by @dependabot[bot] in #602
- bump qs from 6.16.0 to 6.17.1 by @dependabot[bot] in #610
- bump systeminformation from 5.33.15 to 5.33.19 by @dependabot[bot] in #611
- bump nginx from
1ef7ca9to785835eby @dependabot[bot] in #614 - bump node from
06d7adfto8a32c8cby @dependabot[bot] in #613 - bump the development group with 27 updates by @dependabot[bot] in #616
- bump the production group across 1 directory with 51 updates by @dependabot[bot] in #619
- bump actions/setup-go from 5.6.0 to 7.0.0 by @dependabot[bot] in #580
🔧 Maintenance¶
- v2.6.0 by @smashingtags in #627
- clear the dev-dependency audit findings by @smashingtags in #630
🏗️ Infrastructure¶
- build keen v1.2.2 for Jira release sync by @smashingtags in #606
- build keen v1.3.0 for Jira release sync by @smashingtags in #607
- record releases with keen v1.7.0 by @smashingtags in #609
- pin the current keen release for release sync by @smashingtags in #625
- pin keen 1.9.0 for release sync by @smashingtags in #628
🔄 Changes¶
- scan Python and the Actions workflows with CodeQL again by @smashingtags in #557
- fix the 22 alerts from the first Python and Actions scans by @smashingtags in #558
- download with curl; not every runner has wget by @smashingtags in #566
- add Movviz by @smashingtags in #574
- make the icon smoke check say what it saw, and keep the report by @smashingtags in #576
- send host alerts through the estate's Resend sender by @smashingtags in #575
- record each published release in Jira by @smashingtags in #577
📦 Other¶
- Fix first-install bugs (#620–#624) and clear lint warnings by @smashingtags in #626
[v2.5.2] - 2026-09-28¶
📚 Documentation¶
- changelog for v2.5.1 by @github-actions[bot] in #516
⬆️ Dependencies¶
- bump node from
d32cdf6toe67514eby @dependabot[bot] in #517 - bump the production group with 3 updates by @dependabot[bot] in #518
- bump mikepenz/release-changelog-builder-action from 6.2.3 to 6.3.0 in the actions group by @dependabot[bot] in #519
- bump the development group with 21 updates by @dependabot[bot] in #520
- bump protobufjs from 7.6.5 to 7.6.6 by @dependabot[bot] in #521
- bump js-yaml from 4.3.1 to 4.3.2 by @dependabot[bot] in #522
- bump nginx from 1.31.4-alpine to 1.31.5-alpine in the docker group by @dependabot[bot] in #524
- bump the production group with 6 updates by @dependabot[bot] in #525
- bump actions/deploy-pages from 5.0.0 to 5.0.1 in the actions group by @dependabot[bot] in #526
- bump the development group with 34 updates by @dependabot[bot] in #527
- bump fast-uri from 3.1.6 to 3.1.7 by @dependabot[bot] in #529
- bump undici from 7.29.0 to 7.29.1 by @dependabot[bot] in #531
- bump nodemailer from 9.0.6 to 9.1.1 by @dependabot[bot] in #534
- bump node from
e67514eto50c8e8cby @dependabot[bot] in #535 - bump the production group with 7 updates by @dependabot[bot] in #536
- bump the actions group with 2 updates by @dependabot[bot] in #537
- bump node from
50c8e8ctoebfe2f9by @dependabot[bot] in #541 - bump nginx from 1.31.5-alpine to 1.31.6-alpine in the docker group by @dependabot[bot] in #540
- bump the actions group with 5 updates by @dependabot[bot] in #542
- bump the development group across 1 directory with 34 updates by @dependabot[bot] in #543
- bump nodemailer from 9.1.1 to 10.0.10 by @dependabot[bot] in #539
🔄 Changes¶
- give wiki.homelabarr.com a robots.txt by @smashingtags in #523
- measure demo drift against the latest release, not main by @smashingtags in #544
- raise the qs override to 6.16.0 by @smashingtags in #545
- rate-limit each client, not the proxy in front of the backend by @smashingtags in #549
- move vitest, coverage-v8 and ui to 5 together by @smashingtags in #547
- an unanswered probe is unchecked, not failed by @smashingtags in #548
- one demo — point every link at demo.homelabarr.com by @smashingtags in #546
- commit the white-label audit only when a brand mention changes by @smashingtags in #550
- make the README quick start actually start HomelabARR CE by @smashingtags in #551
- README and SECURITY say what the code does by @smashingtags in #552
- hold password-reset tokens in a Map by @smashingtags in #553
- make the white-label audit identical on Mac and Linux by @smashingtags in #554
- v2.5.2 by @smashingtags in #555
[v2.5.1] - 2026-08-29¶
📚 Documentation¶
- changelog for v2.5.0 by @github-actions[bot] in #513
🔄 Changes¶
- never let a release build reuse a cached package layer by @smashingtags in #514
- set the version to 2.5.1 by @smashingtags in #515
[v2.5.0] - 2026-08-29¶
📚 Documentation¶
- changelog for v2.4.0 by @github-actions[bot] in #494
⬆️ Dependencies¶
- bump the actions group with 2 updates by @dependabot[bot] in #496
- bump the development group with 12 updates by @dependabot[bot] in #497
- bump eventsource-parser from 3.1.0 to 3.1.1 by @dependabot[bot] in #498
- bump nginx from 1.31.3-alpine to 1.31.4-alpine in the docker group across 1 directory by @dependabot[bot] in #499
- bump fast-uri from 3.1.5 to 3.1.6 by @dependabot[bot] in #503
- bump the production group across 1 directory with 3 updates by @dependabot[bot] in #506
- bump the actions group across 1 directory with 4 updates by @dependabot[bot] in #501
- bump the development group across 1 directory with 33 updates by @dependabot[bot] in #507
🔄 Changes¶
- restore container log reads through the socket proxy by @smashingtags in #505
- bring docker-build-push onto the artifact actions the rest of the repo uses by @smashingtags in #508
- take Stryker 10, bumping the vitest runner with the core by @smashingtags in #509
- take better-sqlite3-multiple-ciphers 13 by @smashingtags in #510
- cover the audit anchor and get the mutation lane green by @smashingtags in #511
- set the version to 2.5.0 by @smashingtags in #512
📦 Other¶
- Sync docs to imogenlabs org + current app count by @smashingtags in #495
[v2.4.0] - 2026-08-13¶
📚 Documentation¶
- changelog for v2.3.0 by @github-actions[bot] in #493
⬆️ Dependencies¶
- bump sonner from 2.0.7 to 2.0.8 by @dependabot[bot] in #468
- bump the production group with 4 updates by @dependabot[bot] in #476
- bump node-abi from 3.92.0 to 3.94.0 by @dependabot[bot] in #469
- bump @testing-library/jest-dom from 7.0.0 to 7.0.1 in the development group by @dependabot[bot] in #480
🔄 Changes¶
- alert externally when the demo or dev goes down by @smashingtags in #459
- surface why a Discord notification failed by @smashingtags in #460
- strip whitespace from the webhook secret before use by @smashingtags in #461
- fall back across webhooks so one dead URL cannot mute alerting by @smashingtags in #462
- move dev.homelabarr.com to the CE dev app by @smashingtags in #463
- alert when the hypervisor disk fills or a domain pauses by @smashingtags in #466
- check the webhook up front so a missing one is not silent by @smashingtags in #467
- reset the public demo on a timer so a visitor cannot break it for good by @smashingtags in #471
- add a demo mode that refuses account changes by @smashingtags in #472
- build each architecture on its own runner instead of emulating arm64 by @smashingtags in #473
- merge routine dependency updates without a human touching them by @smashingtags in #474
- report the crash before trying to record it by @smashingtags in #479
- create the major-update label instead of assuming it exists by @smashingtags in #481
- bucket IPv6 login attempts by subnet instead of exact address by @smashingtags in #477
- let the server say it is a demo instead of guessing from the URL by @smashingtags in #485
- deliver hypervisor alerts by email so they reach someone by @smashingtags in #482
- stop the changelog workflow blanking the published wiki page by @smashingtags in #483
- make the changelog generator actually categorise this repo's PRs by @smashingtags in #486
[v2.3.0] - 2026-08-12¶
🚀 Features¶
- swap octopus for new HomelabARR mascot (placeholder) by @smashingtags in #151
🐛 Bug Fixes¶
- whitelabel-audit workflow opens PR instead of direct push by @smashingtags in #156
- harden users.json loader + DialogDescription a11y by @smashingtags in #165
📚 Documentation¶
- changelog for v2.2.0 by @github-actions[bot] in #149
- add White-Label & Forking guide (self-maintaining) by @smashingtags in #152
- remove Pro Edition section + Author → Developer by @smashingtags in #155
- flatten nav + move Discord/Discussions to header icons by @smashingtags in #160
- refresh CE UI screenshots (dark + light) by @smashingtags in #161
- fix broken README mascot image by @smashingtags in #163
⬆️ Dependencies¶
- bump hono from 4.12.12 to 4.12.14 in the npm_and_yarn group across 1 directory by @dependabot[bot] in #167
- bump the npm_and_yarn group across 1 directory with 5 updates by @dependabot[bot] in #170
- bump the actions group across 1 directory with 14 updates by @dependabot[bot] in #198
- bump nginx from 1.31-alpine to 1.31.1-alpine by @dependabot[bot] in #210
- bump @babel/plugin-transform-react-jsx-source from 7.27.1 to 7.29.7 by @dependabot[bot] in #214
- bump the actions group across 1 directory with 3 updates by @dependabot[bot] in #222
- bump express and @types/express by @dependabot[bot] in #213
- bump better-sqlite3-multiple-ciphers from 11.10.0 to 12.10.0 by @dependabot[bot] in #215
- bump react-markdown from 9.1.0 to 10.1.0 by @dependabot[bot] in #216
- bump vitest and @vitest/ui by @dependabot[bot] in #224
- bump the dev-tools group across 1 directory with 37 updates by @dependabot[bot] in #227
- bump nginx from
d1aedbcto8b1e787by @dependabot[bot] in #246 - bump the radix-ui group across 1 directory with 38 updates by @dependabot[bot] in #250
- bump nginx from 1.31.1-alpine to 1.31.2-alpine by @dependabot[bot] in #323
- bump the dev-tools group across 1 directory with 15 updates by @dependabot[bot] in #361
- bump the actions group across 1 directory with 3 updates by @dependabot[bot] in #324
- bump helmet from 7.2.0 to 8.2.0 by @dependabot[bot] in #351
- bump dockerode from 5.0.0 to 5.0.1 by @dependabot[bot] in #360
- bump @ungap/structured-clone from 1.3.1 to 1.3.2 by @dependabot[bot] in #356
- bump actions/setup-python from 6.2.0 to 6.3.0 in the actions group across 1 directory by @dependabot[bot] in #363
- bump the actions group with 7 updates by @dependabot[bot] in #381
- bump range-parser from 1.2.1 to 1.3.0 by @dependabot[bot] in #373
- bump nan from 2.27.0 to 2.28.0 by @dependabot[bot] in #372
- bump nginx from
2031656to54f2a90by @dependabot[bot] in #374 - bump tar-fs from 2.1.4 to 2.1.5 by @dependabot[bot] in #375
- bump lucide-react from 1.21.0 to 1.22.0 by @dependabot[bot] in #376
- bump the dev-tools group across 1 directory with 49 updates by @dependabot[bot] in #416
- bump the actions group across 1 directory with 8 updates by @dependabot[bot] in #414
- bump fast-uri from 3.1.2 to 3.1.4 by @dependabot[bot] in #413
- bump the radix-ui group across 1 directory with 37 updates by @dependabot[bot] in #410
- bump nginx from 1.31.2-alpine to 1.31.3-alpine by @dependabot[bot] in #403
- bump @protobufjs/utf8 from 1.1.1 to 1.1.2 by @dependabot[bot] in #400
- bump protobufjs from 7.6.4 to 7.6.5 by @dependabot[bot] in #399
- bump helmet from 8.2.0 to 8.3.0 by @dependabot[bot] in #398
- bump brace-expansion from 5.0.6 to 5.0.8 by @dependabot[bot] in #412
- bump the dev-tools group across 1 directory with 32 updates by @dependabot[bot] in #436
- bump the actions group across 1 directory with 5 updates by @dependabot[bot] in #433
- bump node from
2bdb65etod32cdf6by @dependabot[bot] in #440 - bump the dev-tools group with 3 updates by @dependabot[bot] in #442
- bump @base-ui/react from 1.6.0 to 1.7.0 by @dependabot[bot] in #443
- bump ipaddr.js from 2.4.0 to 2.5.0 by @dependabot[bot] in #444
- bump react-dom and @types/react-dom by @dependabot[bot] in #447
- bump google/osv-scanner-action/osv-scanner-action from 2.3.8 to 2.5.0 in the actions group by @dependabot[bot] in #441
- bump the dev-tools group with 2 updates by @dependabot[bot] in #450
- bump lucide-react from 1.22.0 to 1.30.0 by @dependabot[bot] in #451
- bump nodemailer from 9.0.1 to 9.0.5 by @dependabot[bot] in #453
🔧 Maintenance¶
- remove stale tracked files by @smashingtags in #150
- remove stale octopus favicons by @smashingtags in #153
- optimize app icons (PNG → WebP, 5.9MB → 1.2MB) by @smashingtags in #154
- remove unused react-query, bump shadcn (kills all npm deprecation warnings) by @smashingtags in #158
- bump hono from 4.12.12 to 4.12.14 in the npm_and_yarn group across 1 directory by @dependabot[bot] in #167
- bump the npm_and_yarn group across 1 directory with 5 updates by @dependabot[bot] in #170
- bump the actions group across 1 directory with 14 updates by @dependabot[bot] in #198
- bump nginx from 1.31-alpine to 1.31.1-alpine by @dependabot[bot] in #210
- bump @babel/plugin-transform-react-jsx-source from 7.27.1 to 7.29.7 by @dependabot[bot] in #214
- bump the actions group across 1 directory with 3 updates by @dependabot[bot] in #222
- bump express and @types/express by @dependabot[bot] in #213
- bump better-sqlite3-multiple-ciphers from 11.10.0 to 12.10.0 by @dependabot[bot] in #215
- bump react-markdown from 9.1.0 to 10.1.0 by @dependabot[bot] in #216
- bump vitest and @vitest/ui by @dependabot[bot] in #224
- bump the dev-tools group across 1 directory with 37 updates by @dependabot[bot] in #227
- bump nginx from
d1aedbcto8b1e787by @dependabot[bot] in #246 - bump the radix-ui group across 1 directory with 38 updates by @dependabot[bot] in #250
- bump nginx from 1.31.1-alpine to 1.31.2-alpine by @dependabot[bot] in #323
- bump the dev-tools group across 1 directory with 15 updates by @dependabot[bot] in #361
- bump the actions group across 1 directory with 3 updates by @dependabot[bot] in #324
- bump helmet from 7.2.0 to 8.2.0 by @dependabot[bot] in #351
- bump dockerode from 5.0.0 to 5.0.1 by @dependabot[bot] in #360
- bump @ungap/structured-clone from 1.3.1 to 1.3.2 by @dependabot[bot] in #356
- bump actions/setup-python from 6.2.0 to 6.3.0 in the actions group across 1 directory by @dependabot[bot] in #363
- bump the actions group with 7 updates by @dependabot[bot] in #381
- bump range-parser from 1.2.1 to 1.3.0 by @dependabot[bot] in #373
- bump nan from 2.27.0 to 2.28.0 by @dependabot[bot] in #372
- bump nginx from
2031656to54f2a90by @dependabot[bot] in #374 - bump tar-fs from 2.1.4 to 2.1.5 by @dependabot[bot] in #375
- bump lucide-react from 1.21.0 to 1.22.0 by @dependabot[bot] in #376
- bump the dev-tools group across 1 directory with 49 updates by @dependabot[bot] in #416
- bump the actions group across 1 directory with 8 updates by @dependabot[bot] in #414
- bump fast-uri from 3.1.2 to 3.1.4 by @dependabot[bot] in #413
- bump the radix-ui group across 1 directory with 37 updates by @dependabot[bot] in #410
- bump nginx from 1.31.2-alpine to 1.31.3-alpine by @dependabot[bot] in #403
- bump @protobufjs/utf8 from 1.1.1 to 1.1.2 by @dependabot[bot] in #400
- bump protobufjs from 7.6.4 to 7.6.5 by @dependabot[bot] in #399
- bump helmet from 8.2.0 to 8.3.0 by @dependabot[bot] in #398
- bump brace-expansion from 5.0.6 to 5.0.8 by @dependabot[bot] in #412
- bump the dev-tools group across 1 directory with 32 updates by @dependabot[bot] in #436
- bump the actions group across 1 directory with 5 updates by @dependabot[bot] in #433
- bump node from
2bdb65etod32cdf6by @dependabot[bot] in #440 - bump the dev-tools group with 3 updates by @dependabot[bot] in #442
- bump @base-ui/react from 1.6.0 to 1.7.0 by @dependabot[bot] in #443
- bump ipaddr.js from 2.4.0 to 2.5.0 by @dependabot[bot] in #444
- bump react-dom and @types/react-dom by @dependabot[bot] in #447
- bump google/osv-scanner-action/osv-scanner-action from 2.3.8 to 2.5.0 in the actions group by @dependabot[bot] in #441
- bump the dev-tools group with 2 updates by @dependabot[bot] in #450
- bump lucide-react from 1.22.0 to 1.30.0 by @dependabot[bot] in #451
- bump nodemailer from 9.0.1 to 9.0.5 by @dependabot[bot] in #453
🏗️ Infrastructure¶
- bump Playwright workers from 1 to 4 by @smashingtags in #157
-
auto-build :dev on dev pushes (ce-dev auto-deploy) by @smashingtags in #249
-
Add OWNER-PUNCHLIST for project management by @smashingtags in #203
- revert cosign-installer to v3 (fix red build from #222) by @smashingtags in #228
- fix cosign verify identity (org migration smashingtags->imogenlabs) by @smashingtags in #229
- fix vitest e2e exclusion + drop deprecated tsconfig baseUrl by @smashingtags in #230
- manualChunks function form for Vite 8/rolldown (unblocks #227) by @smashingtags in #231
- run security/compliance CI suite on self-hosted runners by @smashingtags in #232
- revert to GitHub-hosted (public repo = free minutes; self-hosted blocked for public) by @smashingtags in #233
- fix backend crash loop (path-to-regexp override vs Express 5) by @smashingtags in #234
- fix DAST Baseline duplicate-artifact 409 by @smashingtags in #236
- TruffleHog (CI) + Betterleaks (pre-commit) — drop license-blocked gitleaks-action by @smashingtags in #237
- fix compose-security-validation install (mkdir -p ~/.local/bin) by @smashingtags in #238
- fix compose validation step (filter + --no-interpolate) + tubesync volume by @smashingtags in #239
- validate compose templates as YAML+services (runner-stable) by @smashingtags in #240
- scope docker vuln scan to own images + fix multi-run SARIF by @smashingtags in #241
- rewrite E2E suite to run the real product locally by @smashingtags in #242
- Release dev → main: E2E and cleanup by @smashingtags in #243
- stabilize E2E on CI (cold-hydration timeouts + docker-free harness) by @smashingtags in #244
- Release dev → main: /auth/me reload fix, E2E on ce-dev, Dependabot unblock by @smashingtags in #248
- React 18 → 19 upgrade (core bump + forwardRef modernization) by @smashingtags in #273
- roll up Dependabot deps + fix lucide-react React 19 peer by @smashingtags in #276
- roll up remaining Dependabot PRs (radix transitive, dev-tools, nodemailer) by @smashingtags in #277
- nodemailer 9 regression test + React 19 changelog by @smashingtags in #278
- documentation sweep for React 19 upgrade by @smashingtags in #280
- fix broken wiki links (strict mkdocs build passes) by @smashingtags in #282
- migrate GHCR namespace + deploy wiring smashingtags → imogenlabs by @smashingtags in #285
- build-push workflow manual-dispatch only (minutes out is permanent) by @smashingtags in #287
- add CodeQL SAST workflow by @smashingtags in #288
- pages.yml → ubuntu-latest (unblock wiki publish) by @smashingtags in #289
- revert pages.yml to self-hosted (gitrunners fixed) by @smashingtags in #291
- pages.yml on ubuntu-latest (public repo cannot use self-hosted runners) by @smashingtags in #293
- test harness + Wave 1 unit tests (166 green) by @smashingtags in #294
- Unit/coverage CI gate on ubuntu-latest with ratcheting floor by @smashingtags in #295
- Unit tests for auth core (JWT, bcrypt, API keys, secrets) by @smashingtags in #296
- Unit tests for MFA (TOTP + backup codes) by @smashingtags in #297
- CHANGELOG for Wave-2 auth + MFA tests by @smashingtags in #298
- tests for rate-limit & account lockout by @smashingtags in #299
- supertest integration tests for auth HTTP routes by @smashingtags in #300
- persistence-integrity tests (db / stars / activity / loggers) by @smashingtags in #301
- audit hash-chain + secure-logging tests (audit/log/alert) by @smashingtags in #302
- fix SQLCipher encryption-at-rest init (key before WAL) by @smashingtags in #303
- docker-manager tests (mocked dockerode) by @smashingtags in #304
- deploy/SSE + startup-guard + network tests by @smashingtags in #305
- React contexts & hooks tests (AuthContext 100%) by @smashingtags in #306
- high-value component tests (RTL) by @smashingtags in #307
- Bug-lock regression — fix safeUrl / deployment.ts / cli-bridge appId by @smashingtags in #308
- Security-invariant regression suite (permanent guardrails) by @smashingtags in #309
- integration tests for dangerous ops (delete, deploy spawn, down -v) by @smashingtags in #310
- fix SSE broadcast skipping a client after a failing one by @smashingtags in #311
- make login limiter's skipSuccessfulRequests effective by @smashingtags in #312
- frame audit row_hash with JSON to close boundary-ambiguous tamper by @smashingtags in #313
- probe the Docker daemon instead of hardcoding healthy by @smashingtags in #314
- enforce react-hooks v7 rules as errors by @smashingtags in #315
- Playwright E2E seeded target + critical journeys (and fix deploy 404) by @smashingtags in #316
- README — E2E lanes + app count 117 by @smashingtags in #317
- /health/detail 200→500 on internal error by @smashingtags in #318
- validation path check case-insensitive on field key by @smashingtags in #319
- unify password minimum length to 12 by @smashingtags in #320
- validate container web port in all enhanced-mount handlers by @smashingtags in #321
- detect audit-log tail truncation (chain tip) by @smashingtags in #322
- StrykerJS mutation-testing harness + scoped baseline by @smashingtags in #325
- integration tests for untested backend routes (+ Router() bug fix) by @smashingtags in #326
- frontend security-component tests + lib/api gaps (+ password-min fix) by @smashingtags in #327
- deploy-execution + backend-branch coverage (+ dead-code removal) by @smashingtags in #328
- E2E round 2 — failure/permission/account journeys + harden (+ mount-wizard stub, bug fix) by @smashingtags in #329
- make GET /containers?stats=true non-blocking (async exec) by @smashingtags in #331
- mutation pass on high-risk security modules (≥80% score) by @smashingtags in #332
- nightly mutation-testing CI + per-module score ratchet by @smashingtags in #333
- client port-conflict validation for text-typed catalog port fields by @smashingtags in #335
- cover the remaining enhanced-mount route handlers by @smashingtags in #336
- mutation pass on the dangerous-op routes (+ final coverage ratchet) by @smashingtags in #337
- frontend security fixes (rclone XSS, credential log, port validation) by @smashingtags in #338
- audit/log/alert/db hardening (redaction drift, SQLCipher, alert) by @smashingtags in #339
- cli-bridge — stop process.env pollution + deployStandard hardening by @smashingtags in #340
- mandatory CSRF token + route hardening (health path, dockerode stats) by @smashingtags in #341
- harden auth routes — cli-mint jti-less+ttl, constant-time validatePassword, MFA invariant pins by @smashingtags in #342
- track Docker/SSE timers, fix health lie, lock down SSE CORS + subscribe auth by @smashingtags in #343
- ratchet coverage floor + consolidated remediation CHANGELOG by @smashingtags in #344
- deploy.js outer catch is unreachable — trim dead branches + pin parser boundary by @smashingtags in #345
- out-of-band HMAC-signed audit chain-tip anchor by @smashingtags in #346
- CHANGELOG for audit anchor + deploy-catch cleanup by @smashingtags in #348
- document AUDIT_ANCHOR_KEY + out-of-band audit anchor by @smashingtags in #349
- resolve open code-scanning alerts by @smashingtags in #354
- make log-injection sanitizer CodeQL-recognized by @smashingtags in #355
- restore Trivy default-branch reporting by @smashingtags in #353
- patch npm-bundled undici (CVE-2026-12151) in backend image by @smashingtags in #365
- fix undici patch — pack-and-replace npm's bundled copy by @smashingtags in #367
- restore dual-registry auto-publish (Docker Hub regression fix) by @smashingtags in #368
- smoke E2E reuses one session (fix 15-min rate-limit cascade) by @smashingtags in #369
- bump backend base + weekly no-cache rebuild (fix stale docker-cli CVE) by @smashingtags in #370
- ignore typescript >=6.1.0 in dependabot dev-tools group by @smashingtags in #387
- resolve 4 open security alerts by @smashingtags in #418
- consolidate four lock bumps and pin node to major 24 by @smashingtags in #437
- remove npm from the backend image instead of patching its deps by @smashingtags in #438
- guard the native build and give the E2E lane real diagnostics by @smashingtags in #446
- drop the unused better-sqlite3 dependency by @smashingtags in #454
- release v2.3.0 by @smashingtags in #456
[v2.2.0] - April 14, 2026¶
🐛 Bug Fixes (Backported from Eight.ly fork)¶
- Container delete/stop/restart: Docker client was never passed to the CLI manager. All container operations now work correctly. (#146)
- Docker socket permissions: Apps that mount
docker.sock(Portainer, etc.) now getgroup_addinjected at deploy time so they can read/write the socket. (#146) - Read-only template volumes: Temp deploy YAMLs now write to
server/data/instead of next to the source YAML, so deploys don't fail with EACCES on read-only mounts. (#146) - Deploy progress stream: SSE
connectedevent now includes the server-assignedclientId, fixing "Client not found" 500s on subscribe. (#146)
🔒 Security¶
- npm vulnerabilities patched: vite, hono, @hono/node-server bumped to address 9 advisories (3 high, 6 moderate). (#145)
- Workflow permissions: Added explicit
permissions: contents: readto all workflows missing it. Resolves CodeQL alert. (#144)
📚 Documentation¶
- Wiki cleanup: Removed Professional Edition section; replaced placeholder octopus with optimized v3b WebP at proper sizes. (#147)
[v2.0.0] - September 2025¶
🗄️ ARCHIVED COMPONENTS¶
- Mount Enhanced Legacy System: Moved obsolete cloud storage mounting system to archives
- Location:
MASTER_DOCUMENTATION/8_ARCHIVES/OBSOLETE_COMPONENTS/mount-enhanced-legacy/ - Reason: Technology shift from cloud storage to local NAS solutions
- Impact: Zero impact on core system functionality
- Components Archived:
- Complete Node.js backend with multi-provider integration
- Docker configuration and deployment files
- Technical documentation and setup guides
- API documentation and troubleshooting guides
📋 CONTEXT¶
- Google Drive Unlimited Ended: Original use case no longer viable
- Community Shift: Users moved to local NAS solutions (Synology, QNAP, Unraid, TrueNAS)
- Simplified Architecture: Focus on Docker + local storage integration
- Code Preservation: All functionality preserved in archive for future reference
✅ SYSTEM STATUS¶
- Core Functionality: Unaffected
- Docker Management: Fully operational
- Application Deployment: All 100+ applications available
- Traefik + Authelia: Fully functional
- React Frontend: Enhanced and optimized
- CLI Bridge: Seamless shell script integration
Previous Versions¶
Historical changelog entries would be added here as the system evolves