cockpit 3.0.13
cockpit: ^3.0.13 copied to clipboard
Production E2E automation CLI, daemon, MCP, drivers, and reports for Flutter and black-box apps.
Changelog #
3.0.13 #
- Added
cockpit dev treewith minimal, standard, and full Flutter structure profiles. Routine output remains bounded LON; complete trees are retained as verified artifacts and stdout returns only their paths. - Made
dev inspectand action locators use mounted Flutter Element signals without requiring application-authored Semantics, including structural--pathdisambiguation when stable public signals are insufficient. - Replaced an existing app before relaunching the same target while preserving every other target and session, preventing duplicate windows and commands from binding to stale instances.
- Removed terminal runs from the active-run registry so a completed run cannot block a later worker refresh, and serialized per-workspace build selection without affecting unrelated projects.
- Replaced dynamically compiled PowerShell/C# automation on Windows with in-process Win32 FFI for window discovery, activation, focused-control inspection, and native input. Ambiguous application-ID matches now fail explicitly instead of risking control of another project or checkout.
- Captured Windows system screenshots in process through Win32 GDI with Dart PNG encoding. The Windows regression path dropped from roughly 28 seconds to 407 milliseconds while retaining real system-screen evidence for native dialogs and operating-system UI.
3.0.12 #
- Serialized every daemon lifecycle transition under one bounded cross-process
lock. Concurrent reads no longer race an authorization change, lifecycle lock
waits honor each command timeout, and an unflagged
daemon startor restart preserves the authorization of an already running daemon instead of silently downgrading yolo mode. Discovery reads also treat a record that disappears during an expected daemon shutdown as absent without weakening canonical-file validation for records that still exist. - Made the global capability document a static Supervisor catalog, reducing a real Console cold request from 3.89 seconds to 5 milliseconds without launching or reconnecting workers from unrelated workspaces. Workspace-scoped operation routes remain the exact live authority for a selected workspace.
- Wait for Flutter's
app.startedevent when a development session reconnects after Supervisor replacement, preventing the first reload or restart from being rejected while device initialization is still incomplete. - Select the iOS regression simulator from the newest runtime supported by the
active Xcode installation, so WebDriverAgent and
simctlalways address the same compatible destination on moving GitHub runner images.
3.0.11 #
- Fixed
cockpit updateto ask Pub for the current latest hosted release instead of passing a lower-bound constraint that could treat the already active version as sufficient and skip a newer release. Installed-version verification, downgrade blocking, rollback, AOT optimization, and Supervisor reconnection remain enforced.
3.0.10 #
- Preserved a stable application temporary directory across Supervisor and worker replacement for desktop Flutter development, restoring DevFS reload and restart without relaunching the app or touching concurrent sessions.
- Applied the same isolated temporary-directory lifecycle to detached Linux, Windows, and environment-driven macOS automation apps, with cleanup on stop and launch failure and explicit rejection of conflicting user temp settings.
- Released logical leases immediately when they require no external cleanup, removed unnecessary session leases from safe reads, and required the device lease for screenshots so concurrent commands remain correctly isolated.
3.0.9 #
- Fixed development-session recovery after a Supervisor restart. Lazy Flutter
attach now waits for
app.started, persisted VM-service WebSocket URLs are normalized to Flutter's HTTP attach base, and rejectedapp.restartresponses no longer advance generation or mark a reachable app as crashed.
3.0.8 #
- Prevented
cockpit updatefrom accepting a stale Pub version index that resolves an older hosted release. Activation now requires a version at least as new as the running executable, and verification blocks any downgrade before the hosted installation is accepted or compiled to AOT.
3.0.7 #
- Fixed
cockpit updatewhen the fast source installer had placed a native AOT executable in Dart Pub's launcher directory. The updater now hands the live executable to Pub through a recoverable text launcher, verifies the hosted package, recompiles it to AOT, atomically restores the single fast executable, and removes takeover files without losing sessions or Supervisor state.
3.0.6 #
- Added
cockpit updateto install and verify the latest hosted release, reconcile the running Supervisor in place, and remove the retired split AOT source-install payload without touching Dart Pub's shared package cache. - Kept registered target handles synchronized when Flutter attach, reload, or
suite isolation replaces the runtime application identity, including
self-healing persisted pre-upgrade state and preserving the Supervisor log
reference.
dev diagnoseno longer fails after an otherwise healthy Supervisor reconnect. - Made routine LON output explicit across the AI Skill and public guidance;
JSON is now reserved for
jq, JSON-only consumers, and wire inspection.
3.0.5 #
- Reported impossible macOS viewport requests immediately as unavailable with the active display's exact logical content limit and recovery alternatives, avoiding a misleading settle timeout while preserving exact valid resizes.
- Versioned Supervisor and worker engines with the installed Cockpit package; the first managed command after an upgrade now drains and replaces an older running engine automatically while preserving authorization and durable state.
- Made the Agent Skill keep default LON output for routine work and reserve
JSON for
jq, JSON-only consumers, or explicit wire-format inspection.
3.0.4 #
- Fixed
cockpit dev press enterfor multiline Flutter controls that bind Enter through app-level shortcuts, without regressing normal IME submission for single-line text fields. - Isolated suite retry resource leases by attempt and observed heartbeat failures from session preparation onward, preventing a transient native activation timeout from terminating the workspace worker on retry.
3.0.3 #
- Kept independent workspace operations available while a timed-out worker request finishes its bounded terminal cleanup, preventing one slow native probe from blocking status, capture, cleanup, or subsequent automation.
3.0.2 #
- Completed the public REST and MCP control plane with strict operation help, request/response schemas, resource discovery, and case/suite submission through the same advertised operations used by the CLI.
- Bounded remote status and snapshot retries by the caller deadline, tightened network body retrieval to available artifact parts, and kept absent or continuing bodies explicit without emitting empty files.
- Isolated macOS Accessibility traversal from the worker, detected stale or
cyclic AX trees, and made blocked native waits terminate immediately with
actionable permission guidance instead of consuming the full step timeout;
resolved native controls now execute through
AXPressbefore any coordinate fallback so a successful input result reflects a real semantic action. - Stopped durable worker replay after the Supervisor terminalizes a run, preventing sequence conflicts and worker restart loops after interruption.
- Replaced Windows PowerShell file identity and ACL probing with native handle-based identity leases plus Win32 owner, DACL, ACE, and SID inspection, including every ancestor checked during root and workspace registration.
- Removed cross-platform Flutter launch stalls, preserved command deadlines, and kept common status, inspection, network, capture, and reload paths responsive through the selected numeric session.
3.0.1 #
- Scoped active numeric session handles to canonical Flutter projects and checkout identity, including nested-project discovery, explicit selection, side-effect-free listing, and unambiguous concurrent target reuse.
- Preserved running Flutter applications across daemon and worker restarts by detaching the machine control plane and reconnecting the same session instead of stopping or relaunching unrelated apps.
- Added interactive
dev startstage progress, project-relative entrypoint resolution, isolated Flutter tool state, and bounded recovery for faster, clearer startup from global AOT installations. - Restored dependency resolution on the declared Flutter 3.32 minimum while retaining the process control, image comparison, XML parsing, source-location, and HTTP profiling APIs used by current Flutter releases.
- Replaced macOS System Events tree reads with bounded native Accessibility traversal, exact app activation, and stable locator bounds before input.
- Hardened platform-aware capture, native/system actions, focused semantic inspection, nested scrolling, runtime input binding, and terminal SSE replay.
- Batched durable suite events and artifacts while preserving append-only recovery, reducing large acceptance-run persistence and exchange overhead.
3.0.0 #
- Replaced the multi-identity development workflow with
cockpit devand one checkout-scoped numeric session handle for start, status, UI control, network, viewport, screenshot, reload, restart, diagnosis, and stop. - Added exact AI-first UI locators, nested scrolling with alignment and signed offsets, platform-aware screenshots, responsive viewport control, and bounded diagnostics with artifact-path-only evidence output.
- Added newest-first network indexes, request/response body artifacts, credential masking with opt-in raw retrieval, SSE continuation state, and WebSocket frame summaries.
- Made minimal LON the default output and promoted LON, JSON, and YAML to equal
structured input/output formats;
--verbosityselects minimal, standard, or full response density. - Added operation-specific default timeouts and a consistent
--timeouton every bounded executable command, with cancellable timeout errors that leave owned development sessions reusable. - Added concise
op,session,case,suite,run, andartifactcommand paths with schema-driven inputs and durable run/report retrieval. - Fixed macOS stop cleanup, daemon/session reconnection, screenshot fallback, report artifact handling, and run report export performance.
- Removed the 2.x command aliases, duplicate generic operation entrypoints, long-form output flags, and legacy session identifiers instead of carrying divergent compatibility behavior.
2.2.1 #
- Fixed valid retirement responses being rejected after
workspace unregisterandroot remove, including cleanup after a workspace worker has run.
2.2.0 #
- Added dedicated minimal, standard, and full AI-first presenters for text and JSON output, with compact collection tables, no repeated response envelope, and file-only binary delivery.
- Fixed daemon and workspace-worker startup from global activation,
dart run, and external project directories by preserving the Cockpit package config. - Added monorepo-aware Flutter entrypoint resolution, isolated producer artifacts, short per-worker temporary roots for socket-bound toolchains, non-exclusive target inspection, actionable quarantined-resource failures, and paginated document listing with bounded operation journals.
- Expanded the release acceptance workflow and self-contained agent skill for Flutter-first development, black-box and mixed-stack E2E, launch injection, per-operation timeouts, evidence, offline reports, and platform recovery.
2.1.0 #
- Added
suite report --output-dirto export a complete offline report bundle in one command with bounded parallel downloads, manifest metadata checks, verified artifact bytes, cleanup on failure, and atomic directory commit.
2.0.1 #
- Added the Cockpit logo to the published package documentation.
2.0.0 #
- Added durable suite campaigns with DAG dependencies, scoped fixtures, matrices, bounded concurrency, retries, fail-fast policy, recovery, and complete offline JSON/JUnit/HTML/Markdown report bundles.
- Added semantic report directories, full suite/case definitions, detailed step metadata, responsive task-focused offline HTML sections, search, filters, deep links, evidence galleries, diagnostics, and a root SHA-256 manifest covering every exported file.
- Added a self-contained platform environment and recovery guide to every supported agent skill distribution, including Android SDK/ADB, iOS Simulator/WebDriverAgent, host permissions, and parallel target isolation.
- Added restart-safe suite node and attempt checkpoints. Active attempts recover
as
interrupted, completed nodes are not replayed, and persisted fixture/row session bindings must resolve to the same healthy resource. - Added strict home-scoped Supervisor authorization policy persistence and
daemon policy show|validate|apply, including explicit production/unknown target authority and allowlisted worker environment secrets. - Added process-scoped
daemon start|restart --yoloauthorization with effective-mode status, worker propagation, and report provenance. - Enforced suite
sharedSession,restartApp, andresetAppDataisolation before case fixtures, preserved dependency teardown ordering, propagated setup failures into blocked case reports, and kept attempted teardown active during cancellation. - Added registered black-box targets for Android, iOS, desktop, browser, and system surfaces, with native accessibility locators, system setup/cleanup actions, screenshots, and capability-truthful failures.
- Added per-step semantic/native/visual/coordinate routing, including a secondary system driver for Flutter development sessions and plane-aware conditions, fragments, retries, loops, capture, and recording.
- Made the sanitized
target.inspect.output.systemControlprofile the capability authority for that secondary driver without exposing private app or process identities to clients. - Changed macOS app recovery and activation to use the native application API, avoiding Automation and Accessibility permission requirements for focus recovery while retaining those permissions for real UI-tree and input work.
- Added deterministic workspace-confined visual template matching and screenshot baseline assertions with portable actual/baseline/diff artifacts.
- Added native and Flutter
copyText,eraseText, andpasteTextexecution, bounded location-route travel, and efficient repeated platform key events. - Added Android ADB execution and iOS simulator/physical-device WDA execution,
including per-target WDA endpoints for concurrent workspaces and iOS
physical-device install/uninstall through
devicectl. - Added a durable per-user Supervisor with isolated workspace workers, authenticated HTTP/SSE clients, idempotent admission, cancellation, and canonical artifact retention.
- Added paginated run artifact metadata across HTTP, CLI, and MCP plus streaming, size- and SHA-256-verified downloads for large evidence files.
- Migrated host CLI and MCP protocol imports to the platform-neutral
cockpit_protocolpackage. - Removed the
flutter_cockpit_protocoldependency and established the 2.0 package baseline without a compatibility forwarding layer. - Removed the embedded HTML DevTools dashboard and browser-only assets. The local observability service is headless and exposes authenticated APIs for independently implemented clients.
- Added the standalone
cockpit.test/v2YAML/JSON compiler, typed input and secret binding, deterministic Flutter case runner, safety policy checks, cancellation/cleanup kernel, and immutablecockpit.report/v2bundles. - Added strict offline 1.x workflow import without a runtime compatibility path, plus package-local YAML and JSON case examples.
- Added deadline-scoped operation leases, optional adapter-backed abort, and late-completion isolation for deterministic cancellation and cleanup.
- Kept compiler/importer/runner/control/policy/secret/bundle verification as the public V2 boundary while retaining binder, plan, lowerer, kernel, and recorder as internal implementation modules.
- Aggregated independent structural compiler diagnostics through the published schema while retaining deterministic source paths and locations.
- Expanded release acceptance to cover DAGs, matrices, fixtures, loops, retries, semantic and gesture command families, recording lifecycles, mixed Flutter/native execution, and verified offline report bundles.
- Made Android and iOS release regressions require real native locator, action, and assertion proof under an isolated YOLO test daemon; iOS CI now boots and health-checks a digest-pinned WebDriverAgent runner.
1.1.4 #
- Added standalone
cockpit/project support across CLI, MCP, validation examples, and CI without changing the production app dependency graph. - Added platform-aware screenshot and recording preference with automatic app fallback when the preferred system path fails and fallback is allowed.
- Fixed development supervisor startup from global and project-local entrypoints by preserving the tool package resolution context for detached processes.
- Hardened iOS simulator shell and recorded validation, including truthful capability probing and traceable fallback evidence.
- Updated to stable
dart_mcp0.5.2 for normalized workspace root URIs and synced the real MCP verifier with the standalone development shell. - Synced packaged MCP contract fallback documents with the repository contracts for AI development, workflow, and task-run bundle traceability.
1.1.3 #
- Removed the hosted CLI/MCP package dependency on the Flutter SDK by moving shared control, evidence, recording, runtime, and bridge DTOs to the pure Dart
flutter_cockpit_protocolpackage. - Fixed pub.dev global activation and project-local
dart run cockpit:cockpitso development supervisor startup works from both installation modes.
1.1.2 #
- Fixed development supervisor startup so the background Dart process uses the
cockpittool package resolution context instead of the launched Flutter app workspace.
1.1.1 #
- Fixed the public
package:cockpit/cockpit.dartexport surface so launch configuration CLI/MCP helpers and theirargstypes are available to downstream packages.
1.1.0 #
- Added shared Flutter launch configuration support across CLI, MCP, YAML workflows, development sessions, remote sessions, target launch, and platform launchers, including repeatable dart defines, dart define files, process environment values, and safe extra Flutter arguments.
- Added non-blocking AI development launch flows where
launch-appreturns after readiness while a background supervisor keeps logs, reload, restart, stop, screenshot, and recording control available. - Added production workflow execution with YAML/JSON scripts, conditions, branching, loops, retry, step descriptions, traceable step artifacts, issue evidence, and bundle-ready output roots.
- Added Devtools live observability with scoped sessions, dense timeline ordering, collapsible panels, media previews, bundle download, workflow submission, and per-run artifact linking.
- Added system-first screenshot and recording orchestration with app-level fallback when allowed, plus representative recording previews and keyframe storyboards.
- Expanded Native/System Control Plane capability discovery and platform adapters for Android, iOS simulator/device, macOS, Windows, Linux, and web, with truthful availability metadata and explicit blocked-by-environment diagnostics.
- Improved CLI output rendering with AI-readable defaults, JSON output for pipelines, file output modes, and path-only terminal responses for file writes.
- Hardened host process, recorder, web bridge, simulator, and artifact download behavior so long-running development loops remain bounded and recoverable.
1.0.0 #
- Initial public release of the host-side tooling layer for
flutter_cockpit - Added CLI and MCP entrypoints for session bootstrap, control execution, snapshot collection, orchestration, and validation
- Added the Native/System Control Plane:
read-system-capabilitiesandrun-system-action(CLI and MCP) with capability-truthful Android adb, iOS simctl+WebDriverAgent, desktop, and web profiles, declared parameter contracts, and payload validation - Added scene-level system macros for real debugging blockers:
resolveBlockers,preparePermissions,recoverToApp,tapNotification,readFocusState, andstabilizeForScreenshot - Added Android SystemUI demo-mode status bar overrides (
setStatusBar/clearStatusBar) for deterministic screenshot evidence - Added desktop host-plane actions through built-in tooling: system settings entry, host appearance, host file push/pull and media copy, app recovery, focus and device reads, notifications, and macOS
tccutilpermission resets - Added web (browser) evidence through host window adapters so screenshots and recordings work once the browser app id or process id is known
- Added native system log reads (
readSystemLogs: logcat, unified log, journalctl, Windows event log) so startup crashes are diagnosable before the runtime observer attaches - Added Android battery simulation (
setBattery) and connectivity toggles (setConnectivity), plus iOS simulator locale switching (setLocale) - Added task-run bundle writing, summary shaping, structured
logs.jsonevidence, and delivery evidence handling - Added
read-task-bundle-summaryCLI output for low-token bundle review alongside MCPread_task_bundle_summary - Added AI-readable default stdout rendering with JSON/path/file output formats for shell-friendly workflows
- Added sortable task-run bundle names, screenshot names, and recording keyframe paths for chronological artifact review
- Added host-side screenshot and recording adapters with validation and keyframe extraction
- Added remote session launchers for Android emulators, iOS simulators and devices, macOS, Windows, and Linux, with best-effort app cleanup when launch readiness fails
- Added collapsible Devtools dashboard panels with persisted panel layout and global collapse/expand controls for dense timeline, evidence, launcher, and inspector reviews
- Added live Devtools run scoping, timeline ordering controls, media preview, run bundle download, and workflow submission support for long-running validation sessions
- Fixed screenshot-only task bundle summaries so stale recording failure fields no longer block delivery gates when video was not requested
- Fixed development
launch-appso it returns after readiness while the background supervisor keeps logs, reload, restart, and stop control alive - Fixed
run-shelland host recorder helper commands so short CLI/MCP calls are bounded, killable, and do not inherit recording startup timeouts - Fixed stale development
stop-appcleanup so platform app processes are stopped even when the supervisor is already unreachable - Fixed the real MCP surface verifier so
serve-mcpshutdown cleanup is bounded and cannot hang the validation run - Fixed web bridge hot reload routing so stale browser reconnects cannot replace a ready client or hijack response ids
- Fixed transient artifact download timeouts by retrying retryable remote unavailability without masking structured artifact errors
- Fixed transient iOS simulator
simctlclipboard/status/read failures with limited safe-action retries while preserving final failure diagnostics