Repository navigation
feat(secrets): harden the secret form - #2939
Merged
Merged
Conversation
🎩 PreviewA preview build has been created at: |
This was referenced Oct 22, 2026
camielvs
force-pushed
the
cvs/secret-form-hardening
branch
from
October 23, 2026 22:58
4b24e0c to
5a3fe3a
Compare
camielvs
force-pushed
the
cvs/secret-form-hardening
branch
from
October 26, 2026 21:56
0813988 to
a411991
Compare
camielvs
force-pushed
the
cvs/secret-form-hardening
branch
2 times, most recently
from
October 29, 2026 20:21
bb20e5a to
d795094
Compare
camielvs
commented
Oct 29, 2026
camielvs
force-pushed
the
cvs/secret-form-hardening
branch
from
October 29, 2026 23:33
d795094 to
103937d
Compare
camielvs
commented
Oct 30, 2026
camielvs
commented
Oct 30, 2026
camielvs
commented
Oct 30, 2026
camielvs
commented
Oct 30, 2026
camielvs
commented
Oct 30, 2026
camielvs
commented
Oct 30, 2026
camielvs
commented
Oct 30, 2026
camielvs
force-pushed
the
cvs/secret-form-hardening
branch
from
October 30, 2026 18:51
103937d to
1b26414
Compare
camielvs
force-pushed
the
cvs/secret-form-hardening
branch
from
October 30, 2026 20:35
1b26414 to
ae35ec4
Compare
camielvs
marked this pull request as ready for review
October 30, 2026 21:24
camielvs
force-pushed
the
cvs/secret-form-hardening
branch
from
October 30, 2026 21:46
ae35ec4 to
5920f14
Compare
maxy-shpfy
approved these changes
Oct 30, 2026
Five fixes to the add and replace form, carried over from the superseded workspace-secrets draft (#2886). They apply to Settings → Secrets today and to the team secrets screens that follow. - The value field sets `autocomplete="new-password"`, so browsers stop offering a saved login password for it. - A name containing `/`, or a name that is `.` or `..`, is refused. The name is a path segment in the replace and delete requests, and the URL parser collapses dot segments, so such a secret could be created but never changed or removed. - Name and description stop at 255 characters, the size of their backend columns, and say so when the limit is reached. Longer values failed with a bare "Failed to add secret" or were cut off. - Deleting asks first, with a "Delete" button. A deleted secret makes every run that uses it fail at launch, and once secrets are shared with a team that is everyone's runs. - Description and expiry fields, using the expiry picker from #2886. The backend only writes either when a value is sent, so neither can be cleared once set: replacing keeps the current description and expiry unless a new one is given, and the form says so. Expiry is not enforced by the backend, so the form calls it a reminder. The Settings list shows a secret's description under its name. The E2E `removeSecret` helper now confirms the delete dialog, found by its title. The React Compiler covers the new `ExpiryDatePicker`. Tests get one `ResizeObserver` stub in `vitest-setup.js` instead of a copy per suite. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
An expiry chosen as Dec 25 came back as Dec 26. The form sent the end of the day as 23:59:59.999 UTC, and a database that stores datetimes to the second rounds that up to midnight. The form now sends the day's last whole second. The hint under a new secret's expiry is gone. Replacing a secret that already has one still says which date it keeps. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
camielvs
force-pushed
the
cvs/secret-form-hardening
branch
from
October 31, 2026 00:12
5920f14 to
e0fb413
Compare
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.
Description
Six fixes to the add and replace secret form. They apply to Settings → Secrets today, and to the team secrets screens later in this stack.
autocomplete="new-password", so browsers stop offering a saved login password for it./, or a name that is.or.., is refused. The name is a path segment in the replace and delete requests, and the URL parser collapses dot segments, so such a secret could be created but never changed or removed.23:59:59.999up to midnight, which moved a Dec 25 expiry to Dec 26.The E2E
removeSecrethelper now confirms the delete dialog, found by its title.Related Issue and Pull requests
Type of Change
Line Breakdown
Checklist
Screenshots (if applicable)
None yet.
Test Instructions
In Settings → Secrets:
/, then the name... The form refuses both.Additional Comments
ExpiryDatePickeris added toreact-compiler.config.js.ResizeObserverstub invitest-setup.jsinstead of a copy per suite.🤖 Generated with Claude Code