bug_capsule 0.4.1-beta.7
bug_capsule: ^0.4.1-beta.7 copied to clipboard
Record and replay Flutter bugs with portable capsules, error monitoring, state and network integrations, and a CLI for verifying fixes.
0.4.1-beta.7 — 2026-10-27 #
-
Distribute standalone CLI executables for macOS, Linux and Windows, also available through
@bugcapsule/clion npm. Installing the CLI no longer requires Dart or Flutter. -
Add opt-in inline screenshots and timeline support.
-
Crash capsules: while a session records, a crash journal (header, checkpoints and events, flushed at least every 250 ms from a background isolate, mirroring the flight recorder's eviction, at most 2 ×
maxCapsuleBytes) is kept per process. On the next launch, a native crash of an earlier run (withbug_capsule_native) gets a capsule built from its process's journal: failure kindcrash, thecrash.nativegap,labels.source = crash_journal,manifest.monitoringset to the event, and the event carries itscapsuleId. Crash capsules don't count againstmaxCapsulesPerSession; journals no crash claims are deleted at launch, and any older than 7 days. NewBugCapsuleConfig.crashJournal(default on). -
Capsule format v2 accepts failure kind
crash(withfailure.crash: mechanism, signal, in-app frame); crash capsules are always written as v2. -
bugcapsule gate: the release gate for CI. Fetches what a release must not reproduce, builds once, verifies each capsule, records the runs with the release, posts the gate report, prints a table and writes JUnit XML (--junit) or JSON (--json).--fail-on reproduced,flaky,errorsets which outcomes fail (exit 1 reproduced, 2 flaky, 3 could not run); credentials fromBUGCAPSULE_TOKEN/--token(a service token withcapsules.readandreplay.submit). A plan the backend truncated (10 capsules per issue, 200 in all) is gated as sent, with a warning andtruncatedin the JSON and JUnit. -
bugcapsule runandverifysend the release of the build under test with each run (Flutter: pubspec version and app id; Android: the installed APK'sversionName/versionCode; iOS:CFBundleShortVersionString/CFBundleVersionand bundle id),--releaseand--environmentoverride. -
Replay maps an app process death during an attempt to the verdict (crash capsules: same crash type reproduces; another type is inconclusive with reason code
failure.different; another in-app frame addsfailure.different_frame). Flutter launchers read the process exit, Android the instrumentation result,dumpsys activity exit-infoand the crash log, iOS the XCTest output and the simulator's crash report. Runners can report acrashobject in their result. -
Native crash reporting through the new
bug_capsule_nativepackage: crashes of the previous run (signals, NDK and Mach crashes, Android exit records, MetricKit) become events with that run's release and breadcrumbs, go throughbeforeSend, and make its sessioncrashed; hangs while running count in the session. The redacted scope is mirrored to the native handler. NewMonitoringOptions.enableNativeCrashHandling,enableAppHangTrackingandappHangTimeout;NativeCrashReporterfor the native side. -
A session recovered on the next launch reports the release and environment it ran with, not the current ones, so an app update no longer moves a crash to the new release.
-
ErrorEvent.fromJson(andfromJsonon its parts). -
BugCapsule.refreshRemoteConfig()now always returns a config fetched after the call. Before, a call made while another fetch was running (such as the oneinitstarts) returned that older answer, so a just-flipped kill switch or body setting could be missed. -
Capsule spec v2 (
spec/capsule-v2.md): required replay dependencies, payload recording modes, lossless typed values and reason codes for verification. The codec reads v1 and v2 and writes v2 only for capsules with interaction dependencies. -
BugCapsuleWebSocket: record and replayweb_socket_channelanddart:ioWebSockets offline, with recorded ordering and timing, send checks and reconnect attempts. -
BugCapsulePlatformChannels: record and replay allowlisted MethodChannel, EventChannel and BasicMessageChannel traffic in both directions.BugCapsule.initcreates a binding that wraps the default messenger; a late setup is reported aschannel.late/dependency.late. -
NativeAdapterfor third-party SDKs, andpackage:bug_capsule/testing.dartwithInteractionHarnessandAdapterConformance. -
Replay preflight blocks capsules whose required adapters are missing (
dependency.unsupported) or cannot be restored (dependency.unrestorable). Idle compression never skips past a due delivery. -
bugcapsule inspectlists dependencies, adapter versions, coverage and gaps;verifyreports and uploads reason codes. -
Project capture settings can turn off one adapter's capture and lower the interaction payload limit.
0.4.1-beta.6 — 2026-10-25 #
bugcapsule loginsigns in through the browser, likefirebase login: it shows a code, opens the dashboard to approve it for one project, and saves a personal token.--no-browserprints the address to open on another device (SSH).--urldefaults to the saved login, thenhttps://api.bugcapsule.com. A BugCapsule server without browser sign-in gets a message to use--tokeninstead.- New
bugcapsule logoutrevokes the CLI's personal token and removes it from~/.bugcapsule/config.json. --token,--secret-keyand--ingest-keykeep working; passing an SDK token (bcsdk.v1…,bct_…) to--tokennow says it belongs in the app.
0.4.1-beta.5 — 2026-10-25 #
- Keep the CLI version and captured SDK version in sync with the published package version.
- Add a release gate that rejects mismatched version metadata.
0.4.1-beta.4 — 2026-10-25 #
- Let Android instrumentation finish ActivityScenario cleanup before starting another replay attempt, and stop the test APK process during attempt isolation. This prevents subsequent attempts failing to attach on Android 14.
0.4.1-beta.3 — 2026-10-25 #
-
License the Flutter SDK and bundled CLI under the MIT License.
-
Apply the Dart formatter to the package sources, tests, and tools.
-
Shorten the package description to meet pub.dev's metadata requirements.
-
Include a Flutter example in the published package with initialization, navigation monitoring, and manual capsule capture.
0.4.1-beta.2 — 2026-10-25 #
-
Publish the full developer README on pub.dev and check it matches the repository README.
-
Wait for queued outbox operations during shutdown, including token-rejection cleanup.
-
Single-token setup:
BugCapsuleConfig(token: 'bcsdk.v1.…')with the SDK token from the dashboard;appVersion/appBuildare optional.parseConnectionTokenparses tokens offline (connection token v1, shared test vectors). An explicitbackendkeeps working and wins over a token. -
BugCapsule.status: connection state (connected,offline,rejected,invalid_token, …), the backend's refusal reason, configuration-fetched and first-data confirmations, and which replay instrumentation is still missing. -
A refused credential (revoked, expired or unknown token) is logged once with the backend's explanation and stops capture and uploads for the session.
0.4.1-beta.1 #
- Public beta packaging of the validated 0.4.0 SDK and multi-runtime CLI.
- Updated package repository metadata and prerelease version.
0.4.0 #
-
Unify the Flutter integrations and multi-runtime replay CLI in
bug_capsule. -
Add monitoring, offline outbox, remote configuration and replay validation.
-
Test kill-switch cancellation at a deterministic encoding boundary.
-
Find Android adb from SDK paths when the replay CLI runs outside a configured PATH.
-
Apply the Bug Capsule Proprietary License to the package and CLI; prior written permission is required for use or distribution.