Skip to content
This repository was archived by the owner on Aug 4, 2026. It is now read-only.
This repository was archived by the owner on Aug 4, 2026. It is now read-only.

Rewrite DeskDesk to consume the pluggable integration registry (drop the bespoke knowledge tab + knowledge_article schema) #5

Open

Description

@rubenvdlinde

Background

DeskDesk currently surfaces "knowledge articles" via a bespoke path:

  • src/views/KnowledgeTab.vue — a hand-rolled sidebar tab
  • a knowledge_article schema in lib/Settings/deskdesk_register.json (+ references in lib/Service/SettingsService.php, src/store/modules/{object,settings}.js, src/store/store.js)
  • a "sync" placeholder

OpenRegister now ships a pluggable integration registry (umbrella pluggable-integration-registry, ADR-019) with an XWiki "Articles" leaf (openregister #1493 backend, nextcloud-vue #213 frontend). DeskDesk should drop the bespoke path and consume the registry instead — that's the whole point of building the leaf.

What "consume the registry" means here

  1. src/main.js — after the lib CSS import, install the registry shim + register the providers:
    import { installIntegrationRegistry, registerBuiltinIntegrations, registerXwikiIntegration } from '@conduction/nextcloud-vue'
    installIntegrationRegistry()
    registerBuiltinIntegrations()       // files / notes / tags / tasks / audit-trail
    registerXwikiIntegration()          // the "Articles" (XWiki) leaf
  2. manifest.json — for the desks-detail page, replace config.sidebar.tabs: [...] (the bespoke data/knowledge/metadata set) with config.sidebar: { useRegistry: true } (optionally excludeIntegrations: [...]). This needs nextcloud-vue #218 (CnDetailPage.sidebar now accepts useRegistry and pushes it through objectSidebarState).
  3. src/App.vue — the #sidebar-slot <CnObjectSidebar> must bind the two new state fields so the manifest value takes effect:
    :use-registry="objectSidebarState.useRegistry"
    :exclude-integrations="objectSidebarState.excludeIntegrations"
    (alongside the :tabs / :hidden-tabs / :register / :schema it already binds). Drop the KnowledgeTab import + the customComponents['knowledge-tab'] entry.
  4. Backend — remove the knowledge_article schema from lib/Settings/deskdesk_register.json and the references in SettingsService.php / the stores. Articles now come from the xwiki integration (an OpenConnector xwiki source — see openregister/docs/Integrations/xwiki.md + docs/Integrations/xwiki-openconnector-source.yaml), not a DeskDesk-local schema + sync.
  5. src/views/KnowledgeTab.vue — delete (replaced by CnXwikiTab from the registry).

Also: a bug to fix while we're in there

While live-testing the rewrite, the desks-detail page logged:

TypeError: Cannot read properties of undefined (reading '@self')

in DeskDesk's detail render path (one of the wrappers — DetailPageWrapper.vue or a store module reading object['@self'] before the object is loaded). Reproduce by opening /apps/deskdesk/desks/:id; needs a null-guard / loading-state check.

Then: Part 4 of the tutorial

Once the rewrite works end-to-end (XWiki source configured, Articles tab populated), rewrite the Part 4 MDX tutorial — "wire DeskDesk's knowledge surface to an external XWiki via the integration registry" — with real screenshots of the Articles tab + the detail-page preview. (Keep the current wrong-shape Part 4 until then.)

Depends on

  • openregister: umbrella #1307 + the integration-xwiki leaf #1493 — merged
  • @conduction/nextcloud-vue: #202 → #204 → #209 → #210 → #213 (registry + widgets + xWiki tab/card) + #218 (CnDetailPage manifest useRegistry) — merged

Cleanest done after those stacks land on development / beta.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions