Skip to content

feat: build open OpenSpec changes (launchpad, part 1) - #826

Merged
rubenvdlinde merged 9 commits into
developmentfrom
build/openspecs-1
Oct 10, 2026
Merged

rubenvdlinde merged 9 commits into
developmentfrom
build/openspecs-1

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

What this lands

Part 1 of building launchpad's open OpenSpec changes (decisions 121 to 124, landed small per decision 134).

Built and archived

  • retire-setup-wizard-storage-step (decision 131, answer to Q-launchpad-1). The setup wizard has six steps: Welcome, Group order, Demo data, Admin roles, Footer, Done. Removed: the storage step and its strings in all 37 locales, POST /api/admin/setup-wizard/storage, AdminController::setWizardStorage(), AdminSettingKey::CONTENT_STORAGE and its AdminSetting alias, SetupWizardService::{getContentStorage,setContentStorage,hasGroupfolderApp} and the unused IAppManager. GET /api/admin/settings returns twelve keys (no launchpad.content_storage); PUT no longer takes launchpadContentStorage. occ launchpad:setup no longer needs storage_backend and prints that an old field was ignored. A stored content_storage row stays in the table, unread; no migration. Specs setup-wizard (REQ-WIZ-003 removed, steps renumbered) and admin-settings (REQ-ASET-001) amended. No matrix row.
  • fix-people-widget-unbounded-user-scan. Already built in dae7ade; verified and archived. The delta said MODIFIED REQ-PPL-007, which is "Avatar URLs" in the main spec, so it lands as ADDED REQ-PPL-013.
  • grid-bottom-append-placement and retire-groupfolder-storage-backend: archived earlier on this branch (docs only).

