chain-studio/lib/widgets
flemming-it 2bc556e0f5 feat(studio): ChainProgressBar - value and sign of life, kept apart
A waiting user asks two questions that a plain LinearProgressIndicator
answers as one: how far along is it, and is anything still happening.
The widget keeps them apart - the value may stand still for minutes
while a highlight driven by 'busy' keeps crossing the bar, so a
stalled percentage no longer reads as a frozen app.

Also: glides to new values over 600 ms so the polling interval behind
it stays invisible, refuses to walk backwards, renders indeterminate
rather than an empty bar when no value is known, stops animating once
the work ends, and honours reduce-motion.

Eight guards in test/progress_bar_test.dart cover each of those rules.
Writing them found a real defect: with busy: false the late-final
controller was first constructed inside dispose(), where the ticker's
context lookup is already unsafe.

Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
2026-09-08 13:20:19 +02:00
..
chain_binary_recovery.dart refactor: rename internal Fai* design system + fai_ helpers to chain 2026-06-16 17:53:17 +02:00
chain_card.dart refactor: rename internal Fai* design system + fai_ helpers to chain 2026-06-16 17:53:17 +02:00
chain_data_row.dart refactor: rename internal Fai* design system + fai_ helpers to chain 2026-06-16 17:53:17 +02:00
chain_delta_mark.dart refactor: rename internal Fai* design system + fai_ helpers to chain 2026-06-16 17:53:17 +02:00
chain_empty_state.dart refactor: rename internal Fai* design system + fai_ helpers to chain 2026-06-16 17:53:17 +02:00
chain_en_badge.dart refactor: rename internal Fai* design system + fai_ helpers to chain 2026-06-16 17:53:17 +02:00
chain_error_box.dart fix(setup): wizard errors copyable above the dialog, CLI skew explained, exec transparency 2026-07-15 00:10:01 +02:00
chain_field_help.dart feat(docs): in-place help pattern — explain a surface where it happens 2026-07-20 02:00:56 +02:00
chain_flow_output.dart refactor: FaiError -> ChainError (SDK stub rename lockstep) 2026-07-11 23:14:33 +02:00
chain_install_confirm.dart feat(store): show module maintainers (0.79.0) 2026-07-22 22:06:18 +02:00
chain_log_viewer.dart refactor: rename internal Fai* design system + fai_ helpers to chain 2026-06-16 17:53:17 +02:00
chain_module_sheet.dart refactor: FaiError -> ChainError (SDK stub rename lockstep) 2026-07-11 23:14:33 +02:00
chain_pill.dart refactor: rename internal Fai* design system + fai_ helpers to chain 2026-06-16 17:53:17 +02:00
chain_progress_bar.dart feat(studio): ChainProgressBar - value and sign of life, kept apart 2026-09-08 13:20:19 +02:00
chain_sealed_identity_bar.dart fix(workspace): close the sealed-switch privacy race, restore the parked filter 2026-08-27 23:48:03 +02:00
chain_search_palette.dart refactor: rename internal Fai* design system + fai_ helpers to chain 2026-06-16 17:53:17 +02:00
chain_segments.dart refactor(ui): one canonical segment control (ChainSegments) everywhere 2026-07-19 02:58:54 +02:00
chain_settings_dialog.dart feat(workspace): one global switcher anchor in the shell sidebar 2026-08-28 00:00:06 +02:00
chain_status_dot.dart refactor: rename internal Fai* design system + fai_ helpers to chain 2026-06-16 17:53:17 +02:00
chain_stores_dialog.dart refactor: FaiError -> ChainError (SDK stub rename lockstep) 2026-07-11 23:14:33 +02:00
chain_system_ai_editor.dart fix(settings): reveal System-AI test result + refresh onboarding checklist 2026-07-13 14:15:17 +02:00
chain_workspace_switcher.dart feat(workspace): one global switcher anchor in the shell sidebar 2026-08-28 00:00:06 +02:00
guided_setup_dialog.dart fix(ux): quick wins from the usertest medium list 2026-07-18 00:24:13 +02:00
hub_auth_policy_panel.dart fix(shell): daemon-start and health-poll auth handling; policy panel freshness 2026-07-15 05:50:24 +02:00
hub_load_error_view.dart feat(test): hermetic hub fake + state-matrix sweep across all pages 2026-07-19 01:02:51 +02:00
theme_picker_grid.dart refactor: rename internal Fai* design system + fai_ helpers to chain 2026-06-16 17:53:17 +02:00
widgets.dart feat(studio): ChainProgressBar - value and sign of life, kept apart 2026-09-08 13:20:19 +02:00