Skip to content

2.1.1: unambiguous translation reads, confirmed translated writes - #79

Merged
matty-drexler merged 3 commits into
mainfrom
release-2.1.1
Oct 30, 2026
Merged

matty-drexler merged 3 commits into
mainfrom
release-2.1.1

Conversation

@matty-drexler

Copy link
Copy Markdown
Contributor

Closes #78.

Why

An agent read a plain with_translations value 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

Area Change
Reads (search_records, get_record, get_records) With with_translations, the result carries a note (translations / _translations). It lists the active languages and says how to read a plain value, or gives an error with "user's language only" if the fetch failed.
Writes (create_record, write_record) A translated write returns translations.languages_written per field, plus skipped_inactive for requested languages that aren't active (these were silently dropped before). Writes without translations keep their old return shape (true / ID).
Tool descriptions with_translations text updated in both the static JSON and the Zod schemas: a plain value means identical, and writes only broadcast with the flag.
Skills odoo-data-ops §9 rewritten. odoo-introspector no longer says "the server handles synchronization for you".
Orchestrator fetchTranslationMatrix keeps its forgiving behaviour for the write before-snapshot. The new readTranslations reports 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 build so the committed dist/ 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 build succeeds, including mcpb pack. sync-version --check agrees at 2.1.1.
  • The built bundle's tools/list shows the new description on all 5 tools.
  • Not done: MCP Inspector check against live Odoo.

🤖 Generated with Claude Code

https://claude.ai/code/session_01XZfEfCE8YaqD1g9Mh3KXPi

matty-drexler and others added 2 commits October 30, 2026 13:15
…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
matty-drexler merged commit 991adf7 into main Oct 30, 2026
4 checks passed
@matty-drexler
matty-drexler deleted the release-2.1.1 branch October 30, 2026 07:27
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Translations: guidance overstates the broadcast, and a single value is ambiguous

1 participant