# Changelog of AI Subtitle & Document Translator — SRT, VTT, DOCX (`sian.agency/ai-subtitle-and-document-translator`) Actor

- **URL**: https://apify.com/sian.agency/ai-subtitle-and-document-translator/changelog.md
- **Full Actor documentation**: https://apify.com/sian.agency/ai-subtitle-and-document-translator.md

## Changelog

All notable changes to this actor are documented here.

### \[1.0.1] — 2026-09-18

#### Fixed

- **A run started from the console with the default settings now returns results.** The text field had no example value, so pressing Start without typing anything ended the run on a validation error with nothing delivered. The field now ships with sample text, `text` and `texts` accept every shape they are sent (one string, a list, a list of lists, numbers, padding and blank entries), and a run that supplies subtitle files while the selector is still on text is routed to subtitle mode instead of being rejected. A run that genuinely has nothing to translate still stops before anything is charged, now naming every field that could have carried the work.

### \[1.0.0] — 2026-08-04

First release.

#### Added

- **Subtitle translation** for `.srt` and `.vtt` files, by URL or upload. Timings, cue numbers, blank lines, byte-order marks and line endings pass through as raw bytes; every delivered file is re-parsed and compared against its source before it ships, and a file that fails the check is discarded instead of delivered — and not charged.
- **Text translation**, single string or bulk list, with identical strings translated and charged once.
- **Document translation** for `.docx` and `.pptx` with layout, styles, tables and images preserved. Every row reports the authoritative billed character count, whether the per-file minimum was applied, and any overage charged.
- **Two engines** — a fast, affordable one available on every plan, and a professional high-accuracy one for published work and documents.
- **110 target languages** and 101 source languages, plus automatic source detection.
- **Character bank billing.** Leftover characters are banked across the whole run per event and per language, so a run of 500 short strings costs 20 events instead of 500. At most one rounding event exists per language per run.
- **`maxSpendUsd` pre-flight brake** — the run is priced before the first charge and aborts with an explanation rather than spending past the cap.
- **WebVTT structure handling** — the header, `NOTE` comments, `STYLE` CSS blocks and `REGION` definitions pass through untranslated and unbilled; cue identifiers and cue settings are re-emitted verbatim.
- **Inline formatting preservation** for italics, bold and colour tags, plus positioning overrides (`{\an8}`), voice spans and class spans.
- **Free neighbour context** — two cues either side of each batch are sent as unbilled context, fixing pronoun and gender agreement across cue boundaries.
- **Line re-wrapping** with `preserve` / `single` / `none` modes and a configurable readability limit, defaulting to the 42-character Netflix and BBC standard.
- **Format conversion** between SRT and WebVTT that changes only the decimal separator, never a timestamp digit.
- **`partialCues` reporting** — a cue the engine never returned keeps its source text and is counted, so a file never loses a cue silently.
- **`overlappingCues` reporting** — out-of-order source timings are surfaced, never rewritten.
- HTML run report with the full per-event, per-language billing breakdown, written even when a run fails.
