Skip to content

Releases: topcheer/ggcode

v1.3.69

08 Jun 21:33

Choose a tag to compare

ggcode v1.3.69

Highlights

  • Safer Python installer downloads: Restores Python's default TLS certificate and hostname verification for release downloads.
  • Release package alignment: Bumps npm, PyPI, and mobile wrapper versions for the v1.3.69 release.

Fixes and improvements

  • Restored verified HTTPS behavior in the Python release installer by removing the custom insecure SSL context from download requests.
  • Added Python tests to ensure installer download calls use the default secure urllib behavior.
  • Bumped npm, Python, and mobile version metadata for the release.

Upgrade notes

  • Python wrapper installs now rely on the system/Python CA trust store. Environments using TLS interception or custom certificate authorities must configure their trust store correctly.
  • No configuration migration is required.

Compare

v1.3.68

08 Jun 16:35

Choose a tag to compare

ggcode v1.3.68

Highlights

  • Safer tool orchestration guidance: Clarifies one-shot sub-agent behavior, tracked swarm tasks, teammate result collection, and when to use send_message versus swarm_task_create.
  • Persistent cron jobs: Recurring cron jobs are now persisted per workspace and restored on startup, while one-shot reminders remain in-memory only.
  • Desktop model and provider polish: Improves Wails desktop provider/model selection, reasoning-effort controls, status handling, layout behavior, and toast notifications.
  • Safer configuration tooling: Strengthens config tool guidance around provider-affecting changes and avoids echoing secrets in tool results.

Fixes and improvements

  • Added workspace-bound cron persistence and clarified cron tool persistence semantics.
  • Hardened command-job polling, command output handling, grep/search behavior, web fetch/search descriptions, git tool descriptions, worktree guidance, and plan-mode tool messaging.
  • Improved swarm/sub-agent/tool descriptions and tests so agents avoid duplicate task claiming, repeated completion, and unreliable sub-agent follow-up messages.
  • Added safer config tool wording for vendor/endpoint/model/API key changes, including probe-before-commit behavior and secret redaction in tool output.
  • Updated desktop Wails settings/provider flows, session/status reset behavior, sidebar/top drag bar UI behavior, and generated Wails bindings.
  • Added Review 55 documentation summarizing current application review findings and priority follow-up areas.
  • Expanded tests across provider, config, cron, command jobs, grep, web tools, task tools, swarm/team tools, TUI paste/layout flows, and desktop-adjacent behavior.

Upgrade notes

  • Only recurring cron jobs are persisted across restarts. One-shot reminders created with recurring=false are still in-memory and will be lost if the process exits before they fire.
  • If changing provider configuration through the config tool, inspect current settings and available models first; failed provider probes leave the current working configuration unchanged.

Compare

v1.3.67

08 Jun 09:41

Choose a tag to compare

ggcode v1.3.67

Highlights

  • Fix IM/mobile ask_user answers always returning answered_count: 0: When an ask_user question was answered via IM or mobile tunnel, saveActiveQuestionInput() was overwriting the remote freeform answer with the empty TUI text input value, causing all remote answers to be lost.

  • Fix AllowFreeform single/multi questions accepting freeform-only as answered: Questions with AllowFreeform=true that received only a freeform answer (no choice selected) were incorrectly marked as Partial instead of Answered.

Bug Fixes

  • internal/tui/ask_user.go: saveActiveQuestionInput() now only overwrites answers[i].freeform when the TUI input field has a non-empty value, preserving remote (IM/tunnel) answers.
  • internal/im/ask_user_parse.go: BuildAskUserAnswer now returns Answered (not Partial) when AllowFreeform=true and a freeform value is provided without any selection.

v1.3.66

08 Jun 05:20

Choose a tag to compare

v1.3.66

New Features

Desktop: turn metrics digest (shared with TUI)

Desktop now emits a one-line turn summary (TTFT, duration, think time, tool
count, slowest tool) as a system message after each agent turn — matching the
TUI behavior exactly.

  • Core formatting logic moved to internal/metrics/digest.go — shared by
    both TUI and Desktop via metrics.FormatTurnDigest().
  • Digests are persisted to session history and survive page reload / session
    restore via pendingDigests + SaveAgentSessionSnapshotWithExtra().
  • Metric events are stored in session.Metrics so TUI sidebar statistics
    are available when opening a desktop-created session.
  • metricCollector.Flush() is called before digest generation to ensure
    complete data on short turns.
  • All shared state access is mutex-protected to prevent data races between
    the collector goroutine and the main goroutine.

Bug Fixes

Mobile: workspace URL lost on first scan

activateWorkspaceUrl was changed to defer workspace record creation until
registerLiveSession receives session_info, but the relay URL was not passed
between these two steps. New workspaces were created with an empty URL.

Mobile: session list now shows workspace project name

Added workspacePath field to CachedSessionRecord (persisted in SQLite).
Session list items now display the project directory name (e.g. "my-app")
extracted from the desktop workspace path.

Tests

  • Added TestFormatDuration and TestFormatTurnDigest covering English,
    Chinese, unknown language fallback, missing slowest tool, and no-failure
    cases.

v1.3.65

08 Jun 03:32

Choose a tag to compare

v1.3.65

Bug Fixes

Tunnel: session_info lost when relay history is complete

When the relay already had a complete event history for a session, the host
would skip sending any events during the client reconnect handshake. However,
relay replay ciphertext uses the old encryption key from the previous session,
which the new client cannot decrypt. This caused session_info (including
workspace path, model name, and provider) to never reach the mobile client.

The trusted replay path now re-sends session_info and active_session using
the current encryption key before marking replay as done.

Mobile: workspace URL lost on first scan

activateWorkspaceUrl was changed to defer workspace record creation until
registerLiveSession receives session_info, but the relay URL was not passed
between these two steps. New workspaces were created with an empty URL, making
urlForWorkspace return null and preventing connectWorkspace from connecting.

A _pendingWorkspaceUrl field now bridges the URL from scan time to workspace
creation time.

Mobile: session list now shows workspace project name

Added workspacePath field to CachedSessionRecord (persisted in SQLite).
Session list items now display the project directory name (e.g. "my-app")
extracted from the desktop workspace path, instead of just provider/model info.

Docs

v1.3.64

07 Jun 16:22

Choose a tag to compare

v1.3.64

Bug Fixes

Desktop: message routing across surfaces (desktop/mobile/IM)

Fixed message display and routing issues in the Wails desktop app when multiple chat surfaces (desktop, mobile, IM) are active simultaneously.

  • Desktop no longer echoes its own messages as "IM user messages" — desktop-originated messages skip the user_message event since the frontend already adds them via handleSend.
  • IM inbound messages now appear on desktop — messages from IM adapters (QQ/Telegram/Discord/Slack/DingTalk/Feishu) are correctly forwarded to the desktop frontend with source: "im".
  • Mobile inbound messages labeled correctly — messages received from mobile via tunnel show as source: "mobile" instead of incorrectly labeled as "im".
  • User messages echo to IM channels cross-surface — when a user sends a message from desktop or mobile, the message text is echoed to all bound IM adapters (EmitUserText). IM-originated messages are echoed to all other IM adapters excluding the source adapter (EmitUserTextExcept) to prevent self-echo.
  • Tunnel push condition corrected — only desktop-originated messages push outbound through the tunnel to mobile; IM and mobile messages are inbound channels and should not re-enter the tunnel.

Internal changes:

  • Replaced skipMobilePush bool with explicit source string ("desktop", "mobile", "im") in sendMessageData for clearer routing semantics.
  • Added ChatBridge.SendNonUIMessage(userMsg, source, excludeAdapter) for non-desktop-originated messages.
  • Updated InteractiveTextBridge.Submit signature to carry adapterName through for proper echo exclusion.

v1.3.63

07 Jun 14:33

Choose a tag to compare

v1.3.63

Homebrew formula/cask fixes.

Fixes

Homebrew

  • Fix cask app name: GGCode Desktop.appGGCode-Desktop.app (match DMG contents)
  • Fix ggcode-desktop formula failing to load on macOS: add macOS platform URLs (darwin amd64/arm64 bare binaries)
  • macOS desktop build now also outputs bare binaries for Homebrew formula consumption

