jekyll-theme-zer0 1.28.0 → 1.30.0

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 (191) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1143 -13
  3. data/_data/README.md +2 -0
  4. data/_data/ai.yml +5 -3
  5. data/_data/ai_pricing.yml +36 -0
  6. data/_data/backlog.yml +507 -2
  7. data/_data/consumers.yml +157 -9
  8. data/_data/features.yml +303 -20
  9. data/_data/feedback_types.yml +17 -12
  10. data/_data/i18n/fr.yml +12 -7
  11. data/_data/i18n/manifest.yml +39 -12
  12. data/_data/ingredient_densities.yml +122 -0
  13. data/_data/landing.yml +5 -2
  14. data/_data/navigation/main.yml +16 -0
  15. data/_data/navigation/quickstart.yml +4 -0
  16. data/_data/recipe_courses.yml +64 -0
  17. data/_data/site_builder.yml +874 -0
  18. data/_data/theme-manifest.yml +160 -124
  19. data/_data/ui-text.yml +26 -0
  20. data/_includes/README.md +26 -2
  21. data/_includes/analytics/posthog.html +2 -2
  22. data/_includes/components/admin-links.html +2 -2
  23. data/_includes/components/admin-tabs.html +2 -2
  24. data/_includes/components/ai-chat.html +14 -11
  25. data/_includes/components/analytics-dashboard.html +8 -8
  26. data/_includes/components/author-bio.html +1 -1
  27. data/_includes/components/author-card.html +10 -2
  28. data/_includes/components/author-eeat.html +4 -4
  29. data/_includes/components/background-customizer.html +10 -10
  30. data/_includes/components/background-image.html +114 -0
  31. data/_includes/components/background-settings.html +28 -15
  32. data/_includes/components/collection-manager.html +5 -5
  33. data/_includes/components/component-showcase.html +13 -13
  34. data/_includes/components/config-editor.html +12 -12
  35. data/_includes/components/config-viewer.html +8 -8
  36. data/_includes/components/cookie-consent.html +15 -15
  37. data/_includes/components/cta-button.html +7 -2
  38. data/_includes/components/dev-shortcuts.html +7 -7
  39. data/_includes/components/env-dashboard.html +8 -8
  40. data/_includes/components/env-switcher.html +9 -9
  41. data/_includes/components/feature-card.html +2 -2
  42. data/_includes/components/halfmoon.html +2 -2
  43. data/_includes/components/info-section.html +42 -37
  44. data/_includes/components/js-cdn.html +15 -15
  45. data/_includes/components/language-toggle.html +168 -21
  46. data/_includes/components/mermaid.html +72 -435
  47. data/_includes/components/nanobar.html +5 -5
  48. data/_includes/components/nav-editor.html +2 -2
  49. data/_includes/components/nav-export.html +2 -2
  50. data/_includes/components/nav-overview.html +2 -2
  51. data/_includes/components/page-feedback.html +45 -30
  52. data/_includes/components/page-views-init.html +55 -0
  53. data/_includes/components/page-views.html +33 -0
  54. data/_includes/components/post-card.html +22 -22
  55. data/_includes/components/post-type-badge.html +2 -2
  56. data/_includes/components/powered-by.html +2 -2
  57. data/_includes/components/preview-image.html +6 -0
  58. data/_includes/components/quick-index.html +2 -2
  59. data/_includes/components/recipe-card.html +67 -0
  60. data/_includes/components/recipe-duration.html +50 -0
  61. data/_includes/components/recipe-grams.html +58 -0
  62. data/_includes/components/recipe-index.html +96 -0
  63. data/_includes/components/recipe-ingredients.html +90 -0
  64. data/_includes/components/recipe-meta.html +96 -0
  65. data/_includes/components/recipe-nutrition.html +57 -0
  66. data/_includes/components/recipe-qty.html +73 -0
  67. data/_includes/components/recipe-ratio.html +151 -0
  68. data/_includes/components/recipe-scaler.html +73 -0
  69. data/_includes/components/recipe-steps.html +86 -0
  70. data/_includes/components/recipe-temp.html +45 -0
  71. data/_includes/components/search-modal.html +29 -4
  72. data/_includes/components/searchbar.html +2 -2
  73. data/_includes/components/shortcuts-modal.html +3 -0
  74. data/_includes/components/svg-background.html +2 -2
  75. data/_includes/components/theme-customizer.html +2 -2
  76. data/_includes/components/theme-info.html +14 -7
  77. data/_includes/components/theme-preview-gallery.html +22 -22
  78. data/_includes/content/giscus.html +2 -2
  79. data/_includes/content/intro.html +8 -8
  80. data/_includes/content/jsonld-faq.html +2 -2
  81. data/_includes/content/jsonld-software.html +24 -5
  82. data/_includes/content/seo.html +4 -4
  83. data/_includes/content/sitemap.html +27 -27
  84. data/_includes/content/toc.html +183 -183
  85. data/_includes/core/branding.html +6 -6
  86. data/_includes/core/console-capture.html +32 -74
  87. data/_includes/core/favicon.html +49 -7
  88. data/_includes/core/footer-fabs.html +17 -3
  89. data/_includes/core/footer.html +49 -34
  90. data/_includes/core/head.html +110 -86
  91. data/_includes/core/header.html +76 -54
  92. data/_includes/docs/bootstrap-docs.html +8 -8
  93. data/_includes/landing/landing-install-cards.html +2 -2
  94. data/_includes/landing/landing-quick-links.html +1 -1
  95. data/_includes/navigation/admin-nav.html +2 -2
  96. data/_includes/navigation/nav-tree.html +8 -8
  97. data/_includes/navigation/navbar.html +12 -12
  98. data/_includes/navigation/section-sidebar.html +109 -27
  99. data/_includes/navigation/sidebar-config.html +36 -2
  100. data/_includes/navigation/sidebar-left.html +17 -16
  101. data/_includes/navigation/sidebar-right.html +8 -7
  102. data/_includes/obsidian/full-graph.html +2 -2
  103. data/_includes/setup/claude-session.html +72 -0
  104. data/_includes/setup/prereq-checklist.html +90 -0
  105. data/_includes/setup/wizard.html +924 -222
  106. data/_includes/stats/stats-categories.html +8 -8
  107. data/_includes/stats/stats-header.html +14 -14
  108. data/_includes/stats/stats-metrics.html +14 -14
  109. data/_includes/stats/stats-no-data.html +12 -12
  110. data/_includes/stats/stats-overview.html +6 -6
  111. data/_includes/stats/stats-tags.html +8 -8
  112. data/_layouts/404.html +38 -24
  113. data/_layouts/README.md +2 -0
  114. data/_layouts/admin.html +24 -24
  115. data/_layouts/article.html +43 -33
  116. data/_layouts/author.html +20 -20
  117. data/_layouts/authors.html +2 -2
  118. data/_layouts/book-abc.html +12 -12
  119. data/_layouts/book-story.html +15 -15
  120. data/_layouts/book.html +12 -12
  121. data/_layouts/collection.html +33 -33
  122. data/_layouts/cookbook.html +88 -0
  123. data/_layouts/default.html +31 -28
  124. data/_layouts/home.html +23 -23
  125. data/_layouts/index.html +10 -10
  126. data/_layouts/landing.html +17 -17
  127. data/_layouts/news.html +44 -44
  128. data/_layouts/note.html +38 -38
  129. data/_layouts/notebook.html +34 -34
  130. data/_layouts/recipe.html +274 -0
  131. data/_layouts/root.html +92 -55
  132. data/_layouts/section.html +62 -33
  133. data/_layouts/setup.html +3 -3
  134. data/_layouts/sitemap-collection.html +49 -49
  135. data/_layouts/stats.html +40 -40
  136. data/_layouts/tag.html +12 -12
  137. data/_layouts/welcome.html +21 -21
  138. data/_sass/components/_callout.scss +1 -1
  139. data/_sass/components/_footer.scss +37 -1
  140. data/_sass/components/_mermaid.scss +375 -0
  141. data/_sass/components/_page-views.scss +36 -0
  142. data/_sass/components/_recipe.scss +506 -0
  143. data/_sass/components/_setup-wizard.scss +764 -0
  144. data/_sass/components/_ui-enhancements.scss +6 -6
  145. data/_sass/core/_navbar.scss +261 -46
  146. data/_sass/layouts/_landing.scss +2 -2
  147. data/_sass/layouts/_navbar-extras.scss +14 -4
  148. data/_sass/tokens/_color.scss +6 -0
  149. data/_sass/tokens/_index.scss +2 -0
  150. data/_sass/tokens/_radius.scss +21 -0
  151. data/_sass/tokens/_typography.scss +4 -0
  152. data/_sass/utilities/_focus.scss +14 -0
  153. data/assets/css/main.scss +4 -0
  154. data/assets/js/ai-chat.js +47 -5
  155. data/assets/js/fleet-feedback-capture.js +124 -0
  156. data/assets/js/fleet-feedback.js +853 -0
  157. data/assets/js/mermaid-diagrams.js +1267 -0
  158. data/assets/js/modules/navigation/config.js +9 -6
  159. data/assets/js/modules/navigation/navbar.js +55 -0
  160. data/assets/js/modules/navigation/scroll-spy.js +315 -80
  161. data/assets/js/modules/theme/appearance.js +8 -2
  162. data/assets/js/obsidian-wiki-links.js +8 -3
  163. data/assets/js/page-feedback.js +125 -192
  164. data/assets/js/page-views.js +372 -0
  165. data/assets/js/recipe-scaler.js +501 -0
  166. data/assets/js/search-modal.js +36 -0
  167. data/assets/js/setup-wizard.js +2279 -226
  168. data/assets/js/site-builder.js +1834 -0
  169. data/assets/js/ui-enhancements.js +11 -3
  170. data/scripts/README.md +44 -0
  171. data/scripts/ai/README.md +38 -0
  172. data/scripts/ai/api_call.rb +124 -0
  173. data/scripts/ai/usage.rb +314 -0
  174. data/scripts/ai/usage_report.rb +225 -0
  175. data/scripts/bin/audit-consumer +39 -7
  176. data/scripts/bin/giscus-discussions +213 -14
  177. data/scripts/bin/manifest +35 -12
  178. data/scripts/ci/agent_review_result.py +164 -0
  179. data/scripts/ci/test_agent_review_result.py +172 -0
  180. data/scripts/ci/test_visual_evidence_autogen.py +341 -0
  181. data/scripts/ci/visual_evidence_autogen.py +1060 -0
  182. data/scripts/content-review.rb +20 -1
  183. data/scripts/design-system-check.rb +170 -0
  184. data/scripts/lib/audit.sh +42 -2
  185. data/scripts/lint-liquid-raw.rb +137 -0
  186. data/scripts/test/integration/mermaid +22 -8
  187. data/scripts/test/lib/run_tests.sh +3 -1
  188. data/scripts/test/lib/test_agent_review_result.sh +27 -0
  189. data/scripts/test/lib/test_visual_evidence_autogen.sh +24 -0
  190. data/scripts/translate.rb +94 -16
  191. metadata +48 -2
