Skip to content

Windows update-progress console probe on CI (#381) + hold pushes behind background sub-agents (#389) - #398

Merged
heypandax merged 3 commits into
mainfrom
fix/381-win-console-probe-389-push-hold
Sep 24, 2026
Merged

heypandax merged 3 commits into
mainfrom
fix/381-win-console-probe-389-push-hold

Conversation

@heypandax

Copy link
Copy Markdown
Owner

#381 — Windows update progress still scrolls line by line

The 2.1.2 package contains the in-place redraw. Progress is drawn by the updater that is currently running, though. 2.1.2 is the latest release, so any download progress a user sees now came from a ≤2.1.1 updater, and those versions always print lines on Windows. The redraw first shows up on the 2.1.2 → next update.

The redraw depends on a JNA GetConsoleMode(stderr) probe that has never run on real Windows. If that call fails, it quietly falls back to plain lines. This PR adds UpdateProgressWinConsoleTest to the existing windows-latest job (*WinConsole*), which checks that:

  • the probe returns false, not null, in the Gradle worker (piped stderr);
  • a child JVM with 2>CON decides to redraw in place;
  • a child JVM with 2>NUL keeps plain lines.

#389 — one notification per background sub-agent

Each background sub-agent that returns wakes the main agent for another turn, and each turn result pushed "complete". Now, when a clean result arrives while background sub-agents or Workflow runs are still RUNNING, its push is held. The turn that ends with none left pushes instead.

  • Errors and usage-limit results are never held. Background Bash and Monitor jobs never hold a push, because a dev server may never finish.
  • Fallbacks for the held push:
    • it is released 60s after the last agent settles, if no continuation turn is running;
    • a 30-minute backstop releases it regardless;
    • if the process dies, the death push replaces it, or the held push goes out if the death falls inside the quiet window;
    • an intentional stop drops it.
  • Android: newly created notification channels enable vibration. Existing channels are frozen by Android and are not migrated.

iOS already sends sound: default, so a banner-only alert there points at device settings (Sounds / Focus / Scheduled Summary). The push diagnostics' soundSetting can confirm this.

Verification

  • :daemon:test: 2355 tests, all pass except AgentProcessShutdownTest, which failed once under full-suite load (exit 141 instead of 137). It passed 5/5 when rerun on its own.
  • New ConversationPushTest cases: fan-out gives one push, failures are pushed immediately, a background shell does not hold, and both the settle and backstop fallbacks fire. With the hold disabled, 2 of them fail as expected.
  • The Windows probe test and the Android compile (no local SDK) run in this PR's CI.

🤖 Generated with Claude Code

heypandax and others added 3 commits September 24, 2026 09:24
#381)

The in-place progress redraw on Windows depends on a JNA GetConsoleMode(stderr)
probe that was written without a Windows machine. If it silently fails, the
verdict falls back to plain scrolling lines — the exact symptom users report.
Run it in child JVMs with stderr on a console (2>CON) and on NUL in the
existing windows-latest CI job.

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

Each background sub-agent that returns wakes the main agent for another turn,
and every turn result pushed "complete" — one notification per returning agent.
A clean result while background sub-agents or workflows still run is now held
and replaced by the turn that ends with none left. Errors are never held;
background shells/monitors never hold (a dev server may never finish).
Fallbacks: release 60s after the last agent settles with no continuation
turn running, a 30-min backstop, and the process-death path.

Android: enable vibration on newly created notification channels.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…381)

cmd's 2>CON opens the console write-only; GetConsoleMode needs GENERIC_READ,
so the first CI run reported false for a handle no terminal hands out.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@heypandax
heypandax marked this pull request as ready for review September 24, 2026 16:52
@heypandax
heypandax merged commit c5f303d into main Sep 24, 2026
3 checks passed
@heypandax
heypandax deleted the fix/381-win-console-probe-389-push-hold branch September 24, 2026 16:53
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