dsh-cait 1.1.6 → 1.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,49 @@ All notable changes to CAIT are documented here. The project follows
4
4
  [Semantic Versioning](https://semver.org/) and the format is based on
5
5
  [Keep a Changelog](https://keepachangelog.com/).
6
6
 
7
+ ## [1.1.7] - 2026-11-10
8
+
9
+ Format-depth release: DOCX tables, headers, footers, and notes; Apple/Android
10
+ string catalogs and other localization formats; PowerPoint speaker notes,
11
+ multi-sheet XLSX, and subtitle timing controls.
12
+
13
+ ### Added
14
+
15
+ - **DOCX content outside the body.** Import and export paragraphs in tables,
16
+ headers, footers, footnotes, and endnotes, keyed by `docxPart` and
17
+ `docxParagraph`; body-only documents keep the old path.
18
+ - **Localization string formats.** Apple `.strings` and `.stringsdict`, Android
19
+ `strings.xml`/plurals, `.resx`, `.arb`, nested YAML, and Java `.properties`.
20
+ Keys, comments, plural variants, block scalars, inline XML tags, and ARB
21
+ metadata are preserved for round trips. Nested YAML supports mappings,
22
+ sequences, scalars, block scalars, and comments; anchors, aliases, merge keys,
23
+ and flow collections are rejected explicitly.
24
+ - **PowerPoint speaker notes.** Notes pages are imported as separate units and
25
+ written back by part; slide text and notes stay in document order.
26
+ - **Multi-sheet XLSX with source-preserving export.** Every worksheet is
27
+ imported with `sheet`/`sheetName` metadata and cell references. When the
28
+ source workbook is retained, export patches the original cells instead of
29
+ rebuilding the workbook, so styles, merged ranges, and other sheets survive;
30
+ formula cells are skipped.
31
+ - **Subtitle timeline controls.** Merge adjacent cues, split a cue at a time
32
+ point, and shift all cues by milliseconds. Overlapping cues are reported as a
33
+ high-risk QA finding rather than being changed automatically.
34
+
35
+ ### Changed
36
+
37
+ - Segment views include their metadata (`start`/`end`, `docxPart`, `sheetName`,
38
+ key paths, and similar) so timeline and format context reaches the UI.
39
+
40
+ ### Known limits
41
+
42
+ - Segment merge/split still only cover text formats; Office merge/split needs a
43
+ paragraph-mapping contract.
44
+ - XLSX export needs a target column; formula cells are skipped, and workbooks
45
+ imported before 1.1.7 have no retained source package to patch.
46
+ - Nested YAML rejects anchors, aliases, merge keys, and flow collections.
47
+ - Subtitle editing has no waveform/playhead; split uses a time point, merge uses
48
+ the outer cue range.
49
+
7
50
  ## [1.1.6] - 2026-11-09
8
51
 
9
52
  Review-workbench release: find and replace, a command palette, segment notes,
package/README.ja.md CHANGED
@@ -17,7 +17,7 @@
17
17
  <p align="center">
18
18
  <a href="https://www.npmjs.com/package/dsh-cait"><img alt="npm バージョン" src="https://img.shields.io/npm/v/dsh-cait.svg" /></a>
19
19
  <img alt="DSH 0.2.x" src="https://img.shields.io/badge/DSH-0.2.x-4d6bfe.svg" />
20
- <img alt="テスト 41 スイート" src="https://img.shields.io/badge/tests-41%20suites-brightgreen.svg" />
20
+ <img alt="テスト 45 スイート" src="https://img.shields.io/badge/tests-45%20suites-brightgreen.svg" />
21
21
  <img alt="API キー不要" src="https://img.shields.io/badge/API%20key-not%20required-6b7280.svg" />
22
22
  </p>
23
23
 
@@ -56,6 +56,13 @@ Host のリビジョンをポーリングするため、エージェントによ
56
56
 
57
57
  ## 機能
58
58
 
59
+ ### 1.1.7 の新機能
60
+
61
+ - **DOCX の深い構造**:表、ヘッダー、フッター、脚注、文末脚注の段落を通常のセグメントとして取り込み、元の part に書き戻します。
62
+ - **ローカライズ文字列**:Apple `.strings`/`.stringsdict`、Android `strings.xml`/複数形、`.resx`、`.arb`、ネストした YAML、Java `.properties` を往復でき、キー、コメント、複数形、ブロックスカラー、インラインタグを保持します。
63
+ - **スピーカーノートと複数シート**:PPTX のノートページを独立したセグメントにし、XLSX はシート名、順序、セル参照を保ったまま全シートを扱います。元ファイルを保持している場合は元のセルへ書き戻すため、スタイルと結合範囲も残ります。
64
+ - **字幕タイムライン**:隣接 cue の結合、時刻指定の分割、全 cue のシフトに対応。重なりは高リスクの QA として報告し、時間は自動変更しません。
65
+
59
66
  ### 1.1.6 の新機能
60
67
 
61
68
  - **検索と置換**:原文/訳文のプレビュー、一括適用、直前の置換の取り消し。確定済みセグメントの訳文を変更すると校閲待ちに戻ります。
@@ -228,7 +235,7 @@ CAIT はエンドポイントもキーも持ちません。セレクタは DSH
228
235
  | SDLXLIFF | ✅ | ✅ | XLIFF 1.2 の基本パス。SDL 固有の拡張はラウンドトリップしない |
229
236
  | HTML | ✅ | ✅ | テキストブロックとインラインタグを保持。文書全体の CSS / レイアウトは再構築しない |
230
237
  | JSON | ✅ | ✅ | 文字列パスのサブセット。オブジェクト / 配列構造はテンプレートで保持。キーと数値は翻訳しない |
231
- | XLSX | ✅ | ✅ | 最初のワークシート。`Source`/`Target` ヘッダーまたは A/B 列。エクスポートは 2 列の新しいワークブック |
238
+ | XLSX | ✅ | ✅ | 全ワークシート。ソース / ターゲット列またはヘッダーを認識。元ファイルを保持している場合はセルへ書き戻し、スタイル、結合範囲、他のシートも保持。数式セルはスキップ |
232
239
  | PPTX | ✅ | ✅* | ソース保持エクスポート。インポートした `.pptx` パッケージが必要。本文テキストのみで、ノート / グラフ / SmartArt はインポートしない |
233
240
  | RTF | ✅ | ✅ | 基本的な段落、`\uN`、`\'hh`、制御語。元のスタイルはラウンドトリップしない |
234
241
 
@@ -273,7 +280,7 @@ DSH デスクトップ(または `plugin_manager` ツールがある任意の
273
280
  plugin_manager install_bundle target: dsh-cait
274
281
  ```
275
282
 
276
- バージョンを固定するときは `dsh-cait@1.1.6`、最新版は `dsh-cait@latest` を指定します。
283
+ バージョンを固定するときは `dsh-cait@1.1.7`、最新版は `dsh-cait@latest` を指定します。
277
284
  マネージャが registry のパッケージを解決し、bundle patch を適用してプラグインを有効化します。
278
285
 
279
286
  CLI 管理のプロファイル:
@@ -478,7 +485,7 @@ node _dev/test-mt.mjs
478
485
 
479
486
  インポート / エクスポートのフィクスチャは `_dev/sample.docx`、`_dev/sample-table.docx`、
480
487
  `_dev/sample-format.docx` です。対応する `python _dev/make-*.py` スクリプトで再生成
481
- できます。41 スイートすべてが通るはずです。
488
+ できます。45 スイートすべてが通るはずです。
482
489
 
483
490
  ### リリース
484
491
 
@@ -524,12 +531,15 @@ npm publish
524
531
  画像 OCR も未対応です。
525
532
  - EPUB インポートは spine 内の本文 XHTML テキストブロックのみを対象とします。
526
533
  DRM、固定レイアウト、スクリプト化、MathML を多用する書籍は非対応です。
527
- - DOCX インポートは表、ヘッダー、脚注、フィールド、代替テキスト、変更履歴の削除を
528
- スキップします。DOCX エクスポートではそれらの領域はソース言語のまま残ります。
534
+ - DOCX インポートは本文、表、ヘッダー、フッター、脚注、文末脚注を対象にします。
535
+ フィールド、代替テキスト、変更履歴の削除はソース言語のまま残ります。
529
536
  - 複数の run が混在する DOCX/PPTX の段落は、先頭 run の書式を継承します。
530
- - PPTX インポートは本文テキストのみで、ノート、グラフ、SmartArt は対象外です。
531
- - XLSX のインポート / エクスポートは 2 列の表です。セルのスタイル、数式、結合セル、画像、
532
- 追加シートは保持されません。
537
+ - PPTX インポートは本文とスピーカーノートを対象にし、グラフと SmartArt は対象外です。
538
+ - XLSX エクスポートはターゲット列がある場合に書き戻します。数式セルはスキップされ、
539
+ 1.1.7 より前にインポートした文書は元ワークブックを保持していないため再構築になります。
540
+ - ネストした YAML は mapping、sequence、scalar、ブロックスカラー、コメントに対応します。
541
+ アンカー、エイリアス、merge key、flow コレクションは
542
+ `LOCALIZATION_YAML_UNSUPPORTED` で拒否します。
533
543
  - HTML/RTF のエクスポートは元のスタイルをラウンドトリップしません。JSON は文字列値だけを
534
544
  翻訳します。
535
545
  - TM のマッチングは意味ではなく字句に基づきます。ステミング、同義語、埋め込みはありません。
@@ -542,7 +552,7 @@ npm publish
542
552
  README も英語・簡体字中国語・日本語の 3 版があり、英語版が正本です。
543
553
 
544
554
  次に予定しているのは、マルチモーダルな DSH ルート経由の画像 / ビジョン入力、
545
- スタイルを保つ XLSX 出力、XLIFF の `<alt-trans>` / ノート対応です。
555
+ Office 段落マッピング後の結合 / 分割、字幕の波形 / 再生ヘッドです。
546
556
 
547
557
  ## 変更履歴とバージョン
548
558
 
package/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  <p align="center">
8
8
  <strong>Computer-aided translation, inside DeepSeek Harness.</strong><br/>
9
- Translation memory 路 glossary 路 segment editor 路 MT assistance 路 document tabs 路 Office / subtitle / localization formats
9
+ Translation memory · glossary · segment editor · MT assistance · document tabs · Office / subtitle / localization formats
10
10
  </p>
11
11
  <p align="center">
12
12
  <a href="README.zh-CN.md">简体中文</a> · <a href="README.ja.md">日本語</a> · <a href="README.md">English</a>
@@ -16,7 +16,7 @@
16
16
  <p align="center">
17
17
  <a href="https://www.npmjs.com/package/dsh-cait"><img alt="npm version" src="https://img.shields.io/npm/v/dsh-cait.svg" /></a>
18
18
  <img alt="DSH 0.2.x" src="https://img.shields.io/badge/DSH-0.2.x-4d6bfe.svg" />
19
- <img alt="Tests: 41 suites" src="https://img.shields.io/badge/tests-41%20suites-brightgreen.svg" />
19
+ <img alt="Tests: 45 suites" src="https://img.shields.io/badge/tests-45%20suites-brightgreen.svg" />
20
20
  <img alt="No API key required" src="https://img.shields.io/badge/API%20key-not%20required-6b7280.svg" />
21
21
  </p>
22
22
 
@@ -57,6 +57,21 @@ manual reload.
57
57
 
58
58
  ## Features
59
59
 
60
+ ### New in 1.1.7
61
+
62
+ - **DOCX depth.** Table cells, headers, footers, footnotes, and endnotes are
63
+ imported as normal segments and written back to their original parts.
64
+ - **Localization catalogs.** Apple `.strings`/`.stringsdict`, Android
65
+ `strings.xml`/plurals, `.resx`, `.arb`, nested YAML, and Java `.properties`
66
+ round-trip with keys, comments, plural variants, block scalars, and inline
67
+ tags intact.
68
+ - **Speaker notes and multi-sheet workbooks.** PowerPoint notes pages become
69
+ separate units; every XLSX worksheet keeps its own name, order, and cell
70
+ references. When the source workbook is retained, export patches the original
71
+ cells so styles and merged ranges survive.
72
+ - **Subtitle timeline.** Merge adjacent cues, split at a time point, and shift
73
+ all cues; overlapping cues show up as a high-risk QA finding.
74
+
60
75
  ### New in 1.1.6
61
76
 
62
77
  - **Find and replace** across source/target with a preview, one-step apply, and
@@ -148,7 +163,7 @@ manual reload.
148
163
  marker when the term is already known. Counting finds and ranks the candidates
149
164
  (Latin n-grams, repeated CJK substrings filtered by boundary entropy); you
150
165
  confirm the wording and add them. A model-assisted shortlist that can include
151
- single-occurrence proper nouns is planned for 1.1.6.
166
+ single-occurrence proper nouns is included since 1.1.6.
152
167
 
153
168
  ### Library workspace
154
169
 
@@ -273,21 +288,21 @@ provider/model/code/status; the client receives only `MT_PROVIDER_FAILED`.
273
288
 
274
289
  | Format | Import | Export | Notes |
275
290
  | --- | :---: | :---: | --- |
276
- | TXT / Markdown | 鉁?| 鉁?| Paragraph and sentence segmentation |
277
- | CSV | 鉁?| 鉁?| Comma, semicolon, tab, or pipe delimiter auto-detected; source/target column by header name or 1-based number; existing bilingual export |
278
- | DOCX | 鉁?| 鉁?| Body paragraphs; table blocks are excluded from import. Export patches the original package, keeping styles, numbering, images, headers, tables, and layout. |
279
- | EPUB | 鉁?| 鉁?| EPUB 3 spine order; XHTML text blocks with inline markup kept as tokens and patched back into the retained package. DRM-protected, fixed-layout, and scripted EPUBs are not supported. |
280
- | TMX 1.4 | 鉁?| 鉁?| Common `<tu>/<tuv>/<seg>` subset; inline markup flattened with warning; context kept in `<prop type="x-context">` |
281
- | SRT / WebVTT | 鉁?| 鉁?| One cue per segment, timings/settings/identifier retained; semantic tags kept; invalid ranges rejected |
282
- | PO | 鉁?| 鉁?| Contexts, plural forms, translator comments, obsolete `#~` entries |
283
- | XLIFF 1.2 | 鉁?| 鉁?| Inline tags become `{n}` tokens; missing tokens block confirmation |
284
- | XLIFF 2.0 | 鉁?| 鉁?| Basic `<unit><segment><source>/<target>` subset |
285
- | SDLXLIFF | 鉁?| 鉁?| Basic XLIFF 1.2 path; SDL-specific extensions are not round-tripped |
286
- | HTML | 鉁?| 鉁?| Text blocks and inline tags preserved; document CSS/layout is not rebuilt |
287
- | JSON | 鉁?| 鉁?| String-path subset; object/array structure preserved via a template; keys and numbers are not translated |
288
- | XLSX | 鉁?| 鉁?| First worksheet; `Source`/`Target` headers or columns A/B; export is a new two-column workbook |
289
- | PPTX | 鉁?| 鉁? | Source-preserving export; requires the imported `.pptx` package. Body text only; notes/charts/SmartArt not imported. |
290
- | RTF | 鉁?| 鉁?| Basic paragraphs, `\uN`, `\'hh`, control words; original styling not round-tripped |
291
+ | TXT / Markdown | ✅ | ✅ | Paragraph and sentence segmentation |
292
+ | CSV | ✅ | ✅ | Comma, semicolon, tab, or pipe delimiter auto-detected; source/target column by header name or 1-based number; existing bilingual export |
293
+ | DOCX | ✅ | ✅ | Body paragraphs; table blocks are excluded from import. Export patches the original package, keeping styles, numbering, images, headers, tables, and layout. |
294
+ | EPUB | ✅ | ✅ | EPUB 3 spine order; XHTML text blocks with inline markup kept as tokens and patched back into the retained package. DRM-protected, fixed-layout, and scripted EPUBs are not supported. |
295
+ | TMX 1.4 | ✅ | ✅ | Common `<tu>/<tuv>/<seg>` subset; inline markup flattened with warning; context kept in `<prop type="x-context">` |
296
+ | SRT / WebVTT | ✅ | ✅ | One cue per segment, timings/settings/identifier retained; semantic tags kept; invalid ranges rejected |
297
+ | PO | ✅ | ✅ | Contexts, plural forms, translator comments, obsolete `#~` entries |
298
+ | XLIFF 1.2 | ✅ | ✅ | Inline tags become `{n}` tokens; missing tokens block confirmation |
299
+ | XLIFF 2.0 | ✅ | ✅ | Basic `<unit><segment><source>/<target>` subset |
300
+ | SDLXLIFF | ✅ | ✅ | Basic XLIFF 1.2 path; SDL-specific extensions are not round-tripped |
301
+ | HTML | ✅ | ✅ | Text blocks and inline tags preserved; document CSS/layout is not rebuilt |
302
+ | JSON | ✅ | ✅ | String-path subset; object/array structure preserved via a template; keys and numbers are not translated |
303
+ | XLSX | ✅ | ✅ | All worksheets; source/target columns (or headers); source-preserving patch keeps styles, merges, and other sheets; formulas are skipped |
304
+ | PPTX | ✅ | ✅ | Source-preserving export; requires the imported `.pptx` package. Body text and speaker notes; charts/SmartArt not imported. |
305
+ | RTF | ✅ | ✅ | Basic paragraphs, `\uN`, `\'hh`, control words; original styling not round-tripped |
291
306
 
292
307
  \* PPTX export fails with `PPTX_SOURCE_REQUIRED` when the retained source package
293
308
  is missing rather than silently producing an unformatted deck.
@@ -331,7 +346,7 @@ In DSH Desktop (or any profile with the `plugin_manager` tool):
331
346
  plugin_manager install_bundle target: dsh-cait
332
347
  ```
333
348
 
334
- Pin a release with `dsh-cait@1.1.6`, or ask for the newest one with
349
+ Pin a release with `dsh-cait@1.1.7`, or ask for the newest one with
335
350
  `dsh-cait@latest`. The manager resolves the registry package, applies the bundle
336
351
  patch, and activates the plugin — no hand-written profile rows.
337
352
 
@@ -474,48 +489,48 @@ flowchart LR
474
489
 
475
490
  ```text
476
491
  cait/
477
- 鈹溾攢 package.json
478
- 鈹溾攢 cordis.patch.yml
479
- 鈹溾攢 index.js # Host half
480
- 鈹溾攢 client.js # generated Web bundle
481
- 鈹溾攢 client/ # helpers, styles, RPC, components, locales, entry
482
- 鈹溾攢 scripts/build-client.mjs
483
- 鈹溾攢 icon.svg
484
- 鈹溾攢 locale/{en,zh,ja}.json
485
- 鈹溾攢 NOTICE
486
- 鈹溾攢 README.md
487
- 鈹溾攢 README.zh-CN.md
488
- 鈹溾攢 README.ja.md
489
- 鈹溾攢 CHANGELOG.md
490
- 鈹溾攢 lib/
491
- 鈹? 鈹溾攢 store.js # CatStore facade + document/segment core
492
- 鈹? 鈹溾攢 errors.js
493
- 鈹? 鈹溾攢 store-utils.js
494
- 鈹? 鈹溾攢 libraries.js # TM/glossary registries + mounts
495
- 鈹? 鈹溾攢 library-view.js # Library paging/search + export entry points
496
- 鈹? 鈹溾攢 library-export.js # Glossary TBX / CSV / JSON builders
497
- 鈹? 鈹溾攢 tm.js
498
- 鈹? 鈹溾攢 glossary.js
499
- 鈹? 鈹溾攢 persistence.js
500
- 鈹? 鈹溾攢 import-export.js
501
- 鈹? 鈹溾攢 formats.js # CSV/SRT/VTT/PO/XLIFF/HTML/JSON/RTF
502
- 鈹? 鈹溾攢 html.js # Shared HTML/XHTML run scanner + patcher
503
- 鈹? 鈹溾攢 epub.js # EPUB package read / spine import / patch export
504
- 鈹? 鈹溾攢 preprocess.js # Import-time source cleaning stage
505
- 鈹? 鈹溾攢 pre-translate.js # Block pre-translation methods
506
- 鈹? 鈹溾攢 qa.js # Derived QA report (never persisted)
507
- 鈹? 鈹溾攢 xlsx.js
508
- 鈹? 鈹溾攢 pptx.js
509
- 鈹? 鈹溾攢 segmenter.js
510
- 鈹? 鈹溾攢 similarity.js
511
- 鈹? 鈹溾攢 tmx.js
512
- 鈹? 鈹溾攢 docx.js
513
- 鈹? 鈹溾攢 markdown.js
514
- 鈹? 鈹溾攢 xml.js
515
- 鈹? 鈹溾攢 mt.js
516
- 鈹? 鈹溾攢 tools.js
517
- 鈹? 鈹斺攢 api.js
518
- 鈹斺攢 _dev/ # tests, fixtures, local patch overlay
492
+ ├─ package.json
493
+ ├─ cordis.patch.yml
494
+ ├─ index.js # Host half
495
+ ├─ client.js # generated Web bundle
496
+ ├─ client/ # helpers, styles, RPC, components, locales, entry
497
+ ├─ scripts/build-client.mjs
498
+ ├─ icon.svg
499
+ ├─ locale/{en,zh,ja}.json
500
+ ├─ NOTICE
501
+ ├─ README.md
502
+ ├─ README.zh-CN.md
503
+ ├─ README.ja.md
504
+ ├─ CHANGELOG.md
505
+ ├─ lib/
506
+ │ ├─ store.js # CatStore facade + document/segment core
507
+ │ ├─ errors.js
508
+ │ ├─ store-utils.js
509
+ │ ├─ libraries.js # TM/glossary registries + mounts
510
+ │ ├─ library-view.js # Library paging/search + export entry points
511
+ │ ├─ library-export.js # Glossary TBX / CSV / JSON builders
512
+ │ ├─ tm.js
513
+ │ ├─ glossary.js
514
+ │ ├─ persistence.js
515
+ │ ├─ import-export.js
516
+ │ ├─ formats.js # CSV/SRT/VTT/PO/XLIFF/HTML/JSON/RTF
517
+ │ ├─ html.js # Shared HTML/XHTML run scanner + patcher
518
+ │ ├─ epub.js # EPUB package read / spine import / patch export
519
+ │ ├─ preprocess.js # Import-time source cleaning stage
520
+ │ ├─ pre-translate.js # Block pre-translation methods
521
+ │ ├─ qa.js # Derived QA report (never persisted)
522
+ │ ├─ xlsx.js
523
+ │ ├─ pptx.js
524
+ │ ├─ segmenter.js
525
+ │ ├─ similarity.js
526
+ │ ├─ tmx.js
527
+ │ ├─ docx.js
528
+ │ ├─ markdown.js
529
+ │ ├─ xml.js
530
+ │ ├─ mt.js
531
+ │ ├─ tools.js
532
+ │ └─ api.js
533
+ └─ _dev/ # tests, fixtures, local patch overlay
519
534
  ```
520
535
 
521
536
  </details>
@@ -610,12 +625,15 @@ GitHub with a release.
610
625
  [PDF is not supported](#pdf-is-not-supported)). No image OCR yet.
611
626
  - EPUB import follows the spine and body XHTML text blocks; DRM-protected,
612
627
  fixed-layout, scripted, and MathML-heavy books are not supported.
613
- - DOCX import skips tables, headers, footnotes, fields, alt text, and tracked
614
- deletions. DOCX export leaves those regions in the source language.
628
+ - DOCX import covers body, tables, headers, footers, footnotes, and endnotes;
629
+ fields, alt text, and tracked deletions still stay in the source language.
615
630
  - Mixed-run DOCX/PPTX paragraphs inherit the first run's formatting.
616
- - PPTX import covers body text, not notes, charts, or SmartArt.
617
- - XLSX import/export is a two-column table; cell styles, formulas, merged cells,
618
- images, and extra sheets are not preserved.
631
+ - PPTX import covers body text and speaker notes, not charts or SmartArt.
632
+ - XLSX export needs a target column to patch; formula cells are skipped, and a
633
+ workbook imported before 1.1.7 has no retained source to patch.
634
+ - Nested YAML supports mappings, sequences, scalars, block scalars, and
635
+ comments; anchors, aliases, merge keys, and flow collections are rejected
636
+ with `LOCALIZATION_YAML_UNSUPPORTED`.
619
637
  - HTML/RTF export does not round-trip original styling; JSON translates string
620
638
  values only.
621
639
  - TM matching is lexical, not semantic; no stemming, synonyms, or embeddings.
@@ -629,12 +647,13 @@ GitHub with a release.
629
647
  Settings; this README ships in English, Simplified Chinese, and Japanese, and
630
648
  the English version is the source of truth.
631
649
 
632
- Planned next: per-document TM/glossary binding, word-count and leverage analysis,
633
- bilingual DOCX review output, and an XLIFF review package (1.1.5); then
634
- find/replace, segment merge/split/lock, comments, local undo (1.1.6), plus a
635
- term-extraction overhaul that stops ranking by frequency and can surface
636
- single-occurrence proper nouns and fiction terms, and an optional LLM review
637
- pass (1.1.6).
650
+ Shipped since 1.1.5: per-document TM/glossary binding, word-count and leverage
651
+ analysis, bilingual DOCX review output, and an XLIFF review package. 1.1.6 added
652
+ find/replace, segment merge/split/lock, comments, local undo, and an optional LLM
653
+ review pass. 1.1.7 added DOCX tables/headers/footnotes, nested localization
654
+ catalogs, source-preserving multi-sheet XLSX, speaker notes, and subtitle
655
+ timeline controls. Next candidates: Office paragraph mapping for merge/split
656
+ and a subtitle waveform.
638
657
 
639
658
  ## Changelog and versioning
640
659
 
package/README.zh-CN.md CHANGED
@@ -16,7 +16,7 @@
16
16
  <p align="center">
17
17
  <a href="https://www.npmjs.com/package/dsh-cait"><img alt="npm 版本" src="https://img.shields.io/npm/v/dsh-cait.svg" /></a>
18
18
  <img alt="DSH 0.2.x" src="https://img.shields.io/badge/DSH-0.2.x-4d6bfe.svg" />
19
- <img alt="41 套测试" src="https://img.shields.io/badge/tests-41%20suites-brightgreen.svg" />
19
+ <img alt="45 套测试" src="https://img.shields.io/badge/tests-45%20suites-brightgreen.svg" />
20
20
  <img alt="无需 API Key" src="https://img.shields.io/badge/API%20key-not%20required-6b7280.svg" />
21
21
  </p>
22
22
 
@@ -53,6 +53,13 @@ CAIT 为 DSH Web UI 和 DSH 桌面端增加一个 CAT 翻译工作台。它从
53
53
 
54
54
  ## 功能
55
55
 
56
+ ### 1.1.7 新增
57
+
58
+ - **DOCX 深度**:表格、页眉、页脚、脚注和尾注里的段落都会作为普通句段导入,并写回原来的 part。
59
+ - **本地化字符串**:Apple `.strings`/`.stringsdict`、Android `strings.xml`/复数、`.resx`、`.arb`、嵌套 YAML、Java `.properties` 可往返,保留 key、注释、复数变体、块标量和内联标签。
60
+ - **演讲者备注与多工作表**:PPTX 备注页独立成段;XLSX 每个工作表保留名称、顺序和单元格引用;保留源文件时按原单元格回写,样式和合并区域不丢。
61
+ - **字幕时间轴**:合并相邻 cue、按时间点拆分、整体平移时间码;重叠 cue 作为高风险 QA 提示,不自动改时间。
62
+
56
63
  ### 1.1.6 新增
57
64
 
58
65
  - **查找替换**:原文/译文预览、一次应用、撤销上次替换;已确认句段的译文被改动时自动回到待审状态。
@@ -214,7 +221,7 @@ provider/model/code/status,客户端只会收到 `MT_PROVIDER_FAILED`。
214
221
  | SDLXLIFF | ✅ | ✅ | 走基础 XLIFF 1.2 路径;SDL 专有扩展不会完整往返 |
215
222
  | HTML | ✅ | ✅ | 保留文本块与内联标签;不重建文档级 CSS/版式 |
216
223
  | JSON | ✅ | ✅ | 字符串路径子集;通过模板保留对象/数组结构;key 和数字不翻译 |
217
- | XLSX | ✅ | ✅ | 第一个工作表;识别 `Source`/`Target` 表头或 A/B 列;导出为新的两列表格 |
224
+ | XLSX | ✅ | ✅ | 全部工作表;识别源/目标列或表头;保留源文件时按单元格回写,样式、合并区域和其他工作表不丢;公式单元格跳过 |
218
225
  | PPTX | ✅ | ✅* | 保留源格式导出;需要导入时保留的 `.pptx` 包。仅正文;备注/图表/SmartArt 不导入。 |
219
226
  | RTF | ✅ | ✅ | 基础段落、`\uN`、`\'hh`、控制字;不往返原始样式 |
220
227
 
@@ -256,7 +263,7 @@ CAIT 以 DSH bundle 的形式安装;发布的 npm 包名为 `dsh-cait`,插
256
263
  plugin_manager install_bundle target: dsh-cait
257
264
  ```
258
265
 
259
- 需要固定版本时写 `dsh-cait@1.1.6`,需要最新版时写 `dsh-cait@latest`。管理器会解析 registry
266
+ 需要固定版本时写 `dsh-cait@1.1.7`,需要最新版时写 `dsh-cait@latest`。管理器会解析 registry
260
267
  上的包、应用 bundle patch 并激活插件,不需要手工在配置档里加行。
261
268
 
262
269
  使用 CLI 管理的配置档:
@@ -455,7 +462,7 @@ node _dev/test-mt.mjs
455
462
 
456
463
  导入/导出 fixture 为 `_dev/sample.docx`、`_dev/sample-table.docx` 和
457
464
  `_dev/sample-format.docx`;可用对应的 `python _dev/make-*.py` 脚本重新生成。
458
- 41 套测试应全部通过。
465
+ 45 套测试应全部通过。
459
466
 
460
467
  ### 发布
461
468
 
@@ -497,11 +504,14 @@ GitHub release 发布。
497
504
  [不支持 PDF](#不支持-pdf))。暂不支持图片 OCR。
498
505
  - EPUB 导入只覆盖 spine 中的正文 XHTML 文本块;不支持 DRM、固定版式、
499
506
  脚本化以及大量使用 MathML 的电子书。
500
- - DOCX 导入会跳过表格、页眉、脚注、域、替代文本和修订删除内容。
501
- DOCX 导出时这些区域保持源语言。
507
+ - DOCX 导入覆盖正文、表格、页眉、页脚、脚注和尾注;域、替代文本和修订删除
508
+ 仍保持源语言。
502
509
  - DOCX/PPTX 中混合 run 的段落会继承第一个 run 的格式。
503
- - PPTX 导入只覆盖正文,不包含备注、图表或 SmartArt。
504
- - XLSX 导入/导出是两列表格;不保留单元格样式、公式、合并单元格、图片和额外工作表。
510
+ - PPTX 导入覆盖正文和演讲者备注,不包含图表或 SmartArt。
511
+ - XLSX 导出需要目标列才能回写;公式单元格会跳过;1.1.7 之前导入的文档没有
512
+ 保留源工作簿,只能重建新表。
513
+ - 嵌套 YAML 支持 mapping、sequence、scalar、块标量和注释;锚点、别名、
514
+ merge key 和 flow 集合会以 `LOCALIZATION_YAML_UNSUPPORTED` 拒绝。
505
515
  - HTML/RTF 导出不往返原始样式;JSON 只翻译字符串值。
506
516
  - TM 匹配是词法级的,不是语义级;没有词干、同义词或向量。
507
517
  - 每个上下文下,同一原文存一条译文:重复的句子会为每种相邻句组合保留一条变体,
@@ -510,8 +520,8 @@ GitHub release 发布。
510
520
  - TBX 与 JSON 术语导出是单向的;只有 TMX 和 CSV 能再导入回来。
511
521
  - 工作台界面提供中文、English、日本語三种语言,可在设置中切换;README 提供英文、简体中文和日文三个版本,以英文版为准。
512
522
 
513
- 后续计划:通过多模态 DSH 路由支持图片/视觉输入、保留样式的 XLSX 输出,
514
- 以及 XLIFF `<alt-trans>` / 注释支持。
523
+ 后续计划:通过多模态 DSH 路由支持图片/视觉输入、Office 段落映射后的合并/拆分,
524
+ 以及字幕波形/播放头。
515
525
 
516
526
  ## 变更日志与版本
517
527