Merge origin/dev into feat/phase1-perf-impl

The branch was 12 commits behind dev and GitHub reported it CONFLICTING, which is
why the real CI workflow had not run since 2026-08-10 - a conflicting PR has no
mergeable ref, so pull_request-triggered workflows are skipped. Only the
lightweight checks (semantic title, CodeQL, CodeRabbit) were still reporting,
which made the PR look green while nothing was actually being tested.

Three conflicts, all of them this branch's barrel-diet work meeting dev's new
What's Up Docker integration. In every case the branch's structure is kept and
WUD is absorbed into it rather than the reverse:

  integrations/base/creator.ts   keep the lazy loader map; add wud as
                                () => import(...) rather than dev's static import,
                                which would have undone the lazy creator
  integrations/src/index.ts      keep the slim barrel; re-export WudStats and
                                WudContainerUpdate as `export type`, which is
                                erased at build and so adds no runtime module
  widgets/src/index.tsx          stays deleted - this was the barrel that put
                                every widget in the initial client graph

Registering WUD in the slimmed structures then needed three more entries that the
merge could not infer: base/kind-map.ts (type-only kind -> class map),
widgets/src/import.ts (type-only WidgetImports map, both the import and the
member). Each was found by typecheck rather than guessed at.

Verified: 37/37 packages typecheck, 1866/1881 unit tests pass. The 3 failures are
home-assistant and pi-hole, both testcontainers-based; both pass 11/11 in
isolation and fail only under 150-file parallel load with the container's payload
half-initialised.
This commit is contained in:
Thomas Camlong committed 2026-08-13 18:40:08 +02:00
commit 89f081538c
92 files changed
+3645 -2049

No files matched your search

+7
View File
@@ -429,6 +429,13 @@
<br/>
<p align="center">Uptime<br/>Kuma</p>
</a>
</td>
<td align="center">
<a href="https://homarr.dev/docs/integrations/whats-up-docker" target="_blank" rel="noreferrer noopener">
<img src="https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/svg/whats-up-docker.svg" alt="What's Up Docker" width="90" height="90" />
<br/>
<p align="center">What's<br/>Up<br/>Docker</p>
</a>
</td></tr>
</tbody>
</table>
+15 -2
View File
@@ -95,9 +95,22 @@ lines-of-code to performance ratio. On the evidence, that set is:
| `serverExternalPackages` (mysql2/pg + 8 more) | 1 block | −21 MiB idle |
| `content-visibility` on media-release cards | 4 lines | −59% image requests, −41% layout objects |
| ssh2 WASM heap (docker-modem patch) | 1 patch | −15 to −18 MiB external at every stage |
| Reuse the certificate agent instead of one per request | 1 file | 5.11 → 1.69 ms/request, 60 → 2 TLS handshakes over 60 requests |
| Stream proxied images instead of buffering | 2 files | −36% peak RSS on 30 concurrent 2 MiB images (116 → 74 MiB) |
Together these produce the headline: **−26% peak anon, −52% at idle**, no overlapping ranges at any
stage, for **+18% CPU**.
Together the server changes produce the headline: **−26% peak anon, −52% at idle**, no overlapping
ranges at any stage, for **+18% CPU**.
Two notes for whoever cuts it:
- **Split the formatting out of `media-missing/component.tsx`.** Its 77-line diff is roughly 8 lines of
semantic change plus **69 lines of pre-existing formatting debt** that `oxfmt` swept up when the file
was touched. Every other file changed in this work was already `oxfmt`-clean, so this is the only one
affected. Landing the reformat as its own commit keeps the perf change reviewable.
- The client changes worth carrying are `OverflowBadge`, the `calendar` day-cell `HoverCard`, the
`beszelSystemTable` inline `PercentCell`, `content-visibility` on the data-driven lists, the two
`keepMounted={false}` widgets, and the `placehold.co` removal. The last of those is a bug fix rather
than an optimisation and should probably ship regardless.
Two things to leave out or flag: