Skip to content

Changelog

Release notes for Tapsmith, generated from GitHub Releases.

Released November 11, 2026

  • Add Open Graph image so shared links show a preview card
  • Add a native SwiftUI + UIKit fixture app and e2e suite for iOS
  • Check MCP locator suggestions and counts with the device agent
  • Build MCP locator strings with the SDK’s own locator builder
  • Answer UI mode’s live Locator tab and mirror picker from the device
  • Cut agent-workflow token use: fresh-context hand-offs, review verifiers
  • Steer locator misses to the picker and test_locator, with near-match hints
  • Match native widgets for getByRole’s radiogroup, spinbutton and timer roles, and make an iOS activity indicator a progressbar
  • Skip reinstalling unchanged Android agent APKs, and poll agent readiness from 50 ms
  • Back off between retry reads like Playwright instead of a flat 250 ms
  • Answer Android system ANR and crash dialogs that come up mid-test
  • Add reducedMotion: turn Android animations off for a run and restore them after
  • Hold each tap only as long as its target needs, on every touch
  • Cut fixed waits from session start: daemon connect, Android device check, hooks probe
  • Overlap the Android app launch with the agent start, and skip unlock’s wait and the /system CA store where they do nothing
  • Tap the element tap()’s auto-wait found on Android, with its find as the first stability read
  • Speed up UIKit animations on iOS simulators with reducedMotion
  • Wait for app readiness on the agent instead of sleeps, monkey and dump polling
  • Launch the iOS app once at session start, wiping its data while xcodebuild starts
  • Tap iOS simulator elements through the HID helper instead of XCTest synthesis
  • Settle iOS touches on region screenshots instead of whole-screen ones
  • Drag instead of fling in Android scrollIntoView(), and look again as soon as each drag ends
  • Terminate iOS simulator apps with simctl before a relaunch or cold deep link
  • Type with a delay on iOS as a checked key-event burst, and clear and hide the keyboard faster
  • Make each scrollIntoView() step one device call: drag, settle, find, moved
  • Land the per-test reset on the test’s start route, and trim the iOS warm delivery
  • Remove the app-reset policy chip from the UI-mode test tree
  • Cut XCTest’s one-second sleep from every warm iOS deep link
  • Make iOS waitForIdle wait for a still screen, and cut duplicate pre-test idle waits
  • Match an RN alert Text by name on iOS, and explain unnamed misses
  • Fix docs and help samples that are wrong or contradict each other
  • Install @tapsmith/agent-android under pnpm 11+, and say why it is missing
  • Tunnel HTTPS on Play-image emulators instead of breaking it, and say so
  • Keep test discovery and watchers out of native build trees
  • Read locator strings without device. in the Locator tab and MCP tools
  • Match substring getByText case-insensitively, as Playwright does
  • Make taps on off-screen elements wait, then advise scrollIntoView()
  • Run only the visible tests when Run all is used on a filtered UI-mode tree
  • Make init’s defaults ones that work for a newcomer
  • Apply the config’s grep in UI mode, watch workers and headless MCP
  • Count iOS simulators in doctor instead of trusting simctl’s exit code
  • Draw the RN hooks marker carrier invisibly on Android
  • Put the keyboard away before a tap it would swallow
  • Keep the MCP server off found daemons that serve another platform
  • Rebuild the iOS simulator agent when Tapsmith is upgraded
  • Ship the prebuilt iOS simulator agent for Xcode 27
  • Make the documented ESLint setup lint TypeScript tests
  • Start the network proxy on demand so mocking needs no trace config
  • Gate the RN reset hooks in app code, and warn when they never show up
  • Scope a getter chained off a plain parent to that parent
  • Root Android devices before the agent starts, even with tracing off
  • Check that iOS type()’s focus tap took, and fail when it never does
  • Never match the keyboard, System UI bars, the app element or the hooks marker with a locator
  • init and docs: support native Xcode and Android Studio projects
  • Match Jetpack Compose controls by role and name on Android
  • iOS getByText reads text content and returns the innermost match
  • Start the rest of a file from a fresh app after a test fails
  • Take a per-call { timeout } on locator actions and refuse unknown options
  • Name a label-less text field by its placeholder in getByRole
  • Inject Android input without waiting on window animations
  • Match iOS getByText literally, so exact and substring agree on text ending in “?”
  • Autocomplete role, direction and key parameters, and document every public API member
  • Let init’s build and app-id questions be skipped, and warn about Yarn Plug’n’Play
  • Show the test’s stack frame under a failure in npm installs
  • Wait for an iOS tap target to stop changing on screen before touching it
  • Write a tsconfig.json in init so the documented ESLint setup works
  • Rediscover test files an agent writes mid-session in the MCP server
  • Treat a SwiftUI Toggle as one switch and tap its knob
  • Refuse to run without a config and report test-file load errors before any device work
  • Check in doctor that the config’s simulator exists on this Mac
  • Discover *.tapsmith.ts test files by default
  • Make iOS doubleTap() fire native double-tap recognizers on Xcode 27
  • Place an unloaded UITableView row’s contents at its row, not on screen
  • Report the iOS keyboard as shown only while it is on screen
  • Make iOS pinchIn()/pinchOut() pinch for real, or fail
  • Lead tapsmith_read_trace with the test’s status and error
  • Let Flutter dialog controls be tapped on Android: its modal barrier is not a cover
  • Reinstall a rebuilt iOS simulator app when any file in its bundle changed
  • Check the iOS app and bundle id in tapsmith doctor
  • Decode the body of waitForResponse() and network events
  • Prepare the configured simulator or AVD in a headless MCP session
  • Make a native iOS alert the getByRole(“alert”) role
  • Choose scrollIntoView()’s swipe direction from where the element is
  • Stop UI mode outlining another step’s element for a failed step
  • Find Flutter builds in tapsmith init and hint flutter build
  • Install the config’s app before an MCP session starts the agent
  • Hold a UI-mode run requested while the workers start, and show pages the devices when they are up
  • Make init’s example test pass on any app, and name the project in verify failures
  • Stop scrollIntoView() at the end of the content, and take its direction the way scroll() does
  • Use only the daemon a session started, and never stop one it did not
  • Swipe inside the scroll container in scrollIntoView(), so dialogs and sheets stay open
  • Make doctor refuse the project configs tapsmith test refuses
  • Keep OS services’ certificate rejects out of the network capture warning
  • Keep an iOS alert-scoped query inside the alert
  • Explain the iOS simulator SpringBoard teardown crash, and report it in doctor
  • Match iOS multi-line text fields by role and labelled toggles by label
  • Keep scrollIntoView() from stopping on a row the list’s momentum carried off screen
  • Find iOS table rows by their text, and keep UIKit row chevrons enabled
  • Make Android long presses and coordinate drags last their duration
  • Keep the iOS agent alive through XCTest-recorded issues, and lower its accessibility timeout to 2 s
  • Stop each Android find’s settle check from waiting ~500 ms on a screen that never goes quiet
  • Fail the E2E merge job only when it adds information
  • Wait out iOS navigation transitions before resolving a locator
  • Fix the iOS E2E first-MCP-snapshot check’s empty-screen and reboot-hang failures
  • Read the Android keyboard state without waiting on the keyboard’s own dump
  • Retry iOS agent starts that a loaded runner timed out, and keep the daemon connection through stalls
  • Find a scrolled iOS table row’s repeated button through its own row
  • Clear the iOS simulator keychain without restarting securityd, and time app-state phases
  • Don’t tap an iOS target’s in-place replacement after waiting out its cover
  • Capture trace frames before scrollIntoView, waitFor and find act
  • Remove the “First action after Xs” banner from UI mode
  • Evict and restart an iOS HID helper that stops answering
  • Stop a stale toast timer from hiding the next toast in the test app
  • Wait for an iOS app’s UIKit animations to end before touching an element
  • Retry the iOS simulator reducedMotion speed-up when a simctl spawn times out
  • Fix the iOS turn-and-tap flake: setOrientation after an XCTest error, and a HID helper that outlived a reboot
  • Start the network proxy at session start when the run’s tests use network APIs
  • Make the CI guide’s sample workflows work as pasted, and lint them
  • Revamp the README and npm package README for launch
  • Embed the demo video in the README
  • Slim the root CLAUDE.md and move scoped guidance next to its code
  • Keep internal ticket keys and Cloudflare’s email rewriting out of the docs and site
  • Document testing Flutter apps
  • Update Rust crate rustls to v0.23.46 [SECURITY] by @renovate[bot] in https://github.com/tapsmith/tapsmith/pull/376
  • Stop tracking the local benchmark scratch project’s lockfile
  • Run the full CI pipeline on every PR, whatever its base
  • Update Rust crate tokio to v1.51.6 [SECURITY] by @renovate[bot] in https://github.com/tapsmith/tapsmith/pull/413
  • Update test app dependencies by @renovate[bot] in https://github.com/tapsmith/tapsmith/pull/418
  • Update test suite dependencies by @renovate[bot] in https://github.com/tapsmith/tapsmith/pull/419
  • Update dependency @modelcontextprotocol/sdk to v1.32.0 [SECURITY] by @renovate[bot] in https://github.com/tapsmith/tapsmith/pull/404
  • Update dependency zod to v4.6.6 [SECURITY] by @renovate[bot] in https://github.com/tapsmith/tapsmith/pull/416
  • Pin dependencies by @renovate[bot] in https://github.com/tapsmith/tapsmith/pull/391
  • Update Android agent dependencies by @renovate[bot] in https://github.com/tapsmith/tapsmith/pull/394
  • Update Android agent dependencies (major) by @renovate[bot] in https://github.com/tapsmith/tapsmith/pull/420
  • Update React Native package dependencies by @renovate[bot] in https://github.com/tapsmith/tapsmith/pull/417
  • Update SDK dependencies by @renovate[bot] in https://github.com/tapsmith/tapsmith/pull/393
  • Update Rust dependencies by @renovate[bot] in https://github.com/tapsmith/tapsmith/pull/392
  • Replay the locator conformance fixtures on Android and cover getByText and getByRole
  • Update React Native package dependencies by @renovate[bot] in https://github.com/tapsmith/tapsmith/pull/492
  • Update Rust dependencies by @renovate[bot] in https://github.com/tapsmith/tapsmith/pull/493
  • Update plugin com.android.application to v9.5.0 by @renovate[bot] in https://github.com/tapsmith/tapsmith/pull/495
  • Update dependency minimatch to v11 [SECURITY] by @renovate[bot] in https://github.com/tapsmith/tapsmith/pull/477
  • Update SDK dependencies by @renovate[bot] in https://github.com/tapsmith/tapsmith/pull/494
  • Update dependency puppeteer-core to v25 by @renovate[bot] in https://github.com/tapsmith/tapsmith/pull/488
  • Update dependency glob to v14 [SECURITY] by @renovate[bot] in https://github.com/tapsmith/tapsmith/pull/476
  • Lock file maintenance by @renovate[bot] in https://github.com/tapsmith/tapsmith/pull/489
  • Update bufbuild/buf-action action to v1.7.0 by @renovate[bot] in https://github.com/tapsmith/tapsmith/pull/524
  • Update Android agent dependencies by @renovate[bot] in https://github.com/tapsmith/tapsmith/pull/523
  • Update React Native package dependencies (major) by @renovate[bot] in https://github.com/tapsmith/tapsmith/pull/526
  • Update GitHub Actions (major) by @renovate[bot] in https://github.com/tapsmith/tapsmith/pull/525
  • Cut E2E iOS shard setup before the first test
  • Put platform-specific daemon work behind a DeviceBackend Trait
  • Skip the trace viewer preview on fork PRs and bound adb log collection
  • Give the on-device agents the Tapsmith T icon
  • Trace only retried attempts in CI E2E runs
  • Press a double tap’s taps back to back over HID on iOS simulators (fix-forward of PILOT-1005)
  • Notify the dashboard repo when an E2E run finishes
  • Start the network proxy before each network test in CI again
  • Keep iOS CI simulators off Apple’s MobileAsset catalog hosts
  • Install buf without the flaky release lookup, and make buf breaking really run
  • Wait for an iOS app’s rendered content after a relaunch, not just a non-empty hierarchy
  • Stop the UI-mode action list jumping while tests run
  • Keep traces of failing first attempts in CI E2E
  • Ship every docs page in the tapsmith package for coding agents

Full Changelog: https://github.com/tapsmith/tapsmith/compare/v0.7.0...v0.8.0

Released October 14, 2026

  • Accept React Native’s remaining accessibility roles in getByRole
  • Infer the init –yes platform from –apk/–app and say when iOS is left out
  • Restore routes and event subscription when the route stream reconnects
  • Bound every hook with the test timeout so a hung hook fails instead of hanging the run
  • Stop init with WRITE_FAILED when a file cannot be written
  • Name label and state filters in Android selector descriptions
  • Shard the default project’s files in a config without projects
  • Run single-target UI, watch and parallel workers under the target’s device config
  • Match Android RN tab, progressbar, toolbar and combobox roles in getByRole
  • Decode XML entities in MCP snapshots and the locator playground
  • Bound every MCP tool response so large runs no longer drop the connection
  • Honour getByRole state options in MCP tools and the Locator Playground
  • Make locator suggestions copy-paste safe and resolvable on device
  • Cancel the init wizard cleanly on Ctrl-C instead of crashing
  • Stop Android agent commands the daemon gave up on, and never queue behind them
  • Match iOS getByRole heading by the header trait and RN generic views by role description
  • Say when there’s no package.json before suggesting the Tapsmith install
  • Recover an unresponsive Android device without restarting adb for every session
  • Refuse chained calls in MCP and Locator Playground locator strings instead of dropping them
  • Fix the MCP first-snapshot check’s post-reboot handshake timeouts and log where the time goes
  • Make the Locator Playground and MCP snapshot match the runtime for getByLabel and WebView suggestions
  • Replace a stale Tapsmith CA on Android 14+ and warn on rejected certificates
  • Make getByRole(“tab”) match tab items, and “tablist” the tab bar
  • Reset the app and re-run beforeAll before a retry under per-file reset
  • Never kill Tapsmith emulators when adb can’t be queried
  • Show the Node 22+ requirement beside the website hero install command
  • Add migration guides from Maestro, Detox and Appium
  • Spend fewer macOS runner slots on iOS E2E
  • Automate dependency updates with Renovate
  • Update Rust crate anyhow to v1.0.103 [SECURITY] by @renovate[bot] in https://github.com/tapsmith/tapsmith/pull/356
  • Update Rust crate rustls to v0.23.45 [SECURITY] by @renovate[bot] in https://github.com/tapsmith/tapsmith/pull/358
  • Update dependency figlet to v1.11.3 [SECURITY] by @renovate[bot] in https://github.com/tapsmith/tapsmith/pull/355
  • Update dependency @modelcontextprotocol/sdk to v1.31.0 [SECURITY] by @renovate[bot] in https://github.com/tapsmith/tapsmith/pull/359
  • Update dependency sharp to ^0.35.0 [SECURITY] - autoclosed by @renovate[bot] in https://github.com/tapsmith/tapsmith/pull/360
  • Update Rust crate h2 to v0.4.16 [SECURITY] by @renovate[bot] in https://github.com/tapsmith/tapsmith/pull/357
  • Update dependency @grpc/grpc-js to v1.14.5 [SECURITY] by @renovate[bot] in https://github.com/tapsmith/tapsmith/pull/353
  • Update dependency fflate to v0.8.3 [SECURITY] by @renovate[bot] in https://github.com/tapsmith/tapsmith/pull/354
  • Update dependency ws to v8.21.0 [SECURITY] by @renovate[bot] in https://github.com/tapsmith/tapsmith/pull/361
  • Update dependency astro to v7 [SECURITY] by @renovate[bot] in https://github.com/tapsmith/tapsmith/pull/362
  • Batch Renovate majors and lockfile refreshes into fewer PRs
  • Update dependency vitest to v4 [SECURITY] by @renovate[bot] in https://github.com/tapsmith/tapsmith/pull/364

Full Changelog: https://github.com/tapsmith/tapsmith/compare/v0.6.0...v0.7.0

Released October 8, 2026

  • Version the trace archive format and make its paths portable
  • Parse the CLI with commander: per-command flags, uniform –help, validated trace/video modes
  • Move the iOS commands under tapsmith ios — breaking: old names removed
  • Render image bodies as pictures in the Network tab
  • Boot Tapsmith-launched emulators side by side, each on a reserved port
  • Stop wasting cold iOS simulator setup on devicectl and a needless clear
  • Record and enforce device claims across Tapsmith sessions
  • Support RegExp in getByText, getByLabel and getByRole’s name, and in toHaveText/toContainText
  • Make exists() a non-waiting presence probe
  • Promo Video workflow: render on PRs, republish on release when tools/promo changed
  • Make and()/or() work on a real device
  • Website: cache-bust the promo video URL
  • Make all() return live nth() locators, like Playwright
  • Harden live all() handles and positional composition
  • Refuse iOS taps on covered elements instead of tapping the cover
  • Make the iOS reverse role map independent of Dictionary order
  • Refuse Android taps on covered elements instead of tapping the cover
  • Make the iOS system-proxy fallback multi-daemon safe and visible
  • Honour device pins and –force-install in every run mode
  • Refuse merge-reports merges that can’t be trusted
  • Fail loudly when a config file cannot be loaded
  • Run TypeScript tests from a CommonJS project without the paths[0] crash
  • Fail iOS hideKeyboard() when the keyboard stays up, and stop it pressing the screen centre
  • Stop merge-reports announcing “Running tests from 0 file(s)”
  • Unify the –json error envelope and document every –json schema
  • Make the MCP server’s tool descriptions and version tell agents the truth
  • Make init prefer a capture-capable AVD and stop doctor suggesting –force over the user’s AVD
  • Never kill an emulator Tapsmith cannot prove it launched
  • Run the other device targets when one cannot start, with advice that fits the config
  • Dismiss system ANR dialogs in the Android preflight, name them in errors, and warn on the test
  • Upgrade glob to 13 and fail CI on install-time deprecation warnings
  • Launch emulators fast locally, find the emulator binary, and report launches that die
  • Judge doctor’s platforms by the config, and make every fix it prints work
  • Update async-trait to 0.1.92 for clippy 1.99’s double_must_use lint
  • Show attached but unusable Android devices in list-devices
  • Write init configs that target the iOS devices the user picked
  • Drop the core packages’ postinstall and stop shipping compiled tests
  • Fail tapsmith verify when no test ran
  • Find the npm-installed iOS device agent, check Developer Mode in ios setup-device
  • Stop iOS agents when their daemon exits, and reap ones a killed daemon left
  • Shut the headless MCP server down when its client closes stdin
  • Count only connected physical iOS devices, with one devicectl rule in the SDK and daemon
  • Stream the iOS simulator agent build instead of buffering it, and build init’s agent the same way
  • Name attached but unusable Android devices in test runs and MCP
  • Start UI and watch mode on the device targets that can start
  • Build init’s iOS simulator agent only for a plan with a simulator target
  • Serve the tapsmith://api-reference MCP resource from installed packages and the repo
  • Keep the daemon’s own error and the full detail in start errors
  • Stop iOS clearData orphaning the app container, and heal apps the agent can’t see
  • Report a daemon binary spawn() refuses through the formatted start error
  • Start the MCP session’s own daemon when no daemon it finds will connect
  • Seed the init wizard’s build prompts from detected builds, and validate them
  • Adopt only the configured simulator in parallel iOS runs
  • Normalize whitespace in getByText, role names and getByLabel
  • Bound the per-test idle waits so never-idle Android screens don’t delay every test
  • Stop emulator launches hanging on the crash-report dialog, and never orphan a failed launch
  • Fix first-run docs breakers and warn when route() handlers can never fire
  • Offer to install Tapsmith from init, and say so when a config can’t import it
  • Validate config keys, types and values at load
  • Turn macOS App Nap off for windowed emulators so they aren’t throttled
  • Add test.describe and clear errors for missing Playwright APIs
  • Recognise Expo projects in tapsmith init: Expo build guidance and ids from the app config
  • Match getByRole names case-insensitively by substring, with exact: true for a whole match
  • Stop Node’s module-type warnings on config load, and verify’s doubled banner
  • Publish prereleases under a dist-tag, and point install docs at tapsmith@beta
  • Give no-toolchain advice that matches what is missing
  • Support test.skip(condition, description) and runtime test.skip()
  • Scaffold init’s example test as tests/example.tapsmith.ts so the project’s Jest and Vitest skip it
  • Fix the getting-started Login flow example and explain per-file app reset
  • Fail only the file when a test file cannot load
  • Clear a stale adb forward instead of refusing iOS, and remove it when the daemon stops
  • Refuse to start the CLI on Node older than 22, and state the Node floor before install
  • Pick arm64 agents and AVD images under Rosetta, and warn about x64 Node
  • Keep routes registered in beforeAll for every test of their scope
  • Polish the init wizard: yes/no prompts, every simulator with a booted one first, verify in Next steps, .gitignore
  • Resolve tapsmith test files, directories, globs and filters, and –grep, before any device work
  • Reject unknown getByRole roles and fix the docs’ getByRole(“list”) examples
  • Honour toBeVisible({ visible: false }) and refuse unsupported matcher options
  • Refuse Yarn Plug’n’Play with the linker fix, handle pnpm’s ignored-builds exit, and document Yarn and pnpm installs
  • Fail only the test when an unawaited waiter or promise rejects
  • Polish first-run CLI output: config errors once, no duplicate start errors, init hint, grep filtering, retry labels, watch summary, long TMPDIR
  • Make Android locator queries fast on busy apps by reading the tree-walk snapshot
  • Fix CLI docs drift and guard every documented invocation against the command tree
  • Pin and()/or() operand-index edge cases
  • Track Claude Code project skills and add the implement-ticket workflow
  • Replace the promo voiceover with ElevenLabs takes
  • Add auto and merge modes to implement-ticket(s), and require a clean review before ready
  • Give every wait in implement-ticket(s) a deadline
  • Run CI on devices Tapsmith launches and boots itself
  • Rename the selector playground to the locator playground
  • Point repository URLs at the tapsmith org

Full Changelog: https://github.com/tapsmith/tapsmith/compare/v0.5.0...v0.6.0

Released September 14, 2026

  • Declared app isolation, daemon reset ladder, persistent UI worker, device readiness and @tapsmith/react-native warm resets
  • Capture Android Firestore traffic instead of tunnelling it by default
  • Add timestamps and column sorting to the Console tab
  • Multi-device tests: drive two devices in one test
  • Capture live HTTP/2 streams and Firebase emulator traffic
  • Add opt-out anonymous telemetry to the CLI and SDK
  • Never deny iOS permission prompts from the blocking-dialog sweep
  • Let tonic’s Status through clippy’s result_large_err size lint
  • Stop two timing tests racing the clock they are testing
  • Centre UI-mode empty-state text when it wraps
  • Fix the MCP servers: run TypeScript tests, report failures, and stop lying about the session
  • Make screenshot pick work on actions with no captured hierarchy
  • Fix startup-launch agent flake and iOS Save Password cascade in device E2E
  • Make isVisible() non-waiting and add isHidden()
  • Make scrollIntoView honour filter/and/or/scope and unify the resolve-tick ladder
  • Retry the iOS foreground probe instead of recovering the session
  • Harden Android E2E preflight, and stop system UI hiding the hooks marker
  • Homepage: mobile layout fixes, Maestro-focused copy, fact-checked comparison table
  • Promo video refresh, comparison-table rows, and current-UI screenshots
  • Add hermetic Playwright suites for UI mode and the trace viewer
  • Cover the MCP surface that only a device used to reach
  • ci: cut fixed per-shard overhead in the device e2e workflows
  • Assert what a generated trace file actually contains
  • Add DCO contribution policy and GitHub app configuration

Full Changelog: https://github.com/samsmithyeah/tapsmith/compare/v0.4.1...v0.5.0

Released July 30, 2026

  • Attribute timeout errors to the in-flight operation; fix reporter frame filtering for npm installs
  • Add promo video generation pipeline (tools/promo)

Full Changelog: https://github.com/samsmithyeah/tapsmith/compare/v0.4.0...v0.4.1

Released July 18, 2026

  • Warm in-process deep-link delivery on iOS simulators, bounded by cold file boundaries
  • Add element pick mode to the live device mirror in UI mode
  • Guide users off Google Play AVD images that silently break HTTPS capture
  • Extend strict mode to WebView locators
  • Surface UI/watch startup failures instead of silently exiting 1
  • Ride out transient agent-connection drops in test runs
  • Make scrollIntoView a reliable no-op on already-visible elements
  • Render a reset-epoch marker so warm same-screen iOS resets verify as delivered
  • Keep long MCP test runs alive with progress notifications and add a session-wide suite status tool
  • Record no assertion bounds when the element is hidden or gone
  • UI mode: keep a finished test’s status and trace when afterAll re-tags attribution
  • Include beforeAll and afterAll actions in packaged test traces
  • Dismiss the Android soft keyboard with BACK instead of ESCAPE
  • Bound and retry iOS WebView connection setup; probe newest targets first
  • Make E2E CI resilient: fix every root-caused flake across SDK, daemon, and agents
  • Render website changelog as flat bullet lists (no categorisation)
  • Refresh website/docs screenshots and add click-to-enlarge
  • Speed up iOS E2E shard setup: cache npm and overlap simulator boot

Full Changelog: https://github.com/samsmithyeah/tapsmith/compare/v0.3.5...v0.4.0

Released July 3, 2026

  • Fence zombie test bodies and ship the failed attempt’s trace on flaky results
  • Cut Android agent per-action a11y round-trips from ~15 to 0-2

Full Changelog: https://github.com/samsmithyeah/tapsmith/compare/v0.3.4...v0.3.5

Released July 2, 2026

  • Add retain-on-failure-and-retries trace/video mode (Playwright parity)
  • Retry transient agent-command timeouts within the action budget
  • Fix the systematic E2E CI flakes across all four components
  • Automate releases + publish notes to GitHub Releases and website changelog

Full Changelog: https://github.com/samsmithyeah/tapsmith/compare/v0.3.3...v0.3.4

Released July 2, 2026

  • Tunnel embedded-root gRPC (Firestore) that aborts the MITM handshake
  • Don’t gate Android element queries on global UI idle
  • Default to the list reporter everywhere, including CI
  • Make single-test filtering intuitive and fail-loud
  • Fix list_results dropping all but the last file in multi-file runs
  • Add –project flag to the CLI

Full Changelog: https://github.com/samsmithyeah/tapsmith/compare/v0.3.2...v0.3.3

Released July 2, 2026

  • Address positional/filtered actions by agent-cached element id

Full Changelog: https://github.com/samsmithyeah/tapsmith/compare/v0.3.1...v0.3.2

Released July 2, 2026

  • Preserve Android auth (keystore) + runtime permissions across appState restore

Full Changelog: https://github.com/samsmithyeah/tapsmith/compare/v0.3.0...v0.3.1

Released July 2, 2026

  • Fix npm ci sync failure after release: decouple committed @tapsmith dep versions
  • Allow getBy*/locator() scoping off modified handles
  • Preserve AndroidKeyStore on app-state restore; add device.platform getter
  • docs: correct Android appState keystore behavior + cross-device limitation
  • Trace element-action auto-wait so failures are attributed correctly
  • Handle Firestore HTTP/2 cert rejects with passthrough
  • Show pending state for MCP-initiated test runs in UI mode
  • Trust the MITM CA on Android 14+ via the Conscrypt APEX store
  • Fix route.abort() hanging instead of failing the request
  • Fix literal … rendering in container “Run” button
  • LLM-friendly setup: non-interactive init, doctor –json, verify command

Full Changelog: https://github.com/samsmithyeah/tapsmith/compare/v0.2.0...v0.3.0

Released July 2, 2026

  • Pin website deploy to production branch on Cloudflare Pages
  • Strict mode for locators + runtime-true selector validation
  • Capture iOS simulator keychain in app state save/restore/clear
  • Tunnel HTTP/2-only and pinned-host TLS connections instead of dropping them
  • Make stop actually stop tests immediately, with SIGKILL escalation for wedged workers
  • Stop no longer leaks video recording + network capture on the daemon
  • Live progress feedback during long device actions
  • Video on-first-retry: startup warning, docs, and CI switch
  • Stop dispatcher crashing with unhandled EPIPE when a worker dies mid-run
  • Fix trace viewer not deploying to production on tag push
  • Fix empty Source tab for in-progress actions in UI mode
  • Retry transient stale snapshots during pre-action element resolution
  • Tear down child resources when the dispatcher crashes
  • Fix UI-mode MCP single-session transport; add multi-client support

Full Changelog: https://github.com/samsmithyeah/tapsmith/compare/v0.1.8...v0.2.0

Released July 2, 2026

  • Fix iOS simulator agent npm packages shipping without the app bundle

Full Changelog: https://github.com/samsmithyeah/tapsmith/compare/v0.1.7...v0.1.8

Released July 2, 2026

  • Auto-retry Android agent install on signature mismatch
  • Fix explicit test files only running against first matching project

Full Changelog: https://github.com/samsmithyeah/tapsmith/compare/v0.1.6...v0.1.7

Released July 2, 2026

  • Fix CJS/ESM dual-instance crash in test runner

Full Changelog: https://github.com/samsmithyeah/tapsmith/compare/v0.1.5...v0.1.6

Released July 2, 2026

  • Fix iOS agent startup race with concurrent app install

Full Changelog: https://github.com/samsmithyeah/tapsmith/compare/v0.1.4...v0.1.5

Released July 2, 2026

  • Fix: strip DSTROOTPath from auto-built iOS simulator xctestrun

Full Changelog: https://github.com/samsmithyeah/tapsmith/compare/v0.1.3...v0.1.4

Released July 2, 2026

  • Skip optional deps in CI workflows to prevent lockfile mismatch
  • Extract Android agent into separate @tapsmith/agent-android package
  • Auto-build iOS simulator agent on SDK version mismatch

Full Changelog: https://github.com/samsmithyeah/tapsmith/compare/v0.1.2...v0.1.3

