Repository navigation
Release: merge development into beta - #1304
Open
github-actions[bot] wants to merge 362 commits into
Open
github-actions[bot] wants to merge 362 commits into
github-actions[bot] wants to merge 362 commits into
Conversation
github-actions
Bot
requested review from
WilcoLouwerse,
bbrands02 and
rjzondervan
as code owners
September 13, 2026 17:03
rubenvdlinde
requested review from
Rem-Dam,
SudoThijn,
remko48 and
rubenvdlinde
as code owners
September 14, 2026 09:04
…stops failing them as risky (#1521) The PHPUnit (PHP 8.3, NC stable34, pgsql) job runs with Xdebug coverage, and phpunit.xml sets beStrictAboutCoverageMetadata and failOnRisky. Under coverage, 25 flow tests executed classes their @covers/@uses did not name, so the run ended 'OK, but there were issues' with exit code 1. Local runs have no coverage driver and never saw it.
…1523) Build 5 in 5 new changes (bod-08 bod-13 pla-12 age-13 rou-01), existing 10 (proposals now name vot-05 vot-18 age-11 age-12 age-15 pub-11 par-09 pub-18 rou-09 rou-12), decided no 10 (mot-10 vot-09 vot-10 fol-07 rou-06 pub-06 par-12 rou-15 pub-07 plt-08).
… body's members (#1525) MinutesService asked the container for an OpenRegisterNotificationService that nothing registers, so submitting minutes told nobody; it also picked every chair and secretary of every body. It now reads the meeting's body through ParticipantResolver and delivers through NotificationPreferenceService. generateALVDraft counted members with a _relations.governance-body filter that matches no object-API participant (always 0); it now counts the body's current members through ParticipantResolver. ParticipantNotifier and four resolver methods lost their last caller and are removed.
…, and decisions, speeches and questions are recorded on it (#1527) * feat(live): the meeting holds the current agenda item, and a live decision names its meeting, item and type Fragment 105 adds Meeting.currentAgendaItem (Meeting 1.9.0). LiveDecisionService wrote an undeclared relations key, no decisionType (required) and saved to schema 'Decision'; it now writes meeting, agendaItem, decisionType (default resolution) and an outcome only when one was taken. * wip: mid-task state when the lane was killed by the weekly limit (29 Sep 16:05); not verified * feat(live): the chair's current item is saved by a guarded endpoint, not by a meeting save any member could make PUT /api/agendas/{meetingId}/current-item (chair, secretary or admin) checks the item is on the meeting and patches Meeting.currentAgendaItem. Verifies the wip commit 17e23a5: 50 l10n files generated, 9 hand edits read; room screen is a section, not a second main landmark. * feat(live): speeches and questions list under the item they were on; archive live-meeting-shared-current-item The speaker queue lists the contributions on the current item from the meeting's engagement records. Change archived into agenda-live-management; rows liv-01 liv-04 liv-05 liv-11 built. * fix(live): room screen as the live page's projector mode, current item in its own service; gate fixes phpmd class complexity: setCurrentItem moves to CurrentAgendaItemService. gate-69 custom-page ratchet: no new custom page, /meetings/:id/live?view=screen. eslint: unused catch bindings and console calls in touched files fixed, suppressions pruned (10 fewer).
…he moment an agenda item started (#1530) * feat(transcription): the meeting recording plays for its participants and seeks by byte range GET /api/transcripts/{transcriptId}/recording (any participant of the meeting, chair, secretary, admin) answers a Range request with 206 and those bytes. * feat(transcription): Play from here on each agenda item of the transcript; archive live-recording-jump-to-item, row liv-08 built * refactor(transcription): the recording player gets its own controller; the guard takes who it admits instead of a flag (phpmd coupling and boolean-flag findings) * fix(transcription): drop a redundant cast psalm reports
…s and a faction; faction pages get a workspace (#1533) Archive bodies-membership-terms-contacts-and-factions, rows bod-02 bod-06 bod-16 built.
…un in CI stops failing them as risky (#1534)
…m their publication date
…ries and lets the clerk add one
…for the progress widget and the public feed
… anonymous e2e actor, import order)
…ce, and unreadable restrictions publish nothing (red on development)
…y public surface, and the published agenda carries its items, papers and filter fields
… pub-09 decidiq half recorded
…ed object service, agenda items titled, named arguments, e2e formatted, remedy test gets the papers service)
…s and a manifest, and is told where to download it (red)
…eting files and a manifest in one archive, and gets a notification with the download link
…tform-full-data-export, pub-15 built
…hat silence means and when the substitute is asked
…on-flow-user-tasks
…he portal, with the advisory counts
…are the registry as used by the controller test
feat: build open OpenSpec changes (decidiq, part 1)
Decision 131 (Q-decidiq-1): the regulations register folded into governing documents and the STOP/TPOD export moved to integriq. Archived with a note, nothing folded into the main specs.
…a shared body BodyParticipationsTab with add, edit and end participation, seats filled per organisation, and On behalf of in the add-member dialog (bod-13). Tests pending the worktree install.
…email; a planning cycle gets its steps from its template Guest invitations (pla-20, board DcAdhocOverleg): Gast uitnodigen on the participants of a meeting without a body, a guest participant, one mail with date, agenda and a read-only link to the papers; only the organiser or an administrator. Planning cycle (pla-12): steps generated once from the template on create, Steps widget with an Overdue badge. Tests pending a free slot.
The coverage ratchet on PR #1686 failed: GuestInvitationController had no test (12 statements uncovered, changed files 84.23% against 87.50%). The route now has tests for the 201 answer, a refusal with its own status and message, and the empty session.
feat: build open OpenSpec changes (decidiq, part 2)
GovernanceBodyStateRequestedEvent is the read half of the governance-body contract: a consumer (dossiq) asks by governanceBodyId or by its own (sourceApp, externalReference) and gets the body back with active, quorum, jurisdiction and the roster (uid, role, external), answered in process by GovernanceBodyStateRequestedListener through GovernanceBodyQueryService. Only the asking app's own bodies are returned, reads run as the acting user, and a failed read leaves the event unhandled so the consumer falls back to its own copy instead of treating a live committee as gone. For dossiq migrate-committees-to-decidiq task 3. Spec: REQ-GBE-007.
…asses as templates
CnApprovalChainWidget takes reasonTemplates ([{id, name, body}], fallback
integrationContext.reasonTemplates). When given, a 'Start from a template'
picker sits above the reason field (acting yourself and on behalf); picking
fills the reason, which stays editable. decidiq reads no app's template
library. For dossiq starter-content-and-templates 7.2 (decision 156).
Change: openspec/changes/approval-reason-templates.
…e-body-read feat(governance): a consumer app reads its governance body back
…reason-templates feat(approval): the approval chain leaf offers ready-made reasons from its host
…1701) * fix(settings): personal preferences move into the user settings dialog 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. * test(settings): counts and the a11y sample follow the retired /user-settings page * fix(settings): the user settings dialog follows board DcMijnInstellingen 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). --------- Co-authored-by: Ruben van der Linde <juan.claude@conduction.nl>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Automated PR to sync development changes to beta for beta release.
Merging this PR will trigger the beta release workflow.