|
| 1 | +--- |
| 2 | +'@object-ui/plugin-detail': patch |
| 3 | +'@object-ui/fields': patch |
| 4 | +'@object-ui/i18n': patch |
| 5 | +'@object-ui/app-shell': patch |
| 6 | +--- |
| 7 | + |
| 8 | +Detail-page UX follow-ups from the ADR-0085 PR4 real-backend browser pass (framework#2548): |
| 9 | + |
| 10 | +- **Highlight strip no longer repeats the record title.** A declared |
| 11 | + `highlightFields` list containing the title field rendered it as the first |
| 12 | + chip — truncated — directly under the identical page H1. `deriveHighlightFields` |
| 13 | + now resolves the title (`primaryField` / `nameField` / deprecated |
| 14 | + `displayNameField`, else the conventional display-field names) via the new |
| 15 | + exported `resolveTitleField` and filters it from declared lists before the |
| 16 | + 4-chip cap, matching what the heuristic branch always did. app-shell's |
| 17 | + `RecordDetailView` synthParts (which pre-computes the list and bypasses the |
| 18 | + derivation) applies the same filter. |
| 19 | +- **Per-field currency reaches the renderers.** The spec channel |
| 20 | + (`currencyConfig.defaultCurrency`) was dropped by the highlight-strip and |
| 21 | + detail-section field enrichment, so a spec-authored currency field could |
| 22 | + never show its symbol ("25,000,000" instead of "$25,000,000"); |
| 23 | + `resolveFieldCurrency` reads it second after the designer-only bare |
| 24 | + `currency` key. |
| 25 | +- **app-shell approvals fetches send the Bearer token.** The header badge |
| 26 | + poll, home-inbox count, and record-page approvals panel were cookie-only |
| 27 | + (new shared `bearerAuthHeaders()` util) — same split-origin failure mode as |
| 28 | + the console `approvalsApi` fix below. |
| 29 | +- **`fieldGroups[].icon` / `description` reach detail pages.** The shared |
| 30 | + derivation (ADR-0085 §5) already passed them through; the detail synth |
| 31 | + dropped them. Sections now carry both, and `DetailSection` renders a real |
| 32 | + Lucide icon for identifier-shaped names (emoji/text values keep the |
| 33 | + historical text rendering). |
| 34 | +- **Record meta footer stops dangling without an actor.** Seeded/system rows |
| 35 | + with `created_by: null` rendered "Created by · 10m ago"; the footer now |
| 36 | + falls back to actor-less labels ("Created / Updated"), with new i18n keys in |
| 37 | + all six locales (and the zh `createdBy`/`updatedBy` mistranslation fixed: |
| 38 | + 创建人/更新人, not 创建于/更新于). |
| 39 | +- **Select badges ellipsize instead of clipping mid-glyph.** In bounded |
| 40 | + containers (highlight-strip columns, grid cells) an overlong option label |
| 41 | + used to be cut at the container edge ("Technolog…"); badges now shrink with |
| 42 | + an inner truncate and expose the full label as a hover title. The highlight |
| 43 | + strip's hover title also prefers the option label over the raw stored value. |
| 44 | + |
| 45 | +Console app (unversioned): `approvalsApi` now sends the stored Bearer token |
| 46 | +like every other console call — cookie-only auth silently lost the approvals |
| 47 | +surface on split-origin deployments where the SameSite cookie doesn't flow. |
0 commit comments