data/scripts/translate.rb CHANGED
@@ -170,8 +170,30 @@ module Zer0Translate
170
170
  masked
171
171
  end
172
172
 
173
+ # A masked span can carry a placeholder minted by an earlier pattern: a
174
+ # Liquid expression inside a link destination (`](⟦3⟧)`), or inside an
175
+ # inline code span (`` `⟦8⟧` ``). `gsub` never rescans its own replacement
176
+ # text, so one pass restores the outer span and strands the inner token as
177
+ # a literal ⟦N⟧ in the published page. Substitute until the text stops
178
+ # changing — nesting can only run as deep as the pattern list is long — and
179
+ # refuse to hand back anything still holding a placeholder, so a corrupt
180
+ # page fails its job instead of shipping.
173
181
  def unmask(text)
174
- text.gsub(PLACEHOLDER_RE) { |token| @map.fetch(token, token) }
182
+ result = text
183
+ (INLINE_PATTERNS.length + 1).times do
184
+ expanded = result.gsub(PLACEHOLDER_RE) { |token| @map.fetch(token, token) }
185
+ break if expanded == result
186
+
187
+ result = expanded
188
+ end
189
+
190
+ leftover = result.scan(PLACEHOLDER_RE).uniq
191
+ unless leftover.empty?
192
+ raise Translator::TranslationError,
193
+ "unresolved placeholder(s) #{leftover.join(', ')} after unmasking"
194
+ end
195
+
196
+ result
175
197
  end
176
198
  end
177
199
 
@@ -424,16 +446,26 @@ module Zer0Translate
424
446
  def initialize(model:, max_tokens:)
425
447
  @model = model
426
448
  @max_tokens = max_tokens
427
- @auth = resolve_auth
449
+ @candidates = resolve_auth_candidates
428
450
  raise "No Anthropic credential found. Set CLAUDE_CODE_OAUTH_TOKEN " \
429
- "(from `claude setup-token`), ANTHROPIC_AUTH_TOKEN, or ANTHROPIC_API_KEY." unless @auth
451
+ "(from `claude setup-token`), ANTHROPIC_AUTH_TOKEN, or ANTHROPIC_API_KEY." if @candidates.empty?
452
+
453
+ @auth = @candidates.first
430
454
  end
431
455
 
432
456
  def name = "claude (#{@model})"
433
457
 
434
458
  def translate(segments, target_lang, context)
435
- payload = build_payload(segments, target_lang, context)
436
- body = request_with_retries(payload)
459
+ body = begin
460
+ # Rebuilt on retry, not hoisted: the payload's first system block
461
+ # depends on @auth[:mode], so falling back to a different credential
462
+ # has to re-derive it.
463
+ request_with_retries(build_payload(segments, target_lang, context))
464
+ rescue AuthError => e
465
+ raise ProviderError, e.message unless advance_credential!(e)
466
+
467
+ retry
468
+ end
437
469
  text = (body["content"] || []).select { |b| b["type"] == "text" }
