Summary
Phase 2 of the v2 manifest fleet rollout (hydra ADR-036) intended to give larpingapp a Vue frontend with a v2 manifest from day one. The scaffold work got ~80% done but the build doesn't run cleanly yet, so this work is deferred to a focused follow-up session.
What's complete (in /tmp/worktrees/larpingapp-vue-scaffold)
package.json with @conduction/nextcloud-vue@^1.0.0-beta.58 + Pinia + nc-vue Nc* re-exports
webpack.config.js (copied from nextcloud-app-template scaffold-v2 reference)
src/main.js — bootstrap with manifest + registry + customComponents
src/App.vue — CnAppRoot wrapper with objectSidebarState provide, registry prop, customComponents prop
src/manifest.json — 21 pages (9 index, 9 detail, 1 dashboard, 1 settings, 1 custom), $schema pointing at v2, codemod-converted to v2 shape
src/registry.js — 5-kind component registry with the FeaturesRoadmap page entry
src/customComponents.js — v1 backward-compat (just FeaturesRoadmap)
src/views/ — placeholder views generated by the scaffolding subagent
- 13 commits ahead of
origin/development (uncommitted, in the worktree)
What's NOT complete
npm run build fails — missing babel-loader (added to package.json but build still doesn't find it), @nextcloud/axios webpack-alias issues per ADR-024's known prerequisites
- No
composer.json integration — larpingapp is currently a server-side PHP app with PHP templates; the Vue mount strategy (Step 6 of the original brief — replace templates/main.php vs add a new route) wasn't decided
- PHP controllers ↔ Vue pages not wired — manifest references entities like Characters, Players, Events but the v2 pages use
register: 'larpingapp', schema: '<entity>' assuming OpenRegister storage. larpingapp currently uses its own PHP controllers, not OR. Either:
- Migrate larpingapp's data to OpenRegister (preferred long-term, matches mydash #206 pattern)
- OR keep all pages as
type: "custom" with bespoke Vue views that call existing PHP endpoints
- No lint/test passes — build needs to succeed first
Suggested next-session approach
- Resume in the existing worktree at
/tmp/worktrees/larpingapp-vue-scaffold
- Fix the build:
- Verify babel-loader, @babel/core, @babel/preset-env in devDeps
- Add the
@nextcloud/axios$ webpack alias (per ADR-024 build-time prerequisites)
- Add
node-polyfill-webpack-plugin if Buffer/process polyfills are needed for axios
- Decide PHP integration:
- Read existing
templates/main.php and lib/Controller/* to understand the current entry
- Either replace
templates/main.php to mount Vue, or add a new route /apps/larpingapp/v2 that does
- Decide data path:
- Adopt OpenRegister (file in
lib/Settings/larpingapp_register.json like mydash #206)
- OR keep all pages
type: "custom" and adapt to the existing PHP API
npm run build → green
validateManifestV2(manifest) → { valid: true }
- Test in browser
- Open PR
References
Why deferred
The 5 other Phase 2 apps (shillinq, pipelinq, openbuilt, softwarecatalog, zaakafhandelapp) were straightforward codemod migrations and merged in Phase 2 today. larpingapp's scope is bigger: it needs a whole new Vue frontend, not just a manifest conversion. Doing it well requires focused effort on the PHP↔Vue integration boundary, which a tired session couldn't deliver cleanly.
ADR-024 originally marked larpingapp "N/A" (server-side PHP, no Vue Router, no SPA shell). This issue overrides that classification — Vue scaffold is desired — but it's a substantial multi-hour project deserving its own session.
Summary
Phase 2 of the v2 manifest fleet rollout (hydra ADR-036) intended to give larpingapp a Vue frontend with a v2 manifest from day one. The scaffold work got ~80% done but the build doesn't run cleanly yet, so this work is deferred to a focused follow-up session.
What's complete (in /tmp/worktrees/larpingapp-vue-scaffold)
package.jsonwith@conduction/nextcloud-vue@^1.0.0-beta.58+ Pinia + nc-vue Nc* re-exportswebpack.config.js(copied from nextcloud-app-template scaffold-v2 reference)src/main.js— bootstrap with manifest + registry + customComponentssrc/App.vue— CnAppRoot wrapper withobjectSidebarStateprovide, registry prop, customComponents propsrc/manifest.json— 21 pages (9 index, 9 detail, 1 dashboard, 1 settings, 1 custom),$schemapointing at v2, codemod-converted to v2 shapesrc/registry.js— 5-kind component registry with theFeaturesRoadmappage entrysrc/customComponents.js— v1 backward-compat (just FeaturesRoadmap)src/views/— placeholder views generated by the scaffolding subagentorigin/development(uncommitted, in the worktree)What's NOT complete
npm run buildfails — missingbabel-loader(added to package.json but build still doesn't find it),@nextcloud/axioswebpack-alias issues per ADR-024's known prerequisitescomposer.jsonintegration — larpingapp is currently a server-side PHP app with PHP templates; the Vue mount strategy (Step 6 of the original brief — replacetemplates/main.phpvs add a new route) wasn't decidedregister: 'larpingapp', schema: '<entity>'assuming OpenRegister storage. larpingapp currently uses its own PHP controllers, not OR. Either:type: "custom"with bespoke Vue views that call existing PHP endpointsSuggested next-session approach
/tmp/worktrees/larpingapp-vue-scaffold@nextcloud/axios$webpack alias (per ADR-024 build-time prerequisites)node-polyfill-webpack-pluginif Buffer/process polyfills are needed for axiostemplates/main.phpandlib/Controller/*to understand the current entrytemplates/main.phpto mount Vue, or add a new route/apps/larpingapp/v2that doeslib/Settings/larpingapp_register.jsonlike mydash #206)type: "custom"and adapt to the existing PHP APInpm run build→ greenvalidateManifestV2(manifest)→{ valid: true }References
@nextcloud/axiosalias, etc.)Why deferred
The 5 other Phase 2 apps (shillinq, pipelinq, openbuilt, softwarecatalog, zaakafhandelapp) were straightforward codemod migrations and merged in Phase 2 today. larpingapp's scope is bigger: it needs a whole new Vue frontend, not just a manifest conversion. Doing it well requires focused effort on the PHP↔Vue integration boundary, which a tired session couldn't deliver cleanly.
ADR-024 originally marked larpingapp "N/A" (server-side PHP, no Vue Router, no SPA shell). This issue overrides that classification — Vue scaffold is desired — but it's a substantial multi-hour project deserving its own session.