flower
/
All briefs
complete draft note flower
epic · UI Feedback/Requests /briefs view: 1) When/if the...

/briefs/{id} detail view — collapse dispatch form by default, move auto-dispatch toggle to card header, disable it until wired

canonical · plan

Spec

markdown

hand-off · dispatch

Dispatch

Auto-dispatch

when it reaches planned

Design-loop

design pass before build

This brief is complete — dispatch is closed.

#29 done fresh flower · flower/96-briefs-detail-collapse
agent: claude 1 scratchpad
You are being dispatched from flower Brief #96: /briefs/{id} detail view — collapse dispatch form by default, move auto-dispatch toggle to card header, disable it until wired

Recall pointer:
- Use recall_brief with id 96 for the full folder if you need provenance.

Target:
- project: flower (/Users/mikeferrara/Documents/code/flower)
- branch: flower/96-briefs-detail-collapse
- worktree: not specified
- kind: fresh

Current brief spec:
(no spec yet)

This is a direct request, not a fully-specced plan. If it's clear, resolve it. If you hit a blocking ambiguity, call brief_ask (or brief_append) with your questions and flip the brief to `refining` before proceeding — don't guess.

Recent/key trace events:
[1] participant_joined flower-orchestrator: (no body)
[2] note_added flower-orchestrator: Child of #87. Brief DETAIL view (`resources/views/livewire/briefs/show.blade.php` + `app/Livewire/Briefs/Show.php`). Distinct from #90 (/briefs index/create) and #81 (markdown editor on this view).

Operator ask (2026-07-03): the dispatch form eats a lot of vertical space but manual dispatch is rare. Reclaim it.

## Items
1. **Move the auto-dispatch toggle into the card header, right-aligned** (out of the body form). It's a persistent per-brief setting, so header placement fits.
2. **Disable the auto-dispatch toggle until the feature is actually wired.** VERIFIED non-functional: `auto_dispatch_on_planned` (migration `2026_06_30_110000`) is written by `Show.php:328` and cast on `Brief`, but there is **NO consumer** — grep of app/Jobs, app/Console, app/Services is empty; the UI even admits it: `show.blade.php:195` "Saved as intent — no agent acts on it yet." So: render the toggle **disabled** with a short "(coming soon / not yet active)" affordance, and **remove** the verbose "When this brief reaches planned … Saved as intent — no agent acts on it yet." helper text.
3. **Collapse the rest of the dispatch form by default;** reveal it only when the operator clicks an expand control (e.g. "Dispatch ▸" / "Show dispatch options"). Saves screen space for the common case where no manual dispatch happens.

## Follow-up (separate brief, NOT this one)
- Actually WIRE auto-dispatch-on-planned so the toggle does something: when a brief with the flag reaches `planned`, enqueue it into the project orchestrator's coordination queue (the #84 substrate) for the orchestrator to pick up on drain. Now feasible given the coordination queue + orchestrator drain loop exist. Flagging as a real follow-up; once built, re-enable the toggle (undo item 2's disable). Orchestrator to spec if operator wants it.

## Constraints
- bloom + FluxUI; Livewire 4; `php artisan test` green; `./vendor/bin/pint`; verify in the real app. Commit trailer `Brief: #<this-id>`.
[3] parent_set flower-orchestrator: Grouped under epic #87.
[4] status_change flower-orchestrator: (no body)
[5] note_added flower-orchestrator: CORRECTION to item 2 (per operator, 2026-07-03): do NOT disable the auto-dispatch toggle. The operator's plan is to WIRE it via the orchestrator drain loop (new sibling brief), so the toggle becomes live. So on this brief (#96), item 2 changes to: **keep the toggle enabled**, MOVE it to the card header (right-aligned) per item 1, and **replace** the stale "Saved as intent — no agent acts on it yet" disclaimer with a short accurate hint (e.g. "Auto-dispatches when it reaches planned"). The actual wiring (making it do something) is tracked separately; this brief stays purely the DETAIL-VIEW UI work (header placement + collapse the dispatch form + toggle relocation). Sequence #96 after the wiring brief lands, or coordinate so the hint text matches reality.
[6] dependency_added flower-orchestrator: Now depends on #98 (Wire auto-dispatch-on-planned via the orchestrator drain loop (the missing consumer)).
[7] participant_joined flower-98-worker: (no body)
[8] unblocked flower-98-worker: Unblocked — #98 reached complete.
[9] link_added flower-orchestrator: (no body)

Recommended linked context:
{
    "todos": [],
    "scratchpads": [
        {
            "id": 346,
            "solo_scratchpad_id": "1026",
            "name": "Orchestrator HANDOFF — flower build (live state)",
            "archived": false,
            "revision": 73
        }
    ]
}

Execution notes:
- Treat the brief as the source of truth.
- Keep work scoped to this dispatch request.
- Use brief_append / brief_update_status when reporting material progress; as your final dispatched-worker step, call brief_dispatch_complete with dispatch_request_id (or brief_id) and actor_ref.
- Codex workers should verify mutating Flower tools with tool_search query `brief_append brief_dispatch_complete flower_feedback` (limit 20) when tool availability is in doubt; report raw SEE/LOAD vs NOT visible instead of silently using local fallbacks.
- Add a git commit trailer `Brief: #96` to every commit for this brief so flower can exact-link commits back to the brief.

provenance · append-only

Trace

live
or paste a screenshot uploading…
  1. link added 2d ago
    agent · system:commit-trailer
  2. participant joined 2d ago
    system · system:commit-trailer
  3. status change 2d ago
    agent · flower-design-92
  4. dispatched 2d ago

    Dispatch request #29 marked done.

    agent · flower-design-92
  5. note added 2d ago

    DONE — built on branch `flower/96-briefs-detail-collapse` (off master, which includes merged #92/#93), commit d469d29. NOT merged/pushed (orchestrator merges from MAIN). Detail-view UI only — no wiring touched. Followed the CORRECTION (event [5]): toggle stays ENABLED. resources/views/livewire/briefs/show.blade.php: - (a) Moved the auto-dispatch toggle out of the body form into the Dispatch card HEADER via the card's `actions` slot (right-aligned) — where a persistent per-brief setting belongs. - (b) Kept the toggle ENABLED; replaced the stale "Saved as intent — no agent acts on it yet" disclaimer with a short accurate hint: "Auto-dispatch · when it reaches planned" (tooltip: "Auto-dispatches this brief when it reaches planned"). - (c) Collapsed the manual-dispatch form behind a "Show dispatch options" expand control (Alpine x-data/x-show, collapsed by default, two-chevron affordance), matching the existing x-cloak/x-transition pattern already in this view. The form stays server-rendered (just visually hidden), so the wire dispatch flow + existing tests are unaffected. - Left the approval / blocked / closed notices and the dispatch-request packet list visible (they explain state / show provenance) — only the form itself collapses. Kept bloom (no FluxUI), consistent with the existing /briefs views. No test asserted the moved toggle or removed disclaimer, so nothing needed updating; added 2 new tests instead. Tests: 2 new tests/Feature/Briefs/ShowTest.php cases (toggle + hint in header, stale disclaimer gone; form collapsed behind the expand control while still rendered). Test result: `MEILISEARCH_KEY=LARAVEL-HERD ~/bin/php artisan test` → 683 tests, 682 passed, 1 skipped (pre-existing), 0 failures. `~/bin/php ./vendor/bin/pint --dirty` → passed.

    agent · flower-design-92
  6. participant joined 2d ago
    system · flower-design-92
  7. dispatched 2d ago

    Dispatch request #29 queued for flower.

    agent · flower-orchestrator
  8. status change 2d ago
    agent · flower-orchestrator
  9. link added 2d ago
    agent · flower-orchestrator
  10. unblocked 2d ago

    Unblocked — #98 reached complete.

    system · flower-98-worker
  11. participant joined 2d ago
    system · flower-98-worker
  12. dependency added 2d ago

    Now depends on #98 (Wire auto-dispatch-on-planned via the orchestrator drain loop (the missing consumer)).

    agent · flower-orchestrator
  13. note added 2d ago

    CORRECTION to item 2 (per operator, 2026-07-03): do NOT disable the auto-dispatch toggle. The operator's plan is to WIRE it via the orchestrator drain loop (new sibling brief), so the toggle becomes live. So on this brief (#96), item 2 changes to: **keep the toggle enabled**, MOVE it to the card header (right-aligned) per item 1, and **replace** the stale "Saved as intent — no agent acts on it yet" disclaimer with a short accurate hint (e.g. "Auto-dispatches when it reaches planned"). The actual wiring (making it do something) is tracked separately; this brief stays purely the DETAIL-VIEW UI work (header placement + collapse the dispatch form + toggle relocation). Sequence #96 after the wiring brief lands, or coordinate so the hint text matches reality.

    agent · flower-orchestrator
  14. status change 2d ago
    agent · flower-orchestrator
  15. parent set 2d ago

    Grouped under epic #87.

    agent · flower-orchestrator
  16. note added 2d ago

    Child of #87. Brief DETAIL view (`resources/views/livewire/briefs/show.blade.php` + `app/Livewire/Briefs/Show.php`). Distinct from #90 (/briefs index/create) and #81 (markdown editor on this view). Operator ask (2026-07-03): the dispatch form eats a lot of vertical space but manual dispatch is rare. Reclaim it. ## Items 1. **Move the auto-dispatch toggle into the card header, right-aligned** (out of the body form). It's a persistent per-brief setting, so header placement fits. 2. **Disable the auto-dispatch toggle until the feature is actually wired.** VERIFIED non-functional: `auto_dispatch_on_planned` (migration `2026_06_30_110000`) is written by `Show.php:328` and cast on `Brief`, but there is **NO consumer** — grep of app/Jobs, app/Console, app/Services is empty; the UI even admits it: `show.blade.php:195` "Saved as intent — no agent acts on it yet." So: render the toggle **disabled** with a short "(coming soon / not yet active)" affordance, and **remove** the verbose "When this brief reaches planned … Saved as intent — no agent acts on it yet." helper text. 3. **Collapse the rest of the dispatch form by default;** reveal it only when the operator clicks an expand control (e.g. "Dispatch ▸" / "Show dispatch options"). Saves screen space for the common case where no manual dispatch happens. ## Follow-up (separate brief, NOT this one) - Actually WIRE auto-dispatch-on-planned so the toggle does something: when a brief with the flag reaches `planned`, enqueue it into the project orchestrator's coordination queue (the #84 substrate) for the orchestrator to pick up on drain. Now feasible given the coordination queue + orchestrator drain loop exist. Flagging as a real follow-up; once built, re-enable the toggle (undo item 2's disable). Orchestrator to spec if operator wants it. ## Constraints - bloom + FluxUI; Livewire 4; `php artisan test` green; `./vendor/bin/pint`; verify in the real app. Commit trailer `Brief: #<this-id>`.

    agent · flower-orchestrator
  17. participant joined 2d ago
    system · flower-orchestrator

epic · dependencies

Relationships

depends on

agents · waves

Participants

  • flower-orchestrator participant · active
  • flower-98-worker participant · active
  • flower-design-92 participant · active
  • system:commit-trailer participant · active

trace · graph

Links

  • Commit #1648 execution
  • Scratchpad #346 execution

scope

Projects

  • flower · primary

dogfood · read-only

Agent’s-eye view

The literal recall_brief payload an agent gets — same service path as the MCP tool.