Skip to content

feat(reports): one Reports page of cards, in the footer - #1583

Merged
rubenvdlinde merged 4 commits into
developmentfrom
feat/reports-is-one-page
Sep 1, 2026
Merged

feat(reports): one Reports page of cards, in the footer#1583
rubenvdlinde merged 4 commits into
developmentfrom
feat/reports-is-one-page

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

Implements ADR-112 (hydra#640) in dossiq. Draft: blocked on nextcloud-vue#893.

Reports was a menu parent at order 55, in the middle of the operational entries a case handler uses all day, with three report pages beneath it. Reports are not an operational surface: you go there deliberately and occasionally, so having them among the daily entries costs the daily entries the top of the list.

It is now a leaf in the footer at order 95, rendering between Documentation (90) and Features & roadmap (100), pointing at one page of cards:

card category
Processing time Doorlooptijd en termijnen
Deadline monitoring Doorlooptijd en termijnen
Process mining Procesanalyse

A card carries what a menu item cannot — a description and a category — so a reader can tell the throughput reports from the process analysis without opening either.

The three pages stay routable. Deep links, e2e specs and the cards all address them by route name; only their menu entries go, retired in menu-layout.json under removals with removalsReplacedBy naming Reports, which is how every other placement decision in this app is declared (ADR-044 D2).

Verification

  • gate-104: 0 findings
  • gate-53: passes, and raises nothing for the three new removals — the removalsReplacedBy → Reports declarations satisfy its removals-invariant, so the ADR-112 pattern needed no change to gate-53
  • Assembled menu: no report entry left in the main nav; footer sorts to Documentation → Reports → Features & roadmap

Why this is a draft

type: "reports" is not in the installed schema. npm run check:manifest fails:

[validate-manifest] schema.version: 2.27.0
[validate-manifest] Ajv validation: FAIL
  - /pages/45/type must be equal to one of the allowed values (keyword=enum)

The chain is: nextcloud-vue#893 merges → releases → dossiq takes the bump → this validates. Marking it draft rather than merging it behind a green that would only mean the validator had not looked at the new type.

ADR-112. Reports was a menu PARENT at order 55, in the middle of the
operational entries a case handler uses all day, with three report pages
beneath it. Reports are not an operational surface: you go there deliberately,
occasionally, and having them among the daily entries costs the daily entries
the top of the list.

It is now a leaf in the footer group at order 95, so it renders between
Documentation (90) and Features & roadmap (100), and it points at one page
carrying the three reports as cards: Processing time, Deadline monitoring,
Process mining.

A card carries what a menu item cannot — a description and a category — so a
reader can tell the throughput reports from the process analysis without
opening either.

The three pages stay ROUTABLE. Deep links, e2e specs and the cards all address
them by route name; only their menu entries go, retired in menu-layout.json
under `removals` with `removalsReplacedBy` naming Reports, which is how every
other placement decision in this app is declared (ADR-044 Decision 2).

Verified: gate-104 reports 0 findings, gate-53 passes and raises nothing for
the three new removals, and the assembled menu has no report entry left in the
main nav.

🔴 BLOCKED ON nextcloud-vue#893. `type: "reports"` is not in the installed
schema (2.27.0), so `npm run check:manifest` fails with "/pages/45/type must be
equal to one of the allowed values". This cannot merge until that PR releases
and dossiq takes the bump. Left as a draft rather than merged behind a green
that would only mean the validator had not looked.
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/dossiq @ 5585a9e

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-manifest
check-vue3-compile
test-l10n
format
check-schema-l10n
check-l10n-js
composer ✅ 106/106
npm ✅ 540/540
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-08-31 20:54 UTC

Download the full PDF report from the workflow artifacts.

# Conflicts:
#	src/menu-layout.json
…hipping Dutch as source

Three things the merge with development surfaced.

The manifest declared `type: reports`, and the pinned nextcloud-vue did
not know that type: its schema enum stopped at `custom`, so
`check:manifest` failed on the one page this branch exists to add. The
range said ^2.24.3, which a fresh install could satisfy with a version
that has no reports page at all. It now says ^2.28.0, the first release
carrying the type in its schema, the component, and the built bundle.

The four card and page descriptions had no translation keys. The l10n
parity checker reads the manifest precisely because it is data rather
than source, and it caught them; the Dutch is written rather than
extracted.

The category names were written in Dutch and used as source strings, so
an English instance read `Doorlooptijd en termijnen`. They are English
now, with the Dutch in nl.json where the rest of it lives.

That last one only reaches the screen once nextcloud-vue#904 lands:
CnReportsPage currently renders its manifest strings untranslated, so
today the keys sit unused. English source is the right value either way,
and the fleet checker would have flagged the Dutch the moment it learned
to read this field.
@github-actions

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/dossiq @ 37b6381

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-manifest
check-vue3-compile
test-l10n
format
check-schema-l10n
check-l10n-js
composer ✅ 106/106
npm ✅ 540/540
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-01 08:01 UTC

Download the full PDF report from the workflow artifacts.

gate-60 failed on CalendarClockOutline: it is not registered in
src/icons.js, and an unregistered icon renders as nothing at all rather
than falling back to something. The deadline card would have shipped
blank.

The fix that is also the better design is to reuse what the retired menu
entries used. Analytics carried ChartLine, TermijnDashboardMenu carried
ClockAlertOutline and ProcessMiningDashboardMenu carried ChartSankey, all
three already registered. A reader who knew those entries now finds the
same glyph on the card that replaced each one.

ChartSankey also settles a gate-60 Tier B warning on its own: the
process-mining concept has a canonical icon under ADR-077, and
SitemapOutline was not it.
@github-actions

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/dossiq @ dc95959

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-manifest
check-vue3-compile
test-l10n
format
check-schema-l10n
check-l10n-js
composer ✅ 106/106
npm ✅ 540/540
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-01 09:14 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/dossiq @ dc95959

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-manifest
check-vue3-compile
test-l10n
format
check-schema-l10n
check-l10n-js
composer ✅ 106/106
npm ✅ 540/540
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-01 09:44 UTC

Download the full PDF report from the workflow artifacts.

@rubenvdlinde
rubenvdlinde marked this pull request as ready for review September 1, 2026 09:45
@rubenvdlinde
rubenvdlinde merged commit ce45b95 into development Sep 1, 2026
87 of 89 checks passed
@rubenvdlinde
rubenvdlinde deleted the feat/reports-is-one-page branch September 1, 2026 09:46
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