Files
kandev/docs/specs/task-dependencies/create-dialog-advanced-settings.md
T
2026-08-13 23:16:37 +01:00

136 lines
7.2 KiB
Markdown

---
status: shipped
created: 2026-08-13
owner: kandev
---
# Task-create advanced settings disclosure
## Why
The searchable dependency selector is useful, but it is not needed for most
new tasks. Keeping it visible in the main form adds a full selector row to a
dialog whose primary job is to collect the task request and workspace context.
The create dialog should keep the common path compact while preserving a clear
place for dependency selection and future less-common options.
## What
- Add a compact, collapsed `Advanced settings` disclosure to the bottom of the
create-task form, below the model, executor, and workflow selector controls.
- Render the disclosure label in muted, very small text with a subtle chevron.
The whole row remains a semantic button so the small visual label does not
reduce the interaction target.
- Start the disclosure collapsed for a new create-dialog instance. Expanding
it reveals the existing dependency selector. The selector keeps its current
`No dependency` default, task icon treatment, search, help action, and
multiple-predecessor behavior.
- Show the dependency selector with a muted `Depends on` label and a contextual
help control that explains the dependency wait and automatic-start behavior.
- Keep the label and selector in the same setting column. On desktop, render
advanced settings as a two-column option grid so each row can hold two
settings; on narrow screens, collapse the grid to one column.
- Keep the dependency selector's `blockedBy` state and disabled behavior
unchanged. Collapsing the section must not clear a selected dependency, and
reopening the section must show the same selector value.
- Keep the existing workflow selector and its visibility rules unchanged. The
new disclosure replaces only the dependency's always-visible presentation.
- Make the expanded content a single extensible advanced-options region. Future
advanced controls can be appended inside that region without adding another
top-level row to the dialog. Do not add placeholder future controls in this
change.
- Show the disclosure only for an unstarted task in create mode, matching the
dependency selector's existing availability. Session mode, edit mode, and
started-task forms do not gain a new advanced-settings row.
- Keep all new trigger copy localized through the task translation namespace.
## Interaction contract
### Collapsed state
- The row is visible at the bottom of the create-task settings, below the model,
executor, and workflow selector controls.
- The row shows the localized `Advanced settings` label in a muted, subtle
size and a direction indicator.
- The dependency trigger and its `No dependency` text are not visible while
the section is collapsed.
- The row exposes `aria-expanded="false"` and a stable control/test identity.
### Expanded state
- Activating the row with pointer, touch, Enter, or Space expands the content.
- The dependency selector is visible inside the content with its existing
searchable picker behavior. Its trigger uses the available row width on
narrow screens and a compact, constrained width on desktop.
- The selector is introduced by a localized `Depends on` label with an
accessible help control. Hovering or focusing the control explains the
dependency wait and automatic-start behavior.
- The row exposes `aria-expanded="true"`, and the expanded content is connected
to it through the normal collapsible relationship.
- Closing the section preserves every selected predecessor. Reopening it
reveals the existing selected title or localized count.
- The selector's search-row info control continues to explain dependency wait
behavior without changing the disclosure state or selection.
## Mobile design contract
- Desktop outcome: the create dialog keeps the workspace or worktree context,
then provides a compact advanced-settings entry that reveals dependencies.
- Mobile entry point: the same inline disclosure in the full-screen task-create
form. A new drawer or separate mobile navigation surface is not needed for
one short advanced field.
- The nearest shipped mobile exemplars are the task-create selector controls,
`task-create-dialog-pill.tsx`, and the existing dependency picker. Reuse the
project's contained popover and command-list behavior.
- The disclosure trigger has a mobile hitbox of at least 44 CSS pixels even
though its label uses a subtle text size. The expanded dependency trigger and
dependency help control and task rows retain their existing touch-safe sizing.
- The task-create form remains the outer scroll owner when the collapsible is
closed or expanded. The dependency command list remains the inner scroll
owner while its picker is open.
- The expanded content uses a responsive option grid. On desktop, each row can
contain two settings, and each setting keeps its label/help to the left of its
selector in the same column. On narrow screens, the grid collapses to one
column and must not introduce document-level horizontal overflow.
- State, selection logic, candidate filtering, and payload behavior are shared
across desktop and mobile. Only the disclosure geometry and touch
presentation are responsive.
## Scenarios
- **GIVEN** a new task create dialog, **WHEN** the form first renders, **THEN**
the advanced-settings row is visible and collapsed, and the dependency
trigger is not visible.
- **GIVEN** the collapsed advanced-settings row, **WHEN** the user activates it,
**THEN** the row reports expanded and the dependency selector appears below
the model, executor, and workflow selector controls.
- **GIVEN** the expanded selector with no predecessors, **THEN** its trigger
shows the existing `No dependency` label and dependency icon.
- **GIVEN** a selected predecessor, **WHEN** the user collapses and reopens the
advanced section, **THEN** the selected task title or localized dependency
count remains visible in the selector and the form state is unchanged.
- **GIVEN** a workflow selector that is visible, hidden for a single workflow,
or locked by a caller, **WHEN** the create dialog renders, **THEN** the
workflow's existing behavior is preserved and the advanced dependency
control remains available under the same create-mode rules.
- **GIVEN** session mode, edit mode, or a started task, **WHEN** the form
renders, **THEN** no advanced-settings disclosure is added.
- **GIVEN** a mobile create dialog, **WHEN** the user taps the disclosure and
opens the dependency picker, **THEN** the controls remain reachable, the
picker is contained in the viewport, and the document has no horizontal
overflow.
- **GIVEN** selected predecessors, **WHEN** the user submits the task after
using the disclosure, **THEN** the existing `blocked_by` payload contains the
same IDs and no dependency API contract changes.
## Out of scope
- Changing dependency persistence, AND semantics, candidate derivation,
archived-task filtering, or automatic task-start behavior.
- Changing the dependency selector's search, task icons, info help, or picker
interaction except where needed to mount it inside the disclosure.
- Adding dependency editing to task detail, Kanban card menus, or MCP.
- Adding or designing future advanced controls beyond the extensible content
region.
- Changing workflow, agent, executor, repository, or branch selector behavior.