Skip to content

v1.3.89

Choose a tag to compare

@topcheer topcheer released this 28 Jun 14:29
· 6129 commits to main since this release

v1.3.89

Cron, Desktop, and LAN Chat Fixes

Cron: queue_if_busy Parameter

New queue_if_busy parameter on cron_create lets the LLM control
whether a cron job should queue when the agent is busy:

  • queue_if_busy=false (default): skip the firing when agent is busy
    — ideal for non-critical periodic checks that shouldn't interrupt the
    current agent loop.
  • queue_if_busy=true: queue the prompt and execute after the current
    run finishes — for important tasks that must run.

Existing persisted jobs without the field default to false (skip-if-busy).
The cron_list output now shows the queue mode for each job.

Cron: Desktop and Daemon Enqueue Wiring

Desktop: the cron enqueue callback was a no-op (only logged). Now fires
the prompt via sendMessageData, which queues when the agent is busy.

Daemon: added cron scheduler creation and tool registration. Cron prompts
fire via bridge.SendUserMessage, using tryQueueInterruption for queuing.

Desktop: Remove 200 Max Iteration Cap

Desktop InitAgent overrode MaxIterations=0 (unlimited) to 200, causing
"max iterations (200) reached" errors even when the user's ggcode.yaml
explicitly set max_iterations: 0. Now 0 correctly means unlimited,
matching TUI and daemon behavior.

LAN Chat: Always Use Community Key

LAN Chat was using the configured A2A API key when sending messages to
peers. If two instances had different API key configurations, peer-to-peer
messages would get 401 rejected.

Now all lanchat HTTP requests (message delivery, presence exchange, nick
change broadcast) always send the built-in community key
(ggcode-lan-a2a-v1) in the X-API-Key header, regardless of the
configured A2A auth. This ensures zero-config interoperability between
any instances on the LAN.

Files Changed

  • internal/cron/scheduler.go — QueueIfBusy field, Create signature, persistence
  • internal/tool/cron_tools.go — queue_if_busy parameter, list output
  • internal/agentruntime/subsystems.go — NewWorkspaceCronScheduler signature
  • internal/tui/repl.go — cronPromptMsg.QueueIfBusy, enqueue callback
  • internal/tui/model_update.go — skip-if-busy logic
  • desktop/wailskit/chat.go — cron enqueue wiring, max iteration cap removal
  • cmd/ggcode/daemon.go — cron scheduler creation and registration
  • internal/lanchat/hub.go — community key for all peer HTTP requests