v1.3.172
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
UserFacingErrorLangdetects quota exhaustion via both HTTP status code path and string fallback (handles error chain destruction in agent.go)- Added
debug.Logto non-streamingChat()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
renderContextBoxsetsHeight(fullPanelHeight())— composer/input position stays fixed regardless of panel contentrenderContextBoxAutoadded 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
renderContextBoxfor consistent full-height behavior - Status bar: uses
renderContextBoxAuto(not stretched to full height)
Other Fixes
- Shell detection log:
log.Printf→debug.Logvia injectable callback (avoids circular import, respects debug flag) - IM binding lists:
CurrentBindings()andListBindings()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 withsafego.Recoverand safe-initialization of plan results
Upgrade Notes
No breaking changes. All improvements are backward compatible.