Skip to content

feat(admin): the admin tabs are the library admin shell's underline strip - #872

Merged
rubenvdlinde merged 1 commit into
developmentfrom
feat/admin-shell-tabs
Oct 16, 2026
Merged

rubenvdlinde merged 1 commit into
developmentfrom
feat/admin-shell-tabs

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

The admin page drew its own tab strip (BeheerTabs.vue). It now hands its twelve tabs to CnAdminSettingsShell (tabs, tabsVariant: "underline"), as board LpBeheerAlgemeen draws them. Bumps @conduction/nextcloud-vue to ^2.89.0 (tabStorageKey and the mount-time tab-change, nextcloud-vue #1673).

What carries over from BeheerTabs:

  • Opening tab: ?tab=<id> wins, then the tab remembered under launchpad.admin.activeTab (the same key, so a stored tab carries over), then General.
  • Change event: the shell's tab-change (on mount and on click) drives activeTab, which sets the title, the breadcrumbs, the breadcrumb note and the General-only cards.
  • Mounting: a tab's content mounts only while its tab is open. The shell keeps every panel in the DOM, so each slot has a v-if. Without that, all eleven tabs would fetch on page load, and the Templates list would not refetch when you come back to it.
  • General: the setup wizard banner sits in General's own panel, 20px under the strip, as on the board. The cards are the shell's default slot.

Retired: BeheerTabs.vue and its spec. The unit tests in AdminSettings.tabs.spec.js now cover the wiring. The e2e specs find a tab by its id through tests/e2e/support/adminTab.ts, which works in any locale. admin-templates-page.spec.ts opens ?tab=templates; since #862 the page no longer opens on Templates.

Verified locally: build, eslint and stylelint on the changed files, check:* and lint scripts, full vitest, and phpunit --no-coverage (one PHP test changed). I also checked the page live as pieter and ran a pixel diff against LpBeheerAlgemeen and LpBeheerDelen.

Inherited: tests/vitest/shared-instance.spec.ts fails to load because the parent server/tsconfig.json cannot resolve @vue/tsconfig. That comes from the environment and is unrelated to this change. WidgetWrapper.hide.spec.js failed once in a full run under load. It passed alone three times and passed in the next full run.

AI assistance: prepared with Claude Code.

…trip

The admin page drew its own tab strip (BeheerTabs). It now hands its
twelve tabs to CnAdminSettingsShell (`tabs`, `tabsVariant: "underline"`),
as board LpBeheerAlgemeen draws them. The shell opens the tab named by
`?tab=`, else the one remembered under `launchpad.admin.activeTab` (the
key BeheerTabs used, so a stored tab carries over), else General, and
reports it with `tab-change`, which drives the title, the path line and
the General-only cards. A tab's content still mounts only while it is
open. BeheerTabs and its tests are retired; the e2e specs find a tab by
its id through a small helper.

Bumps @conduction/nextcloud-vue to ^2.89.0 (tabStorageKey and the
mount-time tab-change, #1673).

Assisted-by: ClaudeCode:claude-opus-5-5
@rubenvdlinde
rubenvdlinde merged commit c524188 into development Oct 16, 2026
32 of 34 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/launchpad @ c4c0320

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/1953
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-16 11:40 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.

1 participant