Released July 2, 2026

  • Skip already-published release packages
  • Show in-flight action in UI mode Actions tab
  • Fix HTTPS scheme in Android network capture + auto-launch emulators when AVD set
  • Add video recording of test execution
  • Support cross-origin redirection in route.continue({ url })
  • Add –grep and –grep-invert CLI flags
  • Stream device logs into Console tab
  • Add elementHandle.waitFor() for waiting on element state
  • Add getByLabel() for locating inputs by label text
  • Add checked, disabled, selected, expanded options to getByRole()
  • Add isEditable() query method on ElementHandle
  • Add sharded Android E2E tests to CI
  • Fix 30 performance, robustness, and flakiness issues
  • Replay full run state on WebSocket reconnect
  • Improve iOS reliability and harden CI against transient flakes
  • Add configurable double-tap interval
  • Mitigate CI flakes: session recovery retry, test hardening, accessible locators
  • UI Mode v2 design overhaul + bug fixes
  • Implement test retries for failed tests
  • Add recovery for agent connection drops during between-file reset
  • Support getByRole for non-button roles on Android
  • Trace viewer v2 redesign to match UI Mode
  • Respect –workers as a hard cap on total worker count
  • Selector playground: suggest getByRole for trait-based roles
  • Fix launchEmulators inference for per-project use blocks
  • Fix ANR dialog detection failing on ASCII apostrophes
  • MCP server: multi-daemon discovery for cross-platform devices
  • Improve Tapsmith launch progress output
  • Ship prebuilt iOS simulator agent as npm packages
  • Comprehensive documentation overhaul
  • Fix iOS CI flakes: atomic doubleTap, robust restartApp, session recovery
  • Headless MCP server: full test dispatcher with CLI activity logging
  • Migrate MCP server from SSEServerTransport to Streamable HTTP
  • Polish launch progress output
  • Add Tapsmith documentation website
  • Add ephemeral preview deployments for website PRs
  • Add deployment workflows for trace viewer
  • Reference trace.tapsmith.dev in docs
  • Install MITM CA into system trust store on Android emulators
  • Redesign landing page with new branding and content improvements
  • Fix UI mode live test discovery
  • Fix trace action wall durations
  • Stream test results immediately instead of buffering per-file
  • Match Playwright list reporter output format
  • Fix flaky tests
  • Implement reset app deep link in E2E
  • Exclude caches from app state archives for faster save/restore
  • Refactor E2E tests: screen fixtures and deeplink navigation
  • Persistent TCP connection to on-device agent
  • Fix list reporter duplicate in-progress lines in single-worker mode
  • Make tapsmith SDK ESM-first
  • Add Tapsmith branding and website-matched dark theme to UI mode & trace viewer
  • Type-check the web apps and lint the trace viewer in CI
  • Resolve test-scoped fixtures in beforeAll/afterAll hooks
  • UI mode Source tab reads actual source files (Playwright-style)
  • Interactive device mirror in UI mode (tap/swipe/long-press/text)
  • docs(ui-mode): document the interactive device mirror
  • Stream daemon logs into trace files (trace.daemonLogs)
  • Fix iOS deep-link Open prompt flake
  • Guard iOS inputText typing
  • Use photographic device bezels in UI mode and the trace viewer
  • Fix UI mode: hard-refresh no longer starts a test run
  • Remove live video stream from the device mirror (screenshot-only)
  • Speed up iOS e2e: skip blind settle wait + add timing instrumentation
  • Add batched captureTraceState command to reduce iOS trace overhead
  • Fix chronic iOS auth.setup attempt-1 deep-link flake
  • perf: startup optimisations (CI + local)
  • Fix iOS simulator agent build in release workflow
  • Use npm install for tapsmith publish step in release

Full Changelog: https://github.com/samsmithyeah/tapsmith/compare/v0.1.1...v0.1.2

Released July 2, 2026

  • Add CI pipeline, 195 unit tests, and quality gates
  • Add 13 locator assertions for Playwright API parity
  • Add generic value assertions, expect.soft(), and expect.poll()
  • Add Locator API enhancements
  • Setup improvements
  • Add element action methods
  • Add device management APIs
  • Add test app, E2E suite, and test isolation
  • Add test reporter system with 8 built-in reporters
  • Add parallel execution, CI sharding, and emulator auto-provisioning
  • Add trace viewer with recording pipeline, viewer UI, network capture, and CLI
  • Add test.use() to override options per describe scope
  • Add app state snapshot/restore and projects
  • Add –watch CLI flag for re-running tests on file change
  • Add interactive UI mode for test running and debugging
  • Fix parallel test flakiness with scrollIntoView, file isolation, and trace optimizations
  • Add iOS simulator support via XCUITest agent
  • Replace selector builders with Playwright-style getBy* locators
  • Add device-per-project support for multi-platform testing
  • Replace macOS system proxy with per-simulator NE redirect
  • Physical iOS device support
  • Add API request fixture for test data seeding
  • Feat/network route interception
  • UI mode UX overhaul: network detail pane, watch scoping, errors tab, assorted polish
  • Fix known selector + assertion bugs
  • Fix iOS network mocking test flakiness
  • Selector playground for trace viewer and UI mode
  • Add WebView testing support for hybrid apps
  • Add MCP server for LLM/agent integration
  • Rename Pilot to Tapsmith
  • Add npm packaging, init wizard, and doctor command
  • Fix cross-compilation for linux-arm64 daemon build
  • Vendor protoc for cross builds
  • Make release versioning idempotent

Full Changelog: https://github.com/samsmithyeah/tapsmith/commits/v0.1.1