Skip to content

v1.3.172

Choose a tag to compare

@topcheer topcheer released this 22 Jul 11:32

ggcode v1.3.172

Highlights

  • TUI panel full-screen overhaul: All panels now fill the full content area height with the composer position fixed. List heights doubled across the board.
  • Provider display name i18n: Built-in vendor and endpoint names localized to Chinese (e.g. 智谱 Z.AI, 阿里云百炼, 国内编程套餐).
  • Coding plan error handling: Quota-exhausted 429/403 errors from Kimi, ZAI/GLM, Aliyun, Ark, MiniMax, MiMo now show actionable messages instead of generic "retry shortly", and skip wasteful retries.

Fixes and Improvements

Provider Error Handling

  • Recognize Kimi access_terminated_error (403) as quota exhaustion with clear message
  • Distinguish quota-exhausted 429 from transient rate limits for all coding plan providers (ZAI codes 1308-1321, Aliyun "Allocated quota exceeded", Ark "QuotaExceeded", MiniMax "usage limit", MiMo "额度耗尽")
  • Quota-exhausted 429s are now non-retryable — skips 3 retry attempts
  • UserFacingErrorLang detects quota exhaustion via both HTTP status code path and string fallback (handles error chain destruction in agent.go)
  • Added debug.Log to non-streaming Chat() in openai/anthropic/gemini providers (previously silent on non-retryable errors)

Provider Display Name i18n

  • Built-in vendor display names localized: 智谱 Z.AI, 阿里云百炼, 火山引擎方舟, 小米 MiMo, 月之暗面, etc.
  • Built-in endpoint display names localized: 国内编程套餐, 国际编程套餐, 编程套餐 (Anthropic), etc.
  • Inspector panel and markdown export now show display names instead of raw config keys
  • Provider panel (/provider) shows display names in vendor list, endpoint list, and footer
  • ResolveDisplayName() handles endpoints with empty DisplayName by falling back to i18n map lookup on raw ID

TUI Panel Improvements

  • Panels now hide the conversation area entirely and fill full content height
  • renderContextBox sets Height(fullPanelHeight()) — composer/input position stays fixed regardless of panel content
  • renderContextBoxAuto added for compact UI elements (status bar) that should not stretch
  • List heights doubled: autocomplete (8→dynamic), impersonate (8→16), provider panel models (5→10), vendor maxRows (12→24), endpoint maxRows (5→10)
  • Model panel list rows scale dynamically with available panel height
  • Inspector panel: hardcoded height 18 → dynamic full panel height
  • Harness panel: nav list no longer truncated; all sections always visible
  • Lanchat panel: messages truncated from newest backward to fit available height, with "↑ N earlier messages hidden" indicator
  • Hooks/knight/stats/stream panels: wrapped in renderContextBox for consistent full-height behavior
  • Status bar: uses renderContextBoxAuto (not stretched to full height)

Other Fixes

  • Shell detection log: log.Printfdebug.Log via injectable callback (avoids circular import, respects debug flag)
  • IM binding lists: CurrentBindings() and ListBindings() sorted by adapter name for stable display order across all 14 IM panels
  • Impersonate panel: version input syncs when preset cursor moves, with persisted custom version support
  • multi_file_edit: goroutine panic safety with safego.Recover and safe-initialization of plan results

Upgrade Notes

No breaking changes. All improvements are backward compatible.

Compare

v1.3.171...v1.3.172