Skip to content

chore(docs): sync development -> documentation for deploy - #215

Merged
rubenvdlinde merged 11 commits into
documentationfrom
development
May 18, 2026
Merged

chore(docs): sync development -> documentation for deploy#215
rubenvdlinde merged 11 commits into
documentationfrom
development

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

Brings the AI baseline + traditional-SEO baseline onto documentation so the deploy workflow picks them up.

…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
rubenvdlinde merged commit f7620cf into documentation May 18, 2026
42 of 44 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