diff --git a/README.md b/README.md index d737c5b..a7478a1 100644 --- a/README.md +++ b/README.md @@ -9,9 +9,9 @@

- Latest release - License - Code quality + Latest release + License + Code quality

--- @@ -20,7 +20,7 @@ A starting point for building Nextcloud apps following ConductionNL conventions. > **Manifest-first** — pages, navigation, and dependencies are declared in `src/manifest.json`. The shell (CnAppRoot) reads the manifest at boot and renders index / detail / dashboard / settings pages without per-page Vue files. Reach for a custom Vue component only when the page is `type: "custom"`. See `openspec/architecture/` and hydra ADR-024 for the architectural rationale. -> **Pre-wired for [OpenRegister](https://codeberg.org/Conduction/openregister)** — `manifest.dependencies` lists `openregister`, so CnAppRoot's dependency-check phase ensures the OR app is installed and enabled before the UI mounts. If your app does not need OpenRegister, remove the entry from `src/manifest.json`, `appinfo/info.xml`, and `openspec/app-config.json`. +> **Pre-wired for [OpenRegister](https://github.com/ConductionNL/openregister)** — `manifest.dependencies` lists `openregister`, so CnAppRoot's dependency-check phase ensures the OR app is installed and enabled before the UI mounts. If your app does not need OpenRegister, remove the entry from `src/manifest.json`, `appinfo/info.xml`, and `openspec/app-config.json`. > **Canonical root configs** — `phpcs.xml`, `phpmd.xml`, `psalm.xml`, `phpstan.neon`, and `phpstan-bootstrap.php` in this repo are the fleet canonical. All Conduction PHP apps are expected to mirror these files byte-for-byte; per-app deviations belong in baselines (`phpstan-baseline.neon`, `psalm-baseline.xml`) not in the canonical files. Submit changes here and they propagate to the fleet via the template-sync flow — do **not** diverge per-app. @@ -168,7 +168,7 @@ apptemplate/ | Nextcloud | 28 – 33 | | PHP | 8.1+ | | Node.js | 20+ | -| [OpenRegister](https://codeberg.org/Conduction/openregister) | latest | +| [OpenRegister](https://github.com/ConductionNL/openregister) | latest | ## Installation @@ -184,7 +184,7 @@ apptemplate/ ```bash cd /var/www/html/custom_apps -git clone https://codeberg.org/Conduction/nextcloud-app-template.git apptemplate +git clone https://github.com/ConductionNL/nextcloud-app-template.git apptemplate cd apptemplate npm install && npm run build php occ app:enable apptemplate @@ -288,7 +288,7 @@ shapes into a single uniform `widgets[]` array with grid coordinates on every page type, and introduces a five-kind component registry. **Design reference:** hydra -[ADR-036 (Universal Widget Manifest v2)](https://codeberg.org/Conduction/hydra/src/branch/development/openspec/architecture/adr-036-universal-widget-manifest.md) +[ADR-036 (Universal Widget Manifest v2)](https://github.com/ConductionNL/hydra/blob/development/openspec/architecture/adr-036-universal-widget-manifest.md) **Migration guide** (for apps migrating from v1): `@conduction/nextcloud-vue` docs `migrating-to-v2.md` covers the codemod CLI and manual migration steps. @@ -378,7 +378,7 @@ Companion (a floating assistant rendered by `CnAppRoot` from alias `OCA\OpenRegister\Mcp\IMcpToolProvider::{appId}`; OpenRegister's `McpToolsService` discovers per-app providers by exactly that alias. - `tests/Stubs/Mcp/IMcpToolProvider.php` — a stand-in for the interface until - [openregister PR #1466](https://codeberg.org/Conduction/openregister/pulls/1466) + openregister PR #1466 (Codeberg PR number, pre-migration, not mapped to GitHub) merges; once the openregister app is installed alongside your app the real interface takes over transparently. - `tests/Unit/Mcp/ExampleToolProviderTest.php` — the contract test. @@ -396,7 +396,7 @@ Companion (a floating assistant rendered by `CnAppRoot` from structured `['error' => ['code' => ..., 'message' => ...]]` array. References: hydra -[ADR-034 (AI Chat Companion)](https://codeberg.org/Conduction/hydra/src/branch/development/openspec/architecture/adr-034-ai-chat-companion.md) +[ADR-034 (AI Chat Companion)](https://github.com/ConductionNL/hydra/blob/development/openspec/architecture/adr-034-ai-chat-companion.md) and ADR-035; and decidesk's `OCA\Decidesk\Mcp\DecideskToolProvider` as the production example (five real tools, deep links, source descriptors). @@ -505,7 +505,7 @@ Project / spec documentation: ## Related Apps -- **[OpenRegister](https://codeberg.org/Conduction/openregister)** — Object storage layer (required dependency) +- **[OpenRegister](https://github.com/ConductionNL/openregister)** — Object storage layer (required dependency) _Add related apps here as integrations are built._ diff --git a/docs/canonical-files.md b/docs/canonical-files.md index b7a21c1..d7406e7 100644 --- a/docs/canonical-files.md +++ b/docs/canonical-files.md @@ -7,13 +7,13 @@ carry per-app values, which are app-private, and which should never exist in a repo root. The authoritative architecture decision is -[ADR-033 in hydra](https://codeberg.org/Conduction/hydra/src/branch/development/openspec/architecture/adr-033-root-config-consolidation.md); +[ADR-039 in hydra](https://github.com/ConductionNL/hydra/blob/development/openspec/architecture/adr-039-root-config-consolidation.md); this doc is the developer-facing summary. When the two disagree, ADR-033 wins. ## Tier A — Strictly canonical (byte-for-byte synced) Identical across every fleet app. When the template's copy changes, the -[`hydra/scripts/fleet-sync/`](https://codeberg.org/Conduction/hydra/src/branch/development/scripts/fleet-sync) +[`hydra/scripts/fleet-sync/`](https://github.com/ConductionNL/hydra/tree/development/scripts/fleet-sync) tool — run locally by a developer — opens a PR on every app in the fleet. | File | What it does | @@ -171,7 +171,7 @@ a canonical change. That's a small cost paid for a real security improvement. Full design rationale + the sync script are in -[`hydra/scripts/fleet-sync/`](https://codeberg.org/Conduction/hydra/src/branch/development/scripts/fleet-sync). +[`hydra/scripts/fleet-sync/`](https://github.com/ConductionNL/hydra/tree/development/scripts/fleet-sync). ## What's NOT in scope diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index e23d430..91565d5 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -71,7 +71,7 @@ const config = createConfig({ plus the standard node_modules bucket. */ exclude: ['**/node_modules/**', 'src/**'], sidebarPath: require.resolve('./sidebars.js'), - editUrl: 'https://codeberg.org/Conduction/nextcloud-app-template/src/branch/development/docs/', + editUrl: 'https://github.com/ConductionNL/nextcloud-app-template/edit/development/docs/', }, blog: false, theme: { @@ -96,8 +96,8 @@ const config = createConfig({ label: 'Documentation', }, { - href: 'https://codeberg.org/Conduction/nextcloud-app-template', - label: 'Codeberg', + href: 'https://github.com/ConductionNL/nextcloud-app-template', + label: 'GitHub', position: 'right', }, { type: 'localeDropdown', position: 'right' }, diff --git a/docs/intro.md b/docs/intro.md index 0d70e95..00a98cd 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -48,7 +48,7 @@ directory name must equal the app id — Nextcloud loads an app from ```bash cd /var/www/html/custom_apps -git clone https://codeberg.org/Conduction/nextcloud-app-template.git apptemplate +git clone https://github.com/ConductionNL/nextcloud-app-template.git apptemplate cd apptemplate npm install && npm run build php occ app:enable apptemplate diff --git a/openspec/README.md b/openspec/README.md index 9026efc..9bed16a 100644 --- a/openspec/README.md +++ b/openspec/README.md @@ -12,7 +12,7 @@ This folder contains feature specifications, architectural decisions, and implem | `architecture/` | App-specific Architectural Decision Records (ADRs) | | `changes/` | Individual change directories, each with a full set of specification artifacts (created on first change) | -> If `app-config.json` has `"requiresOpenRegister": true`, install [OpenRegister](https://codeberg.org/Conduction/openregister) before enabling this app. Set to `false` if your app does not use OpenRegister. +> If `app-config.json` has `"requiresOpenRegister": true`, install [OpenRegister](https://github.com/ConductionNL/openregister) before enabling this app. Set to `false` if your app does not use OpenRegister. ## app-config.json — Key Fields diff --git a/openspec/app-config.json b/openspec/app-config.json index 77e4a67..292eba2 100644 --- a/openspec/app-config.json +++ b/openspec/app-config.json @@ -8,7 +8,7 @@ "version": "0.1.0", "license": "EUPL-1.2", "author": "Conduction B.V.", - "repository": "https://codeberg.org/Conduction/nextcloud-app-template", + "repository": "https://github.com/ConductionNL/nextcloud-app-template", "dependencies": { "requiresOpenRegister": true, "additionalCiApps": [ diff --git a/openspec/changes/apphost-tutorial-overwrite/hydra.json b/openspec/changes/apphost-tutorial-overwrite/hydra.json index b6a4a9b..cd1bf23 100644 --- a/openspec/changes/apphost-tutorial-overwrite/hydra.json +++ b/openspec/changes/apphost-tutorial-overwrite/hydra.json @@ -2,7 +2,7 @@ "spec_slug": "apphost-tutorial-overwrite", "title": "App template: AppHost three-layer tutorial restructure", "app": "nextcloud-app-template", - "repo": "https://codeberg.org/Conduction/nextcloud-app-template", + "repo": "https://github.com/ConductionNL/nextcloud-app-template", "depends_on": ["apphost-observability-engine", "apphost-boilerplate-controllers"], "issue": null } diff --git a/openspec/changes/template-manifest-v1/design.md b/openspec/changes/template-manifest-v1/design.md index 2585e27..648813d 100644 --- a/openspec/changes/template-manifest-v1/design.md +++ b/openspec/changes/template-manifest-v1/design.md @@ -100,7 +100,7 @@ the template still produces a working app: ```bash # 1. Clone + rename -git clone https://codeberg.org/Conduction/nextcloud-app-template.git my-app +git clone https://github.com/ConductionNL/nextcloud-app-template.git my-app cd my-app # 2. Customise app id (search-and-replace 'apptemplate' → 'myapp' diff --git a/openspec/changes/template-manifest-v1/specs/template-manifest-v1/spec.md b/openspec/changes/template-manifest-v1/specs/template-manifest-v1/spec.md index 49eb23a..3d2532c 100644 --- a/openspec/changes/template-manifest-v1/specs/template-manifest-v1/spec.md +++ b/openspec/changes/template-manifest-v1/specs/template-manifest-v1/spec.md @@ -20,7 +20,7 @@ than retrofitting it into every downstream consumer. The template's `src/manifest.json` MUST exist, MUST be valid JSON, and MUST set `$schema` to -`https://codeberg.org/Conduction/nextcloud-vue/raw/branch/main/src/schemas/app-manifest.schema.json`. +`https://github.com/ConductionNL/nextcloud-vue/raw/main/src/schemas/app-manifest.schema.json`. The file MUST validate against the v1.x schema published by `@conduction/nextcloud-vue` with zero errors. diff --git a/openspec/changes/template-manifest-v1/tasks.md b/openspec/changes/template-manifest-v1/tasks.md index da76d77..ecc5366 100644 --- a/openspec/changes/template-manifest-v1/tasks.md +++ b/openspec/changes/template-manifest-v1/tasks.md @@ -7,7 +7,7 @@ - [x] 1.3 Declare `dependencies: ["openregister"]` (the template's pre-wired default; downstream apps remove if they don't need OR). - [x] 1.4 Settings page declares a `version-info` rich-section widget; the `register-mapping` widget is NOT in the template manifest (per-app decision). - [x] 1.5 Set top-level `version` to `0.1.0` (template content version, distinct from the schema version). -- [x] 1.6 Set `$schema` to `https://codeberg.org/Conduction/nextcloud-vue/raw/branch/main/src/schemas/app-manifest.schema.json`. +- [x] 1.6 Set `$schema` to `https://github.com/ConductionNL/nextcloud-vue/raw/main/src/schemas/app-manifest.schema.json`. ## 2. Bootstrap pattern diff --git a/publiccode.yml b/publiccode.yml index 1511493..e8575b1 100644 --- a/publiccode.yml +++ b/publiccode.yml @@ -1,7 +1,7 @@ publiccodeYmlVersion: "0.3" name: "App Template" -url: "https://codeberg.org/Conduction/nextcloud-app-template" +url: "https://github.com/ConductionNL/nextcloud-app-template" softwareVersion: "0.1.2" releaseDate: "2026-01-01" softwareType: "addon" diff --git a/src/manifest.json b/src/manifest.json index f8914c7..da504af 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,5 +1,5 @@ { - "$schema": "https://codeberg.org/Conduction/nextcloud-vue/raw/branch/main/src/schemas/app-manifest-v2.schema.json", + "$schema": "https://github.com/ConductionNL/nextcloud-vue/raw/main/src/schemas/app-manifest-v2.schema.json", "version": "0.2.0", "dependencies": [ "openregister" diff --git a/src/registry.js b/src/registry.js index b24b130..4cfb424 100644 --- a/src/registry.js +++ b/src/registry.js @@ -51,7 +51,7 @@ // 3. Add a manifest page entry with type: "custom", component: "", // and a _note explaining why a standard page type was not feasible. // -// See: https://codeberg.org/Conduction/hydra → openspec/architecture/adr-036-universal-widget-manifest.md +// See: https://github.com/ConductionNL/hydra → openspec/architecture/adr-036-universal-widget-manifest.md import StatusBadge from './cellRenderers/StatusBadge.vue' import EmailField from './formFields/EmailField.vue'