Repository navigation
v0.28.0
What's Changed
- ci: give the Windows relay suite timeout headroom and one retry by @jo-duchan in #942
- feat(dashboard): skeletons in place of Loading… while data loads by @jo-duchan in #943
- docs: reviewable automation direction in VISION and ROADMAP by @jo-duchan in #944
- refactor(dashboard): draw the device in one place, apart from its controls by @jo-duchan in #945
- feat(relay): let a teammate watch, read-only, a session an AI client drives by @jo-duchan in #947
- feat(dashboard): watch the device your coding agent drives, through its link by @jo-duchan in #948
- feat(relay): record flow runs, and delete a build's dependents on one path by @jo-duchan in #949
- feat(cli): record each flow run on the relay by @jo-duchan in #950
- feat(dashboard): a Flow Runs page for flow run records by @jo-duchan in #951
- feat(flow-runner): keep the screen each passed flow ended on by @jo-duchan in #952
- docs(android-agent): gRPC is the primary backend; scrcpy is the fallback by @jo-duchan in #953
- feat(relay): store a flow's video as its runner uploads it by @jo-duchan in #954
- feat(cli): send each flow's video beside the run record by @jo-duchan in #955
- feat(mcp-server): read the token from a credentials file, and take a rotated one without a restart by @jo-duchan in #956
- feat(dashboard): play each flow's video on the run page, and set how long videos are kept by @jo-duchan in #957
- feat(cli): store and check the MCP token with
tapflow token set/statusby @jo-duchan in #958 - docs(readme): play the demo video for signed-in visitors by @jo-duchan in #959
- feat(dashboard): mark an environment-only failure apart from an app failure in Flow Runs by @jo-duchan in #960
- feat(mcp-server): read run records with list_runs and get_run by @jo-duchan in #961
- chore(deps): Bump the npm-minor-patch group with 10 updates by @dependabot[bot] in #934
- fix(cli): find Xcode installed outside /Applications/Xcode.app by @edcs in #962
- fix(cli): say Xcode also comes from Apple's developer site, not only the App Store by @edcs in #965
- feat: a session holder that does not read the stream asks the relay for none by @jo-duchan in #963
- fix: ship LICENSE in the tapflow package and credit the emulator proto in NOTICE by @jo-duchan in #967
- feat: a failed tapOn suggests the line to use instead, from the screen it failed on by @jo-duchan in #968
- feat: the AI session watch page shows what the agent does, live by @jo-duchan in #969
- fix(ios): reliable flows on real apps — clipped tree frames, warm tree runner, launchApp waits for a screen by @jo-duchan in #970
- fix(ios): one UI-tree runner per simulator, on a port the runner picks by @jo-duchan in #972
- fix: launchApp waits for the screen to hold still, and Android launches wait for the first frame by @jo-duchan in #973
- fix(android): read the UI tree of a screen that never goes idle by @jo-duchan in #975
- docs(contributing): AI-assisted contributions verify their own changes by @jo-duchan in #976
- docs(dashboard): DESIGN.md as the entry point, one spec per component, held to cva by @jo-duchan in #977
- docs(dashboard): Label spec — one hint axis, no disabled state to draw by @jo-duchan in #978
- docs(dashboard): Card spec — two levels in use, no states, shadows unchanged in dark by @jo-duchan in #980
- fix(ios-agent): stop the previous audio capture when a running device is booted again by @orshih6 in #974
- docs(dashboard): Input spec, and read-only fields use the shared text size by @jo-duchan in #981
- docs(dashboard): Select spec — four heights by context, no placeholder, focus moves into the list by @jo-duchan in #982
- docs(dashboard): Dialog spec — four action layouts, focus return without a trigger by @jo-duchan in #983
- feat(dashboard): install tailwindcss-animate so overlays animate by @jo-duchan in #984
- fix(dashboard): the token dialog's scope line is a div, since a p cannot hold the badge by @jo-duchan in #985
- fix(dashboard): apply the theme before first paint, and patch next-themes' client script away by @jo-duchan in #986
- chore(dashboard): drop overlay classes that never applied by @jo-duchan in #988
- fix(dashboard): long pages no longer scroll the whole window by @jo-duchan in #989
- docs(dashboard): Separator component spec by @jo-duchan in #990
- docs(dashboard): Badge component spec by @jo-duchan in #991
- fix(dashboard): platform badges say iOS, not Ios by @jo-duchan in #992
- docs(dashboard): AlertDialog component spec by @jo-duchan in #993
- docs(dashboard): Tooltip component spec by @jo-duchan in #994
- docs(dashboard): TechLabel component spec by @jo-duchan in #995
- docs(dashboard): TabsTrigger component spec by @jo-duchan in #996
- fix(relay): refuse a duplicate app with 409 — one app per bundle ID by @jo-duchan in #997
- ci(release): docs-production follows each stable release, so tapflow.dev matches npm by @jo-duchan in #998
- fix(dashboard): drop the Runs button from App Center's build rows by @jo-duchan in #999
- fix(relay): refuse an upload part with no filename with 400, not 500 by @jo-duchan in #1000
- test(dashboard): raise the first-load budget to 191,000 for Dependabot's 32-update group by @jo-duchan in #1002
- chore(deps): bump the npm-minor-patch group across 1 directory with 32 updates by @dependabot[bot] in #1001
- feat(dashboard): list Flow Runs in the sidebar once a run is recorded by @jo-duchan in #1003
- chore: release v0.28.0 — watch what a coding agent tests, and read why a flow failed by @jo-duchan in #1004
New Contributors
Full Changelog: v0.27.1...v0.28.0