Skip to content

feat(metadata): quote-line subtotal and feedback comment reach their related-list panels (#1199) - #1958

Merged
os-warren merged 1 commit into
mainfrom
claude/issue-1199-enforce-inert-fields
Sep 25, 2026
Merged

os-warren merged 1 commit into
mainfrom
claude/issue-1199-enforce-inert-fields

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Part of #1199. This PR gives the last two unshown rows a consumer. One half of the crm_account.logo row stays open: the platform has no way to draw an image in the record header (details below). Merging this PR should not close the card.

What the ruling asked, and what origin/main already had

The ruling (batch #163 item 1, "enforce every row") names seven placements. I checked each one against origin/main at df49be2d before changing anything. Four of the seven were already done by #1831 (PR merged 2026-09-09, commit 89874d2c). That PR landed before the ruling, but the ruling was written from the 62560210 snapshot, which predates it. Two more rows were already shown by the layout the platform builds from fieldGroups.

Row Consumer Where State
crm_campaign.description form section basic src/marketing/views/campaign.view.ts:124 already on main (#1831)
crm_contract.description form section notes src/revenue/views/contract.view.ts:146 already on main (#1831)
crm_quote_line_item.description the form and detail page the platform builds from group: 'basic' (this object has no view file) src/revenue/objects/quote_line_item.object.ts:110 already on main. Checked in a browser: the edit form's labels include Description, and the detail page shows it under Line Item
crm_quote_line_item.subtotal new: a column in the line-items panel on a quote, via relatedListColumns src/revenue/objects/quote_line_item.object.ts:96 this PR. The line item's detail page already showed it under Pricing
crm_account.logo, form form section profile + coverField on the account cards view src/sales/views/account.view.ts:228, :106 already on main (#1831)
crm_account.logo, detail header none: the platform has no image prop for the header none blocked on the platform, not landed
crm_article_feedback.comment new: a column in the feedback panel on a knowledge article, via relatedListColumns src/service/objects/article_feedback.object.ts:152 this PR
crm_campaign_member.added_date a column in the members panel on a campaign, via relatedListColumns src/marketing/objects/campaign_member.object.ts:135 already on main (#1831)

The two new placements

Both use relatedListColumns on the child's parent lookup. That is the first thing a detail page's related list reads (#944, and deriveRelatedLists.ts in objectui). #1831 used the same pattern for added_date. Each list keeps every column of the highlightFields fallback it replaces and adds one field:

  • Quote line items panel: Product, Quantity, Sales Price, Subtotal, Total.
  • Article feedback panel: Verdict, Reader, Comment.

Neither field went into highlightFields. The detail page only hoists the first four entries of that list, and for feedback, adding it would empty the basic group (field-group-shadowed). The object comments explain both reasons.

Browser check on a dev server started from this branch, captured from the th elements:

  • quote QTE-0004, Related tab: ["Product","Quantity","Sales Price","Subtotal","Total","Actions"]
  • knowledge article with one feedback row created through REST, Related tab: ["Verdict","Reader","Comment", ...], and the comment text is on screen

Not measured: a browser run of the same two panels before this change. The fallback columns come from the highlightFields comments and the #944 note in test/view-references.test.ts, not from a run.

crm_account.logo in the detail header: stopped, no workaround

account_detail_page overrides the header slot with page:header. In @objectstack/spec 17.4.0, PageHeaderProps accepts title, subtitle, breadcrumb, actions, recordChrome, showStar, showCopyId, maxVisible, mobileMaxVisible and aria, and none of them is an image. icon is a never. The record-chrome branch in objectui (containers.tsx) builds only a title chip.

I tested this directly: adding image: '{logo}' to the header props made both pnpm lint and pnpm validate report component-props-unknown-key … page:header: \image` is not a prop. I then restored the file and confirmed git diff HEADwas empty. So the platform needs an image or avatar prop on the header before this half can land. PuttinglogointohighlightFieldswould pushowner_idortype` out of the hoisted strip, and that is the kind of workaround this card says not to use.

Other changes

  • content/docs/sales/quotes{,.zh-Hans,.zh-Hant}.mdx: one sentence naming the line-items panel columns and what Subtotal means. service/knowledge-base.mdx already says an author can "read the comment they left". That sentence is now true of the panel, so it needs no edit.
  • src/sales/objects/account.object.ts: removed a sentence that cited crm_article_feedback.comment as a field with no consumer. It is comment-only, and this PR is what made it false. This file is outside the claimed file surface. PR feat(revenue): quotes and contracts follow the account (controlled_by_parent) — #549 #1956 does not touch it; that PR edits account.hook.ts.
  • .changeset/line-subtotal-and-feedback-comment-reach-their-panels.md.

Gates, run on 62a8e93a (the head of this PR)

pnpm verify, step by step, under the shared verify lock (VERDICT command-exit 0):
validate 0 · typecheck 0 · lint 0 · lint:i18n-gate 0 · hygiene 0 · hygiene:tokens 0 · build 0 · test 0 (172 files, 3687 passed, 1 skipped).

os lint field-no-consumers: 6 before, 5 after. The warning for crm_article_feedback.comment is gone. The five left are crm_account.{incumbent_vendor, annual_purchasing_budget, payment_cycle} (REQ-0003's derived layout, already ruled), crm_forecast.seed_key (#613, kept by design) and crm_quote_line_item.line_number (#1828). Before this PR, none of the seven rows except comment was flagged. The rule gives credit for view, form and object-text mentions, and #1831 had already added those for the others.

Token ratchet, authored total: revenue ~18,279 to ~18,303 (headroom ~697), service ~21,149 to ~21,164 (headroom ~836). Sales and marketing are unchanged: sales ~99,340 (headroom ~660), marketing ~9,096 (headroom ~904). No ceiling was crossed or raised.

Acceptance notes


Generated by Claude Code

…t panels (#1199)

`relatedListColumns` on the two parent lookups, the mechanism a detail-page
related list reads first (#944), each a superset of the highlightFields
fallback it replaces:

- crm_quote_line_item.crm_quote: adds `subtotal` between Sales Price and Total.
- crm_article_feedback.crm_knowledge_article: adds `comment` after Verdict and
  Reader, the author-facing feedback panel.

Quote docs (three locales) name the panel's columns; one stale cross-reference
in account.object.ts that cited the feedback comment as unconsumed is dropped.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01X8U3asekbiC7yWoEPWR4Dg
@vercel

vercel Bot commented Sep 25, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
hotcrm Ignored Ignored Sep 25, 2026 1:02pm UTC

Request Review

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation metadata Declarative metadata — schema, security posture, UI surfaces

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants