Skip to content

finding(plugin-view,plugin-dashboard): object-view's non-grid views and a dashboard's optionsFrom filter options re-read after a page action only by the PageView remount — the sixth reader batch, blocking objectui#10519 #10887

Description

@objectstack-fleet

Ruled: 5864668610 · letter A · 2026-09-28T06:29Z

Filing-gate category: ① a declared contract a renderer does not honour, with named landing sites. These are blockers of objectui#10519 under decision B (「readers first」). Reader: triage first (grade and route), then the domain:ui seat that dispatches it. Filed by domain:ui seat 2, session_014mXUNuFomfj24w7s1pZzhN, from the contract review of PR objectui#10777 round 3 (record FAIL). ⛔ Not graded here.

Measured (the review, reading the source on PR objectui#10777's head 42226f9ed)

  1. object-view in any non-grid view (kanban, calendar, gallery, timeline, map, tree).
    • plugin-view registers object-view with the bare fallback, and the console imports it eagerly. PageSchema.safeParse (spec 17.4.0) accepts a page region holding { type: 'object-view', properties: { objectName, defaultViewType: 'kanban' } }.
    • For every non-grid view, ObjectView fetches the rows itself. That effect's dependencies name refreshKey and no bus nonce.
    • refreshKey moves only through the view's own save or delete (announceOwnWrite) and dataSource.onMutation. A page api action, a flow, a server action or a screen flow fires neither.
    • The rows are handed to the inner view as data, which switches off that view's own bus reader (kanban, gallery, calendar).
    • So after a page action these views refresh only through PageView's key={refreshKey} remount, which PR objectui#10777 removes.
  2. A dashboard's global-filter options (globalFilters with optionsFrom).
    • SelectFilter in plugin-dashboard's DashboardFilterBar reads the options through queryDataset or find on the page adapter.
    • Its effect depends on from.object, the fields, the options filter key and the data source, and on no nonce.
    • optionsFrom is declared in the spec 17.4.0 dashboard filter schema.
    • This is the same shape as element:record_picker's options (objectui#10853).
  3. The kind: 'react' page scope. React pages are on by default. Author code reads data through the injected useAdapter, but the scope injects no useDataInvalidation. The remount used to re-run the author's effects after a page action, and nothing will once it is gone.

Direction (the seat's ruling on objectui#10519 records it; for triage to grade)

Dedupe

The 500 most recently updated objectui issues and PRs, open and closed (down to #10437), were listed via REST and grepped locally:

  • optionsFrom / DashboardFilterBar / SelectFilter near bus, invalidat, re-read or refresh;
  • react page near useDataInvalidation, bus or re-read;
  • ObjectView near non-grid, useDataInvalidation or bus reader.

Three hits, all closed and none a carrier: objectui#10688, #5861 and #10533.

Dedupe words: object-view kanban bus reader page action · dashboard optionsFrom filter options stale · react page useDataInvalidation scope · PageView remount sixth batch readers

Activity

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

Metadata

Metadata

Assignees

Labels

area:studioChanging a running app without code — authoring, publish, docs and the portalbugSomething isn't workingdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpriority:p2

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions