jaeone94
9e5fb67b76
Show app mode run validation warning ( #12557 )
...
## Summary
Adds an app mode validation warning so users can see when a workflow has
errors before running and jump directly back to graph mode to review
them.
## Changes
- **What**: Adds a reusable app mode warning banner above the Run button
when the execution error store reports workflow errors, including
validation and missing asset states.
- **What**: Reuses the existing graph-error navigation flow so the
warning action switches out of app mode and opens the Errors panel in
graph mode.
- **What**: Updates the app mode Run button icon and accessible label in
the warning state while keeping the Run action non-blocking.
- **What**: Adds unit coverage for the warning render/accessibility
state and an E2E flow that triggers a validation failure, dismisses the
overlay, and opens graph errors from the app mode warning.
- **Breaking**: None.
- **Dependencies**: None.
## Review Focus
The warning intentionally mirrors graph mode behavior: it surfaces the
error state but does not prevent the user from clicking Run. This avoids
turning display-level validation signals into hard execution blockers.
The warning is driven by the existing `hasAnyError` aggregate, so
missing nodes, missing models, and missing media are included alongside
prompt/node/execution errors.
## Tests
- `pnpm format`
- `pnpm lint`
- `pnpm typecheck`
- `pnpm test:unit`
- `pnpm knip`
- `pnpm test:browser:local
browser_tests/tests/appModeValidationWarning.spec.ts`
## Screenshots
<img width="461" height="994" alt="스크린샷 2026-06-25 오후 7 00 55"
src="https://github.com/user-attachments/assets/f8fc20bf-d572-46b5-9fa4-312e7c4c8076 "
/>
2026-07-01 15:24:45 +09:00
..
2026-04-28 08:52:49 +00:00
2026-04-19 04:58:34 +00:00
2026-03-15 22:46:47 +09:00
2026-03-15 22:46:47 +09:00
2026-06-25 06:59:00 +00:00
2025-12-29 15:03:34 -08:00
2026-03-27 09:11:26 +09:00
2026-03-15 22:46:47 +09:00
2026-03-28 13:08:52 -07:00
2026-06-25 20:38:59 +00:00
2026-06-02 01:05:48 +00:00
2026-06-26 22:54:04 +00:00
2026-05-06 02:40:01 +00:00
2026-03-15 22:46:47 +09:00
2026-06-19 14:57:31 +00:00
2026-03-28 23:19:04 -07:00
2026-06-16 13:03:02 +00:00
2026-05-20 11:22:42 -07:00
2025-12-08 19:48:11 -07:00
2026-03-15 22:46:47 +09:00
2025-12-08 19:48:11 -07:00
2026-04-13 00:13:04 -04:00
2026-05-27 00:29:11 -07:00
2026-06-26 22:54:04 +00:00
2026-05-18 18:59:20 +00:00
2026-03-15 22:46:47 +09:00
2026-03-15 22:46:47 +09:00
2026-06-18 21:16:24 +00:00
2026-06-30 02:59:11 +00:00
2026-06-05 21:56:54 +00:00
2026-06-26 23:11:40 +00:00
2026-06-26 22:54:04 +00:00
2026-03-29 08:27:53 +09:00
2026-06-22 09:22:14 +00:00
2026-03-27 09:11:26 +09:00
2026-06-30 02:59:11 +00:00
2026-03-15 22:46:47 +09:00
2026-04-16 12:54:12 +00:00
2026-04-28 19:13:12 -04:00
2026-05-21 19:25:26 +00:00
2026-04-28 02:18:31 +00:00
2026-05-21 19:25:26 +00:00
2026-05-21 02:26:26 +00:00
2026-05-14 12:28:21 -07:00
2026-04-28 02:18:31 +00:00
2026-07-01 15:24:45 +09:00
2026-04-15 11:42:22 +00:00
2026-04-15 11:42:22 +00:00
2026-04-28 02:18:31 +00:00
2026-04-10 19:47:20 +00:00
2026-05-12 14:42:31 +00:00
2026-05-07 10:27:15 +00:00
2026-04-08 11:28:59 -07:00
2026-06-25 06:59:00 +00:00
2026-04-14 23:33:11 +00:00
2026-05-19 01:55:11 +00:00
2026-06-24 11:05:01 +00:00
2026-06-23 10:41:14 +00:00
2026-04-16 12:54:12 +00:00
2026-05-14 12:28:21 -07:00
2026-04-28 02:18:31 +00:00
2026-04-28 17:21:55 +00:00
2026-04-15 15:25:47 +00:00
2026-05-27 00:29:11 -07:00
2026-06-02 00:36:43 +00:00
2026-04-16 12:54:12 +00:00
2026-05-05 11:17:30 +00:00
2026-06-26 22:54:04 +00:00
2026-06-23 19:43:44 +00:00
2026-06-25 02:30:07 +00:00
2026-04-16 12:38:01 +00:00
2026-06-13 02:40:58 +00:00
2026-04-09 20:50:56 -07:00
2026-04-08 11:28:59 -07:00
2026-04-08 11:28:59 -07:00
2026-04-16 09:44:06 +00:00
2026-06-25 06:59:00 +00:00
2026-05-17 20:54:07 -04:00
2026-04-13 20:43:25 +00:00
2026-05-12 15:06:13 +09:00
2026-05-08 12:11:06 +00:00
2026-05-27 05:05:26 +00:00
2026-04-11 01:25:14 +00:00
2026-04-28 02:18:31 +00:00
2026-06-04 06:28:14 +00:00
2026-05-29 17:20:54 +00:00
2026-06-03 20:51:23 +00:00
2026-04-11 01:25:14 +00:00
2026-04-20 17:35:17 -07:00
2026-04-16 13:43:02 +09:00
2026-07-01 15:24:45 +09:00
2026-04-15 15:25:47 +00:00
2026-05-04 20:30:42 +00:00
2026-06-18 21:16:24 +00:00
2026-05-04 20:30:42 +00:00
2026-04-20 22:43:28 +00:00
2026-05-12 15:06:13 +09:00
2026-06-26 22:54:04 +00:00
2026-06-26 22:54:04 +00:00
2026-04-09 20:50:56 -07:00
2026-06-20 03:32:41 +00:00
2026-04-14 17:40:23 +00:00
2026-06-08 23:26:13 +00:00
2026-04-10 19:47:20 +00:00
2026-04-09 20:50:56 -07:00
2026-05-04 12:54:52 -07:00
2026-05-05 08:47:07 +00:00
2026-07-01 15:24:45 +09:00
2026-04-28 22:02:42 +00:00
2026-04-08 11:28:59 -07:00
2026-05-13 10:35:16 +00:00
2026-04-09 20:50:56 -07:00
2026-04-28 08:33:42 -04:00
2026-06-26 22:54:04 +00:00
2026-05-04 20:31:15 -04:00
2026-06-23 16:54:59 +00:00
2026-04-13 20:43:25 +00:00
2026-05-13 20:33:19 +00:00
2026-04-23 22:17:16 -04:00
2026-04-15 15:25:47 +00:00
2026-05-11 18:51:52 +00:00
2026-05-29 22:28:08 +09:00
2026-05-26 00:47:30 +00:00
2026-04-11 01:25:14 +00:00
2026-06-26 22:54:04 +00:00
2026-06-19 19:50:04 +00:00
2026-06-26 17:57:58 +00:00
2026-06-26 22:54:04 +00:00
2026-05-29 02:03:44 +00:00
2026-04-29 20:52:58 +00:00
2026-06-12 18:18:34 +00:00
2026-04-23 19:33:18 +00:00
2026-04-08 11:28:59 -07:00
2026-04-13 20:43:25 +00:00
2026-06-19 14:05:49 +00:00
2026-04-13 20:43:25 +00:00
2026-05-06 01:54:18 -07:00
2026-05-15 14:00:33 -07:00
2026-05-27 00:29:11 -07:00
2026-04-08 11:28:59 -07:00
2026-05-06 15:07:57 +00:00
2026-05-02 05:40:45 +00:00
2026-04-10 19:47:20 +00:00
2026-04-13 20:43:25 +00:00
2026-04-13 20:43:25 +00:00
2026-06-26 22:54:04 +00:00
2026-04-14 17:40:23 +00:00
2026-04-14 17:40:23 +00:00
2026-05-26 00:47:30 +00:00
2026-04-28 09:46:25 -04:00
2026-05-06 02:40:01 +00:00
2026-04-28 02:18:31 +00:00
2026-04-15 15:25:47 +00:00
2026-06-12 02:44:02 +00:00
2026-05-14 02:26:11 +00:00
2026-05-29 22:28:08 +09:00
2026-05-04 20:30:42 +00:00
2026-05-19 10:56:41 +00:00
2026-05-20 02:59:44 +00:00
2026-06-19 00:59:00 +00:00
2026-06-19 00:51:52 +00:00
2026-06-19 17:34:23 +00:00
2026-04-08 11:28:59 -07:00
2026-06-17 21:00:02 +00:00
2026-06-06 00:26:51 +00:00
2026-04-14 17:40:23 +00:00
2026-05-04 12:54:52 -07:00
2026-04-08 11:28:59 -07:00
2026-04-11 01:25:14 +00:00
2026-04-13 20:43:25 +00:00
2026-04-15 15:25:47 +00:00
2026-04-22 11:29:08 -07:00
2026-04-11 01:25:14 +00:00
2026-04-13 22:15:45 +00:00
2026-05-04 21:51:50 +00:00
2026-05-22 15:24:31 +00:00
2026-06-26 22:54:04 +00:00
2026-04-13 20:43:25 +00:00
2026-06-15 12:41:14 +00:00
2026-05-11 09:28:23 +00:00
2026-04-11 01:25:14 +00:00