Page picker: one TreeList for both pickers, tree or list view by module and param, the page field's value row #348
Labels
No labels
bug
enhancement
needs-triage
ready-for-agent
ready-for-human
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Cloonar/deckle#348
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Mockup (definition agreed 2026-10-24): https://claude.ai/artifact/BN7XprNTpmx1ZjigEcVCET — "Proposal" (pins 1–8), "The field that opens it", "Decisions" A–G, "What changes where". The list-view variant for forms: https://claude.ai/artifact/XC9KeADJfRrjD428fZFMdj §5.
Depends on #347 (
tree: hiddenin GET /api/modules; the shared item row from #346). Third of three.What changes
One tree component
TreeBrowser.tsxis retired;PagePicker.tsxusesTreeList.tsx, which gains: an address column (permalink, mono, muted, right-aligned on every row; folds under the title at phone width), a muted eligibility style (an ineligible row keeps readable--color-text-mutedtext at 500 weight, plain cursor, its caret live, a tooltip with the reason) replacing.tree-row__label--disabled's opacity, icons (house, folder, page, eye-off for hidden) and the existing disabled treatment (struck +.badge--warn).findChainmoves with it. The link browser's Page tab gets the address column and muted rows in the same change.The page picker dialog (
PagePicker.tsx).toggleTree / List, and a.choicecheckbox "Only pages" that folds the tree to eligible pages and their ancestors (per-viewer,localStorage, try/catch).pageTypeowned by a module whosetreeishidden(GET /api/modules) opens on the list with no Tree option; otherwise the tree with the toggle. New param settingpicker: tree | listpins one view and hides the toggle. The list view: the eligible pages, by title, as.listrows with radio choice, address meta and status badge; when a module owns the type it is GET /api/module/entries throughmodulequery(the module screen's own query, one owner), else the tree flattened.PagePicker's one evaluation overpagemanage.effectiveNodeType; the row's reason text derives from that verdict. Disabled pages are refused (aslink.disabledTitle), listed struck with the badge and a hint. Hidden pages wear eye-off and a neutral "Hidden" badge. The stored value is pre-selected and wears a "Current" chip.