438
470
  .map { |b| b["text"] }.join("\n")
439
471
  parsed = extract_json(text)
@@ -444,16 +476,38 @@ module Zer0Translate
444
476
 
445
477
  class ProviderError < StandardError; end
446
478
 
479
+ # A credential the API refused (401/403), as opposed to any other failure.
480
+ # Separate so `translate` can fall through to the next configured
481
+ # credential rather than failing the run outright.
482
+ class AuthError < ProviderError; end
483
+
447
484
  private
448
485
 
449
- def resolve_auth
450
- if (token = ENV["CLAUDE_CODE_OAUTH_TOKEN"] || ENV["ANTHROPIC_AUTH_TOKEN"])
451
- return { mode: :oauth, token: token } unless token.empty?
452
- end
453
- if (key = ENV["ANTHROPIC_API_KEY"])
454
- return { mode: :api_key, token: key } unless key.empty?
455
- end
456
- nil
486
+ # Every configured credential, in precedence order.
487
+ #
488
+ # Returning the whole list rather than just the first match is the point:
489
+ # the old lookup skipped credentials that were UNSET but had no way to skip
490
+ # one the API refused, so a set-but-revoked CLAUDE_CODE_OAUTH_TOKEN shadowed
491
+ # a working ANTHROPIC_API_KEY and took the whole run down with it.
492
+ def resolve_auth_candidates
493
+ [
494
+ { mode: :oauth, token: ENV["CLAUDE_CODE_OAUTH_TOKEN"], label: "CLAUDE_CODE_OAUTH_TOKEN" },
495
+ { mode: :oauth, token: ENV["ANTHROPIC_AUTH_TOKEN"], label: "ANTHROPIC_AUTH_TOKEN" },
496
+ { mode: :api_key, token: ENV["ANTHROPIC_API_KEY"], label: "ANTHROPIC_API_KEY" },
497
+ ].reject { |c| c[:token].nil? || c[:token].empty? }
498
+ end
499
+
500
+ # Switch to the next configured credential after this one was refused.
501
+ # Sticky by design — @auth stays switched for the rest of the run, so a
502
+ # dead credential costs one rejection in total rather than one per chunk.
503
+ def advance_credential!(error)
504
+ current = @candidates.index { |c| c.equal?(@auth) }
505
+ nxt = @candidates[current + 1]
506
+ return false unless nxt
507
+
508
+ Log.warn "#{@auth[:label]} rejected (#{error.message}); retrying with #{nxt[:label]}"
509
+ @auth = nxt
510
+ true
457
511
  end
458
512
 
459
513
  def system_blocks(target_lang)
@@ -514,7 +568,10 @@ module Zer0Translate
514
568
  body = JSON.parse(response.body)
515
569
  unless code == 200
516
570
  message = body.dig("error", "message") || response.body[0, 300]
517
- raise ProviderError, "Anthropic API #{code}: #{message}"
571
+ # 401/403 is the credential, not the request — surface it as an
572
+ # AuthError so the caller can try the next configured one.
573
+ klass = [401, 403].include?(code) ? AuthError : ProviderError
574
+ raise klass, "Anthropic API #{code}: #{message}"
518
575
  end
519
576
  body
520
577
  rescue RetryableError
@@ -692,13 +749,34 @@ module Zer0Translate
692
749
  pages[url] ||= {}
693
750
  end
694
751
 
752
+ # Writes the manifest only when the mapping itself changed.
753
+ #
754
+ # `updated_at` used to be stamped on every save, which meant a run that
755
+ # translated NOTHING still rewrote the file. That is not hypothetical: with
756
+ # the API credential rejected, every page failed and the run still produced
757
+ # a one-line `updated_at` diff — enough for translate.yml to open a PR that
758
+ # reads like a routine translation refresh and contains no translations.
759
+ # Serializing with the PREVIOUS timestamp first and comparing against disk
760
+ # keeps that run a no-op, while any real change (a translated page, a prune)
761
+ # still stamps and writes.
695
762
  def save(source_lang, languages)
763
+ previous = @data["updated_at"]
696
764
  @data["version"] = 1
697
765
  @data["source_lang"] = source_lang
698
766
  @data["languages"] = languages
699
- @data["updated_at"] = Time.now.utc.iso8601
700
767
  @data["pages"] = pages.sort.to_h
768
+
769
+ @data["updated_at"] = previous
770
+ return if File.file?(@path) && File.read(@path, encoding: "bom|utf-8") == render
771
+
772
+ @data["updated_at"] = Time.now.utc.iso8601
701
773
  FileUtils.mkdir_p(File.dirname(@path))
774
+ File.write(@path, render)
775
+ end
776
+
777
+ private
778
+
779
+ def render
702
780
  header = <<~HEADER
703
781
  # ================================================================
704
782
  # GENERATED FILE — do not edit by hand.
@@ -707,7 +785,7 @@ module Zer0Translate
707
785
  # _includes/components/language-toggle.html and _includes/core/hreflang.html.
708
786
  # ================================================================
709
787
  HEADER
710
- File.write(@path, header + @data.to_yaml.sub(/\A---\n/, ""))
788
+ header + @data.to_yaml.sub(/\A---\n/, "")
711
789
  end
712
790
  end
713
791
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-theme-zer0
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.28.0
4
+ version: 1.30.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Amr Abdel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-08-09 00:00:00.000000000 Z
11
+ date: 2026-09-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -79,6 +79,7 @@ files:
79
79
  - README.md
80
80
  - _data/README.md
81
81
  - _data/ai.yml
82
+ - _data/ai_pricing.yml
82
83
  - _data/authors.yml
83
84
  - _data/backlog.yml
84
85
  - _data/consumers.yml
@@ -92,6 +93,7 @@ files:
92
93
  - _data/i18n/fr.yml
93
94
  - _data/i18n/languages.yml
94
95
  - _data/i18n/manifest.yml
96
+ - _data/ingredient_densities.yml
95
97
  - _data/landing.yml
96
98
  - _data/navigation/README.md
97
99
  - _data/navigation/about.yml
@@ -103,10 +105,12 @@ files:
103
105
  - _data/navigation/quickstart.yml
104
106
  - _data/posts_organization.yml
105
107
  - _data/prerequisites.yml
108
+ - _data/recipe_courses.yml
106
109
  - _data/roadmap.yml
107
110
  - _data/roadmap_plan.yml
