SHIPPED · v1.17.0
Mobile Simulator — iOS Mirror with Full Input- Database Workspace
New
Stream a live iPhone simulator inside 1DevTool — A new Mobile panel mirrors any booted iOS simulator right next to your terminals, editor, and database. No more Cmd+Tab-ing between Xcode's Simulator.app and 1DevTool every five seconds while you debug an app
New connection draft form and settings dialog — Building a connection string is now a guided form: pick engine, fill host/port/user/database, and 1DevTool assembles the URL for you. Paste an existing connection string into the URL field and the form parses it back into fields. A dedicated settings dialog lets you rename, edit credentials, or delete any connection
Sample databases via Docker — A new tests/docker/sample-databases/docker-compose.yml spins up Postgres, MySQL, MSSQL, ClickHouse, MongoDB, Redis, Elasticsearch, CouchDB, Cassandra, SurrealDB, Weaviate, InfluxDB, and Kafka locally with sample data so you can kick the tires on every supported engine without standing up your own infra
Zoom any terminal to fill the whole window — Hit the new fullscreen button on any terminal and it expands to cover the entire workspace, hiding the sidebar, panels, and status bar. Perfect for live-coding demos, pair-programming over screenshare, or just giving a long AI agent output the room it deserves. Press again (or Esc) to restore the original layout
Resume panel and dialog refresh — The Resume panel surfaces more session context at a glance (agent, project, last message preview) and the Resume dialog's session picker is more readable with the new cross-agent defaults
Improved
Tap, swipe, and type for real — Click the mirrored phone and 1DevTool drives WebDriverAgent (WDA) to deliver real pointer events to the simulator. Drag past a 2.5% threshold and the tap becomes a swipe; type with your keyboard and the text batches into the focused field. Every gesture lands on the app, not just on the mirror
Device pill header — A compact dark pill above the phone gives you one-click Device, WebDriverAgent host, and Launch app modals. The Device modal groups simulators by iOS runtime so picking between iPhone 17 Pro on iOS 26.4 and iPhone 15 on iOS 17.5 is unambiguous. The WDA host modal lets you point at a remote or custom-port WDA without touching the terminal. The Launch modal takes a bundle ID (com.example.app) and boots the app on-device in one click
Gesture shortcuts on the header pill — Home, Lock, Scroll Up, and Scroll Down buttons sit right above the phone so you can drive navigation without reaching for the keyboard. The Screenshot button captures the current frame; the AI button sends that screenshot straight to an AI terminal with context about which device and iOS version it came from
Inspect Element tab — Switch to the Inspect tab and hover over the phone: 1DevTool parses WebDriverAgent's accessibility tree and highlights whatever element is under the cursor, showing its Type, Label, Value, Accessibility ID, Frame, Enabled, and Visible flags in a side inspector. Perfect for writing xcuitest selectors or checking whether that button really exposes the accessibility label you thought it did
Log Interactions checkbox — On the Logs tab, tick "Turn on Log Interaction" to record every tap and swipe with the element you actually hit: tap - XCUIElementTypeButton "7", swipe (0.5, 0.7) - (0.5, 0.3). Great for building a repro script, drafting a test plan, or paste-handing a full UX trace to an AI agent
Copyable, selectable interaction log — The log panel uses a readable monospace stream, preserves every tap/swipe with timestamps, and has a one-click Copy button so you can share a repro sequence with an AI agent or a teammate
Per-device runtime shown in the header — "iPhone 17 Pro" sits above "iOS 26.4" in the pill so you always know exactly which runtime the mirror is driving
Android mirror placeholder with "Coming Soon" badge — The Android tab is visible but clearly marked as not yet available, so the roadmap is obvious without cluttering the iOS workflow
Tabbed database workspace with a connection rail — The database client now opens like a real IDE: a slim connection rail on the far left shows every saved connection with live status dots, a workspace sidebar lists tables and views for the active connection, and the center pane hosts multiple query tabs, table grids, and structure views at the same time. Switch between a Postgres production DB, a local MySQL, and a Redis cache without losing any tab's state
Row detail drawer — Click any row in the results grid to slide open a detail drawer that renders every column top-to-bottom with full-value text for long fields, JSON tree view for JSONB/BSON, and a copy button per field. Finally usable for tables with 40+ columns that won't fit horizontally
Table structure view — Open a table and switch to the Structure tab to see every column's type, nullability, default, primary/foreign-key flags, and indexes in a clean grid. Works across every supported engine (Postgres, MySQL, MSSQL, ClickHouse, MongoDB, Redis, Elasticsearch, Cassandra, and more)
SQL preview footer — Editing cells, renaming columns, or mutating rows generates a preview of the exact SQL 1DevTool is about to run in the footer. Review it before hitting Execute so you never DELETE the wrong table by accident
Glide Data Grid with custom cells — The results grid is now powered by Glide Data Grid with custom cells for JSON, arrays, and long-text preview. Row height adapts to content, wide columns are draggable, and hundreds of thousands of rows scroll without a stutter
Resume sessions now sync to a local database — Resume history (the "continue a chat in a different agent" flow from v1.15.1) used to live in a per-project JSON file that could get out of sync if you switched machines or hit edge cases around concurrent edits. It now persists into a dedicated local database and survives restarts, crashes, and the worktree remount path cleanly
Global HTTP client state — Your HTTP client collections, environments, and request history now live in a global workspace rather than per-project, so a request you save while working on Project A is available in Project B. Import once, use everywhere
Global database connections — The same applies to database connections. Add a connection to your team's staging DB once and it's available across every 1DevTool project, not just the one you happened to be in when you saved it
Cleaner Git client dialog — Status, staging, and commit flows in the Git panel have tighter spacing and clearer button hierarchy. Branch switching and commit history feel snappier and less cluttered
Right-click "Open in…" respects your choice — Opening a folder in an external IDE from the file tree used to occasionally fall back to the system default. The menu now reliably honors whichever IDE you've configured (VS Code, Cursor, Zed, etc.) and surfaces an error if the IDE binary isn't on your PATH
Prompt History dialog polish — The Prompt History dialog has a cleaner entry card layout, faster search, and consistent keyboard navigation with the other command dialogs
Command Palette refresh — Command Palette results are ordered more sensibly and the dialog shell is aligned with Resume and Prompt History for a consistent feel across all three
Worktree tags keep the right color across restarts — Project worktree color assignments now persist consistently so a worktree tagged blue stays blue after you quit and reopen 1DevTool
Fixed
Send screenshot to AI, or save it to disk — Two separate buttons. The sparkle button opens the Send to AI dialog with the screenshot preattached and simulator metadata filled in. The camera button opens a native Save As dialog so you can drop the PNG straight into a bug report or design review
Fixed database column rename firing the wrong SQL — Renaming a column in MySQL/Postgres occasionally generated a statement against the old column name if the rename happened while the grid was mid-refresh. The rename path now resolves the latest column name and confirms the SQL in the preview footer before execution
Fixed mobile simulator taps showing a ripple but not actually clicking in Log Interaction mode — With interaction logging on, every tap fired a /source request that blocked WebDriverAgent's session for several seconds, so the tap's /actions request queued behind it and timed out. The /source refetch is now deferred by 350 ms, so the tap lands on the simulator first and the element label still shows up in the log immediately
Fixed mobile simulator tap coordinates not matching the element tree on iPhone 17 / @3x displays — Tap coordinates were emitted in screenshot pixels (1206×2622 on iPhone 17 Pro) while WebDriverAgent's element bounds are in iOS points (402×874), so findElementAt always returned "unknown area" on high-DPI devices. Coordinates are now normalized against the source root before hit-testing, so tap labels resolve correctly on every simulator
Fixed mobile simulator /source and Home button timing out on rich apps — WebDriverAgent's /source endpoint can take 10–25 seconds to walk the accessibility tree on a complex app, and the 5-second default timeout aborted every call. /source now allows 25 seconds, Home and Lock allow 15 seconds, and Launch App allows 20 seconds, with clearer "/source timed out after 25000ms" error messages instead of the generic abort
Fixed mobile emulator panel freezing when the simulator stream exited mid-session — Stream exit events no longer leave the panel in a half-connected state; the status chip returns to "Not connected" and the Connect button is re-enabled so you can reconnect cleanly
Fixed database result grid "only one row visible" on tables with long markdown fields — Long multi-line text columns (like a 25KB bodymd with 900 newlines) used to blow a single row's height off the screen, making tables look empty when they held 150 rows. Cells now cap height with overflow and long strings show an inline preview button that opens the full content in the JSON viewer
Fixed persistent data occasionally rolling back after a force-quit — Projects, HTTP collections, and database connections now flush to disk more aggressively so an unexpected shutdown doesn't lose the last few edits
Fixed right-click "Open in IDE" from the file tree sometimes opening the wrong binary — The IDE open path now reads the latest settings value instead of the one cached at project load, so changing your preferred IDE takes effect immediately

Mobile simulator panel mirroring an iOS device inside 1DevTool 
Database workspace with table list and query tabs in 1DevTool 
Android emulator view in 1DevTool marked as coming soon