fix: use borderElement for unchecked checkbox visibility (LUM-751)#23992
Merged
Conversation
The ToS checkbox border used VColor.borderBase (#24292E dark) which is identical to VCard's VColor.surfaceLift background (#24292E dark), making the unchecked checkbox completely invisible in dark mode. Switch to VColor.borderElement (#5A6672 dark / #CFCCC9 light) which is the semantic token for interactive element borders and provides clear contrast against the card background in both color schemes. Closes LUM-751 Co-Authored-By: ashlee@vellum.ai <ashlee@vellum.ai>
Contributor
Author
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
ashleeradka
approved these changes
Apr 7, 2026
noanflaherty
pushed a commit
that referenced
this pull request
Apr 7, 2026
…23992) The ToS checkbox border used VColor.borderBase (#24292E dark) which is identical to VCard's VColor.surfaceLift background (#24292E dark), making the unchecked checkbox completely invisible in dark mode. Switch to VColor.borderElement (#5A6672 dark / #CFCCC9 light) which is the semantic token for interactive element borders and provides clear contrast against the card background in both color schemes. Closes LUM-751 Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: ashlee@vellum.ai <ashlee@vellum.ai>
2 tasks
noanflaherty
added a commit
that referenced
this pull request
Apr 7, 2026
* fix: use borderElement for unchecked checkbox visibility (LUM-751) (#23992) The ToS checkbox border used VColor.borderBase (#24292E dark) which is identical to VCard's VColor.surfaceLift background (#24292E dark), making the unchecked checkbox completely invisible in dark mode. Switch to VColor.borderElement (#5A6672 dark / #CFCCC9 light) which is the semantic token for interactive element borders and provides clear contrast against the card background in both color schemes. Closes LUM-751 Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: ashlee@vellum.ai <ashlee@vellum.ai> * fix: enable link click handling in VSelectableTextView (#23986) Add NSTextViewDelegate to Coordinator with textView(_:clickedOnLink:at:) to open clicked links in the default browser via NSWorkspace. The NSTextView was already styling links (tint color, underline, pointer cursor) but had no delegate to handle click events, making links visually styled but inert. Closes LUM-748 Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: ashlee@vellum.ai <ashlee@vellum.ai> * fix: prevent onboarding from repeating name confirmation after tool calls (#23989) The agentic loop calls the LLM again after tool results return. Combined with "talk before you work" (SOUL.md) and "save immediately" (BOOTSTRAP.md), the model would confirm the user's name, call file_edit, then re-confirm the name in the continuation response. Add explicit guidance in both BOOTSTRAP.md and SOUL.md to not repeat text that was already shown before tool calls. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Update Vellum Cloud onboarding copy to emphasize always-on availability (#24022) Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * [LUM-753] Improve client-side dictation resilience (#24042) * [LUM-753] Improve dictation resilience: reduce timeout, use warning-level logs, add timing - Reduce dictation HTTP timeout from 10s to 5s so the client falls back to raw transcription faster when the daemon is unreachable - Downgrade failure logs from error to warning since these are expected failures with graceful recovery (not actionable errors) - Add elapsed time to all failure log messages for debugging latency - Improve fallback log to include transcription length for diagnostics Co-Authored-By: tkheyfets <timur@vellum.ai> * Apply suggestions from code review Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com> --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: tkheyfets <timur@vellum.ai> Co-authored-by: Noa Flaherty <noa@vellum.ai> --------- Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: ashlee@vellum.ai <ashlee@vellum.ai> Co-authored-by: asharma53 <64060709+asharma53@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: tkheyfets <timur@vellum.ai>
vellum-automation Bot
added a commit
that referenced
this pull request
Apr 7, 2026
* Release v0.6.2 * Cherry-pick fixes into release/v0.6.2 (#24074) * fix: use borderElement for unchecked checkbox visibility (LUM-751) (#23992) The ToS checkbox border used VColor.borderBase (#24292E dark) which is identical to VCard's VColor.surfaceLift background (#24292E dark), making the unchecked checkbox completely invisible in dark mode. Switch to VColor.borderElement (#5A6672 dark / #CFCCC9 light) which is the semantic token for interactive element borders and provides clear contrast against the card background in both color schemes. Closes LUM-751 Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: ashlee@vellum.ai <ashlee@vellum.ai> * fix: enable link click handling in VSelectableTextView (#23986) Add NSTextViewDelegate to Coordinator with textView(_:clickedOnLink:at:) to open clicked links in the default browser via NSWorkspace. The NSTextView was already styling links (tint color, underline, pointer cursor) but had no delegate to handle click events, making links visually styled but inert. Closes LUM-748 Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: ashlee@vellum.ai <ashlee@vellum.ai> * fix: prevent onboarding from repeating name confirmation after tool calls (#23989) The agentic loop calls the LLM again after tool results return. Combined with "talk before you work" (SOUL.md) and "save immediately" (BOOTSTRAP.md), the model would confirm the user's name, call file_edit, then re-confirm the name in the continuation response. Add explicit guidance in both BOOTSTRAP.md and SOUL.md to not repeat text that was already shown before tool calls. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Update Vellum Cloud onboarding copy to emphasize always-on availability (#24022) Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * [LUM-753] Improve client-side dictation resilience (#24042) * [LUM-753] Improve dictation resilience: reduce timeout, use warning-level logs, add timing - Reduce dictation HTTP timeout from 10s to 5s so the client falls back to raw transcription faster when the daemon is unreachable - Downgrade failure logs from error to warning since these are expected failures with graceful recovery (not actionable errors) - Add elapsed time to all failure log messages for debugging latency - Improve fallback log to include transcription length for diagnostics Co-Authored-By: tkheyfets <timur@vellum.ai> * Apply suggestions from code review Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com> --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: tkheyfets <timur@vellum.ai> Co-authored-by: Noa Flaherty <noa@vellum.ai> --------- Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: ashlee@vellum.ai <ashlee@vellum.ai> Co-authored-by: asharma53 <64060709+asharma53@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: tkheyfets <timur@vellum.ai> --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Noa Flaherty <noa@vellum.ai> Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: ashlee@vellum.ai <ashlee@vellum.ai> Co-authored-by: asharma53 <64060709+asharma53@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: tkheyfets <timur@vellum.ai>
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.
Summary
The ToS consent checkbox on the onboarding screen is invisible when unchecked in dark mode. The unchecked border uses
VColor.borderBase(#24292Ein dark mode), which is identical to theVCardbackground colorVColor.surfaceLift(#24292Ein dark mode) — zero contrast.Switches the border token to
VColor.borderElement(#5A6672dark /#CFCCC9light), which is the semantic token for interactive element borders and provides clear contrast against the card background in both color schemes.Review & Testing Checklist for Human
borderElementis slightly darker thanborderBasein light mode)borderElementis the correct semantic token per the design system's Figma spec for this type of interactive form element borderNotes
borderBase. PR fix: replace auxWhite-on-primaryBase with VButton across the app #23802 fixed the checked-state (white-on-white checkmark) but missed the unchecked border.Toggle(.checkbox)was previously tried (Fix ToS checkbox state desync using @AppStorage #23419) and abandoned becauseToggleStyleintercepts clicks on macOS, so the currentButton-based checkbox is intentional.Closes LUM-751
Link to Devin session: https://app.devin.ai/sessions/a84f335bf6954d3db8c38b3534a1baad
Requested by: @ashleeradka