kylon workspace view — kylon workspace help detail
view — saved views with persisted filter/sort/grouping on a non-upgraded legacy Table
Runtime scope: add --scope-room <room_id> when this table is in
another room you can access.
Every table has a built-in "All" default view that shows all rows. It is NOT a saved view
and has no view ID. This surface cannot reconfigure it; create a named view instead.
To create or update a named saved view (shown as a tab next to "All"), use view commands:
kylon workspace view list --table <table_id_or_title>
kylon workspace view create --table <table_id_or_title> --name <name> --filters <json> [--sorts <json>] [--groupby <field_key_or_json>] [--view_type <type>] [--calendar_date_field <field_key>] [--calendar_end_date_field <field_key>]
kylon workspace view update --table <table_id_or_title> --view <view_id> [--name <name>] [--filters <json>] [--sorts <json>] [--groupby <field_key_or_json>] [--view_type <type>] [--calendar_date_field <field_key>] [--calendar_end_date_field <field_key>]
kylon workspace view delete --table <table_id_or_title> --view <view_id>
IMPORTANT: A view without --filters is just an empty view. You MUST pass --filters to create a useful view.
--view_type: table (default), board (requires --groupby), calendar (requires --calendar_date_field).
--groupby is optional and groups rows into collapsible sections by the field's value.
--calendar_date_field: required for calendar views. Specify the date field key to position rows on the calendar grid. The field must be of type "date".
--calendar_end_date_field: optional for calendar views. Specify a second date field key for multi-day event spans.
When the user says "current view" or "this view", check the thread context for the active view name. If it is All, explain that this surface cannot reconfigure it and create a named view when appropriate.
--- Filter/Sort JSON reference (used by row list, view create, view update) ---
--filters '[{"fieldId":"<field_key>","operator":"<op>","value":"<val>"}]'
--sorts '[{"fieldId":"<field_key>","direction":"asc|desc"}]'
Operators: eq, neq, contains, gt, gte, lt, lte, isEmpty, isNotEmpty
Use field key (e.g. "status", "created_date") as fieldId.
Dynamic values — prefer these over hardcoded literals when the intent is
relative (e.g. "my tasks", "overdue", "recent"). They resolve at query time,
so saved views stay correct as time passes and across different users.
"$current_member" → viewing user's ID (use with user/multi_user fields)
"$start_of_today" → 00:00 UTC today
"$start_of_tomorrow" → 00:00 UTC tomorrow
"$start_of_yesterday" → 00:00 UTC yesterday
"$start_of_7_days_ago" → 00:00 UTC 7 days ago
"$start_of_30_days_ago"→ 00:00 UTC 30 days ago
Common patterns:
Due today: gte $start_of_today + lt $start_of_tomorrow
Overdue: lt $start_of_today
Last 7 days: gte $start_of_7_days_ago
Last 30 days: gte $start_of_30_days_ago
Assigned to me: eq $current_member (user field)
Involves me: contains $current_member (multi_user field)
--- Group By reference (used by view create, view update) ---
--groupby '<field_key>' simple: group by a field key
--groupby '{"fieldId":"<field_key>"}' object form (same as filters/sorts fieldId)
--groupby 'null' remove grouping
Groupable field types: text, number, select, date, user, checkbox
Group by arranges rows into collapsible sections by the field's value.
Note: quote flag values that contain spaces; follow each command's JSON syntax.
Workspace commands
view
kylon workspace view command reference.