Skip to content

feat: harden tart-gui-automation + context attachments UX - #19

Merged
fairchild merged 5 commits into
mainfrom
context-attachments-ux
Mar 2, 2026
Merged

feat: harden tart-gui-automation + context attachments UX#19
fairchild merged 5 commits into
mainfrom
context-attachments-ux

Conversation

@fairchild

Copy link
Copy Markdown
Owner

Summary

Hardens the tart-gui-automation skill with batch operations, target manifests for project-specific landmarks, and missing VNC operations (double-click, scroll, drag). Adds coordinate scaling for resolution independence and comprehensive documentation including a human-oriented README. Also includes context attachments UX improvements for ExternalEditorService integration.

Highlights

tart-gui-automation improvements:

  • Batch operations execute multiple VNC steps in single connection, solving ReactorNotRestartable limitation
  • Target manifest system (.tart/target.yaml) separates project-specific calibrated coordinates from generic skill
  • Added missing VNC operations: double-click, scroll, drag, and screenshot resizing with --max-dimension
  • Coordinate scaling via --logical-resolution for resolution-independent workflows
  • Landmark resolution from YAML enables cleaner UI (--landmark toolbar_open_menu vs raw coordinates)
  • Flow recipes in .tart/flows/ provide agent-readable playbooks for common workflows
  • Comprehensive reference documentation with keyboard mappings, calibration guides, troubleshooting
  • All CLI examples use direct executable scripts (no uv run --script prefix) for easier allowlisting

Context attachments work:

  • ExternalEditorService enhancements for better integration
  • New WorkspaceEditorToolbarButton component
  • ContentView improvements
  • enable_ssh.command script for SSH enablement

Testing: All 139 Swift tests passing.

fairchild and others added 5 commits March 1, 2026 19:46
…ixes

Add batch command for multi-step VNC operations in a single connection,
eliminating the Twisted ReactorNotRestartable limitation. Add missing VNC
operations (double-click, scroll, drag), screenshot resize via Pillow,
coordinate scaling, and landmark resolution from .tart/target.yaml.

Includes target manifest system for project-specific UI coordinates,
flow recipes for agent-readable workflows, and comprehensive reference
docs (keyboard mappings, image matrix, troubleshooting).

Bug fixes: pass button param to vnc_click, validate --y with --x,
clear errors for missing landmarks/fields in batch steps, cache YAML
per batch instead of per step.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Scripts have shebangs and are executable, so docs now show
direct invocation (e.g., `scripts/tart_vm_harness.py start`)
instead of `uv run --script scripts/tart_vm_harness.py start`.
Easier to allowlist and cleaner to read.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix sidebar_first_repo/sidebar_first_ws y-coordinates in target.yaml:
  old values (68, 92) were above the toolbar (y=125), clearly wrong.
  Updated to plausible estimates (250, 280) and marked uncalibrated.
- Add button value to double-click log message (consistent with click).
- Note send_keys vs send-keys naming difference in flow recipe schema.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
vncdotool uses short lowercase names (esc, bsp, del, pgup, pgdn) but
the harness was lowercasing user input without mapping to these names,
causing keys like "escape" to fail with a TypeError. Add KEYSYM_ALIASES
mapping and normalize_key() for both standalone and batch send-keys.

Recalibrate menu bar landmarks — "WorkspaceManager" is long enough to
push File to x=400 and Edit to x=510 (previously 165 and 210).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@fairchild
fairchild merged commit 4cd0ceb into main Mar 2, 2026
2 checks passed
@fairchild
fairchild deleted the context-attachments-ux branch March 2, 2026 04:49
fairchild added a commit that referenced this pull request Mar 2, 2026
This enables a scoped post-PR #18/#19 hardening pass for terminal appearance and shortcut-mode interactions.
fairchild added a commit that referenced this pull request Mar 2, 2026
* feat: harden tart-gui-automation with batch ops, landmarks, and bug fixes

Add batch command for multi-step VNC operations in a single connection,
eliminating the Twisted ReactorNotRestartable limitation. Add missing VNC
operations (double-click, scroll, drag), screenshot resize via Pillow,
coordinate scaling, and landmark resolution from .tart/target.yaml.

Includes target manifest system for project-specific UI coordinates,
flow recipes for agent-readable workflows, and comprehensive reference
docs (keyboard mappings, image matrix, troubleshooting).

Bug fixes: pass button param to vnc_click, validate --y with --x,
clear errors for missing landmarks/fields in batch steps, cache YAML
per batch instead of per step.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* chore: use direct execution instead of uv run --script in docs

Scripts have shebangs and are executable, so docs now show
direct invocation (e.g., `scripts/tart_vm_harness.py start`)
instead of `uv run --script scripts/tart_vm_harness.py start`.
Easier to allowlist and cleaner to read.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: consistency pass — sidebar coords, log message, schema note

- Fix sidebar_first_repo/sidebar_first_ws y-coordinates in target.yaml:
  old values (68, 92) were above the toolbar (y=125), clearly wrong.
  Updated to plausible estimates (250, 280) and marked uncalibrated.
- Add button value to double-click log message (consistent with click).
- Note send_keys vs send-keys naming difference in flow recipe schema.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: context attachments UX improvements

* fix: keysym aliasing for send-keys + recalibrate menu bar landmarks

vncdotool uses short lowercase names (esc, bsp, del, pgup, pgdn) but
the harness was lowercasing user input without mapping to these names,
causing keys like "escape" to fail with a TypeError. Add KEYSYM_ALIASES
mapping and normalize_key() for both standalone and batch send-keys.

Recalibrate menu bar landmarks — "WorkspaceManager" is long enough to
push File to x=400 and Edit to x=510 (previously 165 and 210).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
fairchild added a commit that referenced this pull request Mar 2, 2026
This enables a scoped post-PR #18/#19 hardening pass for terminal appearance and shortcut-mode interactions.
fairchild added a commit that referenced this pull request Apr 26, 2026
Three small clarifications surfaced by a fresh-session readiness audit:

- P0 #1 (workspace creation hang): add an explicit "Gate: live repro" note.
  In-vitro investigation has gone as far as it can — PR #372's
  WorkspaceCreationRaceTests rules out a basic deadlock, and code reading
  shows the MainActor-serialized save path can't deadlock without an
  external factor. A fresh autonomous session shouldn't pick this as a
  first reach; it needs a deliberate interactive repro at the keyboard.

- P0 #2 (main-window + Ghostty maintainability): split the band entry into
  two parallel sub-tracks (2a structural, 2b narrow appearance hardening)
  so a fresh session can pick by time/risk appetite rather than guessing
  which file to start with.

- ghostty-appearance-hardening_followup.md: refresh the stale "Roadmap
  Position" section. Old text referenced "the same daily-driver hardening
  band as PR #18/#19 outcomes" — a framing the ROADMAP no longer uses.
  New text matches its current placement as P0 #2 sub-track 2b.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant