release: promote development to main (MCP tool shelves + Scholiq + tutorials + preset bumps)#52
Merged
Conversation
Rewrite the partner directory around a three-tier programme that
matches how the relationship actually works, not the marketing
language we inherited:
Host Ships our open-source apps to their customers. Hosts and
resells, may bundle Nextcloud-supported variants. No SLA
with Conduction, no direct line to our support, not
eligible to respond to public tenders with our products.
Service Has an SLA with Conduction. Their team can call us for
third-line support, with named contacts and input on bug
priority and roadmap. They run rollouts; we back them up.
Certified Trained, audited, on the joint roadmap with Conduction.
Eligible to co-respond to public tenders alongside us.
Bumps preset to ^2.0.0 (which renames the slugs preset-side and adds
the combined Apps-and-solutions facet). All eleven partners re-tiered
and given fresh, factual one-liners researched from each company's
public site:
Certified: Acato
Service: Shift2
Host: Centric, Procolix, The Goodcloud, BCT, Open Gemeenten,
xxllnc (formerly Exxellence), YARD, iO, Sendent
Apps + solutions corrected per partner: Sendent ships only MyDash;
Procolix and The Goodcloud are Nextcloud hosts; Centric pairs
Nextcloud with DocuDesk; Acato, Shift2, BCT, Open Gemeenten, xxllnc,
YARD and iO all ship the Conduction Woo-solution
(OpenCatalogi + OpenRegister + OpenConnector).
/support tier cards rewritten to match the new programme.
…#24) - Bumps @conduction/docusaurus-preset to ^2.1.0, which makes app chips on the partner directory cards and the partner detail Sidecard clickable links to /apps/<slug>. Apps not in the registry (Nextcloud) stay as static spans. - Replaces the low-res Acato PNG with the official SVG from acato.nl, with white fills swapped for #0F0F12 so the wordmark reads against the white avatar plate. Catalog points at the SVG. - Ships static/img/brand/avatar-conduction-gold.svg, the gold Conduction credential mark on a transparent background, so the Sidecard's certified-tier badge sits directly on the cobalt-fill card surface instead of inside a white plate.
…low (#26) The old .github/workflows/app-downloads.yml ran nightly and tried to git push the regenerated data/app-downloads.json to development. The org-wide PR-required ruleset blocked the bot push, so the data went stale and the homepage showed '0 downloads'. Move the refresh to a Docusaurus prebuild step so the JSON is regenerated on every site build. No bot push, no rule fight. Add a nightly cron + workflow_dispatch trigger to documentation.yml so the site rebuilds daily even without code changes, refreshing the data each time. Centralized workflow already (PR ConductionNL/.github#46) passes GITHUB_TOKEN to the build step so the script can authenticate against the GitHub API and avoid the 60 req/hr unauth ceiling on the 331-repo enumeration. The committed JSON snapshot stays for local-dev convenience but is overwritten on every CI build.
OpenRegister's add-live-updates change (PR #1453) and the matching @conduction/nextcloud-vue@1.0.0-beta.4 plugin both rely on notify_push being available. Updating the canonical "Nextcloud lokaal draaien" tutorial so anyone who follows it gets a stack ready for realtime push out of the box, not just polling. Adds: - notify_push service to docker-compose (icewind1991/notify_push:latest, port 7867, depends on db + redis + nextcloud, mounts NC volume RO, reads REDIS_URL + DATABASE_URL + NEXTCLOUD_URL) - New Stap 5 with the five occ config:system:set commands needed to wire NC's Redis cache, mark the Docker subnet as a trusted proxy, and run notify_push:setup - Self-test step with expected check-mark output - Two troubleshooting entries: trusted_proxies subnet mismatch, and the "No redis server is configured" restart loop Outcomes section now mentions notify_push as the realtime channel.
First of a four-part tutorial that walks readers through building DeskDesk, a desk-booking app for open-office environments, on the Conduction Nextcloud stack. Part 1 covers: - gh repo create from the nextcloud-app-template GitHub template - The boot-critical rename ritual (id, namespace, autoload, every src/ and lib/ reference) with a clear table of which files matter - Build + enable + verify the empty shell renders - The chassis explained via the preset's <AtomZones/> visual: topbar, left navigation, main column, page header, sidebar Reference repo: https://github.com/ConductionNL/deskdesk Parts 2 (schemas + manifest), 3 (calendar provider), and 4 (xWiki + ship) follow.
Completes the four-part series started in Part 1. Part 2 — Schemas + manifest (/academy/deskdesk-tutorial-2-schemas-manifest/) Define floor / desk / booking schemas in OpenRegister with typed relations and seed data. Declare the register + pages + menu in src/manifest.json. Replace 175-line App.vue with 10 lines: a single CnAppRoot reading the manifest. Generate router routes from the manifest pointing at CnPageRenderer. Delete navigation/MainMenu.vue and the views/ stubs — the manifest renderer replaces them all. Part 3 — Schema-driven integrations (/academy/deskdesk-tutorial-3-calendar/) One configuration.calendarProvider block on the booking schema. Bookings appear in NC Calendar without any controller, listener, or per-app glue. Same pattern unlocks Activity, Mail Smart Picker, Contacts matching — anti-patterns called out (don't hand-code CalendarSync.vue / NotesService). Part 4 — Knowledge + ship (/academy/deskdesk-tutorial-4-knowledge-and-ship/) Author three zone-tagged knowledge articles in xWiki. Wire an OpenConnector source + synchronisation that maps xWiki pages to a knowledge_article schema in OpenRegister. Surface them on CnObjectSidebar via a custom KnowledgeTab component registered with cnCustomComponents. Package + sign + release the app. Reference repo: https://github.com/ConductionNL/deskdesk Series outline cross-linked via series: deskdesk-tutorial frontmatter.
…rt-1 academy: Part 1 of the DeskDesk tutorial (Scaffold)
…rts-2-3-4 academy: Parts 2-4 of the DeskDesk tutorial (Schemas, Calendar, Knowledge + ship)
Part 4 was previously a paper walkthrough with placeholder URLs.
Rewrites it as the actual flow we ran against a local xWiki:
- New Step 0 + Step 0a: docker-compose --profile xwiki up -d, create
the xwiki database in the shared Postgres, walk the Distribution
Wizard (admin user, "Let the wiki be empty"), verify REST.
- Step 1: REST PUT recipe for the three zone-scoped articles using
the actual subspace shape (DeskDeskKnowledge.{East,Central,West}).
Subspaces replace the original "tags" approach because the
no-flavor wiki ships without the Tags application.
- Step 2: knowledge_article schema with the actual JSON key/slug
match-or-fail trap called out explicitly. Wires SCHEMA_SLUGS in
PHP and the SCHEMAS list in the frontend store.
- Step 3-4: OpenConnector source + synchronisation against the
container-internal http://openregister-xwiki:8080/rest URL (the
host URL http://localhost:8086 is documented as the alternative).
- Step 5: real KnowledgeTab.vue with the watch-objectId pattern that
the reference repo at ConductionNL/deskdesk now ships. App.vue
shows the CnAppRoot #sidebar slot + objectSidebarState wiring
consumers need to make CnDetailPage's external-sidebar channel
work.
- New Troubleshooting block covering the four traps we hit while
building this: schema-key/slug mismatch, DetailPageWrapper
bridging, "Let the wiki be empty" path for offline containers,
Accept-JSON header on the OpenConnector source.
Cross-links to the reference repo at ConductionNL/deskdesk (PR #4
shipped the matching Part 4 implementation).
…rt-4-xwiki-real academy: real xWiki setup steps in Part 4 of the DeskDesk tutorial
GitHub Pages serves only on the CNAME host (www.conduction.nl); using the bare apex stacked an apex->www hop onto every canonical/og:url/sitemap entry and amplified redirect loops on the connext./commonground. vanity workers. README clarifies that the Cloudflare worker must redirect to the trailing- slash www. target and that Cloudflare SSL must be Full (not Flexible).
…de app counts - /apps grows from 13 to 16: drop OpenWoo (it is a Solution composed of OpenRegister + OpenCatalogi + DocuDesk, not an installable app — moved to a new section on /commonground#openwoo and linked from the connext diagram), add shillinq, openbuilt, doriath (in-development), and app-versions (in-development). - /sidecars/ route: new index + 7 sidecar product pages (openklant, openzaak, valtimo, n8n, keycloak, ollama, open-webui). OpenTalk dropped per product call. New sidecars-catalog.js + sidecars-registry.js mirror the apps-catalog shape. - connext platform diagram: every Conduction item is now a clickable link to its /apps/<slug>; App Builder cluster replaces 'COMING SOON' with the real OpenBuilt entry; Doriath added under Solutions; OpenTalk removed from the ExternalAppShelf and prose; remaining 14 external tools route to the Nextcloud app store, the local /sidecars/<slug> page, or the new /apps/openregister#integrations anchor. - openregister.mdx gains an #integrations anchor + new XWiki and Presidio rows so the external-tools shelf has a landing for tools that are not ours and not in the store. - Site-wide app-count is now a derived constant: apps-catalog.js exports APP_COUNT (= Object.keys(PRESENTATION).length), INTEGRATED_COUNT, and ECOSYSTEM_COUNT. connext/index/demo/commonground all import and render these instead of hardcoding 'Twelve' or 'Twenty-four'. - /support: 'Official Nextcloud partner' bullet added to the Service tier. - Download counter fix: new scripts/sync-app-downloads.js mirrors data/app-downloads.json into node_modules/@conduction/data/ so the preset's stats import resolves on a fresh install. Wired into postinstall + prestart + prebuild so it survives npm install and works in both dev and prod.
The 2.10.0 release adds the platform-diagram href row attribute (every Conduction item on the connext diagram becomes a clickable link), the has-badge gating so the App Builder cluster styles like a real list when its badge is absent, and the four new entries in apps-registry (shillinq, openbuilt, doriath, app-versions). All of this is what connext.mdx now relies on.
The 2.10.1 patch fixes the App Builder hex colour (defaults to cobalt; the orange placeholder treatment is now gated behind a has-badge class on the cluster) and the platform-diagram tooltip clip (.row:hover becomes overflow:visible with z-index 10, so the .desc tooltip escapes the row's overflow:hidden box and paints above sibling rows).
…Scholiq to Workspace Apps (#41) Surface all in-house apps in the platform diagram so the home page of /connext/ matches the breadth of the catalogue under /apps. App Versions joins the Technical Core (fleet-management infrastructure); DeskDesk, Planix and Scholiq join the Workspace Apps row alongside the rest of the end-user apps.
…ons away from scaffold framing (#42) - apps-catalog: add DeskDesk + Planix entries (Workspace category); rewrite app-versions tagline from "scaffold/template" to "pin and roll back any Nextcloud app version, multi-source picker, audit-trailed" so the catalog matches the actual app and its new docs site - apps/app-versions.mdx: full rewrite around the version-management surface (version table, multi-source picker, rollback/pin, audit trail) with links to the four canonical specs - apps/deskdesk.mdx: new commercial page for the desk and meeting-room booking app (plattegrond, kantoorweek planning, check-in, no-show handling) - apps/planix.mdx: new commercial page for kanban-over-registers (boards, swim-lanes, workflow on typed data, saved views) - sidecars-catalog + sidecars/opentalk.mdx: close the listing gap for the OpenTalk video-conferencing ExApp wrapper
… apps (#43) DeskDesk and Planix are tutorial apps that live in /academy/deskdesk-tutorial-* and the corresponding planix walk-through, not standalone products. Remove them from the apps register (apps-catalog.js) and the /connext/ Workspace Apps panel where they were briefly surfaced in #41 / #42, and drop the now-orphan commercial pages at /apps/deskdesk and /apps/planix. The tutorial pages and their docs sites (deskdesk.conduction.nl, planix.conduction.nl) stay put.
Picks up the App Builder hex always-orange rule from preset commit b7a0fce
("revert: App Builder hex stays KNVB orange unconditionally"). The previous
2.10.1 still rendered the hex cobalt unless a COMING SOON badge was present;
2.10.2 unconditionally fills it with var(--c-orange-knvb), which is the
documented brand non-negotiable (preset README "Brand rules" section).
Picks up the v3.0.0 brand-system refactor: - 3D hex-prism mechanism removed (brand is flat-hex only) - Family token ramps trimmed from 5 stops (50/100/300/500/700) to 2 stops (300/500) - colors.html consolidated as the single canonical color page, folding in the categorical role labels (Process / Integrate / Data / Documents / Workspace) that used to live on the now-removed hex-prism page No source changes needed in this repo; conduction-website only used the flat <cn-hex> primitive and tinted hexes via brand-color names, both of which remain in the new major. Locally verified on /connext/, /apps/, /apps/opencatalogi.
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`.
* feat(openregister): add MCP tools section to the product page
Drops <McpToolShelf> between the LLM-integrations Showcase and the
"Pairs well with" PairRow. Lists the five MCP tools OpenRegister
contributes to the workspace AI chat companion plus one "soon"
write tool (createObject), with status hexes and an AgentTrace
mock showing a search call.
Uses showIds={false} per the product-page audience rule: the
namespaced ids show up on per-app docs sites instead. Requires
@conduction/docusaurus-preset >= the version that ships
McpToolShelf (auto-publish on push to design-system main).
* feat(apps): wire McpToolShelf into openregister, decidesk, openbuilt pages
Align the OpenRegister product page with the real built-in tool
surface from McpToolsService.php: three CRUD-shaped tools
(openregister.registers, openregister.schemas, openregister.objects)
instead of five placeholder ones. Lede + AgentTrace updated to match.
Add a new McpToolShelf section to DeciDesk listing the five tools
from DecideskToolProvider (listOpenActionItems, listRecentMeetings,
getMeetingDetails, startMeeting, addActionItem). English copy,
matching the rest of the page.
Add a new McpToolShelf section to OpenBuilt listing the eight tools
from OpenBuiltToolProvider (listApps, getAppManifest, createApp,
promoteVersion, upsertSchema, upsertPage, addWidget, upsertMenuItem).
Dutch copy, matching the rest of the page.
All three sections use showIds={false} per the conduction.nl audience
rule. Trace examples reference one or two tools from the same app
to keep the call story concrete. Tool lists are hand-curated, not
pulled at build time, matching how FeatureList / FeatureGrid are
authored elsewhere.
* feat(openregister): make leaf grid clickable into product docs
Bump @conduction/docusaurus-preset to ^3.3.0 (adds href on FeatureItem)
so the 24-leaf grid on /apps/openregister/ links each leaf to its
product-doc page on openregister.conduction.nl.
Also: strip em-dashes and curly apostrophes from the leaf tips (brand
rule), and swap <p> wrapper for <div> on the closing footnote to fix a
<p> inside <p> nesting warning.
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.
Summary
Promote
developmenttomainso the queued work goes live on www.conduction.nl. Headline pieces:<McpToolShelf>section on OpenRegister, DeciDesk, and OpenBuilt product pages explaining the MCP tools each app contributes to the workspace AI chat, plus a clickable leaf grid on/apps/openregister/.url→ www.conduction.nl) and the partner-programme rework.Full commit list
$(cat /tmp/promo-commits.txt)
Test plan
@conduction/docusaurus-preset@^3.3.0./apps/openregister/,/apps/decidesk/,/apps/openbuilt/all show the MCP tool shelf./apps/scholiq/renders the commercial page./apps/openregister/is keyboard-focusable + links into the product docs.