Skip to content

v1.3.83

Choose a tag to compare

@topcheer topcheer released this 25 Jun 08:12
· 6082 commits to main since this release

v1.3.83

New Features

LAN Chat — Decentralized P2P Messaging

Chat directly with other ggcode instances on your local network. No relay server needed.

TUI Quick-Send (# mode):

  • Type # to enter chat mode — send LAN Chat messages without opening a panel
  • Auto-fills @nick from the last unread message for instant replies
  • Type @ for participant autocomplete (humans and agents)
  • Press Esc to exit

TUI /chat panel:

  • Full message history with broadcast and DM support
  • @mention autocomplete for routing messages to specific users or agents
  • /nick <name> to set your nickname
  • File attachments via drag-and-drop
  • @agent message approvals (Y/A/N/R) — route messages to your agent with consent

Desktop GUI:

  • LAN Chat sidebar tab with multi-room view (broadcast + DMs)
  • Unread badges per room and total badge in sidebar
  • Contact list showing online participants
  • Inline @agent approvals

Agent integration:

  • Agents can use the lanchat tool to send messages, list participants, and read history
  • Messages from other instances' agents require approval before reaching your agent

Architecture:

  • Discovery: Pure-Go mDNS (_ggcode._tcp) — no external dependencies
  • Transport: Direct HTTP between instances (no relay)
  • Authentication: Built-in community key for zero-config trust
  • Privacy: Messages stay on your LAN

Shell and Chat Modes Independent of Agent State

Shell mode ($/!) and chat mode (#) now work regardless of whether the agent
is running. Previously, both modes were blocked when the agent was busy.

  • Shell commands execute immediately without entering the agent queue
  • Chat messages are sent via LAN Chat, never reaching the agent
  • Esc priority: exits shell/chat mode before offering to cancel the agent
  • shellOwnedLoading flag cleanly separates shell loading state from agent loading state

Bug Fixes

  • relay: Always forward client messages to server, even when appendEvent() reports dedup. Prevents mobile messages from being silently dropped after relay restarts
  • relay: Add nil-guard on stats in handleClientEncrypted for consistency with all other call sites
  • winget: Rewrote publish-winget.ps1 to generate complete manifest from scratch (fixes top-level ProductCode and AppsAndFeaturesEntries validation)
  • winget: Force top-level Scope: user in manifest patch
  • lanchat: Fix handler type mismatch causing panic on key press
  • lanchat: WorkspaceMeta struct missing json tags (caused desktop frontend field mismatch)
  • lanchat: Desktop LanChatView message dedup — race between initial load and event listener could show duplicate messages
  • lanchat: Clear unread count when entering # chat mode with @nick prefill
  • a2a: Replaced hashicorp/mdns with pure-Go implementation to fix peer flickering and eliminate CGO dependency
  • a2a: Auto-detect default route interface for mDNS advertising (avoids advertising on Docker/VPN interfaces)
  • ci: Removed echo-plugin e2e test that failed cross-platform

Documentation

  • New docs/guide/lan-chat.md — comprehensive LAN Chat guide
  • Updated docs/guide/desktop.md with LAN Chat section
  • Updated docs/guide/slash-commands.md with input modes section
  • Updated docs/guide/getting-started.md with input modes
  • Updated ggcode.example.yaml with a2a.lan_discovery option
  • Updated GGCODE.md with LAN Chat architecture, lanchat tool, and mode independence gotcha
  • Updated README.md / README_zh-CN.md with LAN Chat feature and documentation links
  • Updated docs/site/index.html with LAN Chat feature card

Config Changes

  • a2a.lan_discovery default changed from false to true (mDNS discovery now always-on)