release: v0.2.3 (v2026.5.9) — methodology-first landing + multimodal vision + provider polish - #181
Merged
Conversation
…gins, setup, usage, and whatsapp commands
…rmes-agent submodule
…evidence, regenerate progress surfaces
… device-code state
…del dashboard endpoints
…erate progress surfaces
- internal/i18n/: core package with T(), language resolution (explicit lang arg > GORMES_LANGUAGE env > SetConfigLanguage > en), YAML catalog loading with dotted-key flattening, 8-language support (en/zh/ja/de/es/fr/tr/uk) with full alias table - locales/: 8 YAML catalogs ported from hermes-agent/locales/ covering approval prompts and gateway slash replies - internal/config/config.go: add display.language to DisplayCfg - 15 tests: fallback chain, catalog parity, format substitution, env/config resolution, missing file, broken YAML
…mes-agent - All-topic Hermes/Gormes parity sweep: i18n identified as source-backed missing feature (Hermes has agent/i18n.py with 8 languages; Gormes had zero i18n) - progress.json: added Phase 5.W i18n row (P2, builder-ready), fixed Kanban in_progress row phantom fixture paths (removed non-existent internal/gateway/kanban_command_test.go, internal/tui/kanban_slash_test.go, internal/dashboard/; pointed at real files) - 23 vague planned rows identified (no write_scope) for future sharpening - Kanban dashboard: capabilities endpoint tests, dashboard.go, dashboard_contract_test.go, runs.go from ongoing Kanban work - hermes-agent: submodule bumped to a3131862b (upstream parity sweep baseline) - Regenerated all progress-driven docs and site data (go run ./cmd/progress write)
runRegistry.stop() now records a typed run.stopped lifecycle event into the SSE backlog before closing subscriber channels so SSE consumers see a terminal event symmetrical with run.completed and run.failed. Fleet automation surfacing run lifecycles depends on this typed terminus.
The deploy-gormes-www.yml content guards still required the pre-rewrite hero copy ("AI agent runtime in one Go binary.", "An autonomous engineering loop ports Hermes to Go, every day.", "HOW IT IS BUILT") that 95864c2 removed. With those guards stale, the next push to main would fail at the "Verify homepage content" step before reaching the Cloudflare Pages deploy. Repoint positive grep assertions at the new methodology-first hero strings and add the old phrases to the negative-grep list so future drift back to parity-first copy fails the deploy instead of silently shipping.
# Conflicts: # benchmarks.json # internal/config/config.go # internal/tools/file_lint_delta_test.go # webpages/docs/content/building-gormes/architecture_plan/_index.md # webpages/docs/content/building-gormes/architecture_plan/progress.json # webpages/docs/content/building-gormes/contract-readiness.md # webpages/docs/data/benchmarks.json # webpages/landing/legacy/go-renderer/internal/site/data/benchmarks.json # webpages/landing/legacy/go-renderer/internal/site/data/progress.json # webpages/landing/src/data/benchmarks.json # webpages/landing/src/data/progress.json
Third same-day patch over v0.2.2; shared date alias follows the v0.1.06 / v0.1.07 and same-day v0.2.1 / v0.2.2 precedent for back-to-back releases. Cut to deploy the methodology-first landing rewrite to www.gormes.ai (deploy-gormes-www.yml only fires on push to main). Riding along: the multimodal photo passthrough + admission gate, native image input mode wiring, vision-unsupported retry, Telegram voice STT HTTP fallback, the first WASI STT exploration rows, provider/auth/runtime polish (config comments preserved on set, generic timeout classification, file-tool shell+python+structured lint evidence, fallback credential aliases, proxy replay metadata, FAL image gen binding, OpenRouter Pareto plugin, shell completion command, Telegram placeholder default, curator rename summaries), and the kanban suite (board pinning, notify delivery engine, worker log command). See CHANGELOG.md for the full annotated list.
6 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Third same-day patch over v0.2.2. Cuts to deploy the methodology-first landing rewrite to www.gormes.ai (
deploy-gormes-www.ymlonly fires on push to main).Headlining changes
docs/content/building-gormes/strategy/success-plan.md.deploy-gormes-www.ymlcontent guards repointed to match.image_urlcontent parts on the kernel turn message; admission gate exempts image bytes from text MaxBytes;DecideImageInputMode+ path hints wired into the channel→kernel submission; vision-unsupported turns auto-retry text-only.set, generic timeout classification, file-tool shell+python+structured lint evidence, FAL image-gen binding, OpenRouter Pareto plugin, shell completion command, Telegram placeholder default, curator rename summaries, proxy replay metadata fix.See CHANGELOG.md for the full annotated list.
Why a release vs a plain merge
PR #180 tried to merge dev → main without a version bump but hit 11 conflicts created by today's v0.2.2 squash-merge (2 real code files:
internal/config/config.go,internal/tools/file_lint_delta_test.go; 9 regenerated mirrors). The release lane handled the main → dev fold cleanly:cee6308c8records the history join with no actual file changesWorkflows that fire on merge
release.yml(tag-triggered) — fires after I tagv0.2.3on main; rebuilds binaries, publishes GitHub release with checksums + SBOMs + install.sh + install.ps1deploy-gormes-www.yml— Cloudflare Pages publishes the new methodology hero (the new998768b00content guards must pass)deploy-gormes-docs.yml— Cloudflare Pages refreshes docs.gormes.aici.yml— full test gateoci.yml— builds + smoke-tests amd64/arm64 OCI images (sha-suffixed local tags, not pushed to a registry)www-mirror-sync.yml— progress.json mirror parity check (also runs on this PR)Test plan
go test ./... -count=1— full repo greengo run ./cmd/progress validate— 8 phases okgit diff --check— cleannpm run build(landing) — clean, 2 pagesLANDING_E2E_PORT=8181 npm run test:e2e(landing Playwright) — 6/6 passed across desktop + 4 mobile viewports (port 8080 was occupied by an unrelated local mega-bot; codexu's22ce092f5added theLANDING_E2E_PORTenv override exactly for this case)npm run test:e2e(docs/www-tests Playwright) — 19/19 passedgo test ./... -count=1(legacy go-renderer) — greenrelease.ymltag workflow ships GitHub release artifacts (install.sh + install.ps1 + checksums + SBOMs)deploy-gormes-www.ymlreaches "Verify homepage content" + Cloudflare Pages deploy steps without grep failures