108
111
  - _data/routing.yml
109
112
  - _data/series.yml
113
+ - _data/site_builder.yml
110
114
  - _data/statistics_config.yml
111
115
  - _data/theme-manifest.yml
112
116
  - _data/theme_backgrounds.yml
@@ -129,6 +133,7 @@ files:
129
133
  - _includes/components/author-card.html
130
134
  - _includes/components/author-eeat.html
131
135
  - _includes/components/background-customizer.html
136
+ - _includes/components/background-image.html
132
137
  - _includes/components/background-settings.html
133
138
  - _includes/components/book-card.html
134
139
  - _includes/components/book-nav.html
@@ -159,11 +164,25 @@ files:
159
164
  - _includes/components/nav-export.html
160
165
  - _includes/components/nav-overview.html
161
166
  - _includes/components/page-feedback.html
167
+ - _includes/components/page-views-init.html
168
+ - _includes/components/page-views.html
162
169
  - _includes/components/post-card.html
163
170
  - _includes/components/post-type-badge.html
164
171
  - _includes/components/powered-by.html
165
172
  - _includes/components/preview-image.html
166
173
  - _includes/components/quick-index.html
174
+ - _includes/components/recipe-card.html
175
+ - _includes/components/recipe-duration.html
176
+ - _includes/components/recipe-grams.html
177
+ - _includes/components/recipe-index.html
178
+ - _includes/components/recipe-ingredients.html
179
+ - _includes/components/recipe-meta.html
180
+ - _includes/components/recipe-nutrition.html
181
+ - _includes/components/recipe-qty.html
182
+ - _includes/components/recipe-ratio.html
183
+ - _includes/components/recipe-scaler.html
184
+ - _includes/components/recipe-steps.html
185
+ - _includes/components/recipe-temp.html
167
186
  - _includes/components/search-modal.html
168
187
  - _includes/components/searchbar.html
169
188
  - _includes/components/section.html
@@ -226,6 +245,8 @@ files:
226
245
  - _includes/navigation/unified-drawer.html
227
246
  - _includes/obsidian/full-graph.html
228
247
  - _includes/search-data.json
248
+ - _includes/setup/claude-session.html
249
+ - _includes/setup/prereq-checklist.html
229
250
  - _includes/setup/wizard.html
230
251
  - _includes/stats/README.md
231
252
  - _includes/stats/stats-categories.html
@@ -244,6 +265,7 @@ files:
244
265
  - _layouts/book-story.html
245
266
  - _layouts/book.html
246
267
  - _layouts/collection.html
268
+ - _layouts/cookbook.html
247
269
  - _layouts/default.html
248
270
  - _layouts/home.html
249
271
  - _layouts/index.html
@@ -251,6 +273,7 @@ files:
251
273
  - _layouts/news.html
252
274
  - _layouts/note.html
253
275
  - _layouts/notebook.html
276
+ - _layouts/recipe.html
254
277
  - _layouts/root.html
255
278
  - _layouts/search.html
256
279
  - _layouts/section.html
@@ -272,11 +295,15 @@ files:
272
295
  - _sass/components/_content-tables.scss
273
296
  - _sass/components/_cookie-banner.scss
274
297
  - _sass/components/_footer.scss
298
+ - _sass/components/_mermaid.scss
275
299
  - _sass/components/_notes-index.scss
276
300
  - _sass/components/_notes.scss
277
301
  - _sass/components/_page-feedback.scss
302
+ - _sass/components/_page-views.scss
278
303
  - _sass/components/_post-navigation.scss
304
+ - _sass/components/_recipe.scss
279
305
  - _sass/components/_search-modal.scss
306
+ - _sass/components/_setup-wizard.scss
280
307
  - _sass/components/_skeleton.scss
281
308
  - _sass/components/_theme-preview.scss
282
309
  - _sass/components/_ui-enhancements.scss
@@ -310,6 +337,7 @@ files:
310
337
  - _sass/tokens/_index.scss
311
338
  - _sass/tokens/_layers.scss
312
339
  - _sass/tokens/_motion.scss
340
+ - _sass/tokens/_radius.scss
313
341
  - _sass/tokens/_shadow.scss
314
342
  - _sass/tokens/_spacing.scss
315
343
  - _sass/tokens/_typography.scss
@@ -334,7 +362,10 @@ files:
334
362
  - assets/js/code-copy.js
335
363
  - assets/js/config-utility.js
336
364
  - assets/js/docs.min.js
365
+ - assets/js/fleet-feedback-capture.js
366
+ - assets/js/fleet-feedback.js
337
367
  - assets/js/halfmoon.js
368
+ - assets/js/mermaid-diagrams.js
338
369
  - assets/js/modules/navigation/config.js
339
370
  - assets/js/modules/navigation/focus.js
340
371
  - assets/js/modules/navigation/gestures.js
@@ -356,14 +387,17 @@ files:
356
387
  - assets/js/obsidian-local-graph.js
357
388
  - assets/js/obsidian-wiki-links.js
358
389
  - assets/js/page-feedback.js
390
+ - assets/js/page-views.js
359
391
  - assets/js/palette-generator.js
360
392
  - assets/js/particles-source.js
361
393
  - assets/js/particles.js
362
394
  - assets/js/posts-pagination.js
395
+ - assets/js/recipe-scaler.js
363
396
  - assets/js/search-modal.js
364
397
  - assets/js/setup-wizard.js
365
398
  - assets/js/share-actions.js
366
399
  - assets/js/side-bar-folders.js
400
+ - assets/js/site-builder.js
367
401
  - assets/js/skin-editor.js
368
402
  - assets/js/stats.js
369
403
  - assets/js/table-copy.js
@@ -409,6 +443,10 @@ files:
409
443
  - assets/vendor/mathjax/es5/tex-mml-chtml.js
410
444
  - assets/vendor/mermaid/mermaid.min.js
411
445
  - scripts/README.md
446
+ - scripts/ai/README.md
447
+ - scripts/ai/api_call.rb
448
+ - scripts/ai/usage.rb
449
+ - scripts/ai/usage_report.rb
412
450
  - scripts/analyze-commits.sh
413
451
  - scripts/bin/audit-consumer
414
452
  - scripts/bin/build
@@ -420,9 +458,14 @@ files:
420
458
  - scripts/bin/test
421
459
  - scripts/bin/validate
422
460
  - scripts/build
461
+ - scripts/ci/agent_review_result.py
423
462
  - scripts/ci/classify_changes.py
463
+ - scripts/ci/test_agent_review_result.py
464
+ - scripts/ci/test_visual_evidence_autogen.py
465
+ - scripts/ci/visual_evidence_autogen.py
424
466
  - scripts/content-review.rb
425
467
  - scripts/convert-notebooks.sh
468
+ - scripts/design-system-check.rb
426
469
  - scripts/dev/css-diff.sh
427
470
  - scripts/dev/rasterize-svg.js
428
471
  - scripts/dev/shot.js
@@ -525,6 +568,7 @@ files:
525
568
  - scripts/lib/template.sh
526
569
  - scripts/lib/validation.sh
527
570
  - scripts/lib/version.sh
571
+ - scripts/lint-liquid-raw.rb
528
572
  - scripts/lint-pages
529
573
  - scripts/migrate-nav-modes.sh
530
574
  - scripts/migrate.sh
@@ -549,6 +593,7 @@ files:
549
593
  - scripts/test/integration/auto-version
550
594
  - scripts/test/integration/mermaid
551
595
  - scripts/test/lib/run_tests.sh
596
+ - scripts/test/lib/test_agent_review_result.sh
552
597
  - scripts/test/lib/test_analyze_commits.sh
553
598
  - scripts/test/lib/test_changelog.sh
554
599
  - scripts/test/lib/test_content_review.sh
@@ -559,6 +604,7 @@ files:
559
604
  - scripts/test/lib/test_pixelate_images.sh
560
605
  - scripts/test/lib/test_validation.sh
561
606
  - scripts/test/lib/test_version.sh
607
+ - scripts/test/lib/test_visual_evidence_autogen.sh
562
608
  - scripts/test/theme/validate
563
609
  - scripts/translate.rb
564
610
  - scripts/update-preview-paths.sh