366 lines
53 KiB
Markdown
366 lines
53 KiB
Markdown
# TEST_LOG.md
|
||
|
||
## Unieke categorie-iconen - 2026-07-22
|
||
|
||
| Check | Resultaat |
|
||
| ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
|
||
| Live inventaris | Pass; 16 categorieën bevatten al 16 unieke semantische waarden, waarvan 10 eerder niet door de frontendrenderer werden herkend |
|
||
| Renderer en instellingen | Pass; één catalogus levert 19 opties en alle 16 canonieke categorieën resolven naar een afzonderlijke Lucide-component |
|
||
| Nieuwe categorie | Pass; kiest automatisch het eerste nog ongebruikte ondersteunde pictogram |
|
||
| Onbekende importwaarde | Pass; veilige `Layers3`-fallback blijft behouden en verschijnt als Aangepast in Instellingen |
|
||
| `npm run format:check` / lint / typecheck | Pass |
|
||
| Unit/integratie / security | Pass; 57/57 en 5/5 |
|
||
| Playwright | Pass; 13 uitgevoerd en 15 project-gededupliceerd op desktop, tablet, mobiel en ultrawide |
|
||
| Build / audit | Pass; JS 377,08 kB, CSS 187,64 kB, server 182,0 kB en 0 kwetsbaarheden |
|
||
| React-review | Pass; named components, stabiele catalogus, afgeleide icoonkeuze en behouden semantische SVG-presentatie |
|
||
|
||
De release draait live op Tower met image `sha256:1cf11fc02e7e…`, is healthy en heeft 0 herstarts. De `.env` en bestaande JPEG-wallpaper van 3.245.835 bytes bleven byte-identiek. Chrome bevestigt in Categorieën 16 opgeslagen icoonwaarden, 16 gerenderde SVG's en 16 unieke SVG-signaturen; het dashboard toont dezelfde semantische pictogrammen en rapporteert 0 browserwaarschuwingen of -fouten. Er was geen databasewijziging nodig: de bestaande unieke waarden worden uitsluitend voortaan correct gerenderd.
|
||
|
||
## Platformbrede wallpaperlaag - 2026-07-22
|
||
|
||
| Check | Resultaat |
|
||
| ----------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
|
||
| Geometrie | Pass; stage start op 72 px, eindigt op de viewportonderrand en is exact viewportbreed vanaf x=0 |
|
||
| Presetprioriteit | Pass; canvas heeft bij een wallpaper `background-image: none` en een transparante achtergrond |
|
||
| Compositie | Pass; scherp instelbaar beeld plus zachte `cover`-ambientlaag, met glasoppervlakken voor linkerrail, tegels en rechter widgetdock |
|
||
| Scrollgedrag | Pass; fixed stage blijft onder de topbalk staan terwijl de dashboardinhoud onafhankelijk doorloopt |
|
||
| `npm run format:check` / lint / typecheck | Pass |
|
||
| Unit/integratie / security | Pass; 54/54 en 5/5 |
|
||
| Playwright | Pass; 13 uitgevoerd en 15 project-gededupliceerd op desktop, tablet, mobiel en ultrawide; geen horizontale overflow |
|
||
| Build / audit | Pass; JS 375,95 kB, CSS 187,64 kB, server 182,0 kB en 0 kwetsbaarheden |
|
||
| React-review | Pass; decoratieve ambientbeelden zijn verborgen, de bestaande semantiek en lokale draftstate blijven intact |
|
||
|
||
De live Tower-release draait op image `sha256:f5d62a9e30f6…`, is healthy en heeft 0 herstarts. De `.env` en bestaande JPEG-wallpaper van 3.245.835 bytes bleven byte-identiek; Unraid, AppOps en alle zeven livepanelen zijn connected. Chrome bevestigt op 3440×1215 een fixed stage van x=0/y=72 tot de volledige 3425×1143 browsercontentruimte. Na 900 px scroll blijft y=72 behouden, de presetcanvas blijft transparant, beide zijpanelen gebruiken 62% glas en er is geen horizontale overflow of applicatiefout.
|
||
|
||
## Responsieve wallpaperstudio - 2026-07-22
|
||
|
||
| Check | Resultaat |
|
||
| ----------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
|
||
| Reproductie | Pass; `cover` schaalde tegen een 3077×3015 contentcanvas in plaats van het zichtbare centrale viewport van 3077×1143 |
|
||
| Viewportstage | Pass; wallpaper schaalt tegen `100svh - 72px`, blijft tijdens scrollen in het centrale vlak en verstoort het ultrawide dock niet |
|
||
| Preview en bediening | Pass; Passend/Vullend, X-/Y-focus, 80–160% zoom, herstel en expliciet toepassen |
|
||
| Persistentie/migratie/export | Pass; vier nieuwe gevalideerde voorkeuren, legacydefaults en versie 1 round-trip |
|
||
| `npm run format:check` / lint / typecheck | Pass |
|
||
| Unit/integratie / security | Pass; 54/54 en 5/5 |
|
||
| Playwright | Pass; 13 uitgevoerd en 15 project-gededupliceerd op desktop, tablet, mobiel en ultrawide |
|
||
| Build / audit | Pass; JS 375,56 kB, CSS 185,13 kB, server 182,0 kB en 0 kwetsbaarheden |
|
||
| React-review | Pass; lokale draftstate, volledige dependencies, semantische controls, toetsenbordbediening en decoratieve alttekst |
|
||
|
||
De live Tower-release draait op image `sha256:606051e4f146…`, is healthy en heeft 0 herstarts. De `.env` en bestaande JPEG-wallpaper van 3.245.835 bytes bleven byte-identiek. Chrome bevestigt op 3440×1215 een wallpaperstage van 2381×1143 binnen een 3015 px hoge scrollcanvas: `Passend`, 50/50-focus en 100% zoom, zonder horizontale overflow of browserfouten. De gecentreerde studio-preview is 1600×686; `Vullend` wijzigt alleen de draft en `Herstellen` zet die terug zonder de live voorkeur te overschrijven.
|
||
|
||
## Achtergrond- en wallpaperherstel - 2026-07-22
|
||
|
||
| Check | Resultaat |
|
||
| ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| Reproductie live | Pass; voorkeur `grid` en JPEG-wallpaper van 3,2 MB waren opgeslagen, maar de CSS-compositie werd ongeldig verklaard door een ontbrekende semantische token |
|
||
| Achtergrondpresets | Pass; Aurora, Blauwdruk en Minimaal leveren drie verschillende berekende canvasachtergronden |
|
||
| Wallpaperflow | Pass; upload via Instellingen verschijnt als preview, zet `has-wallpaper` en wordt als `/api/wallpaper` in de zichtbare canvas gerenderd |
|
||
| `npm run format:check` / lint / typecheck | Pass |
|
||
| Unit/integratie / security | Pass; 54/54 en 5/5 |
|
||
| Playwright | Pass; 13 uitgevoerd en 15 project-gededupliceerd, inclusief de nieuwe end-to-end achtergrondflow |
|
||
| Build / audit | Pass; JS 371,81 kB, CSS 180,35 kB, server 180,6 kB en 0 kwetsbaarheden |
|
||
| Live Unraid-release | Pass; image `sha256:977791a84355…` healthy met 0 herstarts, `.env` byte-identiek en bestaande JPEG-wallpaper van 3.245.835 bytes behouden |
|
||
| Live Chrome-audit | Pass op 3440×1215; alle presets visueel en berekend verschillend, wallpaper in iedere compositie, 0 overflow en 0 browserfouten |
|
||
|
||
De audit heeft via de echte instellingeninterface Aurora, Minimaal en Blauwdruk geactiveerd. De wallpaper bleef tijdens iedere wissel zichtbaar; de canvascomposities gebruikten respectievelijk kleurlichten, een rustige overlay en een raster van 40 px. Blauwdruk is na de controle als actieve gebruikersvoorkeur hersteld.
|
||
|
||
## Premium wallpaper-, weer- en controlpass - 2026-07-22
|
||
|
||
| Check | Resultaat |
|
||
| ---------------------------- | ---------------------------------------------------------------------------------------------------- |
|
||
| Typecheck en unit/integratie | Pass; 54/54 tests inclusief weer-cache en wallpaperformaten |
|
||
| Playwright | Pass; 12 uitgevoerd, 12 project-gededupliceerd; desktop/tablet/mobile/3440px, 0 browserfouten |
|
||
| Toggle-geometrie | Pass; E2E bevestigt meer dan 18px verplaatsing tussen beide zichtbare posities |
|
||
| Visuele screenshots | Pass; weerbadge, compacte Home Assistant-tegel, consistente rails en geen horizontale overflow |
|
||
| React-review | Pass; effectcleanup, locatie-afhankelijke revalidatie, semantische switches en server-side datafetch |
|
||
|
||
De finale lint, typecheck, unit/integratie, Playwright, security, build en audit zijn groen. Build: client-JS 371,81 kB (115,70 kB gzip), CSS 178,48 kB (30,05 kB gzip), server 180,6 kB; `npm audit` meldt 0 kwetsbaarheden. Tower `docker compose config` en imagebuild zijn groen; image `a371cab602ce…` draait healthy met 0 restarts en een byte-identieke `.env`. Live wallpapercyclus: PUT 201, GET 200, DELETE 204. Open-Meteo gaf voor Mol 21,2 °C/bewolkt. Alle zes appwidgets zijn connected; de ultrawide Chrome-audit toont 0 functionele fouten.
|
||
|
||
Project: DockDeck
|
||
Laatste gate: 2026-07-22
|
||
|
||
## Autoritatieve inventarisheartbeat en instellingen-UX — 2026-07-22
|
||
|
||
| Check | Resultaat |
|
||
| ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| `npm run format:check` | Pass, alle bestanden Prettier-conform |
|
||
| `npm run lint` | Pass, 0 waarschuwingen |
|
||
| `npm run typecheck` | Pass |
|
||
| `npm test` | Pass, 48/48; inclusief connected-only opschoning, degraded behoud, deduplicatie en read-only/case-insensitieve Unraid-iconen |
|
||
| `npm run test:security` | Pass, 5/5 |
|
||
| `npm run test:e2e` | Pass, 12 uitgevoerd / 12 project-gededupliceerd op vier viewports; dashboardcategoriefilter en 0 console-/paginafouten |
|
||
| `npm run build` | Pass, JS 364,55 kB / 113,69 kB gzip; CSS 170,68 kB / 28,53 kB gzip; server 167,2 kB |
|
||
| `npm audit --audit-level=moderate` | Pass, 0 kwetsbaarheden |
|
||
| In-app browseraudit | Pass op 1440×900: topbars beide `left=32`/`height=72`, filter reduceert tot één groep, verticale Integraties, 14px kleine tekst, brede Paneelstudio |
|
||
| React-review | Pass: single-flight heartbeat, cleanup van timer/listeners, afgeleide filterstate, semantische knoppen, stabiele ids en lokaal begrensde state |
|
||
|
||
De browseraudit mat geen horizontale overflow en bevatte geen browserwarnings of -errors. De opschoonregel wijzigt uitsluitend DockDecks SQLite-records na een verbonden inventarisrespons; Docker blijft read-only en een degraded heartbeat verwijdert niets.
|
||
|
||
Live release `5e411d1`: Compose-config en imagebuild groen; image `sha256:2d320ff25b66eb84e3fdad27f5437ad8c9732e99891ceb14d714e95655c6db2c`; container healthy met 0 herstarts en PID 1 als UID 100. De secretvrije pre-sync-export bevat 139 apps, 16 categorieën en 1 favoriet (SHA-256 `35d1cf987511177a7246e906afd27f42f87f714f4b621358aaa21ab22b5873ea`). Na de verbonden heartbeat: 90 apps, 50 zichtbaar, 16 categorieën, 0 stale/ontbrekende/dubbele namen en 0 statusafwijkingen tegenover AppOps. Alle 5 lokale Unraid-iconen geven HTTP 200 met een afbeelding-MIME-type.
|
||
|
||
## Finale visuele audit — 2026-07-22
|
||
|
||
| Check | Resultaat |
|
||
| ---------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
|
||
| `npm run format:check` | Pass, alle bestanden Prettier-conform |
|
||
| `npm run lint` | Pass, 0 waarschuwingen |
|
||
| `npm run typecheck` | Pass |
|
||
| `npm test` | Pass, 42/42; inclusief persistente echte ontdekstatus en legacy-migratie |
|
||
| `npm run test:security` | Pass, 5/5 |
|
||
| `npm run test:e2e` | Pass, 11 uitgevoerd / 9 project-gededupliceerd op vier viewports; 0 console-/paginafouten |
|
||
| `npm run build` | Pass, JS 361,49 kB / 113,01 kB gzip; CSS 147,26 kB / 25,19 kB gzip; server 164,6 kB |
|
||
| `npm audit --audit-level=moderate` | Pass, 0 kwetsbaarheden |
|
||
| In-app Chrome-audit | Pass: dashboard, Quick Launch en alle zeven instellingensecties; 390, 768, 1440 en 3440 px; geen horizontale overflow |
|
||
| React-review | Pass: afgeleide catalogusstate, begrensde renders, effect-cleanup, semantische controls, stabiele keys en portalfocus |
|
||
| Secret-/mutatiescan | Pass; geen toegevoegde secrets, externe UI-assets of Docker-mutaties |
|
||
| Lokale Docker-validatie | Niet beschikbaar: Windows-omgeving heeft geen Docker-CLI; Compose en imagebuild worden op Tower uitgevoerd |
|
||
|
||
De audit heeft de operationele servicepanelen onder een compacte maar zichtbare **Live inzicht**-rij geplaatst, zonder de Paneelstudio of configuratie te verwijderen. Appbeheer gebruikt maximaal twintig rijen per pagina en een echte `isNew`-status; Widget Studio toont twaalf mogelijkheden per tranche. Geavanceerde weergavekeuzes en favoriete-editorvelden blijven volledig werkend via expliciete uitklapsecties. De Quick Launch-portal vult op ultrawide het volledige viewport en herstelt de invoerfocus na de portalovergang.
|
||
|
||
### Live release `72879e1`
|
||
|
||
| Check | Resultaat |
|
||
| ------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| Pre-deploybehoud | Secretvrije export opgeslagen; `.env`-SHA-256 vóór/staging/na identiek; named volume `dockdeck_dockdeck_data` behouden |
|
||
| `docker compose config --quiet` | Pass op huidige en gestagede bron |
|
||
| Klassieke Docker-imagebuild | Pass; image `sha256:5025a6599410…`, bundels identiek aan de lokale build |
|
||
| Compose release | Pass; één `DockDeck`-container, healthy, 0 herstarts op `192.168.10.150:1218` |
|
||
| Persistentie/schema | Pass; 138 apps, 55 zichtbaar, 1 favoriet, 3 categorieën, 6 appwidgets en dark theme; alle API-records hebben `isNew` |
|
||
| Read-only integraties | Pass; 233 templates, 3 array-/poolgroepen en 89 AppOps-containers connected; NPM bewust disabled |
|
||
| Live Chrome-audit | Pass op 3440×1271: favorietenrail, echte iconen, 0 monogrammen, Quick Launch 3440 px met focus, alle zeven instellingensecties en 0 overflow |
|
||
|
||
De vorige bronversie blijft recoverable onder `/mnt/user/appdata/dockdeck-prev-20260722-025420`; de secretvrije pre-release-export en behoudsmetingen staan afgeschermd onder `/mnt/user/appdata/dockdeck-release-backups/72879e1-20260722-025420`.
|
||
|
||
## Checks
|
||
|
||
| Check | Command / evidence | Result |
|
||
| -------------------------- | ----------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
|
||
| Dependency-installatie | `npm install` | Pass |
|
||
| Formatting | `npm run format:check` | Pass |
|
||
| Lint | `npm run lint` | Pass, 0 warnings |
|
||
| TypeScript | `npm run typecheck` | Pass |
|
||
| Unit/integratie/migratie | `npm test` | Pass, 42/42; inclusief app-/serverhistoriek, widgetpersistentie, capabilityprofielen en duale Unraid-icooncachehelper |
|
||
| Read-only security | `npm run test:security` | Pass, 5/5; inclusief GET-only providergrens, serviceworker zonder API-cache en cachehelper zonder Docker-mutaties |
|
||
| Browserflows | `npm run test:e2e` | Pass, 10 uitgevoerd / 18 bewust overgeslagen; vier viewports, advanced widgets, presets, diagnostics en editmodus |
|
||
| Production build | `npm run build` | Pass; client 305.49 kB / 91.03 kB gzip, CSS 69.77 kB / 12.85 kB gzip, serverbundle 163.0 kB |
|
||
| Dependency security | `npm audit --audit-level=moderate` | Pass, 0 vulnerabilities |
|
||
| Production smoke | `PORT=3100 npm start` + HTTP checks | Pass: health `ok`, HTML 200, 4 mockapps, alle nieuw verborgen |
|
||
| Visuele browseraudit | In-app Chromium, echte lokale UI | Pass: diepe widgetinstellingen op 375×812 en 2560×1440; mobiele codecontract-overflow hersteld, 0 consolefouten |
|
||
| Secret-/mutatiescan | `rg` plus securitytests | Pass; alleen verwachte envnamen en socketmount in de aparte proxy |
|
||
| Unraid Compose-config | `docker compose config --quiet` | Pass op Tower/Unraid |
|
||
| Unraid image/build | Klassieke Docker-builder | Pass; de BuildKit-cache op de host was inconsistent, de klassieke builder bouwde `dockdeck:local` |
|
||
| Unraid live smoke | Compose, health en HTTP API | Pass: healthy, 0 restarts, `192.168.10.150:1218`, persistent named volume |
|
||
| Live read-only discovery | Socketproxy + metadata-mirror | Pass: 77 containers, 228 bruikbare templates; 230 templates gesaneerd en geverifieerd tot Name/WebUI/Icon |
|
||
| Responsive live release | Unraid Compose + Chromium | Pass: `192.168.10.150:1218`, healthy, 0 restarts, 77 apps, nieuwe voorkeurvelden en geen browserconsolefouten |
|
||
| Live servicewidget | Docker stats + Chromium 2560×1080 | Pass: AdGuard gemigreerd, CPU/geheugen/netwerk/uptime gevuld, integraties connected, geen overflow/fouten |
|
||
| Providerwidget release | Vitest + in-app Chromium | Pass: Unraid-hostwidget en providerfallback op 390×844 en 2560×1440; geen overflow, overlay of consolefouten |
|
||
| React review | React best-practices checklist | Pass: named configurator, stabiele keys, geen extra effects, semantische buttons/switches en zichtbare focus |
|
||
| Live hostwidget release | Unraid Compose + API + Chromium | Pass: healthy op `192.168.10.150:1218`; Tower, 77 containers, 72 running, 20 cores, 62 GB, geen overflow/fouten |
|
||
| Live tailored widgets | API-delta + Chromium desktop/mobile | Pass: AdGuard DNS-layout/API-lock, JDownloader down-/uploadsnelheid, correcte links, 0 restarts en geen overflow/fouten |
|
||
| Live credential settings | API + in-app Chromium | Pass: AdGuard toont alleen ontbrekende username/password, password masking, geen overflow/consolefouten, geen dummywrite |
|
||
| Widget Studio lokaal | In-app Chromium + Playwright | Pass: catalogus/filter/search op desktop, responsive op vier viewports, gelijke kaarten, geen overflow/consolefouten |
|
||
| Widget Studio live | Unraid API + Compose health | Pass: 41 capabilities voor 82 apps, 2 bestaande widgets behouden, healthy met 0 restarts; credentialstore niet aangemaakt |
|
||
| Navigatie/beheer lokaal | Vitest + Playwright + Chromium | Pass: 30 tests, 8 browserchecks; remove-suppressie, rename-search, Tower, Google, sidebarfavorieten en 390px zonder overflow |
|
||
| Navigatie/beheer live | Unraid API + in-app Chromium | Pass: healthy/0 restarts; Tower-search/link, Tweakers-sidebar, gecorrigeerde AdGuard- en Immich-URL's, geen fouten/overflow |
|
||
| Widgetconfiguratie lokaal | Vitest + Playwright + agent-browser | Pass: drie formaten, inhoudslagen, import/export, 390/3440 px en geen overflow |
|
||
| Widgetconfiguratie live | Tower Compose + API + browser | Pass: healthy/0 restarts op `:1218`; 80 apps, 55 zichtbaar, 5 widgets; juiste AnythingLLM/Immich-attributie |
|
||
| Volledige widgetroadmap | Vitest + Playwright + API | Pass: onafhankelijke volgorde, metriccompositie, presets, freshness, cadence, warnings, sparklines, PWA en diagnostics |
|
||
| Native Unraid live | Read-only mounts + API | Pass: array STARTED, parity healthy/0 fouten, 3 opslaggroepen, 57 °C hoogste meting; integratie connected |
|
||
| Finale live responsiviteit | Chromium 390×844 en 3440×1440 | Pass: 7 live panelen incl. Tower, geen positieve overflow, geen Vite-overlay en PWA-manifest aanwezig |
|
||
| Persoonlijke widgetdiepte | API + Vitest + Chromium | Pass: 80/80 capabilities, 55 custom GET-profielen, 23 native providers en gescheiden app/worker/database-metrics |
|
||
| Tower poort/configuratie | SQLite + live API + Chromium | Pass: naam/URL zichtbaar in Settings; voorkeur en hostkaart wijzen naar `http://192.168.10.150:5000` |
|
||
| Finale Unraid release | Compose config/build/up + health | Pass: klassieke imagebuild, healthy, 0 restarts, 80 apps/55 zichtbaar/6 appwidgets; named-volumeconfiguratie behouden |
|
||
| Single-container release | AppOps + Compose + API + browser | Pass: exact één `DockDeck`, oude proxy verwijderd, 83 live containers, icoon/WebUI correct, data-ID en 55 zichtbare apps behouden |
|
||
| Diepe widgetconfiguratie | Vitest + Playwright + browser | Pass: statselectie/-limiet/-stijl, elke numerieke waarschuwing, 3 grafiektypes, 60-punt provider- en Towerhistoriek |
|
||
| App-specifieke fallback | Capabilityaudit + browser | Pass: kaarten behouden eigen metrics zonder endpoint en tonen eerlijke `Connect data`; alle geaudite generieke profielen weg |
|
||
| Unraid PNG-icoon | Asset, HTTP, beide caches en Chrome | Pass live: actieve SVG-cache vervangen; Unraid rendert nu de echte 512×512 PNG in DockDecks rij zonder `question.png`-fallback |
|
||
| Finale capabilityaudit | Live API + capabilityvergelijking | Pass: 97 opgeslagen apps, 97 capabilityprofielen, nul generieke profielen; BlockPilot en LumaOps expliciet gedekt |
|
||
| Diepe widgetrelease live | Compose + API + in-app Chromium | Pass: healthy/0 restarts, 74 ontdekt/69 actief, 55 zichtbaar, 6 appwidgets plus Tower, geen overflow of browserconsolefouten |
|
||
|
||
## Scenario coverage
|
||
|
||
- Deterministische discovery, Unraid XML/WebUI-portvervanging en NPM-hostmatching.
|
||
- Nieuwe containers verborgen; zichtbaarheid, naam, categorie, order en URL-override.
|
||
- Categorieën en favorieten aanmaken/bewerken/verwijderen.
|
||
- Volledige dynamische zoekindex voor zichtbare/verborgen apps, actuele namen, technische namen, categorieën, images, URL's, favorieten en Tower; expliciete Google-fallback in nieuw tabblad.
|
||
- Persistente DockDeck-only appverwijdering met rediscoveryonderdrukking en back-updekking; geen Docker-mutatie.
|
||
- Alle drie thema's, overzicht/categorienavigatie en mobiele navigatie.
|
||
- Persistente accent-, dichtheid-, contentbreedte-, achtergrond-, hero- en statusvoorkeuren.
|
||
- Responsieve grids en navigatie op mobiel, tablet, desktop en ultrawide; lokale fonts zonder externe request.
|
||
- Automatische first-party faviconafleiding met lokale merk-/semantische fallback en handmatige override; lettermonogrammen zijn niet meer nodig.
|
||
- Per-app widgetkeuze, limiet van acht, legacy-migratie en generieke read-only Dockerstats met degraded fallback.
|
||
- Persistente widgetformaten en inhoudslagen voor app- en Unraidpanelen, refreshmomenten en dichte responsieve plaatsing.
|
||
- Standaard Unraid-hostwidget via Docker `/info` en provider-aware AdGuard/Plex/Immich/Home Assistant/*arr-presentatie met server-only credentials.
|
||
- Gemaskeerde providercredentialinvoer via Settings, allowlist per provider, HTTP(S)-URL-validatie, same-origin write, atomische `0600`-environmentpersistentie en directe hertest zonder secret echo.
|
||
- Widget Studio capabilitycatalogus met aanbevolen/alle/actieve filters, acht-panelenlimiet, directe sync en vervangbare connected credentials.
|
||
- Volledige 80/80 capabilitycatalogus met app-specifieke metricdefinities, per-metric zichtbaarheid/volgorde en een begrensd custom GET-only JSON-contract.
|
||
- Persistente Tower-naam/URL met poort `5000` als standaard en dezelfde actuele waarde in kaart en zoekindex.
|
||
- Zero-config Ollama-/Glances-API's, Tautulli-/Paperless-adapters en app-specifieke AI/document/security-Dockerfallbacks.
|
||
- Per-servicetype fallbackpresentatie met berekende live netwerkdelta's; JDownloader gebruikt download-/uploadsnelheid en AdGuard DNS-traffic in plaats van generieke cumulatieve netwerkbytes.
|
||
- Zijpaneel met klok, deck health, favorieten en snelle servicelinks; gebalanceerde tegelbreedtes op 2560 en 3440 pixels.
|
||
- Statuspolling, offline container en integratie-degradatie.
|
||
- SQLite-migratie, restartpersistentie, container-ID-wijziging en export/import versie 1.
|
||
- Geen Docker-mutatie-endpoint of Docker-beheeractie.
|
||
|
||
## Open external checks
|
||
|
||
- Live Nginx Proxy Manager: credentials ontbreken; adapter en degradatie zijn wel gemockt/getest.
|
||
- Optionele providercredentials: alleen nodig voor de diepste API-metrics van beveiligde diensten; Dockerfallbacks blijven beschikbaar.
|
||
|
||
## Latest quality gate
|
||
|
||
De volledige lokale Canon v1-gate is groen: `format:check`, lint, typecheck, 42/42 unit- en integratietests, 5/5 afzonderlijke securitytests, 7 uitgevoerde en 9 doelbewust project-gededupliceerde Playwright-checks op desktop/tablet/mobile/ultrawide, production build en 0 kwetsbaarheden. De browserflows eindigen met 0 `console.error`- of ongehanteelde paginafouten. De clientbuild is 312,99 kB JS (93,53 kB gzip) en 94,91 kB CSS (17,51 kB gzip); de serverbundle is 163,9 kB. In-app Chromium verifieerde daarnaast eerste-use, gevuld dashboard, Quick Launch, apps-instellingen, mobiele drawer en dark/light op 390×844 en 1440×900. De vaste testpoortblokkade op 3000 is opgelost met geïsoleerde poorten 3101/5174 en een schone Canon-testdatabase. Docker Compose en imagebuild zijn niet opnieuw uitgevoerd omdat in deze Windows-omgeving geen `docker`-CLI/runtime beschikbaar is; de eerdere Tower-verificatie blijft ongewijzigd.
|
||
|
||
## Canon v1 gate — 2026-07-21
|
||
|
||
| Check | Resultaat |
|
||
| -------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
|
||
| `npm run format:check` | Pass, alle bestanden Prettier-conform |
|
||
| `npm run lint` | Pass, 0 waarschuwingen |
|
||
| `npm run typecheck` | Pass |
|
||
| `npm test` | Pass, 42/42 |
|
||
| `npm run test:security` | Pass, 5/5 |
|
||
| `npm run test:e2e` | Pass, 7 uitgevoerd / 9 gededupliceerd over vier viewports; 0 console-/paginafouten |
|
||
| `npm run build` | Pass, JS 312,99 kB / 93,53 kB gzip; CSS 94,91 kB / 17,51 kB gzip; server 163,9 kB |
|
||
| `npm audit --audit-level=moderate` | Pass, 0 kwetsbaarheden |
|
||
| In-app browserreview | Pass: 390×844 en 1440×900, dark/light, dashboard, Quick Launch, apps, drawer, geen horizontale overflow |
|
||
| Secret-/mutatiescan | Pass; geen toegevoegde secrets of Docker-mutaties |
|
||
| `docker compose config --quiet` / imagebuild | Niet uitgevoerd: `docker` is lokaal niet geïnstalleerd |
|
||
|
||
## Directe Stitch-pass — 2026-07-21
|
||
|
||
| Check | Resultaat |
|
||
| ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
|
||
| `npm run format:check` | Pass, alle bestanden Prettier-conform |
|
||
| `npm run lint` | Pass, 0 waarschuwingen |
|
||
| `npm run typecheck` | Pass |
|
||
| `npm test` | Pass, 42/42 |
|
||
| `npm run test:security` | Pass, 5/5 |
|
||
| `npm run test:e2e` | Pass, 11 uitgevoerd / 9 project-gededupliceerd; 390×844, 768×1024, 1440×900 en 3440×1440; 0 console-/paginafouten |
|
||
| `npm run build` | Pass, JS 312,49 kB / 93,60 kB gzip; CSS 125,83 kB / 22,07 kB gzip; server 163,9 kB |
|
||
| `npm audit --audit-level=moderate` | Pass, 0 kwetsbaarheden |
|
||
| In-app browserreview | Pass: gevuld donker dashboard, Quick Launch, App Beheer, editordrawer en Weergave; muis/toetsenbord en focus bevestigd |
|
||
| React-review | Pass: afgeleide state, effect-cleanup, semantische links/buttons, stabiele sleutels en toegankelijke switches |
|
||
|
||
De CSS-toename is de expliciete directe Canon-compositielaag. Zij vervangt geen runtime- of backendlogica en bevat geen externe assets. De finale E2E-test schrijft de actuele referentiebeelden naar `docs/design/dockdeck-canon-v1/implementation/`.
|
||
|
||
## Stitch launcherrail, iconen en widgets — 2026-07-22
|
||
|
||
| Check | Resultaat |
|
||
| ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
|
||
| `npm run format:check` | Pass, alle bestanden Prettier-conform |
|
||
| `npm run lint` | Pass, 0 waarschuwingen |
|
||
| `npm run typecheck` | Pass |
|
||
| `npm test` | Pass, 42/42 |
|
||
| `npm run test:security` | Pass, 5/5 |
|
||
| `npm run test:e2e` | Pass, 11 uitgevoerd / 9 project-gededupliceerd op 390×844, 768×1024, 1440×900 en 3440×1440; 0 console-/paginafouten |
|
||
| `npm run build` | Pass, JS 353,39 kB / 110,42 kB gzip; CSS 135,18 kB / 23,34 kB gzip; server 163,9 kB |
|
||
| `npm audit --audit-level=moderate` | Pass na transitieve `fast-uri`-lockfile-update, 0 kwetsbaarheden |
|
||
| In-app browserreview | Pass: desktopfavorietenrail, echte Google/YouTube/GitHub/Plex/Immich/Home Assistant-iconen, zichtbare widgets en mobiele volgorde |
|
||
| React-review | Pass: zelfstandig railcomponent, effect-cleanup, afgeleide state, semantische links/buttons en getypeerde instellingenroute |
|
||
| Docker Compose/imagebuild | Niet uitgevoerd: in de lokale Windows-omgeving is geen `docker`-CLI/runtime beschikbaar |
|
||
|
||
De browsertest valideert aanvullend dat de desktoprail en servicepanelen zichtbaar zijn, dat appkaarten geen `.app-monogram` meer renderen en dat de Paneelstudio via de rail rechtstreeks in `Instellingen → Algemeen` opent. De nieuwe merkiconen zijn lokaal gebundeld; expliciete Unraid-/gebruikersiconen blijven de eerste bron.
|
||
|
||
## Widescreen leesbaarheids- en categorieaudit — 2026-07-22
|
||
|
||
| Check | Resultaat |
|
||
| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
|
||
| `npm run format:check` | Pass, alle bestanden Prettier-conform |
|
||
| `npm run lint` | Pass, 0 waarschuwingen |
|
||
| `npm run typecheck` | Pass |
|
||
| `npm test` | Pass, 51/51; inclusief categorie-inferentie, behoud van onbekende toewijzingen en de expliciete organisatie-API |
|
||
| `npm run test:security` | Pass, 5/5 |
|
||
| `npm run test:e2e` | Pass, 12 uitgevoerd / 12 bewust overgeslagen over desktop, tablet, mobiel en ultrawide; 0 testfouten |
|
||
| `npm run build` | Pass, JS 365,35 kB / 113,90 kB gzip; CSS 173,48 kB / 29,03 kB gzip; server 170,8 kB |
|
||
| `npm audit --audit-level=moderate` | Pass, 0 kwetsbaarheden |
|
||
| React-review | Pass: afgeleide categorieanalyse, expliciete semantische actie, stabiele sleutels, geen extra effecten en ongewijzigde cleanup |
|
||
| Chrome audit vóór correctie | 3440×1215, 0 horizontale overflow en 0 consolefouten; wel widgetmetadata van 8 px, Paneelstudio tot 6 px en foutieve bulkcategorieën |
|
||
|
||
De pass vergroot de ultrawide widgetdock, maakt widget- en instellingenmicrotypografie leesbaar en begrenst extreem lange beheer-, integratie- en back-uprijen. De categorieactie gebruikt uitsluitend bestaande categorieën en laat onbekende services onaangeroerd.
|
||
|
||
### Live verificatie
|
||
|
||
| Check | Resultaat |
|
||
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| Secretvrij herstelpunt | `.codex-input/dockdeck-before-widescreen-audit-20260722-140834.json`, 80.809 bytes |
|
||
| `.env`-behoud | SHA-256 voor en na bronvervanging identiek: `e41e1b63…` |
|
||
| `docker compose config` | Pass vóór en na bronvervanging |
|
||
| Imagebuild en health | Pass, image `cc3a4b56fdfb…`, container healthy, 0 restarts |
|
||
| Read-only heartbeat | Pass, exact 90 bestaande containers en 50 zichtbare apps |
|
||
| Slimme categorieorganisatie | Pass, 14 gecorrigeerd, 76 behouden, 0 onbekend; 16 bestaande categorieën |
|
||
| Chrome 3440×1215 | Pass, dock 540 px, 0 horizontale overflow, 0 kapotte images, geen applicatieconsolefouten |
|
||
| Interacties | Pass: Downloads-filter toont exact Deluge/JDownloader2/slskd; instellingenzoeker, categoriebeheer en Quick Launch-favicon werken live |
|
||
|
||
De enige browserlogregel kwam van de WideFrog Chrome-extensie zelf (`keyflow timeout` op een titelupdate), niet van DockDeck. De live DockDeck-tab is als testdashboard open gebleven.
|
||
|
||
## Volledige instellingen- en releasepass — 2026-07-22
|
||
|
||
| Check | Resultaat |
|
||
| ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
|
||
| `npm run format:check` | Pass, alle bestanden Prettier-conform |
|
||
| `npm run lint` | Pass, 0 waarschuwingen |
|
||
| `npm run typecheck` | Pass |
|
||
| `npm test` | Pass, 42/42; inclusief legacy-migratie en export/import van `reducedMotion` en `pollingIntervalMs` |
|
||
| `npm run test:security` | Pass, 5/5 |
|
||
| `npm run test:e2e` | Pass, 11 uitgevoerd / 9 project-gededupliceerd op vier viewports; instellingenzoeker en voorkeurpersistentie; 0 browserfouten |
|
||
| `npm run build` | Pass, JS 357,89 kB / 111,86 kB gzip; CSS 139,39 kB / 24,06 kB gzip; server 164,2 kB |
|
||
| `npm audit --audit-level=moderate` | Pass, 0 kwetsbaarheden |
|
||
| In-app browserreview | Pass: Apps, Categorieën, Weergave en Back-up; zoekfilter, kaartlayout, dropzone, scrollherstel en 0 horizontale overflow op 1280 |
|
||
| React-review | Pass: afgeleide zoekstate, correcte hookafhankelijkheden, getypeerde drag-events en semantische buttons/switches |
|
||
|
||
De instellingenmatrix dekt iedere persistente voorkeur, app-/favoriet-/categoriebeheer, widgets, integratiecredentials en back-up/export. Fictieve online- of back-uphistoriek is bewust niet toegevoegd; de UI toont alleen werkelijk beschikbare gegevens.
|
||
|
||
### Live Unraid-release
|
||
|
||
| Check | Resultaat |
|
||
| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| Pre-deploybehoud | Secretvrije export gemaakt; `.env`-SHA-256 voor/na bronkopie identiek; named volume `dockdeck_dockdeck_data` behouden |
|
||
| `docker compose config` | Pass vóór en na bronvervanging |
|
||
| Klassieke Docker-imagebuild | Pass; image `14497e8a384c…`, client-/serverbundels identiek aan lokale build |
|
||
| Compose release | Pass; commit `3ffd39b`, één `DockDeck`-container, healthy, 0 restarts op `192.168.10.150:1218` |
|
||
| Persistentie na migratie | Pass; 55 zichtbare apps, 1 favoriet, 3 categorieën, 6 appwidgets en dark/30 s behouden; sync voegde 3 nieuwe records standaard verborgen toe |
|
||
| Read-only integraties | Pass; 233 templates, 3 array-/poolgroepen, 90 AppOps-containers GET-only en AdGuard connected; NPM bewust disabled |
|
||
| Live in-app browser | Pass; favorietenrail, echte iconen, 7 panelen, instellingenzoeker/controls, scrolltop 0 en geen horizontale overflow |
|
||
|
||
De enige foutregel in de eerste vijf minuten was een door de releasecheck zelf veroorzaakte lege POST zonder JSON-contenttype (verwachte HTTP 415); de onmiddellijk herhaalde geldige synchronisatie gaf HTTP 200 en alle daaropvolgende health-/dashboardchecks zijn groen.
|
||
|
||
## Stitch consistentie- en ultrawidepass - 2026-07-22
|
||
|
||
| Check | Resultaat |
|
||
| ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
|
||
| `npm run format:check` | Pass, alle bestanden Prettier-conform |
|
||
| `npm run lint` | Pass, 0 waarschuwingen |
|
||
| `npm run typecheck` | Pass |
|
||
| `npm test` | Pass, 42/42 |
|
||
| `npm run test:security` | Pass, 5/5 |
|
||
| `npm run test:e2e` | Pass, 11 uitgevoerd / 9 project-gededupliceerd op desktop/tablet/mobile/ultrawide; 0 browserfouten |
|
||
| `npm run build` | Pass, JS 363,25 kB / 113,46 kB gzip; CSS 155,55 kB / 26,33 kB gzip; server 164,6 kB |
|
||
| `npm audit --audit-level=moderate` | Pass, 0 kwetsbaarheden |
|
||
| React-review | Pass: lokale state voor widgetdock, media-query cleanup, afgeleide Quick Launch-snelkoppelingen en semantische linkcontrols |
|
||
| Secret-/mutatiescan | Pass; geen toegevoegde secrets, externe UI-assets of Docker-mutaties |
|
||
|
||
Deze pass maakt de platformlayout consistent tussen dashboard en instellingen, vergroot de instellingen-typografie, gebruikt ultrawide-detectie om widgets als rechterdock te tonen, laat Quick Launch-favorieten met echte iconen renderen en vervangt de lege Quick Launch-uitleg door functionele snelkoppelingskaarten. Loopback-iconen uit discovery worden op een LAN-host naar de actuele DockDeck-host herschreven, zodat appiconen zoals Widefrog niet meer naar client-localhost wijzen. De E2E-suite valideert daarnaast dat de ultrawide-widgetdock automatisch open staat en rechts van de dashboardgroepen ligt zonder horizontale overflow.
|
||
|
||
## Edge-anchored Stitch shell en rijkere Dockerkaarten - 2026-07-22
|
||
|
||
| Check | Resultaat |
|
||
| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| `npm run format:check` | Pass, alle bestanden Prettier-conform |
|
||
| `npm run lint` | Pass, 0 waarschuwingen |
|
||
| `npm run typecheck` | Pass |
|
||
| `npm test` | Pass, 42/42 |
|
||
| `npm run test:security` | Pass, 5/5 |
|
||
| `npm run test:e2e` | Pass, 11 uitgevoerd / 9 project-gededupliceerd op desktop/tablet/mobile/ultrawide |
|
||
| `npm run build` | Pass, JS 363,25 kB / 113,46 kB gzip; CSS 162,12 kB / 27,27 kB gzip; server 164,6 kB |
|
||
| `npm audit --audit-level=moderate` | Pass, 0 kwetsbaarheden |
|
||
| Chrome visuele audit | Pass: dashboardrail `left=0`, settings-sidebar `left=0`, ultrawide widgetdock `right=3440`, 0 horizontale overflow op 1920 en 3440 px |
|
||
|
||
Deze pass verwijdert de zwevende dashboard-shell op desktop: de linkerfavorietenrail staat tegen de viewportzijde en gebruikt dezelfde oppervlakte, padding en typografische taal als de instellingenrail. Op ultrawide staat het widgetpaneel als rechterdock tegen de rechter viewportzijde. Docker-snelkoppelingen zijn visueel zwaardere Stitch-servicekaarten met grotere iconen, statuschips, accentrail, arrow affordance, subtiel verloop en diepere hoverrespons.
|
||
|
||
### Live categorie-indeling - 2026-07-22
|
||
|
||
Voor de live DockDeck-config op `http://192.168.10.150:1218` is vooraf een secretvrije export gemaakt naar `.codex-input/dockdeck-categories-before-20260722-052942.json`. Daarna zijn 139 apps via de DockDeck-config-API over 16 categorieën verdeeld; verificatie: 0 apps zonder categorie. Categorieaantallen: Media 17, Downloads 2, Books & Documents 7, Photos 14, Home & Automation 2, Security & Identity 4, Network & Admin 4, Monitoring 7, Development & Projects 45, AI & ML 3, Databases & Storage 12, Infrastructure 16, Games & Emulation 5, Tools & Productivity 1, Experiments & Archived 0, Favorites 0.
|
||
|
||
Live codevervanging is daarna alsnog uitgevoerd via de bestaande SSH-alias `unraid-widefrog` (`root`, sleutel `widefrog_unraid_deploy`). De deploymentmap is een uitgepakte source-copy en geen git-worktree; daarom is commit `41942d5` via een checksum-gecontroleerd `git archive` naar Tower gekopieerd en over de source uitgepakt. `.env` bleef byte-identiek (`e41e1b63...` voor en na), `docker compose config --quiet` slaagde, `docker compose up -d --build` bouwde image `af96b8ac7a04...` en de `DockDeck`-container staat healthy met 0 restarts op `192.168.10.150:1218`. Na een geldige read-only sync zijn Unraid templates, Unraid runtime, AppOps inventory en AdGuard Home widget connected; dashboardverificatie: 139 apps, 55 zichtbaar, 16 categorieën, 0 zonder categorie.
|