Repository navigation
fix(host): show short reasons when a hosting service or the directory fails - #393
Merged
Merged
Conversation
… fails A service's failed answer now reads as its status plus the service's own message, when it wrote a short plain-text or JSON one; error pages such as Cloudflare's "Worker threw exception" HTML go to the host log instead. A failed move also says where the channel is now. Toast descriptions are clamped to six lines as a backstop. Fixes #392 Why: apps/host/src/http.ts#function refusal | service error bodies reach the app only when short, single-line plain text or JSON the service wrote; anything else is logged, not shown Why: apps/host/src/move.ts#function stranded | every failed move says where the channel is now: still on this Mac, still on the service, or fenced pending a rerun
This was referenced Oct 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #392.
A failed answer from a hosting service or the directory now goes through one helper,
refusalinapps/host/src/http.ts. It returns the status, plus the service's own message only when that message is short, single-line plain text or JSON (error/message). Error pages such as Cloudflare's "Worker threw exception" HTML go to the host log (http.refused, with the full body) and are never shown.move.ts): every failure also says where the channel is now. Examples: "The hosting service failed (HTTP 500). The channel is still on this Mac." "The hosting service refused (HTTP 409): The channel is busy; wait until it is idle (state: active). The channel is still on this Mac." When an activation went unanswered, the existing "may now be active there… run the same move again" text is kept. A move back from a service ends with "The channel is still on ."manage.ts) end with "The channel was not created." or "…not deleted." A fetch failure on create no longer passes through a fake 502.directory.ts) keep their 401 secret messages. Other failures use the helper and log the body.Toasterdescription is clamped to six lines (line-clamp-6 break-words), so no toast can show unbounded text.Smoke-tested with a source
ace serve --loopbackhost (tailscale stub on PATH, isolatedACE_HOME) and a local fake service that returns a 500 HTML page, a 409 plain-text error and a 503 JSON error. I tested throughace moveand through the app's Move menu in headless Chromium. Before this change, the same HTML case printed the raw page.Built in Ace
No. This was built with Claude Code outside Ace by an overnight issue watcher, because this Mac's Ace Canary is a participant in the running two-person study (#218). The dogfooding gap is tracked in #5.