Skip to content

[finding] os explain app's navigation sample is rejected wholesale — nav items need id plus objectName / dashboardName, not object / dashboard #15173

Description

@os-litant

Found by the catalog sweep landed for #14811, which parses every SCHEMAS entry's example in packages/cli/src/commands/explain.ts against its real schema. Rewriting catalog entries was ruled out of scope on that card (triage comment 5520209463, step 3), so this is filed unassigned for triage. Suggested domain: domain:cli.

Measured

AppSchema (@objectstack/spec/ui) rejects the app entry's example with six issues — three per navigation item:

[navigation.0.id]          invalid_type :: expected string, received undefined
[navigation.0.objectName]  invalid_type :: expected string, received undefined
[navigation.0]             unrecognized_keys :: Unrecognized key(s) on this `object`
    navigation item: `object`. Until this shape was closed these were dropped
    silently — the entry still parsed, so a mis-spelled config shipped as a nav
    item that quietly ignored it (a stripped `visible` renders an entry that
    should have been gated).
[navigation.1.id]            invalid_type :: expected string, received undefined
[navigation.1.dashboardName] invalid_type :: expected string, received undefined
[navigation.1]               unrecognized_keys :: Unrecognized key(s) on this
    `dashboard` navigation item: `dashboard`. [same guidance]

The sample writes { type: 'object', object: 'project_task', label: 'Tasks' } and { type: 'dashboard', dashboard: 'project_overview', label: 'Overview' }.

Note for whoever takes it

The entry's optional table only says { name: 'navigation', type: 'NavItem[]', description: 'Menu tree structure' } — the wrong shape is carried entirely by the example, so the fix is one literal. Two required keys are missing (id, and the discriminant-specific objectName / dashboardName) and one key is a stale spelling of the third.

Reproduce

pnpm --filter @objectstack/cli exec vitest run test/commands.test.ts

The sweep names this entry as a known-broken xfail; the day the entry is corrected, that xfail turns red and is meant to be promoted to a plain assertion.

Activity

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

Metadata

Metadata

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions