Summary
In Console, opening a list view's filter panel and interacting with it (add / clear a condition) persists the transient filter state as a view customization overlay in sys_metadata (type=view). The overlay overrides the source-defined view filter — e.g. a source view whose default filter is status not_in [archived, deleted] gets its filter replaced by a stray field equals "" (empty-value) condition. On the next visit the list is served with that empty-value filter → total: 0 → the list looks permanently empty.
Two things make this hard to diagnose:
- Clearing doesn't recover. "Clear all" / "Remove condition" in the filter panel do not remove the persisted overlay; the panel then shows no active conditions while the list request still carries the stale
field equals "" filter.
- It persists across reload and across accounts (the overlay is stored server-side, not per-session), and the empty state renders the "no data yet" copy rather than "no records match your filter" — so it reads like data loss or a permission problem, not a filter artifact.
Recovery requires deleting the overlay row from sys_metadata and restarting the service.
Impact
- A regular end-user (no admin rights, never explicitly clicked "save view") can silently overwrite the project's source-code view declaration just by using the filter panel.
- The overwritten filter can hide all rows indefinitely for every user of that view.
- Severity: high — silent, cross-user, and the misleading empty-state copy sends triage down the wrong path (data / permission) instead of the view layer.
Environment
@objectstack/*@17.0.0-rc.5
- Console list view with a source-defined default
filter (status not_in [...]).
- Observed independently twice on the same platform version (a QA run and a dev run), different objects, different accounts.
Steps to reproduce
- Define a list view in metadata with a non-empty default
filter (e.g. status not_in ['archived','deleted']).
- Open that list in Console as a normal user.
- Open the filter panel, add a condition, then use Clear all / Remove condition.
- Leave and re-open the list (reload, or log in as a different user).
Expected: the source-defined filter is intact; the list shows the same rows as before.
Actual: the list is served with a persisted field equals "" overlay filter → total: 0 → empty list with "no data yet" copy; the filter panel shows no conditions; the source filter is gone until the sys_metadata view overlay row is deleted and the service restarted.
Notes / questions
- Is a view customization overlay meant to be written on mere filter-panel interaction (vs. only on an explicit "save view" action)? The trigger threshold appears far lower than expected.
- When an overlay carries an empty-value condition, could Console treat it as "no filter" rather than
field equals ""? And surface a "clear customization / reset to default" affordance for non-admins?
Reproduced while building an ObjectStack 17 app. Detailed screen captures are available on request (currently in a private project repo).
Summary
In Console, opening a list view's filter panel and interacting with it (add / clear a condition) persists the transient filter state as a view customization overlay in
sys_metadata(type=view). The overlay overrides the source-defined viewfilter— e.g. a source view whose default filter isstatus not_in [archived, deleted]gets its filter replaced by a strayfield equals ""(empty-value) condition. On the next visit the list is served with that empty-value filter →total: 0→ the list looks permanently empty.Two things make this hard to diagnose:
field equals ""filter.Recovery requires deleting the overlay row from
sys_metadataand restarting the service.Impact
Environment
@objectstack/*@17.0.0-rc.5filter(status not_in [...]).Steps to reproduce
filter(e.g.status not_in ['archived','deleted']).Expected: the source-defined
filteris intact; the list shows the same rows as before.Actual: the list is served with a persisted
field equals ""overlay filter →total: 0→ empty list with "no data yet" copy; the filter panel shows no conditions; the source filter is gone until thesys_metadataview overlay row is deleted and the service restarted.Notes / questions
field equals ""? And surface a "clear customization / reset to default" affordance for non-admins?Reproduced while building an ObjectStack 17 app. Detailed screen captures are available on request (currently in a private project repo).