@litfamily/lithermes 1.0.17 → 1.0.18

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.
Files changed (40) hide show
  1. package/README.md +8 -8
  2. package/README_Ko-KR.md +8 -8
  3. package/assets/lithermes-plugin/payload-version.json +40 -36
  4. package/assets/lithermes-plugin/plugin.yaml +1 -1
  5. package/assets/lithermes-plugin/skills/frontend-ui-ux/references/complete-contract.md +2 -2
  6. package/assets/lithermes-plugin/skills/lit-docx/references/page-composition.md +1 -3
  7. package/assets/lithermes-plugin/skills/lit-docx/scripts/convert_md_to_docx.py +9 -9
  8. package/assets/lithermes-plugin/skills/lit-docx/scripts/docx_design.py +9 -9
  9. package/assets/lithermes-plugin/skills/lit-docx/scripts/docx_layout.py +6 -6
  10. package/assets/lithermes-plugin/skills/lit-docx/templates/tonalities/brief.yaml +0 -1
  11. package/assets/lithermes-plugin/skills/lit-docx/templates/tonalities/journal.yaml +0 -1
  12. package/assets/lithermes-plugin/skills/lit-docx/templates/tonalities/manual.yaml +0 -1
  13. package/assets/lithermes-plugin/skills/lit-docx/templates/tonalities/memo.yaml +0 -1
  14. package/assets/lithermes-plugin/skills/lit-docx/templates/tonalities/proposal.yaml +0 -1
  15. package/assets/lithermes-plugin/skills/lit-docx/templates/tonalities/report.yaml +0 -1
  16. package/assets/lithermes-plugin/skills/lit-pptx/FORBIDDEN_TERMS.json +55 -0
  17. package/assets/lithermes-plugin/skills/lit-pptx/references/tonalities/atlas.md +2 -2
  18. package/assets/lithermes-plugin/skills/lit-pptx/references/tonalities/chalk.md +2 -3
  19. package/assets/lithermes-plugin/skills/lit-pptx/references/tonalities/gazette.md +2 -2
  20. package/assets/lithermes-plugin/skills/lit-pptx/references/tonalities/ledger.md +5 -5
  21. package/assets/lithermes-plugin/skills/lit-pptx/references/tonalities/night.md +3 -3
  22. package/assets/lithermes-plugin/skills/lit-pptx/references/tonalities/paper.md +2 -2
  23. package/assets/lithermes-plugin/skills/lit-pptx/references/tonalities/signal.md +3 -3
  24. package/assets/lithermes-plugin/skills/lit-pptx/references/tonalities/studio.md +2 -3
  25. package/assets/lithermes-plugin/skills/lit-pptx/scripts/deck_output.py +8 -8
  26. package/assets/lithermes-plugin/skills/lit-pptx/scripts/lib/render-pack.js +96 -96
  27. package/assets/lithermes-plugin/skills/lit-pptx/scripts/lib/template-registry.js +1 -1
  28. package/assets/lithermes-plugin/skills/lit-pptx/scripts/qa_deck.py +7 -7
  29. package/assets/lithermes-plugin/skills/lit-pptx/scripts/validate_pptx.py +8 -3
  30. package/assets/lithermes-plugin/skills/lit-pptx/templates/tonalities/atlas/pack.yaml +0 -13
  31. package/assets/lithermes-plugin/skills/lit-pptx/templates/tonalities/chalk/pack.yaml +0 -13
  32. package/assets/lithermes-plugin/skills/lit-pptx/templates/tonalities/gazette/pack.yaml +0 -13
  33. package/assets/lithermes-plugin/skills/lit-pptx/templates/tonalities/ledger/pack.yaml +2 -15
  34. package/assets/lithermes-plugin/skills/lit-pptx/templates/tonalities/night/pack.yaml +0 -13
  35. package/assets/lithermes-plugin/skills/lit-pptx/templates/tonalities/paper/pack.yaml +0 -13
  36. package/assets/lithermes-plugin/skills/lit-pptx/templates/tonalities/signal/pack.yaml +0 -13
  37. package/assets/lithermes-plugin/skills/lit-pptx/templates/tonalities/studio/pack.yaml +0 -13
  38. package/assets/lithermes-plugin/skills/visual-qa/references/complete-contract.md +2 -2
  39. package/package.json +1 -1
  40. package/readme-assets/badge-version.svg +1 -1
package/README.md CHANGED
@@ -1,16 +1,16 @@
1
- <p align="center"><picture><source media="(prefers-reduced-motion: reduce)" srcset="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.17/readme-assets/cover-motion-still.webp" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.17/readme-assets/cover-motion.webp" width="100%" alt="LitFamily motion cover: five armored robots power on one by one, the LitHermes robot wakes with glowing eyes and a lit frame, then LITFAMILY and KEEP THE WORK LIT. light up." /></picture></p>
1
+ <p align="center"><picture><source media="(prefers-reduced-motion: reduce)" srcset="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.18/readme-assets/cover-motion-still.webp" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.18/readme-assets/cover-motion.webp" width="100%" alt="LitFamily motion cover: five armored robots power on one by one, the LitHermes robot wakes with glowing eyes and a lit frame, then LITFAMILY and KEEP THE WORK LIT. light up." /></picture></p>
2
2
 
3
- <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.17/readme-assets/ascii-readme.svg" width="480" alt="LIT ASCII B mark" /></p>
3
+ <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.18/readme-assets/ascii-readme.svg" width="480" alt="LIT ASCII B mark" /></p>
4
4
 
5
5
  <p align="center">
6
- <a href="#install"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.17/readme-assets/badge-version.svg" alt="1.0.17" /></a>
7
- <a href="https://github.com/wjgoarxiv/lithermes/blob/main/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.17/readme-assets/badge-license.svg" alt="MIT license" /></a>
6
+ <a href="#install"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.18/readme-assets/badge-version.svg" alt="1.0.18" /></a>
7
+ <a href="https://github.com/wjgoarxiv/lithermes/blob/main/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.18/readme-assets/badge-license.svg" alt="MIT license" /></a>
8
8
  </p>
9
9
 
10
10
  <p align="center">
11
- <a href="https://github.com/wjgoarxiv/lithermes/blob/main/docs/guide.md"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.17/readme-assets/lucide-book-open.svg" width="16" alt="" /> Guide</a> &nbsp;
12
- <a href="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.17/readme-assets/ignition-film.mp4"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.17/readme-assets/lucide-play.svg" width="16" alt="" /> Ignition film</a> &nbsp;
13
- <a href="https://github.com/wjgoarxiv/lithermes/blob/main/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.17/readme-assets/lucide-shield-check.svg" width="16" alt="" /> MIT</a>
11
+ <a href="https://github.com/wjgoarxiv/lithermes/blob/main/docs/guide.md"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.18/readme-assets/lucide-book-open.svg" width="16" alt="" /> Guide</a> &nbsp;
12
+ <a href="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.18/readme-assets/ignition-film.mp4"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.18/readme-assets/lucide-play.svg" width="16" alt="" /> Ignition film</a> &nbsp;
13
+ <a href="https://github.com/wjgoarxiv/lithermes/blob/main/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.18/readme-assets/lucide-shield-check.svg" width="16" alt="" /> MIT</a>
14
14
  </p>
15
15
 
16
16
  # LitHermes
@@ -19,7 +19,7 @@
19
19
 
20
20
  A plugin for **Hermes Agent**. Add `lit` to a request, and Hermes plans the task, does it, checks it, and leaves a note the next session can pick up.
21
21
 
