chore(docs): sync development -> documentation for deploy - #215
Merged
Conversation
…xtcloud-vue
Final consumer in the chain that started with openregister#1514 (PHP
providers) and nextcloud-vue#230 (generic CnIntegrationTab / CnIntegrationCard
+ 18 leaf registrations). Once both upstream PRs merge, this becomes a
one-line addition to src/main.js:
installIntegrationRegistry()
registerBuiltinIntegrations()
registerXwikiIntegration()
+ registerLeafIntegrations()
Adds the 18 leaves (calendar / contacts / email / talk / bookmarks /
collectives / maps / photos / activity / analytics / cospend / deck /
flow / forms / polls / time-tracker / shares / openproject) to
decidesk's sidebar registry. Each leaf gates on its NC app via the
registry's isEnabled filter — the user only ever sees a tab when the
underlying NC app is installed.
webpack.config.js — adds an optional `CN_NEXTCLOUD_VUE_SRC` env override
for the @conduction/nextcloud-vue source alias. Lets the dev container
build against an unmerged nc-vue feature branch (used to produce the
browser proof against feature/integration-leaves-fleet-vue prior to its
merge to beta) without touching the existing `../nextcloud-vue/src`
fallback.
Browser proof (admin@localhost:8080, decidesk dashboard):
window.OCA.OpenRegister.integrations.list() → 24 entries
- 5 built-ins (files, notes, tags, tasks, audit-trail)
- 1 xwiki (existing leaf)
- 18 new leaves (this PR's chain)
Parity gate: every one has tab + widget → PASS
Detail-page tab rendering wasn't visually verified — decidesk has a
pre-existing Pinia bug (`Cannot read properties of undefined ('_s')`
at initializeStores) that empties the meeting detail page before the
sidebar mounts. Same bug exists on `development` HEAD without this
PR's changes; it's not caused by this work and blocks visual proof
until separately fixed.
initializeStores() calls `useObjectStore()` / `useSettingsStore()` at
module-top inside an IIFE that resolves BEFORE `new Vue({ pinia })`
gets to install the Pinia instance via PiniaVuePlugin. Pinia's
useStore() reads the active pinia from a module-global; the IIFE
caught a `TypeError: Cannot read properties of undefined ('_s')` and
the meeting / governance-body / motion / amendment detail pages
mounted with empty data + a fallback header.
setActivePinia(pinia) upfront is the idiomatic Vue 2 + Pinia fix for
boot-time store access outside a setup() context.
Bumps app version to 0.1.2 so the install carries fresh assets.
Verified visually against the integration-leaves-fleet chain:
http://localhost:8080/apps/decidesk/meetings/{id}/integrations now
mounts with all 24 registered integration tabs in the sidebar (5
built-ins + xwiki + 18 leaves from openregister#1514 / nc-vue#230)
instead of the previous empty page with the Pinia error in console.
nc-vue beta.44 (auto-published from PR #231) is the first beta that ships: - CnIntegrationTab / CnIntegrationCard (generic Tab + Card) - leafIntegrations / registerLeafIntegrations (18 leaf descriptors) - CnDetailPage forwarding useRegistry + excludeIntegrations through objectSidebarState This bump drops the local CN_NEXTCLOUD_VUE_SRC override path — the chain now runs against published code.
…-end
Verifies the chain from open registry → JS registration → CnObjectSidebar
:use-registry → sidebar tabs in decidesk.
Three describe blocks:
Integration registry — JS registration (2 tests)
- window.OCA.OpenRegister.integrations.list() exposes 24 providers
(5 built-ins + 1 xwiki + 18 leaves)
- every leaf carries tab + widget (parity gate)
Integration registry — sidebar tab rendering (24 + 1 = 25 tests)
- meeting integrations page mounts 24 tabs in the registry sidebar
- parameterised: tab-button-{id} renders for every expected id
Integration registry — tab activation (5 tests)
- representative leaves (calendar, bookmarks, activity, shares,
openproject): click → aria-selected=true → panel mounts
Integration registry — OCS / JS agreement (1 test)
- every OCS-advertised provider id is also in the JS registry
(no drift between server-side and client-side registration)
Test pattern: login via NC's HTML form, navigate to
/apps/decidesk/meetings/{id}/integrations, assert sidebar tabs. Tests
skip cleanly on partial deploys (less than 24 providers advertised
or sidebar not in registry mode), so this spec is safe to run against
in-progress dev environments.
Tested locally: spec drafted and structurally validated; full run
pending the openregister umbrella stack landing on development so the
dev container can advertise all 24 providers.
…max-attributes-per-line) Pre-existing lint error blocking the integration-leaves-fleet-decidesk merge. The opening <div> had 4 attributes inline; ESLint's vue/max-attributes-per-line rule requires one per line in the multiline mode. Splits onto 4 lines, behaviour-identical.
…et-decidesk feat(integrations): wire the 18 leaf integrations from @conduction/nextcloud-vue
Defense against supply-chain attacks (e.g. shai-hulud, nx-style compromised publishes) by blocking install of any package version published less than 24h ago. - .npmrc: `min-release-age=1` (npm 11.5+ native; older npm ignores it) - .github/dependabot.yml: `cooldown.default-days: 1`, with @conduction/* excluded so first-party releases reach our apps immediately For release-day consumption of fresh @conduction/* deps, use `npm install --min-release-age=0 @conduction/pkg@x.y.z`.
- Add 1200x630 brand OG card with the app's wordmark, replacing the preset's generic Conduction card on social previews. - Set themeConfig.image to reference the new card. - Correct llms.txt docs links to /docs/intro + /api (the prior templated /tutorials, /Features routes 404 on the live site).
Drop the local docs/scripts/validate-ai-baseline.mjs copy and call the bin command shipped by @conduction/docusaurus-preset >=3.5.0 instead. Why: keeps the validator in one place across the fleet. Future check additions ship via a preset bump rather than 17 parallel PRs. Validator behaviour is identical (same 8 universal checks).
Preset 3.6.0 ships the traditional-SEO baseline (sitemap lastmod, drops priority/changefreq per Google 2026 guidance, fixes the legal- link 404s on subdomain footers, adds searchConsoleVerification opt). The lockfile bump uses --min-release-age=0 per .npmrc cooldown override (required for fresh @conduction/* releases under the 24h supply-chain cooldown).
rubenvdlinde
requested review from
Rem-Dam,
SudoThijn,
WilcoLouwerse,
bbrands02,
remko48 and
rjzondervan
as code owners
May 18, 2026 20:40
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Brings the AI baseline + traditional-SEO baseline onto documentation so the deploy workflow picks them up.