packages/app-shell/src/views/InterfaceListPage.tsx derives a default binding for every visualization an ADR-0047 page whitelists, so the switcher can actually offer and render it. Five of the six bind their display field. map binds only coordinates:
exportfunctiondefaultMapFromObject(objectDef: any): {locationField: string}|undefined{constfield=firstFieldMatching(objectDef,(_n,f)=>LOCATION_TYPES.has(f.type))??firstFieldMatching(objectDef,(n)=>/location|address|geo|coords?|place|venue/i.test(n));returnfield ? {locationField: field} : undefined;}Compare the siblings, which do bind the field the user actually reads off the rendered item:
defaultKanbanFromObject → { groupByField }defaultCalendarFromObject → { startDateField }defaultGalleryFromObject → { coverField }
Consequence
With no titleField derived and none declared, plugin-map's getMapConfig falls back to its own default:
titleField: schema.titleField||'name',
So on any interface page that whitelists map against an object whose display field is not literally name, every marker's popup title reads undefined. The object does not have to be exotic — showcase_task in the framework's examples/app-showcase has title, not name, and its Work Map page is exactly this case (filed as objectstack#11443, which can be fixed narrowly by hand-declaring the block; this card is the general half).
Why it is a design call, not a one-liner
Picking "the title field" needs a rule, and the repo already has candidates rather than one obvious answer — detectStatusField-style detection, the object's NAME_FIELD / display-field convention, or the first searchable text field. defaultGalleryFromObject's choice of coverField is the closest precedent for how such a rule gets picked here. Worth deciding deliberately rather than defaulting to title because one example app uses it.
Noticed while implementing objectui#5042 (PR #5908), which makes the declared map block reach the renderer but deliberately adds no new derivation — out of that card's scope. Unassigned; filed plainly for triage to grade.
Generated by Claude Code
packages/app-shell/src/views/InterfaceListPage.tsxderives a default binding for every visualization an ADR-0047 page whitelists, so the switcher can actually offer and render it. Five of the six bind their display field.mapbinds only coordinates:Compare the siblings, which do bind the field the user actually reads off the rendered item:
defaultKanbanFromObject→{ groupByField }defaultCalendarFromObject→{ startDateField }defaultGalleryFromObject→{ coverField }Consequence
With no
titleFieldderived and none declared,plugin-map'sgetMapConfigfalls back to its own default:So on any interface page that whitelists
mapagainst an object whose display field is not literallyname, every marker's popup title readsundefined. The object does not have to be exotic —showcase_taskin the framework'sexamples/app-showcasehastitle, notname, and its Work Map page is exactly this case (filed as objectstack#11443, which can be fixed narrowly by hand-declaring the block; this card is the general half).Why it is a design call, not a one-liner
Picking "the title field" needs a rule, and the repo already has candidates rather than one obvious answer —
detectStatusField-style detection, the object'sNAME_FIELD/ display-field convention, or the firstsearchabletext field.defaultGalleryFromObject's choice ofcoverFieldis the closest precedent for how such a rule gets picked here. Worth deciding deliberately rather than defaulting totitlebecause one example app uses it.Noticed while implementing objectui#5042 (PR #5908), which makes the declared
mapblock reach the renderer but deliberately adds no new derivation — out of that card's scope. Unassigned; filed plainly for triage to grade.Generated by Claude Code