Skip to content

Releases: ruwadgroup/autotranslate

@autotranslate/zod@1.0.0-beta.10

Pre-release

Choose a tag to compare

Patch Changes

  • Updated dependencies
    [bb38cd5,
    bb38cd5]:
    • @autotranslate/core@1.0.0-beta.10

@autotranslate/vite@1.0.0-beta.20

Pre-release

Choose a tag to compare

Patch Changes

  • Updated dependencies
    [bb38cd5,
    bb38cd5,
    bb38cd5]:
    • @autotranslate/core@1.0.0-beta.10
    • @autotranslate/cli@1.0.0-beta.20

@autotranslate/react@1.0.0-beta.11

Pre-release

Choose a tag to compare

Patch Changes

  • Updated dependencies
    [bb38cd5,
    bb38cd5]:
    • @autotranslate/core@1.0.0-beta.10

@autotranslate/providers@1.0.0-beta.10

Pre-release

Choose a tag to compare

Minor Changes

  • bb38cd5
    Thanks @tamimbinhakim! - Add the agent
    provider - translate with Claude Code or Codex

    Drives a headless coding-agent CLI already installed and signed in on the
    machine, instead of calling a model API. No API key, no separate billing.

    provider: {
      name: 'agent',
      agent: 'claude',            // or 'codex'
      model: 'claude-haiku-4-5',  // optional
    }

    The agent is used strictly as a text transformer - tools disabled, sandbox
    read-only, prompt on stdin, JSON out. It cannot touch your repository.

    • Claude Code: claude -p --output-format json --disallowedTools '*'.
      Fenced or prose-wrapped answers are unwrapped by a balanced-brace scan.
    • Codex: codex exec --sandbox read-only --output-schema, so the response
      shape is enforced by the API rather than by prompt discipline.

    Options: agent, model, command, args, timeoutMs (default 300000).

    Each batch is a process spawn, so this suits local development and
    small-to-medium catalogs rather than bulk runs; keep concurrency modest. CI
    runners do not carry your agent login, so prefer ai with a key there.

    Batching, retry with backoff, and re-asking for omitted keys are shared with
    the ai provider.

  • bb38cd5
    Thanks @tamimbinhakim! - Fix incremental
    translation: committed catalogs are now the diff baseline

    init gitignored .translations/.cache/, and translate used that cache as
    its only record of what had been translated - it never consulted the committed
    catalogs. On any machine without the cache (fresh clone, new teammate, every
    CI run) the entire catalog was re-sent to the provider despite valid
    translations sitting in the repo.

    Three defects compounded it:

    • Omitted keys deleted committed translations. A key missing from a
      provider response (routine on large batches) was pruned from the catalog on
      write.
    • One failed chunk discarded the run. Catalogs were written only after
      every task settled, so a single 429 threw away every other chunk's work.
    • Reference context was unbounded. Every cached neighbour rode along on
      every request, growing prompts with catalog size - which is what pushed
      large batches past the point where models answer completely.

    Changes

    • Translation state moves to .translations/.state/<locale>/<chunk>.json,
      recording the source hash behind each translation. Commit it - init no
      longer ignores anything under outDir and strips a stale .cache/ line if
      it finds one. Existing .cache/ layouts migrate on the next translate.
    • Switching provider or model no longer invalidates anything.
    • Omitted keys keep their previous translation and stay out of state, so the
      next run retries exactly those.
    • Batches fail independently. TranslateResult gains failures; the CLI
      exits non-zero when any batch failed.
    • Reference context is capped at 8 items.

    Batching moves to the CLI

    translate now plans the whole run, collapses duplicate copy, and splits the
    remainder into uniform batches instead of inheriting whatever landed in a hash
    bucket.

    • New batchSize config option (default 25). This is the lever when a model
      drops items.
    • Identical copy under several keys is translated once and fanned out; copy
      with differing context or description still translates separately.
    • The ai provider retries transient failures with backoff and re-asks for
      omitted keys in smaller slices.

    TranslateProgress reports batch / totalBatches / items instead of
    chunkPath.

    Upgrading

    Run npx autotranslate init once, then commit .translations/. init
    removes the stale .gitignore entry and the next translate migrates
    .cache/ into .state/, so no retranslation is needed.

    Until .state/ is committed, CI still has no diff input and will retranslate
    the full catalog on each run - exactly the old behaviour, no worse. Projects
    that never commit .translations/ at all are unaffected.

Patch Changes

  • Updated dependencies
    [bb38cd5,
    bb38cd5]:
    • @autotranslate/core@1.0.0-beta.10

@autotranslate/next@1.0.0-beta.20

Pre-release

