Skip to content

Release: merge development into beta#176

Open
github-actions[bot] wants to merge 58 commits into
betafrom
development
Open

Release: merge development into beta#176
github-actions[bot] wants to merge 58 commits into
betafrom
development

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

Automated PR to sync development changes to beta for beta release.

Merging this PR will trigger the beta release workflow.

Reminder: Add a major, minor, or patch label to this PR to control the version bump. Default is patch.

WilcoLouwerse and others added 23 commits March 24, 2026 21:14
- Merge openspec/README.md: keep Planix goal section, add artifact
  progression diagram, workflow steps, and full commands table
- Add openspec/ROADMAP.md for feature tracking
- Add openspec/architecture/README.md with ADR format guide
- Add openspec/specs/README.md with feature spec format and lifecycle
…uestions

- Resolve all 6 open research questions in ARCHITECTURE.md:
  CalDAV one-way export (V1), 1-level sub-tasks, configurable Procest
  bridge (Procest UI decides), per-task-only time tracking, GitHub sync
  via OpenConnector (V1), soft WIP limits
- Update ADR-003 (Procest bridge) and ADR-004 (time tracking scope)
- Create 8 OpenSpec changes with full artifacts (proposal, design, specs, tasks):
  register-schemas, projects, tasks, kanban-board, time-tracking,
  dashboard-my-work, admin-user-settings, procest-integration
- Update all 7 feature specs to in-progress status with change links
- Add conduction schema symlink (openspec/schemas/conduction)
- Sync app description in info.xml and README.md with app-config.json goal
Replace example schema with 5 production schemas (task, project, column,
timeEntry, label), add seed data (5 labels, 3 projects, 12 columns,
5 tasks, 3 time entries), register deep links for all schemas, and
bump register version to 0.2.0.
…x data model

Replace placeholder example schema with 5 production schemas (task, project,
column, timeEntry, label) and 28 seed data objects. Fix repair step registration
(info.xml), loadConfiguration() argument passing, and register definition fields
required by ImportHandler. All quality checks pass (PHPCS, Psalm, PHPStan).
Implement register-schemas — 5 schemas with seed data for Planix data model
…, and l10n

Add ProjectList, ProjectBoard, and ProjectBacklog views with supporting
store, router entries, and MainMenu navigation. Include l10n strings,
webpack config, and openspec plan/test-plan artifacts for the projects
change and all related MVP changes.
Adds full project management surface to Planix — list, create, settings
sidebar, member management, archive, and delete. All 47 tasks complete,
verified by automated functional tests (all 11 TC pass).

Key fixes applied during implementation:
- webpack publicPath overridden to /apps-extra/planix/js/ (chunk 404s)
- settings sidebar PATCH now includes members to prevent data loss on save
- NcChip imported via component path (not available in @nextcloud/vue main index v8.16.0)
- publicWrite/publicRead enabled on planix register via repair step migration
Add project management UI — list, create, settings, member management, archive and delete
…acking, settings, and procest integration

Update README with restructured feature list, add six new feature docs
with standards references, and include project screenshots.
Add bug tasks discovered by automated test agents to three changes:
- admin-user-settings: health/metrics 500s, admin settings 404, label a11y
- dashboard-my-work: KPI card a11y roles, missing alt text
- tasks: status enum validation, PATCH support for partial updates
…Register init (#8)

Merged by Hydra pipeline (admin override — PHPUnit CI failures are environment bootstrap issues, not code issues). All code review and security checks passed after 3 fix iterations.
Add 6 openspec change proposals (admin-settings-mvp archive, dashboard-my-work,
kanban-mvp, label-crud, projects-crud, status-api) and 5 test scenarios for
backend settings, frontend admin root, and default columns editor.
@github-actions
Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/planix @ 2c3d9c4

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 215/215
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-04-14 05:30 UTC

Download the full PDF report from the workflow artifacts.

@github-actions
Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/planix @ 5a67a87

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 215/215
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-04-14 08:41 UTC

Download the full PDF report from the workflow artifacts.

@github-actions
Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/planix @ 205b614

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 215/215
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-04-14 09:21 UTC

Download the full PDF report from the workflow artifacts.

@github-actions
Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/planix @ 2abaff0

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 215/215
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-04-14 09:48 UTC

Download the full PDF report from the workflow artifacts.

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`.
@github-actions
Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/planix @ 4b14fe0

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 215/215
PHPUnit
Newman ⏭️
Playwright ⏭️

Coverage: 0% (0/3 statements)


Quality workflow — 2026-05-17 07:42 UTC

Download the full PDF report from the workflow artifacts.

#201)

NC stable31/32/33 IAppConfig::setValueString returns bool; the test
mock callbacks declared void and returned null, causing a TypeError
in every PHPUnit job across the matrix (PHP 8.3+8.4 x NC 31/32/33).

Change both willReturnCallback callbacks in SettingsServiceTest to
return bool and return true on success.
@github-actions
Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/planix @ c7e69cc

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 215/215
PHPUnit
Newman ⏭️
Playwright ⏭️

Coverage: 0% (0/3 statements)


Quality workflow — 2026-05-19 03:27 UTC

Download the full PDF report from the workflow artifacts.

rubenvdlinde and others added 4 commits May 19, 2026 07:03
…ph (#198)

@conduction/docusaurus-preset 2.10.0 ships:

  - deriveStability(version): 0.x → Beta, *-rc → RC, ≥1.0 → Stable,
    *-beta → Beta, *-alpha → Alpha
  - Navbar versionPill auto-uses the derived label so the chrome
    and the hero badge row can no longer disagree
  - <DetailHero/> reads version + status from customFields.appVersion
    (createConfig auto-populates this from appinfo/info.xml) when
    callers omit the props

Three coordinated changes here:

  docs/package.json — bump @conduction/docusaurus-preset to ^2.10.0
  docs/src/pages/index.js — drop hard-coded `status={...}` and
  `version="..."` props on <DetailHero>; the hero now auto-derives
  via the same source the navbar reads
  img/app-store.svg — shrink inner glyph (~40% of hex height
  instead of ~60%), better breathing room around the cobalt hex
Bumps the npm_and_yarn group with 5 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [picomatch](https://github.com/micromatch/picomatch) | `4.0.3` | `4.0.4` |
| [picomatch](https://github.com/micromatch/picomatch) | `2.3.1` | `2.3.2` |
| [brace-expansion](https://github.com/juliangruber/brace-expansion) | `1.1.12` | `1.1.14` |
| [dompurify](https://github.com/cure53/DOMPurify) | `3.3.3` | `3.4.1` |
| [follow-redirects](https://github.com/follow-redirects/follow-redirects) | `1.15.11` | `1.16.0` |
| [lodash](https://github.com/lodash/lodash) | `4.17.23` | `4.18.1` |



Updates `picomatch` from 4.0.3 to 4.0.4
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](micromatch/picomatch@4.0.3...4.0.4)

Updates `picomatch` from 2.3.1 to 2.3.2
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](micromatch/picomatch@4.0.3...4.0.4)

Updates `brace-expansion` from 1.1.12 to 1.1.14
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](juliangruber/brace-expansion@v1.1.12...v1.1.14)

Updates `dompurify` from 3.3.3 to 3.4.1
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](cure53/DOMPurify@3.3.3...3.4.1)

Updates `follow-redirects` from 1.15.11 to 1.16.0
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](follow-redirects/follow-redirects@v1.15.11...v1.16.0)

Updates `lodash` from 4.17.23 to 4.18.1
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](lodash/lodash@4.17.23...4.18.1)

---
updated-dependencies:
- dependency-name: picomatch
  dependency-version: 4.0.4
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: picomatch
  dependency-version: 2.3.2
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: brace-expansion
  dependency-version: 1.1.14
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: dompurify
  dependency-version: 3.4.1
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: follow-redirects
  dependency-version: 1.16.0
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: lodash
  dependency-version: 4.18.1
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ruben van der Linde <rubenvdlinde@gmail.com>
)

* fix: align webpack config and sidebar with shared patterns

- Extend base webpack config instead of replacing resolve/module
- Add NodePolyfillPlugin for process polyfill compatibility
- Add CnObjectSidebar + objectSidebarState for proper sidebar positioning
- Follows ADR-017 (component composition) and ADR-018 (header actions)

* fix: settings pattern — use NcAppSettingsDialog modal (ADR-004)

Settings link in gear foldout now opens NcAppSettingsDialog modal
instead of routing to /settings page. Matches ADR-004 pattern:
- Admin config: /settings/admin/{appid} (NC admin panel)
- In-app settings: NcAppSettingsDialog modal from gear menu

* feat(i18n): add 21 missing translation keys and fix bare t() calls

- Fix bare t() to this.t() in Settings.vue methods
- Add 21 missing keys to en.json and nl.json (108→129 keys)

* fix(i18n): convert title case to sentence case in translation keys

- "Default Project Configuration" → "Default project configuration"
- "Register Setup" → "Register setup"
- "Version Information" → "Version information"
* fix: align webpack config and sidebar with shared patterns

- Extend base webpack config instead of replacing resolve/module
- Add NodePolyfillPlugin for process polyfill compatibility
- Add CnObjectSidebar + objectSidebarState for proper sidebar positioning
- Follows ADR-017 (component composition) and ADR-018 (header actions)

* fix: settings pattern — use NcAppSettingsDialog modal (ADR-004)

Settings link in gear foldout now opens NcAppSettingsDialog modal
instead of routing to /settings page. Matches ADR-004 pattern:
- Admin config: /settings/admin/{appid} (NC admin panel)
- In-app settings: NcAppSettingsDialog modal from gear menu
@github-actions
Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/planix @ 6f9471e

Check PHP Vue Security License Tests
lint ⏭️
phpcs ⏭️
phpmd ⏭️
psalm ⏭️
phpstan ⏭️
phpmetrics ⏭️
eslint ⏭️
stylelint
composer ⏭️ ⏭️
npm ⏭️ ⏭️
PHPUnit
Newman
Playwright

Quality workflow — 2026-05-19 05:03 UTC

Download the full PDF report from the workflow artifacts.

@github-actions
Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/planix @ 87adae4

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 215/215
PHPUnit
Newman ⏭️
Playwright ⏭️

Coverage: 0% (0/3 statements)


Quality workflow — 2026-05-19 05:07 UTC

Download the full PDF report from the workflow artifacts.

The icon hex was filled with the legacy '#4376FC' (the
conduction-design-tokens 'Conduction Cobalt'). The design-system
has retired this in preview/colors.html with the caption

> Our legacy blue (#4376FC) read as 'cloud / SaaS', light, frisky,
> lacking weight. Cobalt is the official blue of the Dutch flag,
> Dutch by birthright, dark enough to feel serious, light enough
> to stay blue, and AAA-contrast on white so it can carry body
> text.

Swap to #21468B (--c-blue-cobalt in tokens.css) so the app-store
hex matches the navbar wordmark and the rest of the brand chrome.
Fleet sweep 2026-05-13.
@github-actions
Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/planix @ 60f3c27

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 215/215
PHPUnit
Newman ⏭️
Playwright ⏭️

Coverage: 0% (0/3 statements)


Quality workflow — 2026-05-19 05:23 UTC

Download the full PDF report from the workflow artifacts.

@github-actions
Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/planix @ fab3ae2

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 215/215
PHPUnit
Newman ⏭️
Playwright ⏭️

Coverage: 0% (0/3 statements)


Quality workflow — 2026-05-19 05:30 UTC

Download the full PDF report from the workflow artifacts.

@github-actions
Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/planix @ 91ae183

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 215/215
PHPUnit
Newman ⏭️
Playwright ⏭️

Coverage: 0% (0/3 statements)


Quality workflow — 2026-05-19 05:33 UTC

Download the full PDF report from the workflow artifacts.

Replace bare-brand Layout title with descriptive form that
includes the keyword payload. Docusaurus auto-appends the site
title as suffix, so SERPs no longer show duplicate brand titles.
fix(docs): descriptive homepage title (#80)
Replace auto-generated meta descriptions on the highest-traffic
pages with hand-written, CTR-tuned variants. Part of the SEO epic
ConductionNL/.github#75.
fix(docs): hand-written meta descriptions (#81)
@github-actions
Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/planix @ 5ba6a2f

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 215/215
PHPUnit
Newman ⏭️
Playwright ⏭️

Coverage: 0% (0/3 statements)


Quality workflow — 2026-05-19 08:19 UTC

Download the full PDF report from the workflow artifacts.

@github-actions
Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/planix @ 4e85446

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 215/215
PHPUnit
Newman ⏭️
Playwright ⏭️

Coverage: 0% (0/3 statements)


Quality workflow — 2026-05-19 08:25 UTC

Download the full PDF report from the workflow artifacts.

Picks up the post-hydration stylesheet loader so canal-footer +
kade-cyclist + decorative CSS no longer block first paint.
Part of ConductionNL/.github#75 SEO epic.
chore(docs): bump @conduction/docusaurus-preset to 3.10.0 (#79)
@github-actions
Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/planix @ dadad1f

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 215/215
PHPUnit
Newman ⏭️
Playwright ⏭️

Coverage: 0% (0/3 statements)


Quality workflow — 2026-05-19 08:36 UTC

Download the full PDF report from the workflow artifacts.

Picks up the schema 2.7.0 + CnPageRenderer top-level field forwarding +
CnDetailPage _lockState rename + config.schema → objectType bridging
shipped in nextcloud-vue#317/#319/#320 tonight.
@github-actions
Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/planix @ 5107df6

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 404/404
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-05-21 10:17 UTC

Download the full PDF report from the workflow artifacts.

Phase 2 fleet rollout — sync planix to nextcloud-app-template's
canonical phpcs/phpmd/psalm/phpstan configs and custom sniffs.

Per the fleetwide directive (no per-app validation rules), this brings
planix in line with the rest of the fleet. planix was already
canonical-compatible at recon (3 of 17 apps with zero drift), so the
diff is limited to the additive canonical pieces (custom sniffs,
phpstan-baseline include, expanded exclude-pattern + stub allowlist).

Quality gates after sync:
- phpcs: 0 errors, 33 warnings (tolerated by ignore_warnings_on_exit)
- phpstan: 0 errors (empty baseline)
- psalm: 0 errors
- phpmd: 1 architectural (BooleanArgumentFlag on loadConfiguration)

Mechanical fix applied in source:
- SettingsService::setAdminSettings() return type changed from
  array<string,string> to void (caller in updateSettings() never used
  the return; psalm flagged it as UnusedReturnValue).

Remaining debt tracked in #223 (split loadConfiguration into
loadConfiguration / reloadConfiguration per SRP).
@github-actions
Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/planix @ b3f127b

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 404/404
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-05-21 20:26 UTC

Download the full PDF report from the workflow artifacts.

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.

2 participants