{"slug": "ototo-2-9", "title": "Otōto 2.9", "summary": "Otōto released version 2.9, adding a `search` command with path:line hits, globs, whole words and case folding for Claude Code and OpenCode, plus new `read` plugins for maven, spring-config, terraform and kube. The release also introduces a `gitlab` plugin that answers branch merge-request, pipeline-stage and failed-job-log queries and reaches the network only after `ototo plugins grant gitlab` with a token in `[plugin_settings.gitlab]`. Install and update run via `curl -fsSL https://ototo.sh | sh` and `ototo update`, both verifying the release against Otōto's release key before installing.", "body_md": "`curl -fsSL https://ototo.sh | sh` installs the newest release for this machine, and `ototo update` fetches it from the same channel (`update_url` in `config.toml` points at your own mirror). Both check the release against Otōto's release key before anything is installed; `ototo update --check` only says whether there is a newer one. A package in `~/Downloads` still works as before.`search`` path:line` hits, with globs, whole words and case folding; for Claude Code and OpenCode, and as `ototo search`. No model, so it answers at once.` maven`: a dependency's effective version and scope, through parents, BOMs and properties (`ototo read pom.xml#spring-core`); - `spring-config`: a property as each profile sees it, and where each value is set (`ototo read spring.datasource.url`); - `terraform`: a block with its variables and locals worked out, per environment (`ototo read aws_db_instance.main@prod`); - `kube`: a Kustomize resource as it builds, and a Helm value with the templates that use it.`forge`.` gitlab` plugin answers about the branch's merge request, a pipeline by stage and a failed job's log, cut to what failed, for Claude Code (the `ototo forge`. It reaches the network only once you grant it: `ototo plugins grant gitlab`, then a token in `[plugin_settings.gitlab]` (or per host, for a self-hosted GitLab). It never sees the token; Otōto adds it.`ototo plugins`` ototo plugins help <plugin>` says what one reads and adds.`changes` for one commit or a range`--commit <sha>`, `--range A..B`, told by declaration like a branch's.` ototo digest`.` OTOTO_FULL=1` gives the whole output.`ototo read` that answers better.`ask` works`ototo doctor`\nComing from 2.8.5 or earlier? 2.8.6's tidier `ototo --help` is new to you too.", "url": "https://wpnews.pro/news/ototo-2-9", "canonical_source": "https://ototo.dev/changelog#v2.9", "published_at": "2026-09-30 21:47:45+00:00", "updated_at": "2026-10-05 22:18:22.489649+00:00", "lang": "en", "topics": ["ai-tools", "developer-tools", "ai-agents"], "entities": ["Otōto", "Claude Code", "OpenCode", "GitLab", "Maven", "Terraform", "Kustomize", "Helm"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/ototo-2-9", "markdown": "https://wpnews.pro/news/ototo-2-9.md", "text": "https://wpnews.pro/news/ototo-2-9.txt", "jsonld": "https://wpnews.pro/news/ototo-2-9.jsonld"}}