22
- **[Full guide and skills gallery on GitHub](https://github.com/wjgoarxiv/lithermes#readme)** · [한국어](https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.17/README_Ko-KR.md)
22
+ **[Full guide and skills gallery on GitHub](https://github.com/wjgoarxiv/lithermes#readme)** · [한국어](https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.18/README_Ko-KR.md)
23
23
 
24
24
  ## Install
25
25
 
package/README_Ko-KR.md CHANGED
@@ -1,16 +1,16 @@
1
- <p align="center"><picture><source media="(prefers-reduced-motion: reduce)" srcset="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.17/readme-assets/cover-motion-still.webp" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.17/readme-assets/cover-motion.webp" width="100%" alt="LitFamily 모션 커버: 다섯 로봇 패널이 차례로 켜지고, LitHermes 로봇의 눈과 테두리가 빛난 뒤 LITFAMILY와 KEEP THE WORK LIT. 문구가 밝아지는 영상" /></picture></p>
1
+ <p align="center"><picture><source media="(prefers-reduced-motion: reduce)" srcset="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.18/readme-assets/cover-motion-still.webp" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.18/readme-assets/cover-motion.webp" width="100%" alt="LitFamily 모션 커버: 다섯 로봇 패널이 차례로 켜지고, LitHermes 로봇의 눈과 테두리가 빛난 뒤 LITFAMILY와 KEEP THE WORK LIT. 문구가 밝아지는 영상" /></picture></p>
2
2
 
3
- <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.17/readme-assets/ascii-readme.svg" width="480" alt="LIT ASCII B 마크" /></p>
3
+ <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.18/readme-assets/ascii-readme.svg" width="480" alt="LIT ASCII B 마크" /></p>
4
4
 
5
5
  <p align="center">
6
- <a href="#설치"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.17/readme-assets/badge-version.svg" alt="1.0.17" /></a>
7
- <a href="https://github.com/wjgoarxiv/lithermes/blob/main/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.17/readme-assets/badge-license.svg" alt="MIT license" /></a>
6
+ <a href="#설치"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.18/readme-assets/badge-version.svg" alt="1.0.18" /></a>
7
+ <a href="https://github.com/wjgoarxiv/lithermes/blob/main/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.18/readme-assets/badge-license.svg" alt="MIT license" /></a>
8
8
  </p>
9
9
 
10
10
  <p align="center">
11
- <a href="https://github.com/wjgoarxiv/lithermes/blob/main/docs/guide.ko.md"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.17/readme-assets/lucide-book-open.svg" width="16" alt="" /> 안내</a> &nbsp;
12
- <a href="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.17/readme-assets/ignition-film.mp4"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.17/readme-assets/lucide-play.svg" width="16" alt="" /> Ignition 영상</a> &nbsp;
13
- <a href="https://github.com/wjgoarxiv/lithermes/blob/main/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.17/readme-assets/lucide-shield-check.svg" width="16" alt="" /> MIT</a>
11
+ <a href="https://github.com/wjgoarxiv/lithermes/blob/main/docs/guide.ko.md"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.18/readme-assets/lucide-book-open.svg" width="16" alt="" /> 안내</a> &nbsp;
12
+ <a href="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.18/readme-assets/ignition-film.mp4"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.18/readme-assets/lucide-play.svg" width="16" alt="" /> Ignition 영상</a> &nbsp;
13
+ <a href="https://github.com/wjgoarxiv/lithermes/blob/main/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.18/readme-assets/lucide-shield-check.svg" width="16" alt="" /> MIT</a>
14
14
  </p>
15
15
 
16
16
  # LitHermes
@@ -19,7 +19,7 @@
19
19
 
20
20
  **Hermes Agent**용 플러그인입니다. 요청에 `lit`을 붙이면 Hermes가 작업을 계획하고, 실행하고, 확인한 뒤 다음 세션이 이어받을 기록을 남깁니다.
21
21
 
22
- **[전체 안내와 스킬 갤러리는 GitHub에서](https://github.com/wjgoarxiv/lithermes/blob/main/README_Ko-KR.md)** · [English](https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.17/README.md)
22
+ **[전체 안내와 스킬 갤러리는 GitHub에서](https://github.com/wjgoarxiv/lithermes/blob/main/README_Ko-KR.md)** · [English](https://cdn.jsdelivr.net/npm/@litfamily/lithermes@1.0.18/README.md)
23
23
 
24
24
  ## 설치
25
25
 
@@ -1,7 +1,7 @@
1
1
  {
2
- "syncedAt": "2026-10-08T21:55:12.732Z",
2
+ "syncedAt": "2026-10-09T14:26:45.780Z",
3
3
  "source": "bundled-payload",
4
- "sourceHash": "6e5ed05051565a240e04710f3f2a27e16cef0d537fb6c589686e8344b0392928",
4
+ "sourceHash": "93739a54eef0d7a4b744fc5769de447cf320844a7e07053160931e652db950e6",
5
5
  "files": [
6
6
  {
7
7
  "path": "NOTICE.md",
@@ -181,7 +181,7 @@
181
181
  },
182
182
  {
183
183
  "path": "plugin.yaml",
184
- "sha256": "b2cf1a2d371a13c0de860c0795f81a4a6287c87ad3fa5a1ff69bd2ca33b6d536"
184
+ "sha256": "13c4c5fee9821983a18377e6e9f50adf5ff898af6b9807461b9d1a961aa7d2a1"
185
185
  },
186
186
  {
187
187
  "path": "provider_metrics.py",
@@ -1285,7 +1285,7 @@
1285
1285
  },
1286
1286
  {
1287
1287
  "path": "skills/frontend-ui-ux/references/complete-contract.md",
1288
- "sha256": "5431a184a037209ebbd94ca2dfa83f0771591417886960bf32c86baac96f81fe"
1288
+ "sha256": "ed61f0cab8901e98e006bb194ab7f1fc383284b0880700acfbf943e6fbccf489"
1289
1289
  },
1290
1290
  {
1291
1291
  "path": "skills/frontend-ui-ux/references/composition.md",
@@ -3093,7 +3093,7 @@
3093
3093
  },
3094
3094
  {
3095
3095
  "path": "skills/lit-docx/references/page-composition.md",
3096
- "sha256": "b2d7ae498076e1b5773e6ec46fd067689a1245011e154d96a86156a8e68f0a44"
3096
+ "sha256": "5d6d845d3ad1cf8b44607961a1e148a678828358324d0dff6e04ab2d0f04d7d0"
3097
3097
  },
3098
3098
  {
3099
3099
  "path": "skills/lit-docx/references/slop_phrase_list.yaml",
@@ -3133,7 +3133,7 @@
3133
3133
  },
3134
3134
  {
3135
3135
  "path": "skills/lit-docx/scripts/convert_md_to_docx.py",
3136
- "sha256": "ff82a906377c376379b64dd94e315a966c9e94137b5af4caeee104f5f57a6db3"
3136
+ "sha256": "be4fdb8c3f831ed157747f36670465bf891b2467ff6b584d14276039dced9dda"
3137
3137
  },
3138
3138
  {
3139
3139
  "path": "skills/lit-docx/scripts/convert_md_to_pdf.py",
@@ -3145,7 +3145,7 @@
3145
3145
  },
3146
3146
  {
3147
3147
  "path": "skills/lit-docx/scripts/docx_design.py",
3148
- "sha256": "ca1b2e10252b7939434277f0f0b054d4788e8de346e4a73783e0add6636192da"
3148
+ "sha256": "37c9102ec8533f69536d23b46a1c9d3da8b9f23defbb532e3e796d108b119aee"
3149
3149
  },
3150
3150
  {
3151
3151
  "path": "skills/lit-docx/scripts/docx_gate.py",
@@ -3153,7 +3153,7 @@
3153
3153
  },
3154
3154
  {
3155
3155
  "path": "skills/lit-docx/scripts/docx_layout.py",
3156
- "sha256": "15ced918d1a3ccf76c11d388451b761a4839025edee1570943d47055b2dde611"
3156
+ "sha256": "b47e702721b24e3f8360c000ddb3499d7d65da2feb58a52650a25c5ec8baae27"
3157
3157
  },
3158
3158
  {
3159
3159
  "path": "skills/lit-docx/scripts/edit_docx.py",
@@ -3241,27 +3241,27 @@
3241
3241
  },
3242
3242
  {
3243
3243
  "path": "skills/lit-docx/templates/tonalities/brief.yaml",
3244
- "sha256": "73a466263bad4f876671de0121b117223f0659f896d99cabde76e8d6a86385f5"
3244
+ "sha256": "41bf481cd799b28ee53538a3cf88a58c4b2f9db365d1ca1ee10b3adfcad1ab8e"
3245
3245
  },
3246
3246
  {
3247
3247
  "path": "skills/lit-docx/templates/tonalities/journal.yaml",
3248
- "sha256": "aae647c0d62e6b801923651df754933e92c3db8c07c0fe7e12977e1c8473e028"
3248
+ "sha256": "0a7ae34ccd6e91f289c472bfeb8bcfd6736005f15c55a63dd4cc43e55606ec57"
3249
3249
  },
3250
3250
  {
3251
3251
  "path": "skills/lit-docx/templates/tonalities/manual.yaml",
3252
- "sha256": "de31b0bfa3dc46d172b84af6d60ade9ac1411ba0fb34bb2e402e3a0f80486c67"
3252
+ "sha256": "cc965f5523c7cbaa4c1d0bc06e5260641dfc8113b77f2c252862a397eb97ce84"
3253
3253
  },
3254
3254
  {
3255
3255
  "path": "skills/lit-docx/templates/tonalities/memo.yaml",
3256
- "sha256": "bac736a847c6b3f127875af9677f944af3e6ae1da3ec824e8f956f61bd2460de"
3256
+ "sha256": "37ef41eafd19a05246713523c01eb886af3d754c7d23162b2f3015dab8854772"
3257
3257
  },
3258
3258
  {
3259
3259
  "path": "skills/lit-docx/templates/tonalities/proposal.yaml",
3260
- "sha256": "7cf710c09ae8d30a208f59167e9b47f0222a2184231a68047aa596f2c7e135d4"
3260
+ "sha256": "b1b7f4875a89208939ca82d69e6cfb30c35b64ea91d67d5aecc98fe04bde3bfc"
3261
3261
  },
3262
3262
  {
3263
3263
  "path": "skills/lit-docx/templates/tonalities/report.yaml",
3264
- "sha256": "ad8312bba2752e142ef40b560c13339f5411be73acb0f01634a4e744b215e5d8"
3264
+ "sha256": "23ac1d24f8936c6d522e19354d5948f0d00dce6d60c34fa42e37adafcc68cb8c"
3265
3265
  },
3266
3266
  {
3267
3267
  "path": "skills/lit-handoff/ORIGIN.json",
@@ -3539,6 +3539,10 @@
3539
3539
  "path": "skills/lit-plan/SKILL.md",
3540
3540
  "sha256": "650e2e90ee3d932416cde84b6db380e3664db585d5f70a356d274a540f486200"
3541
3541
  },
3542
+ {
3543
+ "path": "skills/lit-pptx/FORBIDDEN_TERMS.json",
3544
+ "sha256": "8ef78f42a519c513c9291d8145dedd6180d4130e31553d1036821f1afd61cc81"
3545
+ },
3542
3546
  {
3543
3547
  "path": "skills/lit-pptx/NOTICE",
3544
3548
  "sha256": "8a32f7ace88e748624b8f3fd019ba9a740f6d8b1893254fee5f1b76bb44b6ad2"
@@ -3729,35 +3733,35 @@
3729
3733
  },
3730
3734
  {
3731
3735
  "path": "skills/lit-pptx/references/tonalities/atlas.md",
3732
- "sha256": "2a935a7bf99a584a601be9deed936bdfe56b99333e1122ef98b9ed8fe2265377"
3736
+ "sha256": "37cbc87a2347aa2b640fb5d99dfd641e7bdc2d05d5764ffb92c911450000eda5"
3733
3737
  },
3734
3738
  {
3735
3739
  "path": "skills/lit-pptx/references/tonalities/chalk.md",
3736
- "sha256": "34f83faeb54c86841b260e0bdee0a6432fee529ee8d8accd7dcd691193934082"
3740
+ "sha256": "b6d10b50437a6e46e498425fa0bd4d2e3943b33af7180d9935e87b79d9f8ce5f"
3737
3741
  },
3738
3742
  {
3739
3743
  "path": "skills/lit-pptx/references/tonalities/gazette.md",
3740
- "sha256": "3f86da1d60d6def6a8bfcce0406e33247792ac8941aa0e598fc20fb7dc453692"
3744
+ "sha256": "d26daffd3c7229f1cf017ebe130e3be1fff04ef6a8c2d71bec62ab101f740aba"
3741
3745
  },
3742
3746
  {
3743
3747
  "path": "skills/lit-pptx/references/tonalities/ledger.md",
3744
- "sha256": "cc9ace54cabc6caa3bcb49682b02fd88ad770cc279ffe5c433ffd93a52496d33"
3748
+ "sha256": "530dd885b308a92607aa3d961399d54975869960ff82e312d61052e861f092a5"
3745
3749
  },
3746
3750
  {
3747
3751
  "path": "skills/lit-pptx/references/tonalities/night.md",
3748
- "sha256": "e2cfb2ac3ce8540b16e608b68233c8cb97f71ea8948410ce52c971a7551dd1c9"
3752
+ "sha256": "c60f7f08c79fe71f4d2b7c567f77109eb9b0c17a8d59509aca62ff47cb8119ac"
3749
3753
  },
3750
3754
  {
3751
3755
  "path": "skills/lit-pptx/references/tonalities/paper.md",
3752
- "sha256": "cadea4db242bf89c0a4b512b06d028ddfd171c4b84db0c2a20c2a66fb6e295ce"
3756
+ "sha256": "e33f03bada9548a29086a71055d8c4ecc1cd4cd346dbd8d8d4490c13a0d7c424"
3753
3757
  },
3754
3758
  {
3755
3759
  "path": "skills/lit-pptx/references/tonalities/signal.md",
3756
- "sha256": "b15bf1652d67cedc93b12036a9ceecf8d8e1a943bc48ebf448ddc3c8b28da9b5"
3760
+ "sha256": "4af361cb2bdf658f032a77adf9095c56ff37be083c1eeb60b9937dfe0e2c1993"
3757
3761
  },
3758
3762
  {
3759
3763
  "path": "skills/lit-pptx/references/tonalities/studio.md",
3760
- "sha256": "9b308cc9d11da875dbb86a79089fdb1417094c332d139819b6c1efdd3b398c4c"
3764
+ "sha256": "82b93ab9369fc2e9cc3ee375bd714a975f321af56480922533ab70a01cb8dce0"
3761
3765
  },
3762
3766
  {
3763
3767
  "path": "skills/lit-pptx/runtime/package-lock.json",
@@ -3785,7 +3789,7 @@
3785
3789
  },
3786
3790
  {
3787
3791
  "path": "skills/lit-pptx/scripts/deck_output.py",
3788
- "sha256": "41ebf2c196bc84825de5f5a4495a8e31312584467b5511a996fb8b901487b8af"
3792
+ "sha256": "928cf0a8e22988c059b787047439362f6056413b1b2b494b4bb0e32f8e4211eb"
3789
3793
  },
3790
3794
  {
3791
3795
  "path": "skills/lit-pptx/scripts/embed_fonts.py",
@@ -3845,7 +3849,7 @@
3845
3849
  },
3846
3850
  {
3847
3851
  "path": "skills/lit-pptx/scripts/lib/render-pack.js",
3848
- "sha256": "8d5fb7bfa836f22ffd9a91358c45d7d4de07875ce45e3a41bc0ca8ccbd603119"
3852
+ "sha256": "967783ec4023c66c9f849f811e9b48e884f20ee6ac9e1bef264f7b794c2b3346"
3849
3853
  },
3850
3854
  {
3851
3855
  "path": "skills/lit-pptx/scripts/lib/slide-ast.js",
@@ -3857,15 +3861,15 @@
3857
3861
  },
3858
3862
  {
3859
3863
  "path": "skills/lit-pptx/scripts/lib/template-registry.js",
3860
- "sha256": "41554defc6997719578047c3d050c7f5f7a4e38e93d47494615dda23bf5ec902"
3864
+ "sha256": "145cefcf8d21b54045c6fc67ae059755a2fed7e375918c0af0e23826ddd21d79"
3861
3865
  },
3862
3866
  {
3863
3867
  "path": "skills/lit-pptx/scripts/qa_deck.py",
3864
- "sha256": "7458195bb988ee1f719620bb729ad69dbd0c534d649c1ebf0993fcb96cca0e0b"
3868
+ "sha256": "5ce04775a3737276fd7518240e104525c52ce020cf22b311714af19b8fa8755b"
3865
3869
  },
3866
3870
  {
3867
3871
  "path": "skills/lit-pptx/scripts/validate_pptx.py",
3868
- "sha256": "3a0830acf3a647878bacd599f4ade17462a83c0a24cbda378bb69a6a05b4d362"
3872
+ "sha256": "dbca7e6106ac9f767d61c8f1f9c113624991b9d12526df3b26ac52f8145f029a"
3869
3873
  },
3870
3874
  {
3871
3875
  "path": "skills/lit-pptx/slide-formats/markdown-slide-spec-v1.md",
@@ -3937,35 +3941,35 @@
3937
3941
  },
3938
3942
  {
3939
3943
  "path": "skills/lit-pptx/templates/tonalities/atlas/pack.yaml",
3940
- "sha256": "1a55367348e8304266e6038a34ec1c84060e3667c9f42c1707e2818c01b535da"
3944
+ "sha256": "9eb26f4796425816ec2691270c6d7a566482b148234bef0e259192726d5ee1a3"
3941
3945
  },
3942
3946
  {
3943
3947
  "path": "skills/lit-pptx/templates/tonalities/chalk/pack.yaml",
3944
- "sha256": "e386a50ad64fd12a8457af60379682892c3e41e2ff5a536afee0a2167ffa00a7"
3948
+ "sha256": "b54ab8c33219a5df54e6965b825d5688f338d74986d0fbc80300d089e6801f1e"
3945
3949
  },
3946
3950
  {
3947
3951
  "path": "skills/lit-pptx/templates/tonalities/gazette/pack.yaml",
3948
- "sha256": "b9f58d62e14bd18d004a928210e01678db923895c8d117f8f93d06286c31ce6c"
3952
+ "sha256": "1c210b4e537b4233647d40c34f9d42cd3564838180f32a964c453a0f8f2ee6b1"
3949
3953
  },
3950
3954
  {
3951
3955
  "path": "skills/lit-pptx/templates/tonalities/ledger/pack.yaml",
3952
- "sha256": "67a4a4fa8ecd9d98c0780d3a49610ccc83993d4f20ee7a875d1fe3c32f3da369"
3956
+ "sha256": "7a697afe423be320c1450a85d23ea8e77280fb5ada175b3838068cf0138d259e"
3953
3957
  },
3954
3958
  {
3955
3959
  "path": "skills/lit-pptx/templates/tonalities/night/pack.yaml",
3956
- "sha256": "631c84ee1388b8d69673bf392b704d4d4061433b12957a29c16c37dd5875eb33"
3960
+ "sha256": "7142a4695e245056a1a38243028c502580b7b075c3c31e78a5512700e2cbf760"
3957
3961
  },
3958
3962
  {
3959
3963
  "path": "skills/lit-pptx/templates/tonalities/paper/pack.yaml",
3960
- "sha256": "f93ab4059ddfd2bcfff93e73112d158620b80f770a9b9fdac678ed4615e5b3e7"
3964
+ "sha256": "70f3bf8ee490abcf6e56968adbc6c3a218a2377724be6f3414a7cec000ea5d0f"
3961
3965
  },
3962
3966
  {
3963
3967
  "path": "skills/lit-pptx/templates/tonalities/signal/pack.yaml",
3964
- "sha256": "db5d0acb28b845ec3049afb84678f1d03d4670e0a607a1aeb9e7141e3fcbb9eb"
3968
+ "sha256": "c4c92302e739b1a9f4fde25b2961272207a56a943cb8dde94cbd3a401b05a7d8"
3965
3969
  },
3966
3970
  {
3967
3971
  "path": "skills/lit-pptx/templates/tonalities/studio/pack.yaml",
3968
- "sha256": "4fb169a8c2cd4807fadfcbead64e3cf85927fb7d61da2796090ec31ad5c80a25"
3972
+ "sha256": "fc1ed798a6a8fc192fdc27dfcb08f2ef4bfb72e63e9233c0b2c85ec75d76558f"
3969
3973
  },
3970
3974
  {
3971
3975
  "path": "skills/lit-recap/SKILL.md",
@@ -4401,7 +4405,7 @@
4401
4405
  },
4402
4406
  {
4403
4407
  "path": "skills/visual-qa/references/complete-contract.md",
4404
- "sha256": "8210299abf25099217097e35efcabf53d9fe9b939e5d05e2197177e63b3fbe13"
4408
+ "sha256": "ef0594bda950ddedc47f7a438759a461fdd9c8f718cd0dd04d2f1792ae7c6ae5"
4405
4409
  },
4406
4410
  {
4407
4411
  "path": "skills/visual-qa/schemas/evidence-manifest-v1alpha1.schema.json",
@@ -1,5 +1,5 @@
1
1
  name: lithermes
2
- version: 1.0.17
2
+ version: 1.0.18
3
3
  description: "Hermes-native workflow toolkit: litgoal durable runtime, 5-lane review orchestrator, Litwork commands, skills, and prompt steering."
4
4
  author: "LitHermes contributors"
5
5
  kind: standalone
@@ -445,7 +445,7 @@ isolated Hermes home. Use `--hermes-home`; never `--home`.
445
445
 
446
446
  ```text
447
447
  $ node packages/lithermes-installer/bin/lithermes.js install --yes --offline --no-hud --hermes-home "$ISOLATED"
448
- Installed LitHermes 1.0.17
448
+ Installed LitHermes 1.0.18
449
449
  plugin: $ISOLATED/plugins/lithermes
450
450
  model config: updated
451
451
 
@@ -462,7 +462,7 @@ installed payload: PASS
462
462
  enabled config: PASS
463
463
 
464
464
  $ hermes lithermes doctor
465
- [OK] plugin.yaml readable (version 1.0.17)
465
+ [OK] plugin.yaml readable (version 1.0.18)
466
466
  [OK] skills bundled: 36
467
467
  [OK] litgoal durable runtime importable
468
468
  ```
@@ -6,7 +6,7 @@ threshold is never the fix.
6
6
  ## Grid and margins by density
7
7
 
8
8
  A4; sides never under 25 mm, bottom never under top, text block 150-160 mm. Pack defaults are
9
- density 9 (Proposal 8) with a median fill target of 0.80 (Proposal 0.75).
9
+ density 9 (Proposal 8).
10
10
 
11
11
  | Density | Margins top / bottom / left / right (mm) | Text block (mm) | Body size | Pitch ko / en | Word multiple ko / en |
12
12
  |---|---|---|---|---|---|
@@ -120,8 +120,6 @@ node <installed-plugin>/skills/lit-pptx/bin/office.mjs gate report.docx --source
120
120
  | `folio.total` | "page / total" counts real pages |
121
121
  | `sidebar.overlap` | a floating sidebar ends before the next heading |
122
122
 
123
- The median fill is reported against the pack target, not failed.
124
-
125
123
  ### Restraint checks (A4.11)
126
124
 
127
125
  Fail on tonality documents, advise elsewhere; `date.iso` holds everywhere.
@@ -246,7 +246,7 @@ def shape_table(doc, table, texts: list[list[str]]) -> None:
246
246
  for ci in range(cols):
247
247
  column = [row[ci] for row in texts if ci < len(row)]
248
248
  want.append(max([width_of(t) for t in column] + [4.0]))
249
- # Each column first gets its natural width
249
+ # Each column first gets its natural width, capped at 45% of the line.
250
250
  unit = Inches(0.085)
251
251
  cap = usable * 0.45
252
252
  natural = [min(w * unit, cap) for w in want]
@@ -376,7 +376,7 @@ def html_to_docx(html: str, doc: Document, md_path: Path):
376
376
  html_to_docx(str(element), doc, md_path)
377
377
 
378
378
 
379
- # =========================================================================== M1
379
+ # =========================================================================== M1: Journal workflow
380
380
 
381
381
 
382
382
  def _load_yaml():
@@ -651,7 +651,7 @@ def apply_table_style(doc, design: dict) -> None:
651
651
  for table in doc.tables:
652
652
  table.style = None # detach Table Grid
653
653
  if table.autofit and table.rows and table.columns:
654
- # A table no builder has measured yet gets a fixed page-width grid, so Word cannot squeeze its cells into
654
+ # A table no builder has measured yet gets a fixed page-width grid, so Word cannot squeeze its cells.
655
655
  section = doc.sections[0]
656
656
  available = section.page_width - section.left_margin - section.right_margin
657
657
  weights = [
@@ -699,14 +699,14 @@ def apply_table_style(doc, design: dict) -> None:
699
699
  _add_border("insideV", "nil", "0") # explicit no verticals
700
700
  tblPr.append(tblBorders)
701
701
 
702
- # Bold header row + add bottom border only to header cells so the thicker rule sits under the header
702
+ # Bold header row + add bottom border only to header cells so the thicker rule sits under the header.
703
703
  if table.rows:
704
704
  header_row = table.rows[0]
705
705
  for cell in header_row.cells:
706
706
  for p in cell.paragraphs:
707
707
  for r in p.runs:
708
708
  r.bold = True
709
- # Remove insideH to prevent inner body rules
709
+ # Remove insideH to prevent inner body rules.
710
710
  insideH = tblBorders.find(qn("w:insideH"))
711
711
  if insideH is not None:
712
712
  insideH.set(qn("w:val"), "nil")
@@ -900,7 +900,7 @@ def apply_cjk_font_pairing(doc, font_cfg: dict) -> None:
900
900
  def _walk(paragraphs):
901
901
  for para in paragraphs:
902
902
  for run in para.runs:
903
- # Only fix runs that already have a font set to something other than the registry-banned default
903
+ # Only fix runs that already have a font set to something other than the registry-banned default.
904
904
  current_name = run.font.name
905
905
  if current_name and current_name != "Courier New":
906
906
  _set_run_fonts(run, latin, cjk)
@@ -973,7 +973,7 @@ def inject_title_block(doc, frontmatter: dict, design: dict) -> None:
973
973
  )
974
974
  _add_run(tp, str(title), tb.get("title", {}).get("size_pt", 18), bold=True)
975
975
 
976
- # Report-style frontmatter
976
+ # Report-style frontmatter adds a subtitle and a byline.
977
977
  if frontmatter.get("subtitle"):
978
978
  sp = _p_center(13, space_after=6)
979
979
  _add_run(sp, str(frontmatter["subtitle"]), 13)
@@ -1223,7 +1223,7 @@ def convert_md_to_docx(
1223
1223
 
1224
1224
  # Pre-MD micro-typography filters
1225
1225
  if detected_locale in ("ko", "mixed"):
1226
- # On every path
1226
+ # On every path, Korean text loses ISO dates before the dash filter.
1227
1227
  body = docx_design.korean_dates(body)
1228
1228
  if frontmatter.get("date"):
1229
1229
  frontmatter["date"] = docx_design.format_date(frontmatter["date"], "ko")
@@ -1233,7 +1233,7 @@ def convert_md_to_docx(
1233
1233
  text = fix_quotes(fix_dashes(text, dash_rules))
1234
1234
  return normalize_double_spaces(fix_ellipsis(fix_unit_spacing(text)))
1235
1235
 
1236
- #
1236
+ # Only text between ::: fence lines is typeset.
1237
1237
  pieces = re.split(r"^([ \t]*:{3,}.*)$", body, flags=re.M)
1238
1238
  body = "".join(piece if index % 2 else typeset(piece) for index, piece in enumerate(pieces))
1239
1239
 
@@ -59,7 +59,7 @@ LABELS = {
59
59
  }
60
60
  PACK_KEYS = {"schema_version", "tonality", "summary", "dials", "docx", "design"}
61
61
  DESIGN_KEYS = {"ramp", "numbering", "h1_rule", "title_block", "contents", "summary_form", "conclusion_first", "running_head", "justify",
62
- "palette", "accent_on", "page_geometry", "components", "figure_style", "fill", "spacing"}
62
+ "palette", "accent_on", "page_geometry", "components", "figure_style", "spacing"}
63
63
  ACCENT_PLACES = ("title_rule", "callout_rule", "sidebar_rule")
64
64
  DIRECTIVE_KEYS = {
65
65
  "cover": {"variant", "image", "kicker"},
@@ -101,7 +101,7 @@ def _half(x: float) -> float:
101
101
  return math.floor(x * 2 + 0.5) / 2
102
102
 
103
103
 
104
- # Margins (top, bottom, left, right) in mm by density
104
+ # Margins (top, bottom, left, right) in mm by density; sides never go under 25 mm.
105
105
  MARGINS = [(2, (30, 32, 30, 30)), (4, (28, 30, 28, 28)), (6, (27, 29, 27, 27)), (8, (26, 28, 26, 26)), (9, (25, 27, 25, 25)), (10, (24, 26, 25, 25))]
106
106
 
107
107
 
@@ -776,7 +776,7 @@ def setup_styles(doc, T: Tonality):
776
776
  set_run_fonts(doc.styles[name].element.get_or_add_rPr(), *head_font)
777
777
  except KeyError:
778
778
  pass
779
- # Every style the document carries is in ink, including the ones this build does not use
779
+ # Every style the document carries is in ink, including the ones this build does not use.
780
780
  for el in doc.styles.element.iter(qn("w:color")):
781
781
  el.set(qn("w:val"), ink)
782
782
  for key in ("themeColor", "themeShade", "themeTint"):
@@ -990,7 +990,7 @@ def add_columns(ctx, d: Directive):
990
990
  gap = float(d.attrs.get("gap") or T.column_gap_mm)
991
991
  parts = COLUMN_BREAK.split(d.body)
992
992
  if len(parts) > 1 and n > 1:
993
- # The author placed the break
993
+ # The author placed the break, one cell per part.
994
994
  side_by_side(ctx, parts[: n - 1] + ["\n\n".join(parts[n - 1:])], gap, d.attrs.get("rule") in ("true", "1"))
995
995
  return
996
996
  ctx.section_break(cols=n, gap=gap, rule=d.attrs.get("rule") in ("true", "1"))
@@ -1452,12 +1452,12 @@ def treat_headings(doc, T: Tonality):
1452
1452
  continue # a level under a missing parent stays unnumbered
1453
1453
  number = heading_number(scheme, counters, level)
1454
1454
  if number and scheme == "roman-ko":
1455
- # The institute manner
1455
+ # The institute manner sets "Ⅴ. 소요 예산" with one space.
1456
1456
  _prefix_runs(p, [(number, None, T.colour("ink"), True), (" ", None, T.colour("ink"), False)])
1457
1457
  elif number:
1458
1458
  _prefix_runs(p, [(number, None, T.colour("ink"), True), "\t"])
1459
1459
  numbered.append((p, level, number))
1460
- # Decimal numbers
1460
+ # Decimal numbers hang one width per level.
1461
1461
  hang = {}
1462
1462
  for _, level, number in numbered:
1463
1463
  need = _advance(number, T.sizes[f"h{level}"]) * 1.1 / 2.835 + 3
@@ -1637,7 +1637,7 @@ def keep_heading_with_table(doc):
1637
1637
  while after is not None and between(after):
1638
1638
  Paragraph(after, doc._body).paragraph_format.keep_with_next = True
1639
1639
  after = after.getnext()
1640
- # A short lead (about two lines) and a table of up to eight body rows
1640
+ # A short lead (about two lines) and a table of up to eight body rows move together.
1641
1641
  rows = len(after.findall(qn("w:tr"))) if after is not None and after.tag == qn("w:tbl") else 99
1642
1642
  if after is not None and after.tag == qn("w:tbl") and rows <= 9 and len(re.sub(r"\s+", "", "".join(t.text or "" for t in lead.iter(qn("w:t"))))) <= 200:
1643
1643
  p.paragraph_format.keep_with_next = True
@@ -1979,7 +1979,7 @@ def finish_tables(doc, T: Tonality, lang: str):
1979
1979
  nxt = table._tbl.getnext()
1980
1980
  noted = nxt is not None and nxt.tag == qn("w:p") and bool(SOURCE_LINE.match("".join(t.text or "" for t in nxt.iter(qn("w:t"))).strip()))
1981
1981
  rows = list(table.rows)
1982
- # A long table (header + 6 body rows or more) may break between rows, header repeated, only where a quarter of
1982
+ # A long table (header + 6 body rows or more) may break between rows, header repeated, with a quarter page left.
1983
1983
  head, filled = 0, 0.0
1984
1984
  while head < len(rows) and (head < 4 or filled < 0.25 * frame_h):
1985
1985
  filled += heights[head]
@@ -2350,7 +2350,7 @@ def build(doc, front: dict, body: str, T: Tonality, render_md, lang: str, filter
2350
2350
  _check(cover.attrs.get("variant") or "typographic", COVERS, f"line {cover.line}: cover variant")
2351
2351
  if not front.get("title"):
2352
2352
  raise DesignError(f"line {cover.line}: a cover takes its title from frontmatter title:, which is missing")
2353
- # Key figures never stand on a cover
2353
+ # Key figures never stand on a cover.
2354
2354
  figures = [b for b in split_directives(cover.body, cover.line) if isinstance(b, Directive) and b.name == "keyfigures"]
2355
2355
  if figures and not T.neutral:
2356
2356
  if "keyfigures" in T.allowed_kinds:
@@ -83,7 +83,7 @@ def norm(text: str) -> str:
83
83
  return text.translate(str.maketrans({"–": "-", "—": "-", "‘": "'", "’": "'", "“": '"', "”": '"'}))
84
84
 
85
85
 
86
- # ── heading.declarative ───────────────────────────────────────────────────── A heading names what its section
86
+ # ── heading.declarative ───────────────────────────────────────────────────── A heading names what its section covers.
87
87
 
88
88
  KO_SENTENCE = re.compile(r"(?:니다|[어아해세에예네지군래게]요|죠|[었았였했겠됐](?:다|음)|[가-힣]다|[가-힣](?:함|됨)|(?:있|없)음)$")
89
89
  KO_LABEL_WORDS = {"바다", "판다", "소다", "람다", "캐나다", "어젠다", "아젠다", "포함", "보다", "함", "다", "중심", "가능성", "다음"}
@@ -480,7 +480,7 @@ def structure(path: Path) -> dict:
480
480
  body = ET.fromstring(z.read("word/document.xml")).find(W + "body")
481
481
  caps = [((t.find(f"{W}tblPr/{W}tblCaption").get(W + "val") if t.find(f"{W}tblPr/{W}tblCaption") is not None else "") or "")
482
482
  for t in body.iter(W + "tbl")]
483
- # A cover page
483
+ # A cover page ends its section before any heading.
484
484
  cover_page = False
485
485
  sects = [el.find(f"{W}pPr/{W}sectPr") for el in body if el.tag == W + "p" and el.find(f"{W}pPr/{W}sectPr") is not None]
486
486
  sects.append(body.find(W + "sectPr"))
@@ -734,11 +734,11 @@ def paged(info: dict, pages: list[dict], tonality: bool, front: dict | None = No
734
734
  if not exempt and fill < FILL_MIN:
735
735
  found.append(finding("fill.page", "FAIL", i, f"page {i} is filled to {fill:.2f} of its frame (floor {FILL_MIN})",
736
736
  "Let the next block move up: drop a forced break, keep a short section with its neighbour, or move a table under its text."))
737
- # A memo that spills under a quarter of a page onto page 2 is a one-page memo set loosely
737
+ # A memo that spills under a quarter of a page onto page 2 is a one-page memo set loosely.
738
738
  if info.get("memo") and n == 2 and fills[-1]["fill"] < MEMO_SPILL:
739
739
  found.append(finding("memo.fit", "FAIL", 2, f"the memo runs onto a second page filled to {fills[-1]['fill']:.2f} of its frame",
740
740
  "Set the memo on one page: the Memo pack's tight spacing, or shorten the text by the lines that spill."))
741
- # A second page filled under a third of its frame is a one-page document set loosely or a block left over
741
+ # A second page filled under a third of its frame is a one-page document set loosely or a block left over.
742
742
  if not info.get("memo") and n >= 2:
743
743
  last = fills[-1]["fill"]
744
744
  if n == 2 and last < SPILL_SECOND:
@@ -809,7 +809,7 @@ def paged(info: dict, pages: list[dict], tonality: bool, front: dict | None = No
809
809
  if block["t"] == "h":
810
810
  find(block["text"])
811
811
  elif block["t"] == "tbl" and block["component"] in ("keyfigures", "callout", "sidebar"):
812
- # A component box is short by design
812
+ # A component box is short by design.
813
813
  hits = []
814
814
  for text in block.get("cells", []):
815
815
  if len(text) < 2:
@@ -919,7 +919,7 @@ def paged(info: dict, pages: list[dict], tonality: bool, front: dict | None = No
919
919
  # the box's own lines share its left edge; body lines that open alike stand elsewhere
920
920
  mine = []
921
921
  if anchor:
922
- # the box
922
+ # The box is its title line and the lines that follow it.
923
923
  mine = [anchor]
924
924
  for bx in sorted((b for b in boxes if b[1] > anchor[1] and b[0] >= anchor[0] - 24), key=lambda b: b[1]):
925
925
  if bx[1] - mine[-1][3] > 20:
@@ -26,4 +26,3 @@ design:
26
26
  allowed: [callout, columns]
27
27
  callout_max: 1
28
28
  figure_style: {max_height_ratio: 0.40}
29
- fill: {min_page_fill: 0.35, target_median_fill: 0.80}
@@ -23,4 +23,3 @@ design:
23
23
  components:
24
24
  allowed: [callout]
25
25
  figure_style: {max_height_ratio: 0.40}
26
- fill: {min_page_fill: 0.35, target_median_fill: 0.80}
@@ -24,4 +24,3 @@ design:
24
24
  allowed: [callout, sidebar, columns]
25
25
  sidebar: {default_width: third, float: right}
26
26
  figure_style: {max_height_ratio: 0.45}
27
- fill: {min_page_fill: 0.35, target_median_fill: 0.80}
@@ -22,6 +22,5 @@ design:
22
22
  components:
23
23
  allowed: []
24
24
  figure_style: {max_height_ratio: 0.40}
25
- fill: {min_page_fill: 0.35, target_median_fill: 0.80}
26
25
  # A memo stays on one page when its content allows: the low end of the line pitch, closer heading space.
27
26
  spacing: tight
@@ -24,4 +24,3 @@ design:
24
24
  callout_max: 1
25
25
  keyfigures: {per_row: 3}
26
26
  figure_style: {max_height_ratio: 0.60}
27
- fill: {min_page_fill: 0.35, target_median_fill: 0.75}
@@ -24,4 +24,3 @@ design:
24
24
  allowed: [keyfigures, callout, columns]
25
25
  keyfigures: {per_row: 3}
26
26
  figure_style: {max_height_ratio: 0.45}
27
- fill: {min_page_fill: 0.35, target_median_fill: 0.80}