Skip to content

chore(release): promote development to beta (batch 9) - #1775

Merged
rubenvdlinde merged 1 commit into
betafrom
development
Oct 18, 2026
Merged

rubenvdlinde merged 1 commit into
betafrom
development

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

Promotes library batch 9 (#1774) to beta. Merge tree equals the development tree.

🤖 Generated with Claude Code

* feat(settings): CnSettingsFieldsSection, a settings section declared as fields, on a shared CnSettingsField

Assisted-by: ClaudeCode:claude-opus-5-5

* feat(widgets): a working calendar, a month at a time

New `working-calendar` widget (CnWorkingCalendarWidget): a Monday-first
month of a working-calendar object (by id or filter), non-working
weekdays grey, closed dates red with their name, taken from OpenRegister's
/api/flow-timers/calendars/preview for the year shown rather than computed
in the browser. Add day appends to `exceptions` with one update through
the object API under the reader's rights (administrators). Keyboard grid
with one tab stop, every day labelled; Dutch strings.

Assisted-by: ClaudeCode:claude-opus-5-5

* feat(settings): a field may read and save at its own endpoints, and an image field uploads at once

Assisted-by: ClaudeCode:claude-opus-5-5

* fix(quick-filter-bar): the selected board-look chip keeps its light label under a theme

The selected chip is light on dark (DqZaken's "Alles 48"). thematiq forces
the body ink onto every span with `!important` and reads it from
--nldesign-color-on-surface, so the label and the count turned dark on the
dark chip and vanished. The selected chip and its count now hand their own
ink to that property. The chip's shape is restored on the thematiq side
(comp-thematiq/board-look-buttons), where the button rules forced an 8px
corner and weight 700 onto it.

Assisted-by: ClaudeCode:claude-opus-5-5

* fix(status-badge): a board-look pill keeps its ink under a theme that forces the body ink

thematiq forces the body text colour onto every span with `!important` at id
level, and reads it from --nldesign-color-on-surface when a surface sets
that property. The pill set none, so "In behandeling" read near-black on its
purple ground where DqZaak draws it purple on purple.

Every tone now names its ink in --cn-status-badge-ink (same colours as
before), and in the board look the pill hands that ink to the on-surface
property. The Nextcloud look is unchanged.

Assisted-by: ClaudeCode:claude-opus-5-5

* fix(status-badge): the board look draws the board's pill size

Every board pill is 13px at 600 on a 3px 10px pad with a 12px corner
(DqZaak's header pills, DqZaken's status column); the board look drew the
Nextcloud pill (0.85em at 500 on 2px 10px, line height 1.4), 1px taller and
lighter. The small size keeps its own.

Assisted-by: ClaudeCode:claude-opus-5-5

* fix(action-buttons): the board look draws a page's secondary actions neutral

CnActionButtons drew its secondary actions as Nextcloud's primary-tinted
button (and, under thematiq, primary outlined in primary blue). The boards
draw them neutral: 40px, the main background, a grey border and the main
text at 600 (DqZaak "Bericht", "Document", "Contact vastleggen",
"Bewerken"). The board look now does, and the label hands its ink to
--nldesign-color-on-surface for a theme that forces the body ink. The
Nextcloud look is unchanged.

Assisted-by: ClaudeCode:claude-opus-5-5

* fix(actions-menu): the board look draws a secondary Actions trigger neutral

A menu asked for as `secondary` ("Meer" in a detail header, "Acties" at the
end of a tab strip) drew Nextcloud's primary tint, and under thematiq a
primary-blue outline with blue text. The boards draw it as the neutral
control: the main background, a grey border, the main text at 600 (DqZaak).
The board look now styles the trigger of a secondary NcActions that way,
reading the root's own `action-item--secondary` (NcActions keeps a class
given to it off its root), and hands the label its ink for a theme that
forces the body ink. The Nextcloud look is unchanged.

Assisted-by: ClaudeCode:claude-opus-5-5

* feat(detail-grid): the board look draws label and value pairs as plain text

CnDetailGrid had no board look: every pair was a grey card with a primary
accent bar and a padded value, where the boards draw plain text. In the
board look the grid is now a 13px muted label over a 15px value at weight
500 with a hairline under each pair (DqZaak "Zaakgegevens"), and the
horizontal layout two columns of 14px text with the label column as wide as
its longest label (the side cards), both at the board's line height of 1.2.
The label hands its muted ink to --nldesign-color-on-surface, which
thematiq's forced body ink reads. The Nextcloud look is unchanged.

Assisted-by: ClaudeCode:claude-opus-5-5

* feat(l10n): Dutch for the flow, wizard and stepper strings

Translate the 75 strings and one plural of CnSetupWizard, CnWizardDialog,
CnStepper, CnFlowsPage and CnFlowDetail, seed a new flow as t('New flow'),
and add a ratchet spec: a new t()/n() literal in src/ must have Dutch, and
the 1,538 strings still missing it are listed in a baseline that only shrinks.

Assisted-by: ClaudeCode:claude-opus-5-5

* fix(breadcrumbs): the board look draws a trail as text wherever it sits

Only a detail header's row 2 drew the breadcrumb as the boards do; anywhere
else CnBreadcrumbs drew NcBreadcrumbs' 34px tertiary buttons, and even in
the header the link crumb read in the main text colour without an underline.
CnBreadcrumbs now carries `cn-breadcrumbs` on its root, and the board look
draws every trail as a 14px line, 8px apart: crumbs that lead somewhere as
underlined links in the primary colour, the current crumb as plain muted
text (DqZaak "Alle zaken / 2026-0082"). The ink also goes through
--nldesign-color-on-surface for a theme that forces the body ink. The
Nextcloud look is unchanged.

Assisted-by: ClaudeCode:claude-opus-5-5

* fix(stages-widget): the board look draws the stage bars as DqZaak does

Measured against DqZaak "Voortgang": the bars sat 4px in from the content
edge (the widget's pad is room for the 32px circles the bars variant does not
draw), label and date sat at Nextcloud's 1.5 line height (4px and 4px lower
than the board), and under thematiq every label and date read in the body
ink, so the open steps were not muted. In the board look the pad goes around
the bars, label and date take the normal line height, and each hands its ink
to --nldesign-color-on-surface: muted when open, the main text when done or
current.

Assisted-by: ClaudeCode:claude-opus-5-5

* fix(next-step-card): the board look keeps its rhythm and tones under a theme

Measured against DqZaak "Wat nu?": the rows were 30px apart where the board
draws 28 (the card inherited Nextcloud's 1.5 line height), the kicker read in
the heading ink (thematiq colours every h3 with `!important`), and the done
and open steps, the hint and the after line read in the body ink (thematiq
forces it onto every li and span). The card now sets the normal line height,
the kicker's tone carries `!important`, and each muted part hands its ink to
--nldesign-color-on-surface, the current step the main text.

Assisted-by: ClaudeCode:claude-opus-5-5

* fix(action-buttons): board spacing and 16px icons

The board puts header buttons 10px apart and draws each icon 16px with 8px
to its label (DqZaak's header, DqZaken's "Downloaden"). NcButton drew a 20px
icon in a 30px slot, 6px wider per button, so DqZaak's four actions wrapped
onto a second row.

Assisted-by: ClaudeCode:claude-opus-5-5

* fix(tabs): board folder tabs drop the core button margin

A folder tab is a <button>, and Nextcloud's core stylesheet gives every
`button:not(.button-vue)` `margin: 3px 3px 3px 0`. In the board look that put
the strip 3px low and the tabs 7px apart where DqZaak draws them 4px apart on
the card's top edge. The tab rule now sets `margin: 0`.

Assisted-by: ClaudeCode:claude-opus-5-5

* fix(detail-card): the board card wherever a CnDetailCard sits

The board card anatomy (radius 12, a 20px 22px header without a rule, the
17px title, 12px 22px 20px content) was scoped to `.cn-detail-page`, so a
CnDetailCard on a dashboard or a custom page drew the Nextcloud card: a 12px
16px header over a rule. It now applies to every CnDetailCard in the board
look, a chromeless one excepted, at the same specificity. A side card's
muted heading also carries `!important` against thematiq's h3 colour, which
painted "Behandeling" in the heading ink.

Assisted-by: ClaudeCode:claude-opus-5-5

* fix(tabs): the board strip's Actions button sits 8px clear, tabs on the card edge

DqZaak draws the Actions button at the top of the strip, 8px in from the end
and 8px clear of the card, and the tabs bottom-aligned on the card's top
edge, 6px lower than the button. The strip put both at the top, so the tabs
sat 6px high and the button touched the end.

Assisted-by: ClaudeCode:claude-opus-5-5

* feat(actions-menu): a trailing chevron for the board's detail-header menu

DqZaak draws the detail header's menu as "Meer" followed by a 14px chevron;
CnActionsMenu could only draw the dots before the label. A `trailingChevron`
prop swaps the dots for the chevron, the board look puts it after the label,
and CnDetailPage sets it in the board look. Without the prop, or outside the
board look, nothing changes.

Assisted-by: ClaudeCode:claude-opus-5-5

* fix(quick-filter-bar): the selected chip's count shows as a bubble

On the selected chip the count bubble took --cn-board-text-soft, which
resolves to the main text, the chip's own colour, so the bubble vanished
and only the number showed. DqZaken draws it as a lighter bubble (#3d4047 on
#1b1c1d); it is now the main text mixed with 15% of the main background.

Assisted-by: ClaudeCode:claude-opus-5-5

* fix(data-table): the board table's row rhythm, selection column and person chip

Measured against DqZaken: a row with a title and a secondary line was 71px
where the board draws 66, and the header row 67px where it draws 50. The
selection checkbox kept NcCheckboxRadioSwitch's 34px clickable block with
4px 7px of padding, 42px that set every row's height, the table inherited
Nextcloud's 1.5 line height, and the header's sort button kept the clickable
area. The board table now draws the checkbox as the 18px box alone (the cell
stays the click target's room), sets the normal line height and lets the
sort button size to its text.

The selection column is 60px, 16px of padding either side of its 28px, as
DqZaken and 130 other boards draw it (the title starts 77px in); it was 44px
with no padding after the checkbox, which only the boards with a 10px pad
match. The initials chip in a board table takes the light primary tint and
the primary ink, the person chip most boards draw, instead of the grey one.

Assisted-by: ClaudeCode:claude-opus-5-5

* fix(data-table): board header labels 14px muted, muted lines keep their ink

DqZaken draws the header labels 14px in the muted ink; they inherited 15px,
and under thematiq the labels and the title column's secondary line (spans)
took the forced body ink. The header is 14px now, and both hand their muted
ink to --nldesign-color-on-surface.

Assisted-by: ClaudeCode:claude-opus-5-5

* feat(fields): an ordered list choice can carry a description and an icon

A CnOrderedListField choice can carry a muted second line (description) and
an MDI icon in a small tile, in the row and in the picker; the row's buttons
name the description as theirs (board DqPersoonlijkeInstellingen, "Woo-verzoek
· 19 open zaken"). A choice without them renders as before.

Assisted-by: ClaudeCode:claude-opus-5-5

* docs(fields): the description and icon of an ordered list choice

Assisted-by: ClaudeCode:claude-opus-5-5

* docs: regenerate the component partials

Assisted-by: ClaudeCode:claude-opus-5-5

* test(l10n): drop four strings from the Dutch baseline that now have Dutch

Archived and Suspended came with the organisations source (batch 8),
Next month and Previous month with the working calendar widget.

Assisted-by: ClaudeCode:claude-opus-5-5

* docs: regenerate the CnActionsMenu reference page for batch 9

Assisted-by: ClaudeCode:claude-opus-5-5
@rubenvdlinde
rubenvdlinde merged commit aa8b979 into beta Oct 18, 2026
77 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/nextcloud-vue @ 921419b

Check PHP Vue Security License Tests
lint ⏭️
phpcs ⏭️
phpmd ⏭️
psalm ⏭️
phpstan ⏭️
phpmetrics ⏭️
eslint ✅
stylelint ✅
build ✅
test ✅
check-build ✅
check-vue3-compile ✅
check-public-safe ✅
check-journey-vocabulary ✅
check-docs ✅
check-docs-mdx ✅
check-jsdoc ✅
check-integration-parity ✅
check-peers ✅
check-docs-fresh ✅
check-a11y ✅
check-smoke ✅
composer ✅ ✅
npm ✅ ✅ 643/643
app:check-code ⏭️
info.xml ⏭️
REUSE ✅
lockfile sync ✅
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️
Hydra gates ⏭️

Quality workflow — 2026-10-18 07:00 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