Built, still open for a live check

  • engagement-activity-digest: task 1 built. Four activity settings in one "LaunchPad" group (lib/Activity/Settings/), mail on for shared and published, off for updated and acknowledged, registered in appinfo/info.xml (validated against Nextcloud's app-info.xsd), labels in all 37 locales. Row e-digest moves to building. Task 5 needs the live instance.
  • launchpad-manifest-tier-3: every task done except the E2E leg; the E2E job is skipped on every development push run, so it waits for the live pass. The two "left for later" items became a Follow-up note.
  • fix-l10n-domain-mismatch-mydash-calls: tasks 1 to 6 verified on HEAD (0 t('mydash' calls, the lint guard is wired). Task 7 is a Dutch-locale look in a live session.

Still owed (live recipes)

  • engagement-activity-digest 5: with the activity app on and user B's activity mail set to daily, user A shares a dashboard with B; SELECT amq_type, amq_affecteduser FROM oc_activity_mq WHERE amq_appid = 'launchpad' shows one dashboard_shared row for B, and editing the dashboard queues no dashboard_updated row.
  • launchpad-manifest-tier-3: cold-load /, /store, /reports, /features-roadmap, /flows and /dashboards/<id> under both /apps/launchpad/ and /index.php/apps/launchpad/; each renders its page; tests/e2e/app-chrome.spec.ts passes.
  • fix-l10n-domain-mismatch-mydash-calls 7: in an nl session, the admin Health panel and the widget context menu show Dutch text.
  • setup wizard: open the admin page on a fresh instance, run the wizard, see six steps and no storage question.

Skipped

Checks

Run once on head 7f5c681 (origin/development f7b9192 merged in), through with-slot.sh:

  • COMPOSER_PROCESS_TIMEOUT=0 composer check:strict: exit 0 (PHPUnit 1954 tests, 14 skipped)
  • npm run lint: exit 0 (includes check:manifest, lint:initial-state, lint:translation-domain)
  • npm run test (Vitest): exit 0, 119 files, 962 tests
  • check:manifest 0, check:schema-l10n 0, check:l10n-parity 0, phpmetrics 0
  • npm run format: exit 1 on src/__tests__/App.navigationPanel.spec.js only, a file this PR does not touch; development's own push run is red on the same job
  • Hydra gates (hydra-gates@main, as CI runs them): 5 fail, all on files this PR does not touch. gate-23 (PermissionService, RoleFeaturePermissionService) is development's one red gate (decision 69). gate-22, gate-53, gate-104 and gate-107 pass on development's 20:01 run and fail locally against a newer hydra-gates main, on src/manifest.json (unchanged here): /setup/steps/1 has a property the schema no longer allows, and the Reports entry sits in settings, not footer. gate-19 is advisory: the new scenarios carry @e2e exclude because they are server contracts.
  • Red tests first: SetupWizardServiceTest, AdminControllerSetupWizardTest, AdminSettingKeyTest, AdminSettingsServiceTest, SetupCommandTest and ActivitySettingsTest failed before the code changed.

Inherited findings

  • 320 t('launchpad', …) strings in src/ have no catalogue key (found while verifying the l10n change); not part of this PR.
  • 9 main specs fail openspec validate --specs --strict on development as well (same 9 here).
  • phpcs warnings for class-level @spec tags in AdminSetting.php, SetupWizardService.php, SetupCommand.php are on lines this PR did not touch.
  • development's own Code Quality push run is red on Hydra Gates and Frontend Check (format).

…says so

Archives grid-bottom-append-placement: REQ-GRID-006 describes the shipped
bottom-append rule and the push-down scenarios are retired.
…s endpoint are gone

Decision 131 (Q-launchpad-1): drop setup-wizard step 2, POST
/api/admin/setup-wizard/storage, AdminSettingKey::CONTENT_STORAGE and the
three SetupWizardService storage methods. A stored content_storage row stays
unread. occ launchpad:setup no longer needs storage_backend and says an old
field was ignored. GET /api/admin/settings returns twelve keys.

The code half landed in the coordinator's wip daa7a92; this commit adds the
command test, the two test fixes for the twelve-key settings, the formatted
Vitest spec and the archived change.
… with per-event settings

Four activity settings in one LaunchPad group (REQ-DIGE-001): shared and
published go to the digest by default, updated and acknowledged stay in the
stream only. Registered in info.xml (validated against app-info.xsd), labels
in all 37 locales. engagement-activity-digest stays open for its live check
(task 5); e-digest moves to building.
…y built in dae7ade

The unfiltered People list pages searchDisplayName in bounded chunks;
REQ-PPL-013 now says so (renumbered from a REQ-PPL-007 that collided with
Avatar URLs).
…fix-l10n-domain-mismatch-mydash-calls

Both stay open: the E2E leg is skipped on development push runs, and the
Dutch-locale check needs the live instance.
@github-actions

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/launchpad @ caf0ca1

Check PHP Vue Security License Tests
lint ✅
phpcs ✅
phpmd ✅
psalm ✅
phpstan ✅
phpmetrics ✅
eslint ✅
stylelint ✅
build ✅
check-manifest ✅
format ❌
check-schema-l10n ✅
composer ✅ ✅ 107/107
npm ✅ ✅ 636/636
app:check-code ⏭️
info.xml ✅
REUSE ❌
lockfile sync ✅
PHPUnit ❌
Newman ❌
Playwright ⏭️ deferred: E2E runs locally and on the promotion path only. This pull request targets development, so the suite is asked once per promotion into beta and main rather than once per push per open pull request. Run it locally with npx playwright test, or from the Actions tab on a branch with no open pull request into development.
Hydra gates ❌

Quality workflow — 2026-10-09 21:26 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/launchpad @ caf0ca1

Check PHP Vue Security License Tests
lint ✅
phpcs ✅
phpmd ✅
psalm ✅
phpstan ✅
phpmetrics ✅
eslint ✅
stylelint ✅
build ✅
check-manifest ✅
format ❌
check-schema-l10n ✅
composer ✅ ✅ 107/107
npm ✅ ✅ 636/636
app:check-code ⏭️
info.xml ✅
REUSE ❌
lockfile sync ✅
PHPUnit ❌ 1953/1954
Newman ❌
Playwright ⏭️ deferred: E2E runs locally and on the promotion path only. This pull request targets development, so the suite is asked once per promotion into beta and main rather than once per push per open pull request. Run it locally with npx playwright test, or from the Actions tab on a branch with no open pull request into development.
Hydra gates ❌

Quality workflow — 2026-10-09 21:51 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/launchpad @ caf0ca1

Check PHP Vue Security License Tests
lint ✅
phpcs ✅
phpmd ✅
psalm ✅
phpstan ✅
phpmetrics ✅
eslint ✅
stylelint ✅
build ✅
check-manifest ✅
format ❌
check-schema-l10n ✅
composer ✅ ✅ 107/107
npm ✅ ✅ 636/636
app:check-code ⏭️
info.xml ✅
REUSE ❌
lockfile sync ✅
PHPUnit ❌ 1953/1954
Newman ✅ 224/224
Playwright ⏭️ deferred: E2E runs locally and on the promotion path only. This pull request targets development, so the suite is asked once per promotion into beta and main rather than once per push per open pull request. Run it locally with npx playwright test, or from the Actions tab on a branch with no open pull request into development.
Hydra gates ❌

Quality workflow — 2026-10-10 07:54 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/launchpad @ abc369a

Check PHP Vue Security License Tests
lint ✅
phpcs ✅
phpmd ✅
psalm ✅
phpstan ✅
phpmetrics ✅
eslint ✅
stylelint ✅
build ✅
check-manifest ✅
format ❌
check-schema-l10n ✅
composer ✅ ✅ 107/107
npm ✅ ✅ 636/636
app:check-code ⏭️
info.xml ✅
REUSE ❌
lockfile sync ✅
PHPUnit ✅ 1954/1954
Newman ✅ 224/224
Playwright ⏭️ deferred: E2E runs locally and on the promotion path only. This pull request targets development, so the suite is asked once per promotion into beta and main rather than once per push per open pull request. Run it locally with npx playwright test, or from the Actions tab on a branch with no open pull request into development.
Hydra gates ❌

Quality workflow — 2026-10-10 08:17 UTC

Download the full PDF report from the workflow artifacts.

@rubenvdlinde
rubenvdlinde merged commit 49b24d8 into development Oct 10, 2026
40 of 43 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