Skip to content

⬆️ Bump QuantEcon/action-translation from 0.13.1 to 0.15.0#112

Open
dependabot[bot] wants to merge 1 commit intomainfrom
dependabot/github_actions/QuantEcon/action-translation-0.15.0
Open

⬆️ Bump QuantEcon/action-translation from 0.13.1 to 0.15.0#112
dependabot[bot] wants to merge 1 commit intomainfrom
dependabot/github_actions/QuantEcon/action-translation-0.15.0

Conversation

@dependabot
Copy link
Copy Markdown
Contributor

@dependabot dependabot bot commented on behalf of github Apr 15, 2026

Bumps QuantEcon/action-translation from 0.13.1 to 0.15.0.

Release notes

Sourced from QuantEcon/action-translation's releases.

v0.15.0 — Rebase Mode

Rebase Mode — Automatic conflict resolution for translation PRs

This release adds rebase mode, which eliminates merge conflicts when multiple upstream PRs modify the same translated file. Previously, 62% of translation-sync PRs conflicted because they replace entire files — merging one makes any sibling PR's "unchanged sections" stale.

How it works

When a translation-sync-* PR is merged in the target repo, rebase mode:

  1. Finds sibling translation-sync PRs with overlapping files
  2. Re-runs the translation pipeline against updated main
  3. Reuses cached translations for unchanged sections (zero Claude API calls in the common case)
  4. Force-pushes the rebased result

Setup

Add examples/rebase-translations.yml to your target repo's .github/workflows/ directory (see template).

What's new

  • Rebase mode (mode: rebase) — triggered by pull_request.closed on translation-sync- branches
  • Translation cache — section-level cache using targetBaseSha in PR metadata; unchanged sections skip Claude entirely
  • Structured PR metadata — machine-readable JSON in PR body for pipeline reconstruction
  • File type metadata — supports markdown, renamed, removed, and toc files during rebase
  • Rebase workflow templateexamples/rebase-translations.yml with concurrency group
  • 29 new tests (976 → 1005 total, 39 suites)

Fixes #63

v0.14.1

Fixed

  • Heading-map injection for new files: processFull() now builds and injects a translation: frontmatter block (heading-map + title) into newly translated files. Previously, only section-based updates via processSectionBased got heading-maps; new files were missing them.
  • MISSING_HEADINGMAP false positive for title-only files: translate status no longer flags files with no ## sections as missing a heading-map. These files have only a title — an empty heading-map is expected.

Refactored

  • Moved buildHeadingMap from CLI module (headingmap.ts) to shared module (heading-map.ts) to avoid coupling the Action bundle to CLI-only dependencies.
  • Added try/catch around heading-map injection in processFull so malformed translations fall back gracefully.

Documentation

  • Documented language-targeted \translate-resync syntax across README, quickstart, action-reference, and FAQ (e.g., \translate-resync fa to retrigger only Farsi).

Tests

976 pass (39 suites) — 4 new tests added.

v0.14.0

Fixed

  • Retry on Anthropic overloaded_error: The overloaded_error (APIError with status: undefined) is now retried with exponential backoff instead of failing immediately. Narrowed to match overloaded in the error message so unrelated status-less errors are not retried. Improved formatApiError to show a clear message when retries are exhausted. Fixes #57

... (truncated)

Changelog

Sourced from QuantEcon/action-translation's changelog.

[0.15.0] - 2025-07-14

Added

  • Rebase mode (mode: rebase): Automatically rebases open translation-sync PRs when a sibling PR is merged. Eliminates the 62% merge conflict rate from issue #63. Runs in the target repo, triggered by pull_request.closed events on translation-sync- branches. Detects file overlap via PR metadata, re-runs the sync pipeline against updated main, and force-pushes the result. Posts success/failure comments on rebased PRs.
  • Translation cache for rebase: Stores targetBaseSha in PR metadata to enable section-level cache during rebase. Before re-translating, compares each section's target content between the original baseline and current main. Unchanged sections reuse cached translations from the PR branch — zero Claude API calls in the common case (PRs modifying different sections). Added sections matched via heading map. Graceful fallback to re-translation if cache parsing fails.
  • Structured PR metadata: Translation-sync PR bodies now include a <!-- translation-sync-metadata --> HTML comment block with machine-readable JSON: sourceRepo, sourcePR, sourceCommitSha, targetBaseSha, sourceLanguage, targetLanguage, claudeModel, and file list. Used by rebase mode to reconstruct pipeline inputs. Invisible on GitHub. Backward compatible — PRs without metadata are skipped during rebase.
  • Rebase workflow template: Ready-to-use examples/rebase-translations.yml for target repos. Includes concurrency group to prevent overlapping rebases.
  • File type metadata: PR metadata now includes file types (markdown, renamed, removed, toc) and previousPath for renamed files. Rebase mode uses this to correctly reconstruct all file types, not just markdown.
  • RebaseInputs type: New action inputs for rebase mode (anthropic-api-key, github-token, optional docs-folder and glossary-path).
  • 29 tests: 8 for metadata/rebase inputs, 2 for targetBaseSha, 7 for translation cache, 2 for cache subsections and heading-map correctness, 1 for CRLF metadata parsing, 3 for file type metadata, 6 additional cache and integration tests (976 → 1005 total, 39 suites)

