Skip to content

fix(settings): personal settings move into the user settings dialog - #1701

Merged
rubenvdlinde merged 3 commits into
developmentfrom
fix/no-personal-settings
Oct 11, 2026
Merged

rubenvdlinde merged 3 commits into
developmentfrom
fix/no-personal-settings

Conversation

@rubenvdlinde

@rubenvdlinde rubenvdlinde commented Oct 11, 2026 •

Copy link
Copy Markdown
Contributor

Ruben's decision of 11 October 2026: no user configuration pages. User settings go into the user settings dialog, app settings into the admin settings.

Where each setting went

Decidiq had its personal settings on two pages: Nextcloud's /settings/user/decidiq and the in-app /user-settings page (Preferences in the settings foldout). Both are gone. All five sections were personal, so all five moved into the in-app user settings dialog (settings foldout, then Personal settings). None moved to the admin settings.

Setting Was on New home Section in the dialog (board DcMijnInstellingen) Section id
Notification preferences (events, channels, reminder timing) both pages User settings dialog Meldingen decidiq-notifications
Delegation and absence both pages User settings dialog Afwezigheid decidiq-delegation
Display preferences (default view, items per page, date format) both pages User settings dialog Weergave decidiq-display
Communication preferences (governance email) both pages User settings dialog Contact decidiq-communication
Subscriptions (agendas, papers, decisions, minutes) both pages User settings dialog Abonnementen decidiq-subscriptions

Order and names follow the board. Inloggegevens and Rondleiding come after them; the board does not draw those two, they are what CnAppRoot would have shown. The inner layout of each section is the existing component; the board's matrix and two-column fields are not part of this PR.

The backend endpoints are unchanged. The dialog uses the same section components and the same endpoints.

Deep link: /apps/decidiq/<route>#user-settings opens the dialog.

What else changed

  • appinfo/info.xml: <personal> and <personal-section> removed.
  • Removed: lib/Settings/PersonalSettings.php, lib/Sections/PersonalSection.php, templates/settings/personal.php, src/personal.js and its webpack entry, PersonalRoot.vue, UserSettingsPage.vue, src/manifest.d/user-settings.json, and the UserSettingsMenu entry in both menu layouts.
  • New: src/views/settings/UserSettings.vue, rendered in CnAppRoot's #user-settings slot. The section components lose their own <h3>, because the dialog section names them.
  • Filling that slot drops the library's fallback sections without telling anyone. So the dialog draws Credentials and the walkthrough replay again (walkthrough state from CnAppRoot, Dutch labels from the app). The library's generic Notifications pane is left out: the board draws one Meldingen section, and that is decidiq's own.
  • Tests follow: the e2e specs open the dialog instead of the removed pages, the structure profile counts drop by one entry and one page, and the a11y sample loses the retired /user-settings page.
  • l10n: Credentials, the board's section names and the walkthrough labels added, with Dutch.
  • webpack.config.js already makes the ../nextcloud-vue/src alias opt-in (USE_LOCAL_LIB=true), so nothing changes there.

Verified locally

Check Result
npm run build exit 0 (after npm ci: the checkout had nextcloud-vue 2.60.0 installed against ^2.67.0)
npm run lint exit 0 (286 warnings, all inherited)
npx vitest run (full) 973 tests, all pass after the count fixes. 1 suite fails to load: tests/vitest/shared-instance.spec.ts needs @vue/tsconfig, missing locally. Inherited.
COMPOSER_PROCESS_TIMEOUT=0 composer check:strict exit 0, ALL CHECKS PASSED, 2654 tests (after composer install: the checkout's vendor was behind the lockfile)

Browser check on :8080 (admin, Dutch):

  • /settings/user/decidiq no longer lists Decidiq in the personal settings navigation.
  • /apps/decidiq/decisions#user-settings opens the dialog with: Meldingen, Afwezigheid, Weergave, Contact, Abonnementen, Inloggegevens, Rondleiding.
  • The settings foldout has no Preferences entry; Personal settings opens the same dialog.
  • Saving display preferences in the dialog shows "Weergavevoorkeuren opgeslagen."

Inherited, not fixed here

  • The dialog title "User settings" (board: Persoonlijke instellingen) and the walkthrough hint are library strings with no Dutch in nextcloud-vue. Reported to the coordinator, not fixed here.
  • Library gap: CnAppRoot's #user-settings slot replaces its fallback sections wholesale. An additive slot, or a manifest list of sections, would let apps add sections without redrawing the library's own.

🤖 Generated with Claude Code

Ruben, 11 Oct 2026: no user configuration pages. Decidiq drops its Nextcloud
personal settings page (/settings/user/decidiq): <personal> and
<personal-section> leave info.xml, with PersonalSettings, PersonalSection,
templates/settings/personal.php, src/personal.js, PersonalRoot.vue and the
webpack entry. The in-app /user-settings page (manifest.d/user-settings.json,
UserSettingsPage, the Preferences entry in the settings foldout) goes too:
it was the same five sections on a second page.

The five sections (notification preferences, display preferences,
delegation and absence, communication preferences, subscriptions) are now
sections of the user settings dialog (src/views/settings/UserSettings.vue in
CnAppRoot's #user-settings slot), reached from Personal settings in the
settings foldout or the #user-settings deep link. Filling the slot drops the
library's fallback, so its notifications pane, credentials and walkthrough
replay are drawn again from the app. No backend endpoint changes.
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/decidiq @ acfc738

Check PHP Vue Security License Tests
lint ✅
phpcs ✅
phpmd ✅
psalm ✅
phpstan ✅
phpmetrics ✅
eslint ✅
stylelint ✅
build ✅
check-manifest ✅
check-nav-ceiling ✅
test-l10n ✅
format ❌
check-l10n-js ✅
check-schema-l10n ✅
composer ✅ ✅ 107/107
npm ✅ ✅ 652/652
app:check-code ⏭️
info.xml ✅
REUSE ❌
lockfile sync ✅
PHPUnit ✅ 2646/2646 · 8 skipped
Newman ✅ 363/363 · 1 skipped
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-11 12:42 UTC

Download the full PDF report from the workflow artifacts.

Meldingen, Afwezigheid, Weergave, Contact, Abonnementen, in that order and
with those names. The library's generic notifications pane leaves the
dialog: the board draws one Meldingen section, which is decidiq's own.
Credentials and the walkthrough replay stay after the board's sections, the
walkthrough with Dutch labels (Rondleiding).
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/decidiq @ 6bb9911

Check PHP Vue Security License Tests
lint ✅
phpcs ✅
phpmd ✅
psalm ✅
phpstan ✅
phpmetrics ✅
eslint ✅
stylelint ✅
build ✅
check-manifest ✅
check-nav-ceiling ✅
test-l10n ✅
format ❌
check-l10n-js ✅
check-schema-l10n ✅
composer ✅ ✅ 107/107
npm ✅ ✅ 652/652
app:check-code ⏭️
info.xml ✅
REUSE ❌
lockfile sync ✅
PHPUnit ✅ 2646/2646 · 8 skipped
Newman ✅ 363/363 · 1 skipped
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-11 17:00 UTC

Download the full PDF report from the workflow artifacts.

@rubenvdlinde
rubenvdlinde merged commit 86df256 into development Oct 11, 2026
45 of 48 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.

2 participants