Skip to content

feat(chrome): give launchpad a Reports page with one honest report - #537

Merged
rubenvdlinde merged 1 commit into
developmentfrom
feat/app-chrome-reports
Sep 3, 2026
Merged

feat(chrome): give launchpad a Reports page with one honest report#537
rubenvdlinde merged 1 commit into
developmentfrom
feat/app-chrome-reports

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

ADR-114 puts Documentation, Reports and Features & roadmap in the app's footer, in that order. LaunchPad had two of the three, with room at 95.

One card, deliberately

LaunchPad's register holds a single schemadashboard. A second report would either repeat this one or invent a reading the data cannot support, so there is one: Dashboards — how many there are, and who they belong to (personal, shared with a group, admin template).

I left out the obvious-looking second chart. dashboard.widgets is an array of widget descriptors, not references, so grouping by it would bucket objects and render noise. A chart that renders something is not the same as a chart that answers something, and this is a page people will read numbers off.

The e2e asserts the card count, so if a schema is added later and no report follows, that is something a test notices rather than something nobody sees.

Pure manifest

The report is a declarative type: "dashboard" page over LaunchPad's own register — no bespoke Vue component, no per-app controller. Every filter is scalar equality, the only kind OpenRegister's aggregation endpoint can evaluate.

The spec asserts a digit reaches the page, not just that the card exists: a widget naming a schema or field that does not match renders its chrome and no value, silently.

Checks

  • gate-107 app-chrome: {"status":"passed","checked":5,"failed":0,"warned":1} — the warning is the Store entry, a separate rollout
  • gate-60 icon vocabulary: 4 manifests, 0 failures, 0 warnings (ChartBoxOutline registered; this app registers only a handful of icons)
  • check:manifest: valid
  • lint:translation-domain: OK
  • manifest l10n coverage: 0 failures, 10 strings across all 36 locales
  • check-l10n-parity passes on development and still passes here
  • eslint and prettier clean; all 4 specs collect

🤖 Generated with Claude Code

ADR-114 puts Documentation, Reports and Features & roadmap in the footer
in that order. LaunchPad had two of the three, with room at 95.

One card, deliberately. LaunchPad's register holds a single schema —
dashboard — so a second report would either repeat this one or invent a
reading the data cannot support. The `widgets` array holds widget
descriptors rather than references, so grouping by it would bucket
objects and render noise; it is left out rather than shipped as a chart
that looks like an answer. The e2e asserts the count, so a schema added
later without a report is something a test notices.

The report is a declarative type:dashboard page over the app's own
register. No bespoke Vue component and no per-app controller. Every
filter is scalar equality, the only kind OpenRegister's aggregation
endpoint can evaluate.

Ten strings across all 36 locales. Parity passes on development and still
passes here.
@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/launchpad @ 5e5e558

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-manifest
format
check-schema-l10n
composer ✅ 104/104
npm ✅ 526/526
app:check-code ⏭️
info.xml
REUSE
PHPUnit
Newman
Playwright ⏭️ deferred — runs on the promotion into beta/main, not on a pull request into development
Hydra gates

Quality workflow — 2026-09-03 18:31 UTC

Download the full PDF report from the workflow artifacts.

@rubenvdlinde
rubenvdlinde merged commit 7ada235 into development Sep 3, 2026
43 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant