Skip to content

Release: merge development into beta - #1210

Open
github-actions[bot] wants to merge 31 commits into
betafrom
development
Open

github-actions[bot] wants to merge 31 commits into
betafrom
development

Conversation

@github-actions

@github-actions github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

Automated PR to sync development changes to beta for beta release.

Merging this PR will trigger the beta release workflow.

Reminder: Add a major, minor, or patch label to this PR to control the version bump. Default is patch.

github-actions Bot and others added 3 commits October 7, 2026 12:57
…0261007125751

chore(sync): carry beta back into development
…1) (#1181)

* test(mobile): offline reading and accessibility audits on Android and iOS (tasks 3.4, 3.1)

OfflineReadingTest syncs, cuts the network and proves the server is out of
reach, unlocks offline, reads an item from the store with the last-synced
note, finds every edit refused, and syncs again once the network is back.
AccessibilityAuditTest runs the Accessibility Test Framework through Compose's
enableAccessibilityChecks on the main screens (API 34); AccessibilityAuditUITests
runs performAccessibilityAudit on the same screens on iOS. Both collect every
finding and fail once at the end with the list.

* build(mobile): name every shared-core test in the CI log

The Mobile jobs showed only the Gradle tasks. Ticking a task against CI
needs the test that ran, so the jvm, Android and iOS simulator tests now
log each test with its result.

* test(mobile): the offline test reads the store file without its key (task 1.6)

After the sync, the SQLCipher file and its journal hold no SQLite header and
none of the demo vault's names, logins or addresses, and plain SQLite
refuses to read it.

* docs(parity): clients-10 is building, with the merged mobile PRs and the preview release

parity_verify --strict: no finding but the unknown-cells census.

* build(mobile): checksums for the jars the Android test classpath selects

guava 31.0.1-android, checker-qual 3.22.1 and j2objc-annotations 1.3 win on
the androidTest classpath (the existing guava entries are the jre variant).
Their sha256 was checked against Maven Central's published sha1. The other
binaries of the accessibility test closure are listed too, so a version that
wins resolution is never missing.

* fix(mobile): the accessibility audit's findings on Android and iOS (task 3.1)

Android: the auto-lock radio rows were 24 dp touch targets; they are 48 dp.
iOS: Keepiq's own tint and secondary text colour pass WCAG AA (the system
blue is 4.0:1 on white), section headers use it, the generator's refresh
button takes taps on 44 pt, a Send row is one element, the code countdown
grows with Dynamic Type, and a long value wraps instead of clipping.
Three audit kinds are excluded with their reason in A11yExclusions: clipping
on single-line text fields, the item's own login or address as a label, and
SwiftUI text styles reported as partially unsupported.

* fix(mobile): the remaining iOS audit findings (task 3.1)

A darker red for destructive list buttons (the system red is 3.6:1 on
white), the code countdown in Keepiq's tint with primary text, a field row
that puts its buttons under a long value at the accessibility text sizes,
and a generated value that wraps. The audit no longer counts contrast on a
disabled control (WCAG 1.4.3 exempts inactive components) or on text that
iOS 26 fades under a bar on purpose (the scroll edge effect).

* fix(mobile): last iOS audit findings: explicit tint on Edit and Move, plain countdown label, no disabled Send password field

The one-time code gets its own list section, so its refresh does not re-lay out the address. The audit leaves out a contrast finding it cannot tie to an element only while a list row sits under a bar.

* test(mobile): measure contrast from the screenshot before counting an iOS audit finding

The audit flags the Edit button although its pixels are Keepiq's tint on white (7.1:1), the same as the Move button that passes. A contrast finding is now left out only when the measured ratio is 4.5:1 or more. The audit also holds the one-time code still, since a countdown redrawing during the pass made it report the address as clipped.

* fix(mobile): let a long address wrap at its slashes and dots on iOS

A value without spaces could only be cut off at large text sizes; the audit reported the address on the one-time code screen as clipped. A zero-width space after each slash, dot and @ gives it break points, while VoiceOver and Copy keep the value as it is. Drops the held countdown, which did not change the finding.

* docs(openspec): tick the clients-mobile-apps tasks CI now covers, split out the manual device checks
@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/keepiq @ 79bd172

Check PHP Vue Security License Tests
lint ✅
phpcs ✅
phpmd ✅
psalm ✅
phpstan ✅
phpmetrics ✅
eslint ✅
stylelint ✅
build ✅
check-manifest ✅
test-l10n ✅
format ✅
check-l10n-js ✅
check-schema-l10n ✅
composer ✅ ✅ 114/114
npm ✅ ✅ 660/660
app:check-code ⏭️
info.xml ✅
REUSE ✅
lockfile sync ✅
PHPUnit ⏭️ not run for this diff — no file in this diff matches the code globs, and none carries a source extension — the heavy tier has nothing to decide about it.
Newman ✅
Playwright ⏭️ not run for this diff — no file in this diff matches the code globs, and none carries a source extension — the heavy tier has nothing to decide about it.
Hydra gates ✅

Quality workflow — 2026-10-07 15:01 UTC

Download the full PDF report from the workflow artifacts.

rubenvdlinde and others added 8 commits October 7, 2026 21:15
…ived changes

Step 1: clients-15 gets openspec/changes/clients-vault-event-flow-triggers.
Step 2: twelve unbuilt rows pointed at changes that were archived on
2026-10-04; their links now name the archive path.
…delivered it

Step 3: 132 built rows had no link. 59 now name the archived change that
delivered them, 71 name the main spec (several changes shaped it), and
two (clients-16 theming, clients-17 walkthrough) were never specified.
…none

Step 4: extension generator, extension sends, extension vault, extension
offline snapshot and the metadata-only AI assistant tools were specified
and built but had no capability row. Competitor cells are unknown.
Step 5: 152 rows name their board(s) on canvas 5NkFW28vZUUij43xzxHg5a;
48 rows have no board, with the reason (backend, a Nextcloud or integriq
surface, or not designed yet).
…links

docs(openspec): specs for unbuilt capabilities, capability-to-spec links
…4 October

Ten rows are built on development and read built; apps-22 (registry
publication owed) and clients-01 (store listings owed) read building.
audit-15 stays partial with sharper evidence: no alert for failed
unlocks or admin changes.
clients-17 was built without a spec. The new main spec describes the
manifest tour, the lock-state gate and the per-user completion
preference as they are on development. clients-16 stays spec none:
theming comes from Nextcloud theming or thematiq.
docs(openspec): re-rated rows and specs for unspecified built capabilities
@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/keepiq @ 24aafeb

Check PHP Vue Security License Tests
lint ✅
phpcs ✅
phpmd ✅
psalm ✅
phpstan ✅
phpmetrics ✅
eslint ✅
stylelint ✅
build ✅
check-manifest ✅
test-l10n ✅
format ✅
check-l10n-js ✅
check-schema-l10n ✅
composer ✅ ✅ 114/114
npm ✅ ✅ 660/660
app:check-code ⏭️
info.xml ✅
REUSE ✅
lockfile sync ✅
PHPUnit ⏭️ not run for this diff — no file in this diff matches the code globs, and none carries a source extension — the heavy tier has nothing to decide about it.
Newman ✅
Playwright ⏭️ not run for this diff — no file in this diff matches the code globs, and none carries a source extension — the heavy tier has nothing to decide about it.
Hydra gates ✅

Quality workflow — 2026-10-07 21:25 UTC

Download the full PDF report from the workflow artifacts.

rubenvdlinde and others added 2 commits October 7, 2026 23:30
Archives client-side-key-generator and standalone-app-shell; the latter
removes every apphost-adoption requirement, so that capability is retired.
docs(openspec): archive pass, changes the code has delivered
@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/keepiq @ c45e175

Check PHP Vue Security License Tests
lint ✅
phpcs ✅
phpmd ✅
psalm ✅
phpstan ✅
phpmetrics ✅
eslint ✅
stylelint ✅
build ✅
check-manifest ✅
test-l10n ✅
format ✅
check-l10n-js ✅
check-schema-l10n ✅
composer ✅ ✅ 114/114
npm ✅ ✅ 660/660
app:check-code ⏭️
info.xml ✅
REUSE ✅
lockfile sync ✅
PHPUnit ⏭️ not run for this diff — no file in this diff matches the code globs, and none carries a source extension — the heavy tier has nothing to decide about it.
Newman ✅
Playwright ⏭️ not run for this diff — no file in this diff matches the code globs, and none carries a source extension — the heavy tier has nothing to decide about it.
Hydra gates ✅