Choose a tag to compare

Patch Changes

  • Updated dependencies
    [bb38cd5,
    bb38cd5,
    bb38cd5]:
    • @autotranslate/core@1.0.0-beta.10
    • @autotranslate/cli@1.0.0-beta.20
    • @autotranslate/react@1.0.0-beta.11

@autotranslate/eslint-plugin@1.0.0-beta.10

Choose a tag to compare

Patch Changes

  • Updated dependencies
    [bb38cd5,
    bb38cd5]:
    • @autotranslate/core@1.0.0-beta.10

@autotranslate/core@1.0.0-beta.10

Pre-release

Choose a tag to compare

Minor Changes

  • bb38cd5
    Thanks @tamimbinhakim! - Add the agent
    provider - translate with Claude Code or Codex

    Drives a headless coding-agent CLI already installed and signed in on the
    machine, instead of calling a model API. No API key, no separate billing.

    provider: {
      name: 'agent',
      agent: 'claude',            // or 'codex'
      model: 'claude-haiku-4-5',  // optional
    }

    The agent is used strictly as a text transformer - tools disabled, sandbox
    read-only, prompt on stdin, JSON out. It cannot touch your repository.

    • Claude Code: claude -p --output-format json --disallowedTools '*'.
      Fenced or prose-wrapped answers are unwrapped by a balanced-brace scan.
    • Codex: codex exec --sandbox read-only --output-schema, so the response
      shape is enforced by the API rather than by prompt discipline.

    Options: agent, model, command, args, timeoutMs (default 300000).

    Each batch is a process spawn, so this suits local development and
    small-to-medium catalogs rather than bulk runs; keep concurrency modest. CI
    runners do not carry your agent login, so prefer ai with a key there.

    Batching, retry with backoff, and re-asking for omitted keys are shared with
    the ai provider.

  • bb38cd5
    Thanks @tamimbinhakim! - Fix incremental
    translation: committed catalogs are now the diff baseline

    init gitignored .translations/.cache/, and translate used that cache as
    its only record of what had been translated - it never consulted the committed
    catalogs. On any machine without the cache (fresh clone, new teammate, every
    CI run) the entire catalog was re-sent to the provider despite valid
    translations sitting in the repo.

    Three defects compounded it:

    • Omitted keys deleted committed translations. A key missing from a
      provider response (routine on large batches) was pruned from the catalog on
      write.
    • One failed chunk discarded the run. Catalogs were written only after
      every task settled, so a single 429 threw away every other chunk's work.
    • Reference context was unbounded. Every cached neighbour rode along on
      every request, growing prompts with catalog size - which is what pushed
      large batches past the point where models answer completely.

    Changes

    • Translation state moves to .translations/.state/<locale>/<chunk>.json,
      recording the source hash behind each translation. Commit it - init no
      longer ignores anything under outDir and strips a stale .cache/ line if
      it finds one. Existing .cache/ layouts migrate on the next translate.
    • Switching provider or model no longer invalidates anything.
    • Omitted keys keep their previous translation and stay out of state, so the
      next run retries exactly those.
    • Batches fail independently. TranslateResult gains failures; the CLI
      exits non-zero when any batch failed.
    • Reference context is capped at 8 items.

    Batching moves to the CLI

    translate now plans the whole run, collapses duplicate copy, and splits the
    remainder into uniform batches instead of inheriting whatever landed in a hash
    bucket.

    • New batchSize config option (default 25). This is the lever when a model
      drops items.
    • Identical copy under several keys is translated once and fanned out; copy
      with differing context or description still translates separately.
    • The ai provider retries transient failures with backoff and re-asks for
      omitted keys in smaller slices.

    TranslateProgress reports batch / totalBatches / items instead of
    chunkPath.

    Upgrading

    Run npx autotranslate init once, then commit .translations/. init
    removes the stale .gitignore entry and the next translate migrates
    .cache/ into .state/, so no retranslation is needed.

    Until .state/ is committed, CI still has no diff input and will retranslate
    the full catalog on each run - exactly the old behaviour, no worse. Projects
    that never commit .translations/ at all are unaffected.

@autotranslate/cli@1.0.0-beta.20

Pre-release

Choose a tag to compare

