Skip to content

Update changes - #25

Merged
ByteTrue merged 7 commits into
mainfrom
homely-walrus
Sep 4, 2026
Merged

Update changes#25
ByteTrue merged 7 commits into
mainfrom
homely-walrus

Conversation

@ByteTrue

@ByteTrue ByteTrue commented Sep 3, 2026

Copy link
Copy Markdown
Owner

Automated PR generated by BySpace.

The /command autocomplete could show a command list without project
skills for up to a minute before they appeared. Two client-side and
one daemon-side defect combined:

- fetchAgentCommands discarded list_commands_response.error and
  returned the empty commands array as success, so daemon errors
  (agent not found, provider unavailable) were cached by react-query.
- Draft listings fired before the composer model resolved; the daemon
  returns an empty list for modelless drafts, which the draft query
  then cached with an infinite staleTime.
- Every draft listing spawned a throwaway provider process (~800ms
  for pi), amplifying how often the races could be observed.

Client: throw on response.error and keep modelless draft queries
pending via resolveAgentCommandsQueryEnabled. Daemon: cache
listDraftCommands results per config for 30s, never caching failures.
The scroll-to-bottom and collapse-all tool call buttons used a ghost
Button variant, which rendered as bare icons that blended into content
text. Style them with the shared composerPillStyles contract so they
read as the same pill controls as the task and diff-stat buttons in the
composer track row.
v0.11.2 changed package-lock.json (version fields + peer flags), which
shifts the npm-deps FOD hash. nix.yml only runs on pull_request, so the
staleness was never caught on main; the ubuntu build job auto-updates
the hash in-workspace via update-nix.sh, but build-desktop-darwin builds
from the committed hash and failed with a FOD hash mismatch.

Both the darwin job's 'got' hash and the ubuntu job's 'Computed hash'
agree on sha256-kOB3MF8XABFlRFG/eKsV1VvCUaON1pcsaHgtaMFc5EY=.
- git mv spec/, issues/, epics/ from .codestable/ to codestable/
- epic 001 renamed 001-o- -> 001-x- (accepted at 2026-08-31); epic002 refs updated
- epic 002 work log moved to epics/002-o-retained-capabilities-delivery/work-log.md
- legacy attention.md and current_work pointer removed
- new skeleton dirs (vision/notes/talks/tools) added; spec/index.md kept as-is
- epic002 contract path .codestable -> codestable
21/21 ITEM integrated across 5 waves (PR #16-#20 merged with exact-head
CI green). Stable conclusions graduated to Project Spec: timeline restore
and session import in agent-conversation, revision resume/paste/activity
in terminal, new workspace.md (branch/push state, hover agents, agent
naming), new connection.md (release channel routing, hosted HTTPS guard,
pairing hostname). Epic spec marked closed with final delivery index.
…tion

Commit and PR creation run agent LLM generation (title/body or commit
message) with retries before the git/forge call, so the request can
legitimately take far longer than the 60s default session RPC timeout.
The client timed out first and surfaced an error while the daemon kept
going and still completed the operation, leaving a misleading failure
toast next to a real side effect.

- checkoutCommit and checkoutPrCreate default to a 5-minute RPC timeout
  (CHECKOUT_GIT_METADATA_TIMEOUT_MS) so the client waits for the actual
  result instead of abandoning the request.
- Git action error toasts distinguish RPC timeout from real failures:
  a timeout now says the daemon may still be processing the request and
  to check the workspace before retrying, avoiding duplicate commits or
  PRs; everything else keeps the concrete error message.
- New i18n key workspace.git.actions.toasts.mayStillBeRunning, synced
  across all 9 supported languages.
5f92519 made fetchAgentCommands throw on list_commands_response.error to
stop caching daemon failures. That also caught the benign reply the daemon
sends when the agent exists but its provider has no command list (mock
sessions, CLIs without slash commands): 'Agent does not support listing
commands'. The thrown error flipped the composer autocomplete into its
error placeholder, replacing the option list and hiding the always-
available client commands — 'slash quit selected from autocomplete' then
failed waiting for /exit, deterministically (5/5 repeats).

Return an empty provider list for that specific message; other daemon
errors still throw so failed listings are not cached.
@ByteTrue
ByteTrue merged commit ba2184d into main Sep 4, 2026
25 checks passed
@ByteTrue
ByteTrue deleted the homely-walrus branch September 4, 2026 03:42
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