Quality workflow — 2026-10-07 22:52 UTC

Download the full PDF report from the workflow artifacts.

rubenvdlinde and others added 2 commits October 8, 2026 07:27
…new boards

Every row with a Keepiq board now points at canvas part 2
(QAAxpcsFKBCvDUGbQbwtCa); clients-15 keeps part 1 for pipelinq's flow
boards. Five of the six new boards are mapped (KqRondleiding gives
clients-17 its first board); KqMeldingen is a catalogue of empty states
with no capability of its own.
docs(openspec): link capabilities to the split design canvas and its new boards
@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/keepiq @ 9e8b5cc

Check PHP Vue Security License Tests
lint ✅
phpcs ✅
phpmd ✅
psalm ✅
phpstan ✅
phpmetrics ✅
eslint ✅
stylelint ✅
build ✅
check-manifest ✅
test-l10n ✅
format ✅
check-l10n-js ✅
check-schema-l10n ✅
composer ✅ ✅ 114/114
npm ✅ ✅ 660/660
app:check-code ⏭️
info.xml ✅
REUSE ✅
lockfile sync ✅
PHPUnit ⏭️ not run for this diff — no file in this diff matches the code globs, and none carries a source extension — the heavy tier has nothing to decide about it.
Newman ✅
Playwright ⏭️ not run for this diff — no file in this diff matches the code globs, and none carries a source extension — the heavy tier has nothing to decide about it.
Hydra gates ✅

Quality workflow — 2026-10-08 05:56 UTC

Download the full PDF report from the workflow artifacts.

* chore(issues): add the fleet issue templates

* chore(issues): add the fleet issue templates

* chore(issues): add the fleet issue templates

* chore(issues): add the fleet issue templates
@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/keepiq @ a0d78e5

Check PHP Vue Security License Tests
lint ✅
phpcs ✅
phpmd ✅
psalm ✅
phpstan ✅
phpmetrics ✅
eslint ✅
stylelint ✅
build ✅
check-manifest ✅
test-l10n ✅
format ✅
check-l10n-js ✅
check-schema-l10n ✅
composer ✅ ✅ 114/114
npm ✅ ✅ 660/660
app:check-code ⏭️
info.xml ✅
REUSE ✅
lockfile sync ✅
PHPUnit ⏭️ not run for this diff — no file in this diff matches the code globs, and none carries a source extension — the heavy tier has nothing to decide about it.
Newman ✅
Playwright ⏭️ not run for this diff — no file in this diff matches the code globs, and none carries a source extension — the heavy tier has nothing to decide about it.
Hydra gates ✅

Quality workflow — 2026-10-08 12:27 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/keepiq @ 54d451d

Check PHP Vue Security License Tests
lint ✅
phpcs ✅
phpmd ✅
psalm ✅
phpstan ✅
phpmetrics ✅
eslint ✅
stylelint ✅
build ✅
check-manifest ✅
test-l10n ✅
format ✅
check-l10n-js ✅
check-schema-l10n ✅
composer ✅ ✅ 114/114
npm ✅ ✅ 660/660
app:check-code ⏭️
info.xml ✅
REUSE ✅
lockfile sync ✅
PHPUnit ⏭️ not run for this diff — no file in this diff matches the code globs, and none carries a source extension — the heavy tier has nothing to decide about it.
Newman ✅
Playwright ⏭️ not run for this diff — no file in this diff matches the code globs, and none carries a source extension — the heavy tier has nothing to decide about it.
Hydra gates ✅

Quality workflow — 2026-10-08 13:20 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/keepiq @ b8d5c4f

Check PHP Vue Security License Tests
lint ✅
phpcs ✅
phpmd ✅
psalm ✅
phpstan ✅
phpmetrics ✅
eslint ✅
stylelint ✅
build ✅
check-manifest ✅
test-l10n ✅
format ✅
check-l10n-js ✅
check-schema-l10n ✅
composer ✅ ✅ 114/114
npm ✅ ✅ 660/660
app:check-code ⏭️
info.xml ✅
REUSE ✅
lockfile sync ✅
PHPUnit ⏭️ not run for this diff — no file in this diff matches the code globs, and none carries a source extension — the heavy tier has nothing to decide about it.
Newman ✅ 177/177 · 20 skipped
Playwright ⏭️ not run for this diff — no file in this diff matches the code globs, and none carries a source extension — the heavy tier has nothing to decide about it.
Hydra gates ✅

Quality workflow — 2026-10-08 16:00 UTC

Download the full PDF report from the workflow artifacts.

…#1243)

Ruben decided on 2026-10-09 that connection certificates live in keepiq and
integriq shows their expiry with a renew link. Modifies integration-boundary
with one named exception (notAfter and a renew link, organisation broker
credentials minted by integriq only) and lets a minted certificate carry its
expiry. Spec only.
@github-actions

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/keepiq @ db11974

Check PHP Vue Security License Tests
lint ✅
phpcs ✅
phpmd ✅
psalm ✅
phpstan ✅
phpmetrics ✅
eslint ✅
stylelint ✅
build ✅
check-manifest ✅
test-l10n ✅
format ✅
check-l10n-js ✅
check-schema-l10n ✅
composer ✅ ✅ 114/114
npm ✅ ✅ 660/660
app:check-code ⏭️
info.xml ✅
REUSE ✅
lockfile sync ✅
PHPUnit ⏭️ not run for this diff — no file in this diff matches the code globs, and none carries a source extension — the heavy tier has nothing to decide about it.
Newman ✅ 177/177 · 20 skipped
Playwright ⏭️ not run for this diff — no file in this diff matches the code globs, and none carries a source extension — the heavy tier has nothing to decide about it.
Hydra gates ✅

Quality workflow — 2026-10-09 22:36 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/keepiq @ 0aaf2a9

Check PHP Vue Security License Tests
lint ✅
phpcs ✅
phpmd ✅
psalm ✅
phpstan ✅
phpmetrics ✅
eslint ✅
stylelint ✅
build ✅
check-manifest ✅
test-l10n ✅
format ✅
check-l10n-js ✅
check-schema-l10n ✅
composer ✅ ✅ 114/114
npm ✅ ✅ 660/660
app:check-code ⏭️
info.xml ✅
REUSE ✅
lockfile sync ✅
PHPUnit ⏭️ not run for this diff — no file in this diff matches the code globs, and none carries a source extension — the heavy tier has nothing to decide about it.
Newman ✅ 177/177 · 20 skipped
Playwright ⏭️ not run for this diff — no file in this diff matches the code globs, and none carries a source extension — the heavy tier has nothing to decide about it.
Hydra gates ✅

Quality workflow — 2026-10-12 09:56 UTC

Download the full PDF report from the workflow artifacts.

SudoThijn and others added 5 commits October 12, 2026 14:28
A folder delete with a resolution plan moved or purged the folder's direct secrets before it applied the subfolder actions, so a `keep` that clashed with a name one level up answered 409 after the secrets were already gone (keepiq#1248).

- Every subfolder action and every kept name is checked before the first write.
- The writes of a cascade or plan delete commit in one transaction.
- A kept subfolder named like the deleted folder is no longer refused with a 409, since the only folder with its name is the one being deleted.
…t files cannot honour

The folder-delete scenario now names the exception for attachment files already purged inside the transaction, which a rollback cannot restore.

Thread: #1250 (comment)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Wilco Louwerse <wilco@louwerse.com>
fix(secrets): make folder delete all-or-nothing
@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/keepiq @ 9197b7c

Check PHP Vue Security License Tests
lint ✅
phpcs ✅
phpmd ✅
psalm ✅
phpstan ✅
phpmetrics ✅
eslint ✅
stylelint ✅
build ✅
check-manifest ✅
test-l10n ✅
format ✅
check-l10n-js ✅
check-schema-l10n ✅
composer ✅ ✅ 114/114
npm ✅ ✅ 660/660
app:check-code ⏭️
info.xml ✅
REUSE ✅
lockfile sync ✅
PHPUnit ✅ 2136/2136 · 3 skipped (8 legs, 2018–2136 tests per leg)
Newman ✅ 177/177 · 20 skipped
Playwright ✅ 99/99 · 6 skipped
Hydra gates ✅

Quality workflow — 2026-10-12 13:29 UTC

Download the full PDF report from the workflow artifacts.

This branch has not been deployed

No deployments
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.

3 participants