Repository navigation
fix(fields): password inputs carry an autocomplete token (objectui#13295) - #13300
Merged
objectstack-fleet[bot] merged 1 commit intoOct 21, 2026
Merged
Conversation
…295) The password widget's editable input now sets `autocomplete`: `current-password` when the field name has a word `current`, `old` or `existing`, `new-password` otherwise. An action param of type `password` or `secret` reaches this widget through `paramToField`, so the console's change-password dialog gets the right tokens. The pin renders the real dialog; a `text` param is the control. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XVp19E1MYUTFM3dnkwz8gB
Contributor
✅ Console Performance Budget
The eager closure is every chunk the entry reaches through static imports — what the browser fetches and parses before the app renders. The entry chunk on its own is a small fraction of it. 📦 Bundle Size Report
Size Limits
|
objectstack-fleet
Bot
deleted the
claude/issue-13295-cloud-console-findings
branch
October 21, 2026 06:14
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.
Part of #13295
Clause-②: no
The card's three findings, each measured on objectui
main(base0093b2c826) first. One still needs code that can land now (the missingautocompleteon password inputs). One is already fixed onmain(html lang). One is held for a seat decision (block namespaces). This PR carries the first. The card stays open for item 2, so the first line isPart of.What changed
@object-ui/fields'PasswordFieldnow setsautocompleteon its editable input:current-passwordwhen the field name contains the wordcurrent,oldorexisting. The name is split into words at_,-,., spaces and camelCase boundaries, socurrent_password,oldPasswordandexisting-passall match.new-passwordfor every other name, including everysecret.Why the name:
@objectstack/specdeclares no autocomplete key on a field or an action param, so the widget derives the token from the one input every caller already gives it. Whynew-passwordas the default instead ofoff: browsers ignoreoffon password inputs and offer the saved login password anyway. That is the wrong answer for a new password or an API key.new-passwordkeeps the saved login out and lets a password manager suggest and save a new value. The helper is module-local, so there is no new export.An action param of type
passwordorsecretreaches this widget throughparamToField→resolveParamWidgetType. A change-password dialog therefore getscurrent-passwordandnew-passwordwith no change in app-shell.Acceptance notes — per-item verdicts on
mainmainmain; the rest is fixed in this PRActionParamDialogwithcurrent_password(password) andtok(secret) params. Both inputs came outtype="password", each with the show/hide toggle button beside it, and neither had anautocompleteattribute.paramToFieldmapspassword,secretandtexttopassword,passwordandtext. So the masking and the toggle are already onmain, and cloud's pin bump brings them. The missingautocompleteis what this PR fixes.productBlocksonmainlogs fiveRegistering component "X" without a namespace is deprecatedwarnings, one each forhero,stat,usage-bar,checklistandtile-grid. The ruled change,namespace: 'app-shell'on the five calls, works. Baretype: 'hero'still renders,app-shell:herorenders too, and no warning is logged. But regeneratingKNOWN_SCHEMA_TYPESadds fiveapp-shell:keys thatobjectui validaterefuses attype. That raisesregistered-types-validate-ratchet-10859'sNAMESPACED_REFUSED_AT_TYPEfrom 302 to 307, and that pin says it never rises. The fork goes to the seat (see the report on the card). The item-2 diff is not in this PR.html langstaysenafter switching to Chinesemain; no codeI18nProviderinen, sawdocument.documentElement.langreaden, calledchangeLanguage('zh'), and then readzh.provider.tsx'slanguageChangedhandler writes it, andapps/console/index.html'slang="en"is only the first-paint value. Cloud's pin bump brings this.Not touched here: the card's appendix items, objectui#13161 and objectui#5544.
Tests
New file
packages/app-shell/src/views/ActionParamDialog.passwordParam-13295.test.tsxrenders the real dialog with real widgets:current_password/new_passwordpair renderstype="password"withcurrent-password/new-password;oldPasswordreads as the current password;type="text"and back topassword;secretparam renderstype="password"withnew-password;textparam renderstype="text"with noautocomplete.Ablation (fix committed at
94e4f8d720, then mutated). Deleting theautoComplete=line throughablation-replace.mjs(anchor count 1 → 0, blobccc024acdfac→f634dd6ee3ec) turned the threeautocompletetests red. The toggle andtextcontrols stayed green:Tests 3 failed | 2 passed (5). Restore: blob after restoreccc024acdfacequals the HEAD blob, andgit diff HEADis empty.Gates (at
94e4f8d720)Closure build
turbo run build --filter=@object-ui/app-shell^...: 28/28 tasks.type-checkpassed for@object-ui/fieldsand@object-ui/app-shell. The new test is in app-shell'stsconfig.test.jsonprogram (--listFilesOnlycount 1).Targeted vitest, one package at a time,
--maxWorkers=1, all green:ActionParamDialog.test,ActionParamDialog.ariaRequired,paramToField.testand the two product-block files.PasswordField.The full
packages/fields/andpackages/app-shell/directories are left to CI.Narrowed
eslint --no-inline-configon the two changed source files: 2 files, 0 errors, 0 warnings. The repo config enables no type-aware linting, so this diff cannot change the lint result for any file it does not touch.Each of these exited 0:
check:phantom-deps,self-import,unreferenced-sources,doc-example-readers,handler-key-reads,side-effects-array,element-data-source-declaration,spec-symbols,action-forward-parity,designer-field-key-parity,icon-record-names,i18n-keys,i18n-drift,i18n-designer-parity,control-bytes,check-hand-rolled-comment-mask,check-changeset-fixed,check-changeset-presenceandcheck:new-line-citations.Changeset:
.changeset/13295-cloud-console-findings.md, a patch for@object-ui/fields.Session:
https://claude.ai/code/session_01XVp19E1MYUTFM3dnkwz8gBGenerated by Claude Code