Skip to content

feat(accounts): the account record page header draws the company logo (#1199) - #2041

Merged
objectstack-fleet[bot] merged 2 commits into
mainfrom
claude/issue-1199-account-image-field
Oct 9, 2026
Merged

objectstack-fleet[bot] merged 2 commits into
mainfrom
claude/issue-1199-account-image-field

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Fixes #1199
Clause-②: no

What

crm_account declares imageField: 'logo'. The record chrome in the console that the 17.7.0 pin installs draws that field beside the title in the account record page header. An account with no logo shows nothing there. This is the one half-row the ruling (5933225770, letter A) left open: an object-level declaration, not a page:header prop, and no placeholder.

  • src/sales/objects/account.object.ts:30 holds the declaration, with a three-line comment. It sits after highlightFields, not on the line directly under nameField. content/docs/reference/performance-and-limits*.mdx cites account.object.ts:25 (searchableFields) in three locales, and that citation is accurate today. A line under nameField would have shifted it, and those pages are outside this card's file surface.
  • In content/docs/sales/accounts.mdx, .zh-Hans.mdx and .zh-Hant.mdx, the Branding row now says where the logo shows. It also says that an account without a logo shows no picture or placeholder there. The zh pages use the field's zh-CN pack label, as the page already does.
  • .changeset/1199-account-logo-in-header.md: patch, following the precedent of the feat(metadata): give four declared-but-unnamed fields the consumer they should already have #1831 logo placement.

No dependency change: the 17.7.0 pin already carries both the spec key and the console reader.

Measured

Browser check. Dev server on port 47199 from this worktree, Chromium at /opt/pw-browsers/chromium, signed in as the dev admin. I uploaded the logo through the console's New Account form: presigned upload 200, then storage PUT 200, then upload/complete 200, then POST /api/v1/data/crm_account 201. That created account non6T7vBSIEhYoeL, whose logo.url is /api/v1/storage/files/7e2e2241-c8c3-4852-b8d5-23510cdc2713. Every probe is a DOM read of the record page:

run account meta imageField [data-record-picture] picture img img in record header
before, origin/main ac162c9 with logo null 0 none 0
after, this branch with logo logo 1 loaded, src = the logo URL 1
after, this branch Wayne Enterprises, no logo logo 0 none 0, and no avatar-like element

Publish-time refusal (throwaway check, not kept). I swapped the value to imageField: 'name' (a text field) on disk through ablation-replace (anchor 1 to 0, blob changed), then ran pnpm validate. Result: VERDICT command-exit 1, with the message "imageField names name, a text field on object crm_account, which is not a picture." The file was restored with git checkout HEAD: blob equal to HEAD, git diff HEAD empty.

pnpm verify on bb0e650. Run through the shared lock: os-verify-lock: VERDICT command-exit 0. Results by step:

  • validate passed.
  • typecheck exited 0.
  • lint --strict passed: 18 suggestions, no errors or warnings.
  • lint:i18n-gate: 0 issues.
  • hygiene: clean.
  • hygiene:tokens: clean. src/sales business semantics is about 56,926 of a 59,000 ceiling, against the dispatch's reading of about 56,921 on ac162c9.
  • build: complete.
  • test: 173 files passed; 3609 tests passed, 1 skipped.

No test added. This repo pins none of crm_account's object-level display keys by value; the cards view's coverField: 'logo' has no pin either. The platform refuses a wrong imageField at parse, as the check above showed. A test asserting Account.imageField === 'logo' would only restate the source line.

Acceptance notes

Observed, not fixed here:

  • Every account record header's title reads Account Detail, the page label, instead of the account's name. The slot authors title: '{name}'. The subtitle and actions from the same properties bag render correctly, and the lead, opportunity and contact headers show the record's name. This was already true on origin/main. The logo now sits beside that title. Handed to the seat as a finding.

  • The nine seeded accounts boot pending with no approval request: Edit is disabled, and Recall approval answers "No pending approval request found for this record". An account created in the console does open its account_approval request. Handed to the seat as a finding.

  • The accounts page's "Account detail layout" section lists seven tabs (Overview, Opportunities, Contacts, Cases, Activity, Contracts, Files). The record page shows Details, Related and Attachments. Handed to the seat as a finding; not edited here, because the file surface covers only the header placement.

  • These line citations were already stale on origin/main:

    • performance-and-limits*.mdx cites account.object.ts:358 for the logo; the logo is at :590.
    • The same pages cite :442 for indexes; it is at :684.
    • opportunity_line_item.object.ts:196 cites account.object.ts:244-245.

    No carrier.

  • When Industry is blank, the subtitle renders as "· Prospect", with a leading separator. Polish; no carrier.


Generated by Claude Code

claude added 2 commits October 9, 2026 14:26
crm_account declares `imageField: 'logo'`, the object-level picture the
platform's record chrome draws beside the title in every record page
header (ruled on the card: an object-level declaration, not a
page:header prop; no placeholder). An account with no logo shows none.

Placed after highlightFields rather than on the line under nameField so
the `account.object.ts:25` citation in the performance-and-limits pages
(searchableFields) stays true.

Claude-Session: https://claude.ai/code/session_018Mk4tab2eCyY41UTWK7y7V
Co-authored-by: Claude <noreply@anthropic.com>
The accounts page (en, zh-Hans, zh-Hant) now says the company logo sits
beside the title at the top of the account's detail page, and that an
account without one shows no picture and no placeholder there.

Claude-Session: https://claude.ai/code/session_018Mk4tab2eCyY41UTWK7y7V
Co-authored-by: Claude <noreply@anthropic.com>
@vercel

vercel Bot commented Oct 9, 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 Oct 9, 2026 2:45pm UTC

Request Review

@github-actions github-actions Bot added documentation Improvements or additions to documentation metadata Declarative metadata — schema, security posture, UI surfaces labels Oct 9, 2026
@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review October 9, 2026 14:58
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 9, 2026
Merged via the queue into main with commit c75dd42 Oct 9, 2026
11 checks passed
zhuangjianguo pushed a commit that referenced this pull request Oct 9, 2026
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.

The object-aware scan surfaces 14 more inert fields, 5 of them masked by a shared name — a second enforce-or-remove ledger

2 participants