You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* feat(widget): add :live_session_card composite canonical widget (Phase 41.8)
Wires the most complex Phase 41 widget through all four pipeline stages
(IUR constructor → UnifiedUI catalog/DSL → LiveUI renderer → AshUI
iur_adapter + live_ui_adapter) plus two new test modules and boundary
assertions in eight existing test files.
Key design points:
- Deterministic synthetic id `live_session:<session_id>:<status_version>`
preserves coexistence-merge keying for PR 41.10 without coupling.
- Composite structure: actor identity header, meters (tools/edits/tokens),
NOW STREAMING region (aria-live="polite" + aria-atomic="true"), RECENT
activity list capped at 5 items (aria-label per actor), Pin/Interrupt
footer actions (aria-pressed on Pin, command-interaction attrs via
`command_interaction_attrs/3` helper in renderer).
- IUR validation: uuid_string? + datetime_like? + status in [:running] +
non-negative meters + exactly 3 mandatory command interactions
(pin_toggled / interrupted / expanded_recent).
- Stage 1–4 only; no Stage 5 AshUI DSL adoption, no coexistence merge
wiring (those land in follow-on PRs 41.9/41.10).
Gates: mix compile --warnings-as-errors EXIT=0 /
mix test (269 tests, 0 failures) EXIT=0 /
mix format --check-formatted on all 20 modified files EXIT=0
Co-Authored-By: Codex GPT-5.5 Pro xhigh <noreply@openai.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix(live_session_card): adapter aria-label state + duration label
Opus Max review P2 fixes:
- adapter Pin button aria-label now flips Pin↔Unpin with @Pinned? state
(was hardcoded "Pin" regardless; live_ui_adapter parity with Phoenix.Component)
- adapter time element now computes duration label from started_at
(was hardcoded "running"; live_ui_adapter parity with Phoenix.Component)
- New adapter_duration_label/1 helper parses ISO-8601 started_at and
emits Ns / Nm / Nh based on DateTime.utc_now diff
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* fix(live_session_card): add unified_iur reference fixture + cover pre-existing coverage gaps
Adds a Components.live_session_card/1 reference fixture to the canonical
components--accessibility_and_safety fixture in UnifiedIUR.Fixtures.
Uses an ISO 8601 string for started_at rather than a DateTime struct
so the reference snapshot_map walk does not hit an Enumerable error.
Also adds the three fixtures missing on main (collection_picker, thread_card,
composer_query_preview) so this branch does not carry pre-existing coverage
redness into its PR gate.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* docs(conformance): add live_session_card to UG-0003 (:workflow_progress_and_status)
Phase31DocsConformanceTest asserts each AshUI.WidgetComponents.kinds() name
appears in the user guide. live_session_card was added as a canonical widget
in Phase 41.8 but not documented in UG-0003, causing a net-new conformance
regression on PR #147.
Added live_session_card to the Workflow, progress, and status family table
row and added a descriptive paragraph covering its key props (session_id,
actor_handle, status, status_version, tools_count, edits_count,
tokens_consumed, started_at, now_streaming, recent_events, pinned?) and
canonical interactions (pin_toggled, interrupted, expanded_recent).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
---------
Co-authored-by: Codex GPT-5.5 Pro xhigh <noreply@openai.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
| Form control and composer |`runtime_form_shell`, `segmented_button_group`, `chat_composer`, `collection_picker`, `mode_nav`|`phoenix_form` -> `runtime_form_shell`|
101
101
| Row and artifact |`list_item_multi_column`, `artifact_row`, `thread_card`, `tool_call_card`| none |
102
-
| Workflow, progress, and status |`pipeline_stepper_horizontal`, `segmented_progress_bar`, `workflow_stage_list_vertical`, `meter_thin`, `unread_badge`, `workflow_progress_status_card`| none |
102
+
| Workflow, progress, and status |`pipeline_stepper_horizontal`, `segmented_progress_bar`, `workflow_stage_list_vertical`, `meter_thin`, `unread_badge`, `live_session_card`, `workflow_progress_status_card`| none |
0 commit comments