This repository was archived by the owner on May 29, 2026. It is now read-only.
feat(manifest): json-manifest Tier 2 — Decisions via CnPageRenderer (re-do of #138)#182
Merged
Merged
Conversation
Promote the Decisions index page to a richer manifest-driven config:
upgrade config.columns from string shorthand to {key,label} objects
(with widget/formatter hints and a hidden legalBasis column) and add
config.actions ({id,label,...} objects — a navigate-handler View
action and an emit-handler Publish action gated on the
decidesk.decision.publish permission). The /decisions route already
renders via CnPageRenderer (the app is at Tier 4 / CnAppRoot), so
this is the page-config half of the json-manifest pilot.
Also fixes a pre-existing manifest schema violation: the SettingsMenu
menu entry used an unsupported "action": "user-settings" field (dead
config — CnAppNav only handles route/href); point it at the existing
Settings route instead.
5 tasks
Contributor
Quality Report — ConductionNL/decidesk @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| composer | ✅ | ✅ 100/100 | |||
| npm | ✅ | ✅ 469/469 | |||
| PHPUnit | ✅ | ||||
| Newman | ✅ | ||||
| Playwright | ⏭️ |
Coverage: 0% (0/115 statements)
Quality workflow — 2026-05-12 05:40 UTC
Download the full PDF report from the workflow artifacts.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Re-do of #138 (whose branch
feature/json-manifest-pilothad unrelated histories withdevelopment— orphan root, no merge-base, un-rebaseable). Since #138 was opened, the codebase advanced past it: decidesk is already at Tier 4 (CnAppRoot),src/manifest.jsonalready drives all 27 pages, the hand-writtenDecisions.vueview was already removed, and/decisionsalready renders throughCnPageRenderervia theindexpage type. So the remaining delta is the page-config half of the pilot.What changed
pages[].Decisions.config.columns— upgraded from string shorthand (["title","outcome",…]) to{ key, label }objects withwidget/formatterhints (and ahiddenlegalBasiscolumn users can re-enable from the columns sidebar tab).CnPageRendererspreadspage.configintoCnIndexPage, so these become itscolumnsprop.pages[].Decisions.config.actions— added (none existed) as{ id, label, ... }objects:view—handler: "navigate",route: "DecisionDetail",primary: true(fully wired; clicking dispatches$router.push).publish—handler: "emit",confirm: true, gated on thedecidesk.decision.publishpermission. Declares intent; the page-level@actionlistener that callsPOST /api/decisions/{id}/publishis a follow-up (see below).menu[].SettingsMenu— fixed a pre-existing manifest schema violation: the entry used an unsupported"action": "user-settings"field (dead config —CnAppNavonly handlesroute/href), which madenode tests/validate-manifest.jsfail against the v1.3.0 schema. Pointed it at the existingSettingsroute instead.Verification
npm run build— succeeds (only pre-existing entrypoint-size warnings).node tests/validate-manifest.js— PASS (0 errors) against the bundled@conduction/nextcloud-vuev1.3.0 schema (was failing before this PR on theSettingsMenu.actionfield).npm run lint— 0 errors (17 pre-existing warnings, unchanged).npm run stylelint— clean.composer phpcs— 60/60 files pass (no PHP touched).Follow-ups
@actionlistener for thepublishrow action →POST /api/decisions/{decisionId}/publish(CnPageRenderer rendersCnIndexPagedirectly underCnAppRoot, so the host needs to expose an@actionhandler — small lib/host wiring task).@conduction/nextcloud-vuebeta ships, consider promoting the other index pages' columns to the same{key,label}shape.Supersedes #138.