Repository navigation
2.1.1: unambiguous translation reads, confirmed translated writes - #79
Merged
Merged
Conversation
…es (#78) - Read results with with_translations carry a translations note: the active languages and how to read a plain value, or an error if the fetch failed (previously swallowed, so "not fetched" looked like "identical everywhere"). - Translated create/write return the languages written per field, plus any requested languages skipped because they are inactive. - with_translations descriptions (static JSON + Zod) now say a plain value means identical, and that writes only broadcast with the flag. - odoo-data-ops §9 and odoo-introspector corrected: broadcast needs the flag; get_record/get_records also read translations. Closes #78 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XZfEfCE8YaqD1g9Mh3KXPi
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XZfEfCE8YaqD1g9Mh3KXPi
matty-drexler
force-pushed
the
release-2.1.1
branch
from
October 30, 2026 05:16
91a2de9 to
8a456c1
Compare
matty-drexler
added a commit
that referenced
this pull request
Oct 30, 2026
## Why #79 merged with a `dist/` bundle built before #83 (`zod` 4.6.7, which fixes a high-severity advisory) and #84 landed. The committed `dist/bundle` still declares `zod ^4.3.6`, so tagging `v2.1.1` now would ship without that fix. ## What changes The `dist/` folder is rebuilt from current `main` and nothing else changes. The `.d.ts` changes come from zod's updated types. ## Verification - `npm ci` and `npm run build` succeed, including `mcpb pack`. `sync-version --check` agrees at 2.1.1. - `npm test`: 16 files, 101 tests, all green. - Byte-identical to an independent rebase-and-rebuild of the 2.1.1 branch. Tag `v2.1.1` after this merges. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01XZfEfCE8YaqD1g9Mh3KXPi Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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.
Closes #78.
Why
An agent read a plain
with_translationsvalue as "English only" and recommended a group-wide language clean-up that wasn't needed. Translation support works, but two things made the misreading easy. The guidance overstated what happens without the flag. And a failed translation fetch was swallowed, so "identical in every language" and "not fetched" looked the same.What changes
search_records,get_record,get_records)with_translations, the result carries a note (translations/_translations). It lists the active languages and says how to read a plain value, or gives anerrorwith "user's language only" if the fetch failed.create_record,write_record)translations.languages_writtenper field, plusskipped_inactivefor requested languages that aren't active (these were silently dropped before). Writes without translations keep their old return shape (true/ ID).with_translationstext updated in both the static JSON and the Zod schemas: a plain value means identical, and writes only broadcast with the flag.odoo-data-ops§9 rewritten.odoo-introspectorno longer says "the server handles synchronization for you".fetchTranslationMatrixkeeps its forgiving behaviour for the write before-snapshot. The newreadTranslationsreports failures instead.Field values keep their existing shape, so existing callers are unaffected.
Considered, not done
Warning when a write touches a translatable field without the flag. That costs an extra lookup on every write. The guidance fix comes first, per the project's "fix the guidance before adding restrictions" rule.
Merge order
Dependency roundup PR is separate. If it merges first, rebase this branch and rerun
npm run buildso the committeddist/bundle includes the bumped dependencies.Verification
npm test: 16 files, 101 tests green. 4 new tests cover the note, the failure path, languages written/skipped and the write result.npm run buildsucceeds, includingmcpb pack.sync-version --checkagrees at 2.1.1.tools/listshows the new description on all 5 tools.🤖 Generated with Claude Code
https://claude.ai/code/session_01XZfEfCE8YaqD1g9Mh3KXPi