Skip to content

fix(security): make XEdDSA signing shield green & prominent#5980

Merged
jamesarich merged 1 commit into
mainfrom
feat/xeddsa-signing-shield-color
Jun 27, 2026
Merged

fix(security): make XEdDSA signing shield green & prominent#5980
jamesarich merged 1 commit into
mainfrom
feat/xeddsa-signing-shield-color

Conversation

@jamesarich

Copy link
Copy Markdown
Collaborator

Follow-up to #5976 (XEdDSA signing UI), addressing design review feedback on design#113.

Why

The verified-signed shield was easy to miss: white in message bubbles (same as the transport/hop metadata icons) and faded primary at 14dp in node details. Reviewers asked for the verified state to read at a glance — green and prominent.

🛠️ What changed

  • Tint the shield with the affirmative StatusGreen already used by the other "good" status icons (signal, battery, key-status) instead of white / faded-primary.
  • Size it up so it stands out: 18dp in message bubbles (vs 16dp metadata icons), 20dp in the node "Signed node" row (vs 14dp).
  • Added optional iconTint / iconSize params to InfoItem (defaults unchanged, so every other row is untouched).

🧪 Testing performed

  • ./gradlew spotlessCheck detekt assembleFdroidDebug — green.
  • ./gradlew :screenshot-tests:validateDebugScreenshotTest — all 307 pass; the two signed previews' reference PNGs regenerated to show the green shield.

🤖 Generated with Claude Code

Review feedback (design#113): the verified-signed shield was white in
message bubbles and faded-primary at 14dp in node details, so it read as
incidental. Tint it with the affirmative StatusGreen used by the other
"good" status icons and size it up (18dp in bubbles, 20dp in the node
"Signed node" row) so verified state reads at a glance. Adds optional
iconTint/iconSize params to InfoItem. Screenshots regenerated.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions github-actions Bot added bugfix PR tag enhancement New feature or request labels Jun 27, 2026
@github-actions

Copy link
Copy Markdown
Contributor

📄 Docs staleness check — advisory

This PR modifies user-facing UI source files but does not update any page under docs/en/user/ or docs/en/developer/.

⚠️ Doc changes propagate to 3 consumers: in-app docs browser, Jekyll site (GitHub Pages), and meshtastic.org (Docusaurus sync). Updating a page in docs/en/ automatically flows to all three.

Changed source files:

feature/messaging/src/commonMain/kotlin/org/meshtastic/feature/messaging/component/MessageItem.kt
feature/node/src/commonMain/kotlin/org/meshtastic/feature/node/component/NodeDetailComponents.kt
feature/node/src/commonMain/kotlin/org/meshtastic/feature/node/component/NodeDetailsSection.kt

What to check:

Changed area Likely doc page
feature/messaging/ docs/en/user/messages-and-channels.md
feature/node/ docs/en/user/nodes.md or docs/en/user/node-metrics.md
feature/map/ docs/en/user/map-and-waypoints.md
feature/connections/ docs/en/user/connections.md
feature/settings/ docs/en/user/settings-radio-user.md or docs/en/user/settings-module-admin.md
feature/firmware/ docs/en/user/firmware.md
feature/intro/ docs/en/user/onboarding.md
feature/discovery/ docs/en/user/discovery.md
feature/docs/ Internal docs infrastructure
core/ui/ docs/en/developer/codebase.md or component-specific user pages

New page checklist (if adding a new doc page):

  1. Create the .md file in docs/en/user/ or docs/en/developer/ with last_updated frontmatter
  2. Register in DocBundleLoader.kt with string resources (in-app browser)
  3. Jekyll and Docusaurus sync pick up new pages automatically — no config change needed

If this PR does not require a doc update (e.g., internal refactor, bug fix, test change), add the skip-docs-check label to dismiss this check.

Cross-platform note: This check is advisory while doc coverage matures. Both Android and Apple repos use the same skip-docs-check label and advisory severity. See meshtastic/design standards for shared conventions.

@github-actions

Copy link
Copy Markdown
Contributor

🖼️ Preview staleness check — advisory

This PR modifies UI composables but does not update any *Previews.kt files.

Previews power screenshot tests and in-app docs screenshots. Keeping them current ensures visual regression coverage stays accurate.

Changed UI files:

feature/messaging/src/commonMain/kotlin/org/meshtastic/feature/messaging/component/MessageItem.kt
feature/node/src/commonMain/kotlin/org/meshtastic/feature/node/component/NodeDetailComponents.kt
feature/node/src/commonMain/kotlin/org/meshtastic/feature/node/component/NodeDetailsSection.kt

What to check:

Pattern Preview file convention
feature/{name}/…/ui/ or component/ feature/{name}/…/*Previews.kt
core/ui/…/ core/ui/…/ (previews colocated)

Adding previews checklist:

  1. Create or update a *Previews.kt file in the same module with @PreviewLightDark
  2. Baseline the public preview in the module detekt-baseline.xml (or @Suppress("PreviewPublic")) if it is consumed cross-module by a screenshot wrapper
  3. Add a @PreviewTest wrapper: in screenshot-tests/src/screenshotTest/ for a regression-gated component, or docs-screenshots/src/screenshotTest/ for a doc-framed composition
  4. Run ./gradlew :screenshot-tests:updateDebugScreenshotTest (and :docs-screenshots:updateDebugScreenshotTest for doc compositions) to generate reference images

If this PR does not require preview updates (e.g., logic-only change, non-visual refactor), add the skip-preview-check label to dismiss.

@jamesarich jamesarich merged commit e9707ec into main Jun 27, 2026
22 checks passed
@jamesarich jamesarich deleted the feat/xeddsa-signing-shield-color branch June 27, 2026 16:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bugfix PR tag enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant