@gitruck/cli 1.2.5 → 1.2.6

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
@@ -1,6 +1,51 @@
1
1
  # 更新日志
2
2
 
3
- ## 1.2.5(2026-09-14)
3
+ ## 未发布
4
+
5
+ ### 文档:`gtrk-tools` 图纸写明 `audio_tts_clone` 可选出字幕(link-add-tts-subtitle-output-cli 3.2)
6
+
7
+ 输入列补 `--subtitle-format <fmt>`(可选、缺省不出、不额外计费、取值以服务端为准),产物列补另产 `tts-<音色代号>.srt`(服务端降级时不留空文件);
8
+ 新增守卫 `test/skill-tools-tts-subtitle.test.mjs` 按列校验,防止文案被改回。
9
+
10
+ ### 加:文字模板候选态可按分类过滤(add-text-template-category 2.2)
11
+
12
+ `gtrk mg fetch --source text [检索词] --category 打字机` 先按目录分类圈池子再检索,JSON 多返回 `category` 与 `categories`;
13
+ 分类不存在时零候选并列出可用分类,不会退回成「不过滤」。取块态给了 `--category` 就要与模板分类对得上,对不上直接拒。
14
+ ⚠️ `--category overlay|fullscreen` 是 registry 路的不透明度品类,文字模板路收到这两个值会当场报错,并指路到 `--slot <beat> --project <dir>` 派单模式。
15
+
16
+ ### 改:B-roll 云端编排版本不一致时,告警不再列「命中旧幂等条目」这条成因(link-arrange-decision-pin-echo 9.7)
17
+
18
+ 服务端已把决策层版本钉进幂等键,且入键前写下的条目已随 24 小时有效期排空(2026-09-16 生产核实:
19
+ 新鲜请求与逐字节重放都回传当前版本、重放不二次计费)。这条成因在当前部署下不可能发生,继续列出只会把排查引向不存在的地方。
20
+ `IDEM_KEY_PINNED_DEPLOYED` 改为 `true`;服务端若回滚到版本钉入键之前,须改回 `false`。
21
+
22
+ ## 1.2.5(2026-09-14 定版,2026-09-15 发布)
23
+
24
+ > 下面四条补录于 2026-09-16:**它们随 1.2.5 一起发出去了,但当时漏写了用户面条目**。
25
+ > 判据取自 registry 拉回的 `@gitruck/cli@1.2.5` 包体(`dist/index.js` 里的运行期串),
26
+ > 不是本地源码——本机全局 `gtrk` 是指向开发仓的符号链接,照它判会把未发的算进来。
27
+ > 已发的 1.2.5 代码切在 `69a1f51`:`gate-mg-visual-job` 与「本地编译补校验」**不在这一版里**。
28
+
29
+ ### 修:`maxWidth` 的文字层换画幅会被挤窄(fix-text-ir-maxwidth-shrink)
30
+
31
+ 编译器给带 `maxWidth` 的文字层补 `width:max-content`。原先只给 `max-width`,
32
+ 块级盒会占满父宽,居中与右对齐算出来的落点因此偏。
33
+
34
+ ### 加:满屏槽位必须真有实心底(gate-fullscreen-slot-needs-solid-bed)
35
+
36
+ `dispatch.mg` 的 `category:"fullscreen"` 表达「这段 MG 盖住画面」,此前**声明了也不会兑现**——
37
+ 信号打过(`x-category-opaque`),但走灰字 `log.info`、夹在一模一样的 `x-soft-alpha` 之间、
38
+ `exit 0`,等于没打。现在拿不出满幅实心底就**致命拒落盘**,并给两条出路(改 `overlay`/补 `canvas.bg`)。
39
+ 配套:`dispatch.mg[].bg` 这个一直没有消费方的字段接上了——取块时钉进 IR 的 `canvas.bg`,
40
+ 声明当场兑现。**判据只取产物不取出身**:按「这颗是不是文字模板」写的闸,在加档上线当天就会错。
41
+
42
+ ### 修:`mg lay` 拿会漂的 `track_index` 当自产轨主键(fix-mg-lay-track-identity)
43
+
44
+ 契约明写它会漂、MUST NOT 当身份判据;客户端保存时按 `10+i` 重发,还会按有无物化视频劈轨。
45
+ 失败形态是「剥一半」(静默重复叠加)与「误剥用户轨」。改用内容指纹,口径照抄 `matrix-lay`
46
+ 那边早修过的成熟实现。
47
+
48
+ ### 改:随包文字模板目录刷到 `v2026-09-15.1` / 103 件
4
49
 
5
50
  ### 修:`mg fetch --source text --slot` 派单模式必败(fix-mg-fetch-text-slot-identity)
6
51
 
@@ -85,7 +85,32 @@
85
85
 
86
86
  ## 八条铁律(违反任一条 → 整片渲染失败 / 颗粒冻结 / 全黑 / 坑位内突兀消失 / 画面被切成横带、内容纵向重复叠印并逐帧闪烁)
87
87
 
88
- 1. **`<template>` 包裹根元素**:`<template><div data-composition-id="<id>" data-width="1920" data-height="1080">…</div></template>`。编译器取的是 `<template>` 内容;裸 `<div>` 会被判 "empty or could not be parsed" 整片失败。(1920×1080 为**当前引擎版本约束**,分辨率参数化预留——升版时以本契约新版为准。)
88
+ 1. **`<template>` 包裹根元素**:`<template><div data-composition-id="<id>" data-width="1920" data-height="1080">…</div></template>`。编译器取的是 `<template>` 内容;裸 `<div>` 会被判 "empty or could not be parsed" 整片失败。(**尺寸不再固定 1920×1080**,见下方「画幅」小节。)
89
+
90
+ > **画幅**(2026-09-16 改写,change `add-text-ir-aspect-agnostic-layout`)
91
+ >
92
+ > 原文写的是「1920×1080 为**当前引擎版本约束**,分辨率参数化预留」。
93
+ > **那句话已经过时,但不删——读者需要知道它为什么曾经是对的,否则下次还会有人按旧结论判断
94
+ > (2026-09-15 我自己就被它误导了整整一轮)。**
95
+ >
96
+ > - **曾经**:`fix-particle-subcomposition-scale` **之前**,颗粒声明尺寸与根合成尺寸不等
97
+ > 会被 `#stage` 的 `overflow` 裁掉、只渲左上一角(真机雷:opencut 720p 降采备料
98
+ > 根 1280×720 × 颗粒声明 1920×1080)。那时放行别的尺寸就是静默出坏片,
99
+ > 所以「只收 1920×1080」是**当时正确的**保护。
100
+ > - **现在**:该修复已上线并过无裁切真机验收。`html_animate_render` 按颗粒声明的
101
+ > `data-width/height` 挂载缩放,根合成尺寸本就是 `flags.width/height` 参数
102
+ > ⇒ **引擎不限画幅**。
103
+ > - **因此现在的口径是校验器口径,不是引擎约束**:颗粒声明尺寸 MUST 为正整数,
104
+ > 且 MUST **等于目标工程画幅**。
105
+ >
106
+ > ⚠️ **「引擎不限画幅」MUST NOT 被读成「随便什么尺寸丢进去都行」**:
107
+ > 挂载用的是**非等比** `transform:scale(w/dw, h/dh)`。同比例时它退化成等比(无害),
108
+ > **跨比例是拉伸变形,不是加黑边**——16:9 的颗粒进 9:16 工程会被纵向拉 3.16 倍。
109
+ > 所以「声明尺寸 == 目标画幅」这条不是形式要求,它就是防拉伸的那道闸。
110
+ >
111
+ > 文字模板(`text-v0` IR)据此做成了**一份 IR 通吃横竖屏**:IR 恒住在 1920 宽的参考系里,
112
+ > 画幅是**编译入参**,编译期按九宫锚点定位、所有像素量乘 `k = 目标宽 / 1920`。
113
+ > 手写颗粒没有这条路,仍需按工程画幅各写一份。
89
114
  2. **GSAP `paused` 时间线 + 注册**:`var tl = gsap.timeline({paused:true}); … window.__timelines = window.__timelines || {}; window.__timelines["<id>"] = tl;`。`<id>` 必须等于根的 `data-composition-id`。
90
115
  3. **确定性**:禁用 `Math.random` / `Date.now` / 无参 `new Date()`(过不了引擎 StaticGuard)。要"随机感"用固定种子/解析式/递归生成(见「确定性配方」)。
91
116
  4. **自包含 + 实心底下沉子层 + 透明度显式声明**(**2026-07-26 按真机实测改写**;原文「全屏颗粒给根设明确 `background`;透明颗粒根不设 background」**已作废**,见下方证据锚):颗粒不依赖外部文件(除脚本 CDN)。底色的**取值**由调用方按其栏目规则决定,本契约只管**摆在哪个元素上**。