fix(secrets): complete the cards and table views and move vault context to Proton-style indicators - #607
Open
remko48 wants to merge 5 commits into
Conversation
…ble views
Fix-brief bugs 8+9 (stage 5). The List view rendered each secret with its
type icon and password-strength pill, but the cards and table views fell
back to CnIndexPage's generic renderer driven by a name+url schema — the
same secret lost its type and strength the moment the user switched view.
Cards now fill CnIndexPage's #card slot with the SAME row component the
list uses (SecretListItem: favicon/type icon, strength pill, outstanding-
request, blocked and compromised states, copy button) boxed in a card
shell that mirrors CnObjectCard's tokens, with the selection checkbox
re-wired like the existing #list-item override. The table grows Type and
Strength columns in listSchema, rendered through #column-type and
#column-strength cell slots since their values live in the type/health
stores rather than on the row; both are non-sortable — no row field backs
them. Unscored Strength cells render a muted em dash instead of a blank
hole. The type→icon map moves into a shared SecretTypeIcon component so
the three views cannot drift apart again.
One new l10n key ("Strength") ships translated into all 36 locales with
the catalogs regenerated. 8 new unit tests cover the icon map and its
fallback, the column set and order, the sort opt-out, the translated type
label, and the badge-or-dash rule.
"All secrets" opened with a Vaults strip above the list — navigation posing as contents. It duplicated the nav's folder tree one panel away and pushed every secret below a screen of vault rows, worst on mobile where the nav toggle already opens the vault list in one tap (Proton Pass comparison). The root is a cross-vault query, not a container the user is inside. folderRows now returns nothing at the root; inside a vault or folder the subfolder rows are unchanged — there they ARE the contents of the thing being looked at. The vault-glyph rendering, its three view helpers and the strip's level-dependent caption go with it. The folder-sharing e2e workflow reaches a vault through the nav tree instead of the removed root rows, and a new unit spec pins both sides of the rule.
… tag Follow-through on removing the root Vaults strip: the cross-vault context it carried moves into two Proton-style indicators instead of container rows. A new VaultIndicator component renders both shapes from the vault's own Stage 9 icon and color, so the glyphs cannot drift: a compact icon-only dot on the rows in All secrets — list, cards, and the table's Name cell — with a tooltip plus screen-reader-only vault name (never inside a vault, where the page itself is the location), and an icon+name tag in the vault's color under the secret's title in the detail sidebar, which renders wherever the sidebar opens. rootVaultOf() in utils/vaultList.js walks a secret's folderId up to its top-level vault, guarded against parentId cycles and dangling parents. No new translatable strings — the indicators show vault names, which are data. 15 new unit tests cover the walk, both indicator variants with the icon fallback, the root-only rule for the dot, and the sidebar's resolution through nested folders.
remko48
changed the base branch from
fix/dashboard-tiles-relock-vault
to
development
September 3, 2026 11:29
The warning shipped with PR #599 in English and Dutch only — it consumed the parity ratchet's last slack, and the other locales were left to the tracked translation debt (#180). Backfill German and French now; the remaining locales follow with the bulk translation pass, where the long-tail languages get their native read-through.
Contributor
Quality Report — ConductionNL/keepiq @
|
| 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 | ✅ | ✅ 111/111 | |||
| npm | ✅ | ✅ 536/536 | |||
| app:check-code | ⏭️ | ||||
| info.xml | ✅ | ||||
| REUSE | ❌ | ||||
| PHPUnit | ✅ | ||||
| Newman | ✅ | ||||
| Playwright | ⏭️ deferred — runs on the promotion into beta/main, not on a pull request into development | ||||
| Hydra gates | ✅ |
Quality workflow — 2026-09-03 11:50 UTC
Download the full PDF report from the workflow artifacts.
…type-icon-strength-badge
Contributor
Quality Report — ConductionNL/keepiq @
|
| 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 | ✅ | ✅ 111/111 | |||
| npm | ✅ | ✅ 536/536 | |||
| app:check-code | ⏭️ | ||||
| info.xml | ✅ | ||||
| REUSE | ❌ | ||||
| PHPUnit | ✅ | ||||
| Newman | ✅ | ||||
| Playwright | ⏭️ deferred — runs on the promotion into beta/main, not on a pull request into development | ||||
| Hydra gates | ❌ |
Quality workflow — 2026-09-03 12:04 UTC
Download the full PDF report from the workflow artifacts.
remko48
changed the base branch from
development
to
fix/dashboard-tiles-relock-vault
September 3, 2026 14:28
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.
Three changes to the vault page's list surfaces, addressing fix-brief bugs 8+9 and a navigation review of the All-secrets root.
Type icons and strength badges in every view. The List view rendered each secret with its type icon and password-strength pill, but cards and table fell back to the library's generic renderer on a name+url schema — the same secret lost its type and strength the moment the user switched view. Cards now render through the same row component the list uses (favicon/type icon, strength pill, request/blocked/compromised states, copy button) boxed in a card shell matching
CnObjectCard's tokens; the table grows non-sortable Type and Strength columns rendered through cell slots, with a muted em dash where no score exists so the column shows no blank holes. The type→icon map moved into a sharedSecretTypeIconcomponent so the views cannot drift apart again. One new l10n key ("Strength"), translated into all 36 locales.No vault rows above the secrets in All secrets. The root opened with a Vaults strip — navigation posing as contents, duplicating the nav's folder tree and pushing every secret below a screen of vault rows (worst on mobile, where the nav toggle already opens the vault list in one tap). The strip is gone at the root; subfolder rows inside a vault are unchanged, where they are the contents of the thing being looked at. The folder-sharing e2e workflow now descends into vaults through the nav tree.
Proton-style vault indicators carry the cross-vault context instead. A new
VaultIndicatorcomponent renders the vault's own icon and color in two shapes: a compact icon-only dot on the rows in All secrets — list, cards, and the table's Name cell — with a tooltip plus screen-reader-only vault name (never inside a vault, where the page itself is the location), and an icon+name tag in the vault's color under the secret's title in the detail sidebar.rootVaultOf()walks a secret's folder up to its top-level vault, guarded against cycles.23 new unit tests across the three commits; full suite 785/785, hydra gates green (75/75 applicable).