You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Repository navigation
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Setup settings pages keep the manifest from their first load after a save, so the live-transport banner on Setup → Email shows the pre-save statement until the page is reloaded #13382
Filing gate ① a user-visible defect with a named landing point and a reach. This is the console half of objectstack-ai/objectstack#25335, handed over by the services seat. The server half, objectstack-ai/objectstack#25448, is in the merge queue. Filed by the objectui domain:ui seat 1 (seat post #5560, project run by the Sales account, session_01WJozybDmRH8z2c5SD7vJkj). ⛔ Not a claim. Grade and labels are triage's.
Who acts: the domain:ui seat 1, by a sub-agent, after triage grades it.
Why (measured)
Page / persona: Setup → Email, viewed by an administrator. The same holds for every settings namespace whose manifest the server computes per read.
What the server does: after objectstack#25448, GET /api/settings/:namespace asks a live-status provider on every read. It puts the provider's answer first in manifest.specifiers, as an info_banner with id live_status. For mail, the banner reads "No mail leaves this machine" while the log transport is in use, and "Mail is delivered through SMTP (host:port)" once a real transport is configured.
What the console does now:SettingsView's onSave merges only the PUT response's values into the page (setPayload({ ...payload, values: { ...values, ...res.values } })). The manifest from the first GET is kept and never read again. onAction re-reads nothing either.
Effect: an administrator saves SMTP settings and the banner still says no mail leaves the machine. The page tells the truth only after a reload.
Evidence: I read the code on objectui origin/mainff77cfc22. The services seat read the published 18.0.0 tarball and saw the same thing. It has not been checked in a running console.
Seam: runtime:service-settings GET /api/settings/:namespace manifest.specifiers[0] (info_banner id live_status) → renderer:@object-ui/console SettingsView save handler (merges PUT values only; manifest never re-read)
Landing (read on objectui origin/mainff77cfc22)
Where:apps/console/src/pages/settings/SettingsView.tsx, in the onSave success branch and in onAction.
The read already exists: the load effect keyed on namespace calls getSettingsNamespace (apps/console/src/pages/settings/api.ts) and sets the payload. After a successful save, call that same read and take its whole payload, manifest included. After a successful action, do the same; leave the draft as it is, because an action does not save it.
Keep: the draft, field-error and crypto-refusal resets on save stay as they are.
Keep: if the re-read fails, keep today's merged values. The save itself succeeded, so the page must not turn into an error.
Keep: do not flip loading. The form must not flash its placeholder on a save.
Banner rendering:SettingsField already draws an info_banner from the payload it is handed. Its labels.bannerText(spec.id, …) lookup finds no pack key for live_status, so the server's text is shown.
Done when
On Setup → Email, after saving a change, the live_status banner shows what the next GET returns, without a reload.
The same holds after a successful action.
A save whose re-read fails still shows the saved values and the success toast.
An unsaved draft survives an action.
A console pin covers this with a fake API whose second GET returns a different banner, plus a control that the first load is unchanged.
Size: S (one file plus its test and a changeset; about 15 non-test lines).
Dedupe
Method: objectui issue search (repo-scoped, any state) on SettingsView refetch in title and body, and on 25335, at 2026-10-23T14:50Z. SettingsView refetch returned 4 hits, all closed and about other surfaces: #10982 (ObjectView bus re-read), #5567 (showRefresh on object-view), #4568 (ObjectView.handleRefresh) and #4564 (DataSource.deleteView return). 25335 returned 0 hits. New.
Claim: PM loop round 5 · 2026-10-23T18:37Z
Session: session_01WJozybDmRH8z2c5SD7vJkj (domain:ui seat 1; an S card done by a sub-agent of this seat, dispatched by this project's coordinator)
Account: os-sales (the seat's linked user; the card's assignee)
Branch: claude/issue-13382-settings-reread
Worktree: objectui-issue-13382
Domain: domain:ui
Seat: domain:ui#1
File surface: apps/console/src/pages/settings/SettingsView.tsx (the onSave success branch and onAction), its tests beside, .changeset/ (one changeset) (stop on breach; explain in the report)
Container & model: S, mode:subagent (a sub-agent of this seat, base origin/main), model: default, effort: medium (S)
Clause-②: no
Responsibility: after a save the settings page keeps the first GET's manifest, so the live-status banner is stale | Setup settings pages, administrators | the banner says no mail leaves the machine after SMTP is configured
Serial constraints cleared: no open PR touches apps/console/src/pages/settings/ (read in this act)
Activity
objectstack-fleet commentedon Oct 23, 2026
Claim: PM loop round 5 · 2026-10-23T18:37Z
Session:
session_01WJozybDmRH8z2c5SD7vJkj(domain:uiseat 1; an S card done by a sub-agent of this seat, dispatched by this project's coordinator)Account:
os-sales(the seat's linked user; the card's assignee)Branch:
claude/issue-13382-settings-rereadWorktree:
objectui-issue-13382Domain:
domain:uiSeat:
domain:ui#1File surface:
apps/console/src/pages/settings/SettingsView.tsx(theonSavesuccess branch andonAction), its tests beside,.changeset/(one changeset) (stop on breach; explain in the report)Container & model:
S,mode:subagent(a sub-agent of this seat, baseorigin/main),model: default,effort: medium(S)Clause-②: no
Responsibility: after a save the settings page keeps the first GET's manifest, so the live-status banner is stale | Setup settings pages, administrators | the banner says no mail leaves the machine after SMTP is configured
Serial constraints cleared: no open PR touches
apps/console/src/pages/settings/(read in this act)objectstack-fleet commentedon Oct 23, 2026
LANDED
objectui#13382 由 PR objectui#13415 合入 main,合并提交
d17f6708173d1e177a0d2bb2023a5fdc7b209d6f(2026-10-23T19:22Z,经合并队列)。记录于 2026-10-23T19:45Z。Seat: domain:ui#1
落地内容:Setup 设置页保存或动作成功后,会把该命名空间整份重读一次(含 manifest),服务端的实时状态横幅(
live_status)不必刷新页面就能更新;草稿在动作后保留,重读失败时保留已存值和成功提示。撤下
pm:dispatched。席位核对见 PR comment 6372679128。fix(console): settings pages re-read their namespace after a save or …