Web redesign#145
Conversation
Resolve conflicts across 64 files. Kept base (web-redesign) native chat UX rework, simplified terminal shell, native library/messenger/integration pages, shell routing, and the ChatAgentSelection model; layered in the PR's design-system polish (Alert, InfoTip, branded scrollbar, register/setup flow polish, Stepper locking, a11y, full-width Select). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Design system: Alert, InfoTip, branded scrollbar + register flow polish
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 530abd50c3
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| const statusStore = ctx.adapters.status as typeof ctx.adapters.status & { | ||
| listAll?: () => AdapterStatusRecord[]; | ||
| }; | ||
| const statuses = typeof statusStore.listAll === "function" ? statusStore.listAll() : []; |
There was a problem hiding this comment.
Restrict adapter.list to visible accounts
When a non-root user calls the new adapter.list, this reads statusStore.listAll(), so the response includes every cached adapter account in the kernel DO. Since regular users are granted adapter.list, they can see account IDs, errors, and extra metadata for channels they have no identity link to; other adapter target paths filter through identity links. Please filter these statuses to the caller's visible accounts or restrict the syscall to root/service callers.
Useful? React with 👍 / 👎.
| const [val, setVal] = useState<string | undefined>(undefined); | ||
| const [revealed, setRevealed] = useState(false); | ||
|
|
||
| const value = val !== undefined ? val : props.value ?? ""; |
There was a problem hiding this comment.
Keep TextInput synced with controlled values
Once a user edits this component, val stays defined and future props.value changes are ignored. Any parent-driven reset now leaves stale text in the DOM; for example the session state clears loginPassword/loginToken after a successful login, but the lock/login screen can still retain the old secret in the field, and actions like clearing library search won't visually clear. Please either treat value as controlled when provided or resync the internal state when props.value changes.
Useful? React with 👍 / 👎.
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8cdc12b176
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| const rawIdx = idxState === undefined ? props.value ?? 0 : idxState; | ||
| const idx = Math.max(0, Math.min(Number(rawIdx) || 0, opts.length - 1)); |
There was a problem hiding this comment.
Keep Select synced with parent value
When a parent-controlled Select is changed once, idxState stays defined and this line stops honoring future value prop updates. This breaks flows that reset or externally update the selected value, such as the settings form Reset button in ConsoleConfigPage or setup-guide changes to the timezone: the saved draft changes, but the dropdown continues to display the stale selection. Treat value/onChange as controlled like Stepper, or clear the internal index when props.value changes.
Useful? React with 👍 / 👎.
No description provided.