Skip to content

v1.3.75

Choose a tag to compare

@topcheer topcheer released this 20 Jun 12:45
· 6225 commits to main since this release

ggcode v1.3.75

Highlights

  • multi_file_write tool: Create or overwrite multiple files in a single call with atomic mode (all-or-nothing) or partial_success mode. Parent directories are created automatically.
  • iOS beta auto-expire: The mobile release pipeline now automatically expires previous TestFlight builds and cancels stale beta reviews before promoting a new build, fixing the "Another build is already in beta review" error.
  • Command pane resize handling: Terminal command pane now correctly detects window resize, portrait/landscape orientation (including pixel-accurate detection via TIOCGWINSZ), and recreates panes when direction or size changes significantly.
  • Exit path pane cleanup: /restart and remote restart now properly clean up command panes via shutdownAll(), preventing orphan tmux panes.

New tool: multi_file_write

Batch-create or overwrite files in one tool call instead of repeated write_file invocations.

  • atomic mode (default): If any file fails (e.g., sandbox violation), no files are written.
  • partial_success mode: Successfully writes valid files while reporting failures.
  • Parent directories are created automatically via MkdirAll.
  • Duplicate path detection within a single batch.
  • Sandbox validation on all paths before any writes.

iOS beta expire & promote

  • New _expire_previous_beta_builds fastlane method: cancels WAITING_FOR_REVIEW beta submissions and expires old VALID builds.
  • Integrated into _promote_to_external — runs automatically before submitting new beta review.
  • New standalone expire_and_promote lane for manual fixes via workflow_dispatch.
  • New expire-and-promote job in mobile-release.yml with expire_and_promote boolean input.
  • Build jobs correctly skip when only doing expire & promote.

Command pane improvements

  • EnsurePane now calls shouldRecreatePane() on every invocation instead of early-returning when a pane exists.
  • Pane is recreated when: direction changes (right ↔ bottom), size drifts >50% in same direction, or pane was killed externally.
  • Pixel-based portrait detection via TIOCGWINSZ syscall (ws_xpixel/ws_ypixel) for accurate physical orientation detection.
  • Fallback to cell-based detection when pixels unavailable.
  • New pixel_unix.go (TIOCGWINSZ) and pixel_other.go (stub) platform-specific files.

Fixes and improvements

  • Fixed CI build failure from missing sizing.go, pixel_unix.go, pixel_other.go files (untracked files not committed).
  • Fixed CI build failure from missing StartCommandTool fields (OutputTee, OnPreExec, OnPostExec).
  • Fixed /restart and remote restart not calling shutdownAll(), leaving orphan command panes.

Upgrade notes

  • The new multi_file_write tool is automatically available — no configuration changes needed.
  • iOS beta expiration runs automatically during tag-driven releases; use the expire_and_promote workflow input for manual fixes.
  • Command pane resize detection is automatic; tmux handles small proportional resizes.

Compare

v1.3.74...v1.3.75