Minor Changes

  • bb38cd5
    Thanks @tamimbinhakim! - Add the agent
    provider - translate with Claude Code or Codex

    Drives a headless coding-agent CLI already installed and signed in on the
    machine, instead of calling a model API. No API key, no separate billing.

    provider: {
      name: 'agent',
      agent: 'claude',            // or 'codex'
      model: 'claude-haiku-4-5',  // optional
    }

    The agent is used strictly as a text transformer - tools disabled, sandbox
    read-only, prompt on stdin, JSON out. It cannot touch your repository.

    • Claude Code: claude -p --output-format json --disallowedTools '*'.
      Fenced or prose-wrapped answers are unwrapped by a balanced-brace scan.
    • Codex: codex exec --sandbox read-only --output-schema, so the response
      shape is enforced by the API rather than by prompt discipline.

    Options: agent, model, command, args, timeoutMs (default 300000).

    Each batch is a process spawn, so this suits local development and
    small-to-medium catalogs rather than bulk runs; keep concurrency modest. CI
    runners do not carry your agent login, so prefer ai with a key there.

    Batching, retry with backoff, and re-asking for omitted keys are shared with
    the ai provider.

  • bb38cd5
    Thanks @tamimbinhakim! - Add a git merge
    driver for the generated catalogs

    Now that translation state is committed, two branches that both add copy will
    both write to .translations/. Git's line-based merge conflicts on adjacent
    keys and writes conflict markers into JSON, which breaks every consumer.

    autotranslate init registers a merge driver and the matching
    .gitattributes rules:

    • Catalogs merge to the union of both sides' keys; deletions are honoured.
    • State drops any key both branches retranslated, so the next translate
      re-derives that one key instead of picking an arbitrary winner.
    • index.ts is regenerated from the union of both sides' chunk files, and
      now emits one import per line so it stays diff-friendly.

    Conflicts in your own source still surface normally; only generated files
    resolve automatically.

    .gitattributes is committed, but the driver command lives in .git/config,
    which git does not share. Teammates run autotranslate init once to enable
    it.

    Also adds autotranslate merge-driver <base> <ours> <theirs> [path], invoked
    by git rather than by hand.

  • bb38cd5
    Thanks @tamimbinhakim! - Fix incremental
    translation: committed catalogs are now the diff baseline

    init gitignored .translations/.cache/, and translate used that cache as
    its only record of what had been translated - it never consulted the committed
    catalogs. On any machine without the cache (fresh clone, new teammate, every
    CI run) the entire catalog was re-sent to the provider despite valid
    translations sitting in the repo.

    Three defects compounded it:

    • Omitted keys deleted committed translations. A key missing from a
      provider response (routine on large batches) was pruned from the catalog on
      write.
    • One failed chunk discarded the run. Catalogs were written only after
      every task settled, so a single 429 threw away every other chunk's work.
    • Reference context was unbounded. Every cached neighbour rode along on
      every request, growing prompts with catalog size - which is what pushed
      large batches past the point where models answer completely.

    Changes

    • Translation state moves to .translations/.state/<locale>/<chunk>.json,
      recording the source hash behind each translation. Commit it - init no
      longer ignores anything under outDir and strips a stale .cache/ line if
      it finds one. Existing .cache/ layouts migrate on the next translate.
    • Switching provider or model no longer invalidates anything.
    • Omitted keys keep their previous translation and stay out of state, so the
      next run retries exactly those.
    • Batches fail independently. TranslateResult gains failures; the CLI
      exits non-zero when any batch failed.
    • Reference context is capped at 8 items.

    Batching moves to the CLI

    translate now plans the whole run, collapses duplicate copy, and splits the
    remainder into uniform batches instead of inheriting whatever landed in a hash
    bucket.

    • New batchSize config option (default 25). This is the lever when a model
      drops items.
    • Identical copy under several keys is translated once and fanned out; copy
      with differing context or description still translates separately.
    • The ai provider retries transient failures with backoff and re-asks for
      omitted keys in smaller slices.

    TranslateProgress reports batch / totalBatches / items instead of
    chunkPath.

    Upgrading

    Run npx autotranslate init once, then commit .translations/. init
    removes the stale .gitignore entry and the next translate migrates
    .cache/ into .state/, so no retranslation is needed.

    Until .state/ is committed, CI still has no diff input and will retranslate
    the full catalog on each run - exactly the old behaviour, no worse. Projects
    that never commit .translations/ at all are unaffected.

Patch Changes

  • Updated dependencies
    [bb38cd5,
    bb38cd5]:
    • @autotranslate/core@1.0.0-beta.10
    • @autotranslate/providers@1.0.0-beta.10

@autotranslate/zod@1.0.0-beta.9

Pre-release

Choose a tag to compare

Patch Changes

  • Updated dependencies
    [e0aa5ca]:
    • @autotranslate/core@1.0.0-beta.9

@autotranslate/zod@1.0.0-beta.8

Pre-release

Choose a tag to compare

Patch Changes

  • Updated dependencies
    [d90aae1]:
    • @autotranslate/core@1.0.0-beta.8