[0.14.1] - 2026-04-09

Fixed

  • Heading-map injection for new files: processFull() now builds and injects a translation: frontmatter block (heading-map + title) into newly translated files. Previously, only section-based updates via processSectionBased got heading-maps; new files were missing them.
  • MISSING_HEADINGMAP false positive for title-only files: translate status no longer flags files with no ## sections as missing a heading-map. These files have only a title — an empty heading-map is expected.

Added

  • 4 tests: 3 for processFull heading-map injection, 1 for title-only status check (972 → 976 total)

[0.14.0] - 2026-04-09

Fixed

  • Retry on Anthropic overloaded_error: The overloaded_error (APIError with status: undefined) is now retried with exponential backoff instead of failing immediately. Narrowed to match overloaded in the error message so unrelated status-less errors are not retried. Improved formatApiError to show a clear message when retries are exhausted. Updated JSDoc to document the new retry case. Fixes #57

Added

  • Language-targeted \translate-resync command: \translate-resync fa triggers only the Farsi workflow; \translate-resync zh-cn triggers only zh-cn. Bare \translate-resync (no argument) still triggers all languages for backward compatibility. Language argument is validated against supported languages; unsupported values are ignored with a warning and fall back to all-language resync. Fixes #58
  • Copilot PR review workflow in copilot-instructions.md: Documented the fetch → fix → reply → resolve process for addressing Copilot review comments
  • 5 tests: 2 for overloaded_error retry, 3 for language-targeted resync parsing (967 → 972 total)

[0.13.1] - 2026-03-26

Fixed

  • Headingmap CLI MyST role stripping: cleanHeading() in the headingmap CLI now strips MyST inline roles via MystParser.stripMystRoles(), matching the sync pipeline behavior from v0.12.5. Previously, roles like {index}`Mutable <single: Mutable>` appeared verbatim in heading-map keys/values when running npx translate headingmap.

Added

  • 1 test for MyST role stripping in buildHeadingMap (966 → 967 total)

[0.13.0] - 2026-03-26

Changed

  • Heading-map → translation frontmatter: Replaced flat heading-map: YAML block with structured translation: { title, headings } format. Title is now stored as an explicit field instead of a heading-map entry, resolving the inconsistency between the sync pipeline and the headingmap CLI. Reads both formats (backward compatible); always writes new format. Affected: heading-map.ts, file-processor.ts, headingmap CLI, init CLI, reviewer prompts (954 → 966 tests)

[0.12.5] - 2026-03-26

Fixed

  • Heading-map MyST role pollution: Headings with MyST inline roles like {index}\Pandas <single: Pandas>` were stored verbatim as heading-map keys/values instead of the clean display text (Pandas). Added MystParser.stripMystRoles()static method using global regex replacement to handle single roles, multiple roles, and mixed role+text headings. Applied across all heading-map paths: parser title extraction, file-processor heading-map updates,cleanHeadinginupdateHeadingMap, and lookupTargetHeading. Covers #titles and##+ section/subsection headings. Affects 7 lectures in lecture-python-programming that use {index}` roles in titles.

Added

  • 19 tests for MyST role stripping — unit tests for stripMystRoles (including mixed role+text headings), title extraction integration, and heading-map operations with role syntax (935 → 954 total)

... (truncated)

Commits
  • b2403c6 chore: release v0.15.0
  • 5a80d96 Merge pull request #64 from QuantEcon/fix/issue-63-rebase-on-merge
  • 63b3950 fix: store file types in PR metadata for correct rebase reconstruction
  • 590c3c5 fix: address Copilot review — pagination, state SHAs, CRLF, MyST roles
  • 49fef4b docs: update changelog, copilot-instructions, and build output
  • 39dbe74 Phase 4: Add rebase workflow template for target repos
  • bbcda54 Phase 3: Translation cache for rebase mode
  • 0eed2e3 Phase 2: Add rebase mode for resolving translation PR conflicts
  • edefffb Phase 1: Embed structured metadata in translation sync PR bodies
  • 842b47a release: v0.14.1
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [QuantEcon/action-translation](https://github.com/quantecon/action-translation) from 0.13.1 to 0.15.0.
- [Release notes](https://github.com/quantecon/action-translation/releases)
- [Changelog](https://github.com/QuantEcon/action-translation/blob/main/CHANGELOG.md)
- [Commits](QuantEcon/action-translation@v0.13.1...v0.15.0)

---
updated-dependencies:
- dependency-name: QuantEcon/action-translation
  dependency-version: 0.15.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot bot added dependencies Pull requests that update a dependency file github_actions Pull requests that update GitHub Actions code labels Apr 15, 2026
@netlify
Copy link
Copy Markdown

netlify bot commented Apr 15, 2026

Deploy Preview for majestic-griffin-10b166 ready!

Name Link
🔨 Latest commit 826cdd6
🔍 Latest deploy log https://app.netlify.com/projects/majestic-griffin-10b166/deploys/69df146fe633dd0008ba5496
😎 Deploy Preview https://deploy-preview-112--majestic-griffin-10b166.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file github_actions Pull requests that update GitHub Actions code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants