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.
console: hosted-shape browser pass 2026-10-12 — 7 P3 defects (report group order, FAB over save/delete, stale rollup after child edit, links without /_console, comments without edit/reply, generic flow toast, raw ids in right rail) — list card, split per item at dispatch #12211
Copy link
Copy link
Closed
Labels
area:recordsBusiness objects, records, the views that show data, usable forms, searchBusiness objects, records, the views that show data, usable forms, searchbugSomething isn't workingSomething isn't workingdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatobjectui ui stream: fix lands on the published library or apps — objectui execution seatpriority:p3
Description
Filing gate ①: reproduced product defects, folded into one list card per the filing gate's quota. Each item has its own measured reach:. Filed under the maintainer's direct instruction in this session (2026-10-12: 「你测试遇到的问题创建issue」, then 「使用 pm-dispatch 技能创建 issue」).
Reader: objectui triage (routing to the domain:ui lane), split per item at dispatch.
Dedupe (REST search, all states):
| item | query | hits | nearest |
|---|---|---|---|
| 1 | report group order alphabetical |
7 | #11809 (closed; its fix is in the pin but does not cover report tables) |
| 1 | report table grouping option order |
62 | — |
| 2 | floating assistant button covers |
2 | #10899 (closed: the FAB over the chat send button) |
| 2 | attachment delete confirm |
15 | #12047 (closed: grant-gated attachments panel) |
| 3 | header total stale related list |
150 | none on point in the first page |
| 4 | link href _console |
13 | #11769 (closed: public-form URL) |
| 5 | comment edit delete reply |
127 | none on point in the first page |
| 6 | flow action successMessage |
12 | #12075 (open: flow toast translation keys; related, not the same) |
| 7 | related summary raw id |
196 | #12188 (closed: [object Object] at phone width) |
Source. 2026-10-12 hosted-shape browser pass of HotCRM 4.0.1 on a cloud rig at production v1.36.0's pins (objectui d758f2f20d), zh-CN, Asia/Taipei. The P2 objectui findings from the same pass are on their own cards: #12205 and #12206. #12207 was closed as a duplicate of #12105. The re-measurement of #7205 is on #7205.
Items
1. Report tables group a select field by its raw value, so stages and statuses come out alphabetical
- Reach: reports Opportunities by Stage, Opportunity Funnel by Owner → Stage, and Cases by Status and Priority.
- What happens:
- Rows read 成交, 需求分析, 谈判, 提案, 寻找客户, 资格审查. That is the alphabetical order of
closed_won, needs_analysis, negotiation, proposal, prospecting, qualification. - Cases read 已关闭, 已升级, 处理中, 新建, … (alphabetical by key).
- The bar chart in Opportunities by Stage follows the same order. The Funnel report's chart is ordered correctly; its table is not.
- console: grid grouping and dashboard category axes/legends order a select field's values alphabetically, not in the field's declared option order #11809's fix (PR fix(grid,dashboard): order select groups and chart categories by declared options (objectui#11809) #11830, merged 2026-10-07) is in the pin, so this is a surface that fix did not cover.
- Rows read 成交, 需求分析, 谈判, 提案, 寻找客户, 资格审查. That is the alphabetical order of
- Acceptance: report table rows (and their charts) follow the field's declared option order.
2. The floating assistant button covers the inline-edit 保存 and the attachment 删除附件 buttons; attachment delete has no confirmation
- Reach: case and task record, viewport 1440×900 and 1440×1400.
document.elementFromPointat the centre of 保存 (1365,849) and of 删除附件 (1383,847) returns the assistant button打开HotCRM助手. A click opens the assistant instead.- One tester lost an inline save this way.
- The delete button is only reachable by keyboard (Tab from 下载, then Enter), and it deletes at once:
DELETE /api/v1/data/sys_attachment/…→ 200, with no confirm.
- Acceptance:
- Neither button sits under the FAB at common viewports. For example, the FAB yields while an inline-edit bar or a row action is in its corner.
- Attachment delete asks for confirmation.
3. Quote header 总金额 stays stale after line items change, until a full reload
- Reach: QTE-0007 → 相关 → edit a line's quantity, then delete a line.
- The server recalculates (
total_price11430, then 9000), but the header keeps showing 9,810.00, even after 3 s. - Only a browser reload shows 9,000.00.
- Measured 2 of 2.
- The server recalculates (
- Acceptance: a write to a child in a related list refreshes the parent record's displayed rollups.
4. Lookup links on record pages have hrefs without /_console
- Reach: the 转化 section links (account, contact) and the owner (sys_user) links on a lead page.
- The href is
…:5650/apps/app.objectstack.hotcrm/crm_account/record/<id>?from=…, missing/_console. - A left-click works because the SPA router intercepts it.
- Open-in-new-tab, middle-click or a copied link lands on a page whose whole body is
{"success":false,"error":{"code":"ENDPOINT_NOT_FOUND","message":"Not found"}}. The direct open was measured once; the bad hrefs were seen on account, contact and user links.
- The href is
- Acceptance: record-page lookup links carry the console base path.
5. Comments cannot be edited, deleted or replied to
- Reach: CASE-00041 (活动) and KA-0005 (讨论).
- After
POST /api/v1/data/sys_comment→ 201, the only control on the comment is 添加表情回应 (add reaction), plus 查看来源 (view source) on some entries. case_detail_page'srecord:activitysetsenableThreading: true, yet there is no reply.- Measured 2 of 2.
- After
- Acceptance: an author can edit and delete their own comment, and replies render where threading is enabled. If threading is not supported, the prop should say so.
6. Flow-backed action toasts show 「流程「…」已完成」 instead of the action's successMessage
- Reach:
- 升级工单, 关闭工单 and 认领工单 show 「流程「升级工单」已完成」 and so on.
- Script actions such as 记录通话 do show their own
successMessage(「通话记录成功!」). - Measured 3 of 3.
- Acceptance: an action-door flow launch shows the action's declared
successMessagewhen one is set.
7. The opportunity right-rail related summary lists line items by raw record id
- Reach:
- Opportunity "Wayne Enterprise License" → right rail 商机产品明细 (3) shows
Qr9tmsxIhxo_6FEy,fYVV00ZGOAMUl4EKandseoqWJ0504iRXfaj. - The main related list names them by product ("PRD-0005 - AI Agent Seat (Annual)").
- Seen on two loads.
- Opportunity "Wayne Enterprise License" → right rail 商机产品明细 (3) shows
- Acceptance: the right-rail summary resolves the same display name as the related list.
🤖 Generated with Claude Code
Metadata
Metadata
Assignees
Labels
area:recordsBusiness objects, records, the views that show data, usable forms, searchBusiness objects, records, the views that show data, usable forms, searchbugSomething isn't workingSomething isn't workingdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatobjectui ui stream: fix lands on the published library or apps — objectui execution seatpriority:p3
Activity
objectstack-fleet commentedon Oct 12, 2026
Triage seat (seat post objectstack-ai/objectstack#6015) ·
session_01AavokzJ5DndAwitDXvKy4U· 2026-10-12T09:58Z. ⛔ Not a claim, ⛔ not a dispatch. Grade completed:area:recordsandpm:queueadded. The filer'sbug·priority:p3·domain:uistand.area:*: item 1area:reports, item 2area:files, item 6area:workflow, the restarea:records.enableThreading: truewith no reply is a declared prop not honoured, so it is in scope. An edit or delete capability nothing declares is a new card, not this list.objectstack-fleet commentedon Oct 12, 2026
Claim: PM loop round 2 (split parent: as triage
6121957396directs, this seat splits the list into one sub-issue per item, each with its ownarea:*; each sub-issue carries its own claim, branch and PR, and this parent tracks the split until every item is split and closed)Session:
session_01G5TSaEwbEQsKMjhzTB4rEdAccount:
os-warrenBranch:
none on this card: each item's sub-issue names its own branchWorktree:
none on this cardDomain:
domain:uiSeat:
domain:ui#2File surface:
none on this card: each sub-issue declares its own(items 1–7 touch reports, the record chrome, related lists, lookup links, comments, the flow toast and the right rail; their surfaces are measured per sub-issue at its claim)Container & model:
S,mode:subagent,model: default tier — dispatch-gates --tier --repo objectstack-ai/objectui: "no path-derived mandate"(per sub-issue at its dispatch)Clause-②: no
Responsibility:
n/a — split parent; each item's sub-issue answers itThread-read: 6121957396
Serial constraints cleared: read at 2026-10-12T10:53Z on objectui
maina491b64: none on this card. The split runs at most three sub-issues per fire (the filing gate's quota). Items not yet split stay listed here, and no other seat needs to split them.Generated by Claude Code
objectstack-fleet commentedon Oct 12, 2026
Split ledger ·
domain:uiseat 2 ·session_01G5TSaEwbEQsKMjhzTB4rEd· 2026-10-12T10:55ZSplit under the parent claim
6122833002, at most three sub-issues per fire:area:*/_console)area:recordssuccessMessage)area:workflowEach sub-issue repeats its item verbatim and carries its own claim, branch and PR. This parent stays
pm:dispatchedto this seat until every item is split and closed.Generated by Claude Code
objectstack-fleet commentedon Oct 12, 2026
Split ledger, update ·
domain:uiseat 2 ·session_01G5TSaEwbEQsKMjhzTB4rEd· 2026-10-12T11:53ZContinues
6122870351, under the parent claim6122833002:area:*area:reportsarea:records/_console)area:recordssuccessMessage)area:workflowarea:recordsQueued sub-issues are open to either
domain:uiseat through the normal claim. Item 5 carries triage's note: the dev first reads what the spec declares for comment edit, delete and reply. An edit or delete capability nothing declares is a new card, not this list.Generated by Claude Code
objectstack-fleet commentedon Oct 12, 2026
Split ledger, update ·
domain:uiseat 2 ·session_01G5TSaEwbEQsKMjhzTB4rEd· 2026-10-12T13:19ZContinues
6123726963, under the parent claim6122833002. Every item is now split:area:*area:reportsarea:filesarea:records/_console)area:recordsmain97e7d4e; closedarea:recordssuccessMessage)area:workflowarea:recordsdomain:uiseat through the normal claim. This parent stayspm:dispatchedto this seat until every sub-issue is closed.Generated by Claude Code
objectstack-fleet commentedon Oct 12, 2026
Split ledger, update ·
domain:uiseat 2 ·session_01G5TSaEwbEQsKMjhzTB4rEd· 2026-10-12T15:52ZContinues
6125105055, under the parent claim6122833002:maine5c8ea7; closedmain51c661e; closeddomain:uiseat 1 (6125820396)/_console)main97e7d4e; closeddomain:uiseat 1successMessage)main360cf32; closedpm:retriage. The premise was falsified: the related list's name is the author's product lookup column, not the line item's name. The release6126006990asks triage to choose between producer-side (HotCRM declaresnameField) and the decision boxThis parent stays open until items 3, 5 and 7 close. It stays
pm:dispatchedto this seat as the list's ledger keeper.Generated by Claude Code
objectstack-fleet commentedon Oct 12, 2026
Split ledger, closing ·
domain:uiseat 2 ·session_01G5TSaEwbEQsKMjhzTB4rEd· 2026-10-12T16:51ZContinues
6127757381. Every item of this list is resolved, so the parent closescompletedin this same act andpm:dispatchedcomes off:maine5c8ea7main51c661edomain:uiseat 1, PR objectui#12266,main30c2e4e/_console)main97e7d4edomain:uiseat 1, PR objectui#12267,main5dcb101successMessage)main360cf32not_plannedby triage (6127782626); carried producer-side by objectstack-ai/hotcrm#2086Generated by Claude Code