Install Methods

brew install ggcode              # CLI binary (formula)
brew install ggcode-desktop      # Linux desktop (formula) / macOS .app (cask)
brew install ggcode-desktop --cask  # macOS .app (cask)

Upgrade Notes

No special upgrade steps required.

Compare

v1.3.62...v1.3.63

v1.3.62

07 Jun 12:48

Choose a tag to compare

v1.3.62

TUI multi-agent stream message throttling.

Fixes

TUI Multi-Agent Message Throttling

  • Sub-agent stream text/reasoning now batched at 80ms intervals (~12.5Hz) instead of per-token messages
  • Swarm teammate stream text/reasoning similarly batched at 80ms
  • With 3 sub-agents + 4 teammates concurrent, message rate reduced from ~1400/s to ~90/s
  • Eliminates TUI lag during multi-agent concurrency

Other

  • Remove safego.Go wrapper from sendProgramMsgs (program.Send is inherently thread-safe; goroutine only added scheduling overhead)

Upgrade Notes

No special upgrade steps required.

Compare

v1.3.61...v1.3.62

v1.3.61

07 Jun 12:19

Choose a tag to compare

v1.3.61

Wails desktop overhaul: event-driven rendering, IM management fixes, Debug Console, and TUI tool result display fix.

Highlights

Wails Desktop Event-Driven Rendering

  • Replaced 250ms full-poll GetSessionHistory with event-driven incremental rendering
  • ChatView state preserved across page switches (display:none instead of unmount)
  • IM/Mobile user messages pushed to frontend (user_message event with source badge)
  • Non-UI user messages show "via IM" / "via Mobile" badge

IM Management API Fixes

  • All IM operations (enable/disable/mute/unmute/save/delete/bind/unbind) now call runtime start/stop
  • Mute/Unmute is runtime state, read from Manager.IsMuted() instead of persisted store
  • Session bound before starting adapter, fixing HandlePairingInbound returning ErrNoSessionBound
  • Desktop Discord/QQ/Telegram adapter pairing and message flow fully functional

Debug Console

  • New runtime log viewer, no GGCODE_DEBUG env var needed
  • LogStream independent from file logging, supports category filtering and search
  • IM/Relay/Tunnel/Broker categories have distinct color coding

Fixes and Improvements

Desktop (Wails)

  • Fix ChatView content disappearing on page switch
  • Fix ChatView unable to scroll (flex container height constraint)
  • Fix streaming tool call showing static dot instead of spinner
  • Fix run_done not closing tool call streaming
  • Fix reasoning message rendering
  • Fix sub-agent/swarm queue panel rendering
  • Add model selector dropdown
  • Add file browser (syntax highlighting, Markdown, image preview)
  • Add Share dialog (QR code)
  • Add permission mode selector
  • Add MCP/IM live status panel

TUI

  • Fix tool result error message line count (missing word-wrap caused content overflow)

Config

  • Remove verbose config load/save logs from Debug Console (only errors remain)

Tunnel

  • Unified TunnelHost managing all three surfaces (TUI/Daemon/Wails) tunnel event push
  • Remove legacy tunnel dead code

Config Tool

  • Add provider hot-reload (vendor/endpoint/model/api_key change triggers auto-refresh)
  • Add model list and discovery
  • Add UI refresh callback

Upgrade Notes

No special upgrade steps required.

Compare

v1.3.60...v1.3.61

v1.3.60

03 Jun 07:15

Choose a tag to compare

v1.3.60

CI fixes and IM mutual exclusion logic.

CI Fixes

macOS DMG Build Fix

  • Fixed .app being deleted before notarize staple, causing DMG build failure
  • Cleanup step moved after all DMG operations complete

IM Mutual Exclusion

Desktop Instance Auto-Muting

  • Desktop registers itself on startup via RegisterInstance()
  • Auto-mutes IM adapters when TUI or other instances detected running
  • Unregisters on exit via Unregister()
  • Fully consistent with TUI behavior