Skip to content

Query/type viewer: BaseNodeViewer-style title, drop count pill and Edit Query, gated Kanban tab, keep 'Default' on view switch #3261

Closed

Description

@malibio

Summary

Clicking a type in the sidebar opens viewers/query-node-viewer.svelte, the type's "Default" view, which saved query nodes also use. Five changes to it.

1. Title behaves like BaseNodeViewer

Today the title is a button ↔ input swap (startEditTitle / commitTitle). .query-title has a hover background, and .query-title-input has a 1px solid primary border, at 1.5rem/600. BaseNodeViewer instead uses one always-present <input class="header-input"> with border:none; outline:none; padding:0; background:transparent at 2rem/500: just click and type. Match that, ideally by extracting a shared header-input component both viewers use so they can't drift. Keep commit-on-blur/Enter.

2. Remove the "N items" count pill

The <span class="result-count"> and its CSS. This applies to saved queries too.

3. Remove "Edit Query" and the GUI edit mode

GUI query editing doesn't work yet. The "Edit Query" button is the only way into edit mode, so removing just the button would leave dead code. Delete the button, the edit-mode panel/state (isEditMode and what hangs off it), and their CSS. Rebuild when GUI editing actually works.

4. Kanban tab: disabled with an explanation when there's nothing to group by

Keep the tab visible but disabled when the type has no groupable property, with a hover explanation such as: "No properties to build a Kanban board from. Kanban groups by a choice (enum) property." Eligibility already exists: eligibleGroupByFields(schema) in query/kanban-grouping.ts (enum fields, excluding ones that use the __unassigned__ sentinel). kanban-view.svelte already computes noEnumField for its empty state, so lift that to the viewer. Edge case: a saved query whose lastView is kanban but whose type no longer has an eligible field opens in List.

5. "Default" stays "Default"; a view switch doesn't create a query node

Today, switching List/Table/Kanban on a type's Default view calls materializeQuery. That creates a new query node named MATERIALIZED_QUERY_TITLE = 'Untitled Query' and re-routes the tab to it, so the title flips from "Default" to "Untitled" and a stray query node is created (and, today, can't be found anywhere). Instead, persist the Default view's lastView / Kanban groupBy per type without creating a node. Only materialize a saved query on a real divergence: a filter edit, a rename, or an explicit "new query". The title reads "Default" until then.

Acceptance criteria

  • Title: no border or hover chrome; click-and-type like BaseNodeViewer, same font size/weight/color/padding; shared component or shared styles
  • No "N items" pill in any query view
  • "Edit Query" button, edit-mode UI and state deleted
  • Kanban tab disabled with a tooltip when eligibleGroupByFields is empty; a saved query with lastView: kanban in that state falls back to List
  • Switching view or group-by on a Default view doesn't create a query node, and the choice persists per type
  • Title stays "Default" until the user renames it or creates a new query
  • Tests for the Kanban gating and for "view switch doesn't materialize"

Activity

  1. self-assigned this
    on Sep 29, 2026
  2. added a commit that references this issue on Sep 29, 2026
    e2e913c
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions