scriptorium 0.0.3 → 0.6.1

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 (292) hide show
  1. checksums.yaml +4 -4
  2. data/README.lt3 +324 -0
  3. data/README.md +3155 -1
  4. data/assets/.DS_Store +0 -0
  5. data/assets/README.md +44 -0
  6. data/assets/back-icon.png +0 -0
  7. data/assets/icons/facebook.svg +1 -0
  8. data/assets/icons/github.svg +1 -0
  9. data/assets/icons/instagram.svg +1 -0
  10. data/assets/icons/reddit.svg +1 -0
  11. data/assets/icons/ui/.DS_Store +0 -0
  12. data/assets/icons/ui/back.png +0 -0
  13. data/assets/icons/ui/copy.png +0 -0
  14. data/assets/icons/ui/down.png +0 -0
  15. data/assets/icons/ui/end.png +0 -0
  16. data/assets/icons/ui/exit.png +0 -0
  17. data/assets/icons/ui/foo +10 -0
  18. data/assets/icons/ui/home.png +0 -0
  19. data/assets/icons/ui/left.png +0 -0
  20. data/assets/icons/ui/next.png +0 -0
  21. data/assets/icons/ui/right.png +0 -0
  22. data/assets/icons/ui/start.png +0 -0
  23. data/assets/icons/ui/up.png +0 -0
  24. data/assets/icons/x.svg +1 -0
  25. data/assets/icons/youtube.svg +1 -0
  26. data/assets/samples/placeholder.svg +9 -0
  27. data/assets/themes/standard/favicon.svg +6 -0
  28. data/bin/scriptorium +1511 -0
  29. data/doc/README.txt +6 -0
  30. data/doc/anti-amnesia/20250727-054000-scriptorium-overview.md +95 -0
  31. data/doc/anti-amnesia/20250727-060000-api-design-tui-planning.md +34 -0
  32. data/doc/anti-amnesia/20250727-061000-runeblog-tui-analysis.md +50 -0
  33. data/doc/anti-amnesia/20250727-123000-anti-amnesia-conventions.md +31 -0
  34. data/doc/anti-amnesia/20250727-154000-livetext-plugin-file-stats.md +73 -0
  35. data/doc/anti-amnesia/20250727-172600-cursor-rbenv-ruby-version-mystery.md +64 -0
  36. data/doc/anti-amnesia/20250727-172600-unified-minitest-framework.md +70 -0
  37. data/doc/anti-amnesia/20250727-172900-ai-cognitive-assessment-capabilities.md +40 -0
  38. data/doc/anti-amnesia/20250727-173000-widget-testing-achievement.md +110 -0
  39. data/doc/anti-amnesia/20250727-180000-post-id-num-refactoring.md +73 -0
  40. data/doc/anti-amnesia/20250728-124243-aaa-syntax-clarification.md +46 -0
  41. data/doc/anti-amnesia/20250728-124421-conversation-summary-concise.md +124 -0
  42. data/doc/anti-amnesia/20250729-190000-scriptorium-tui-testing-complete.md +46 -0
  43. data/doc/anti-amnesia/20250729-200000-scriptorium-tui-testing-edit-file-workflow.md +97 -0
  44. data/doc/anti-amnesia/20250729-210000-reddit-autopost-integration-complete.md +158 -0
  45. data/doc/anti-amnesia/20250729-211500-dependency-management-system.md +211 -0
  46. data/doc/anti-amnesia/20250729-213000-python-virtual-environment-setup.md +141 -0
  47. data/doc/anti-amnesia/20250729-214500-theme-management-commands.md +211 -0
  48. data/doc/anti-amnesia/20250729-215000-version-update-to-0.6.0.md +134 -0
  49. data/doc/anti-amnesia/20250729-220000-user-guide-complete.md +41 -0
  50. data/doc/anti-amnesia/20250804-190500-cognitive-loop-bug.md +45 -0
  51. data/doc/anti-amnesia/20250804-190700-anti-amnesia-timestamping-fix.md +30 -0
  52. data/doc/anti-amnesia/20250804-213700-publishing-test-fix.md +49 -0
  53. data/doc/anti-amnesia/20250804-214400-additional-test-fixes.md +46 -0
  54. data/doc/anti-amnesia/20250804-220000-asset-function-logic-clarification.md +41 -0
  55. data/doc/anti-amnesia/20250806-202032-asset-function-logic-clarification.md +41 -0
  56. data/doc/anti-amnesia/20250807-213025.md +116 -0
  57. data/doc/anti-amnesia/20250813-082428-syntax-highlighting-and-navigation-improvements.md +256 -0
  58. data/doc/banner_svg_config.md +114 -0
  59. data/doc/contrib.lt3 +8 -0
  60. data/doc/dependencies.md +281 -0
  61. data/doc/hacker.lt3 +5 -0
  62. data/doc/reddit_credentials_template.json +8 -0
  63. data/doc/reddit_integration.md +207 -0
  64. data/doc/user.lt3 +38 -0
  65. data/doc/user_guide_section_1.md +137 -0
  66. data/doc/user_guide_section_10.md +515 -0
  67. data/doc/user_guide_section_11.md +708 -0
  68. data/doc/user_guide_section_2.md +233 -0
  69. data/doc/user_guide_section_3.md +5 -0
  70. data/doc/user_guide_section_4.md +221 -0
  71. data/doc/user_guide_section_5.md +243 -0
  72. data/doc/user_guide_section_6.md +147 -0
  73. data/doc/user_guide_section_7.md +311 -0
  74. data/doc/user_guide_section_8.md +224 -0
  75. data/doc/user_guide_section_9.md +375 -0
  76. data/doc/userdoc-toc.txt +88 -0
  77. data/lib/rouge/lexers/livetext.rb +74 -0
  78. data/lib/scriptorium/api.rb +640 -0
  79. data/lib/scriptorium/banner_svg.rb +742 -0
  80. data/lib/scriptorium/contract.rb +33 -0
  81. data/lib/scriptorium/exceptions.rb +170 -1
  82. data/lib/scriptorium/helpers.rb +475 -0
  83. data/lib/scriptorium/post.rb +195 -0
  84. data/lib/scriptorium/reddit.rb +83 -0
  85. data/lib/scriptorium/repo.rb +624 -0
  86. data/lib/scriptorium/standard_files.rb +515 -0
  87. data/lib/scriptorium/syntax_highlighter.rb +234 -0
  88. data/lib/scriptorium/theme.rb +179 -0
  89. data/lib/scriptorium/version.rb +2 -2
  90. data/lib/scriptorium/view.rb +976 -0
  91. data/lib/scriptorium/widgets/featured_posts.rb +149 -0
  92. data/lib/scriptorium/widgets/links.rb +112 -0
  93. data/lib/scriptorium/widgets/pages.rb +133 -0
  94. data/lib/scriptorium/widgets/widget.rb +133 -0
  95. data/lib/scriptorium.rb +21 -40
  96. data/lib/skeleton.rb +8 -2
  97. data/scriptorium.gemspec +15 -4
  98. data/test/README.md +69 -0
  99. data/test/all +43 -0
  100. data/test/api_demo.rb +99 -0
  101. data/test/assets/imagenotfound.jpg +0 -0
  102. data/test/assets/images/.DS_Store +0 -0
  103. data/test/assets/images/README.md +27 -0
  104. data/test/assets/images/odd_aspect.png +0 -0
  105. data/test/assets/images/perfect.png +0 -0
  106. data/test/assets/images/small.png +0 -0
  107. data/test/assets/images/tall.png +0 -0
  108. data/test/assets/images/very_tall.png +0 -0
  109. data/test/assets/images/very_wide.png +0 -0
  110. data/test/assets/images/wide.png +0 -0
  111. data/test/assets/testbanner.jpg +0 -0
  112. data/test/banner_svg/simple_helpers.rb +13 -0
  113. data/test/banner_svg/unit.rb +768 -0
  114. data/test/ed_test.rb +204 -0
  115. data/test/integration/cursor_banner_combinations.rb +193 -0
  116. data/test/integration/cursor_banner_features.rb +374 -0
  117. data/test/integration/integration_test.rb +326 -0
  118. data/test/livetext_plugin_test.rb +229 -0
  119. data/test/manual/asset_mgmt.rb +67 -0
  120. data/test/manual/banner-tests/config.txt +3 -0
  121. data/test/manual/banner-tests/index.html +45 -0
  122. data/test/manual/banner-tests/test01.html +58 -0
  123. data/test/manual/banner-tests/test02.html +58 -0
  124. data/test/manual/banner-tests/test03.html +58 -0
  125. data/test/manual/banner-tests/test04.html +65 -0
  126. data/test/manual/banner-tests/test05.html +65 -0
  127. data/test/manual/banner-tests/test06.html +65 -0
  128. data/test/manual/banner-tests/test07.html +65 -0
  129. data/test/manual/banner-tests/test08.html +59 -0
  130. data/test/manual/banner-tests/test09.html +59 -0
  131. data/test/manual/banner-tests/test10.html +59 -0
  132. data/test/manual/banner-tests/test11.html +59 -0
  133. data/test/manual/banner-tests/test12.html +59 -0
  134. data/test/manual/banner-tests/test13.html +59 -0
  135. data/test/manual/banner-tests/test14.html +59 -0
  136. data/test/manual/banner-tests/test15.html +58 -0
  137. data/test/manual/banner-tests/test16.html +58 -0
  138. data/test/manual/banner-tests/test17.html +58 -0
  139. data/test/manual/banner-tests/test18.html +68 -0
  140. data/test/manual/banner-tests/test19.html +68 -0
  141. data/test/manual/banner-tests/test20.html +68 -0
  142. data/test/manual/banner-tests/test21.html +68 -0
  143. data/test/manual/banner-tests/test22.html +68 -0
  144. data/test/manual/banner-tests/test23.html +68 -0
  145. data/test/manual/banner-tests/test24.html +68 -0
  146. data/test/manual/banner-tests/test25.html +67 -0
  147. data/test/manual/banner_environment.rb +192 -0
  148. data/test/manual/deploy_symlink_demo.rb +142 -0
  149. data/test/manual/environment.rb +67 -0
  150. data/test/manual/make_banner.rb +153 -0
  151. data/test/manual/sample_banner_config.txt +12 -0
  152. data/test/manual/symlink_demo.rb +117 -0
  153. data/test/manual/test1.rb +47 -0
  154. data/test/manual/test2.rb +12 -0
  155. data/test/manual/test3.rb +38 -0
  156. data/test/manual/test4.rb +40 -0
  157. data/test/manual/test5.rb +24 -0
  158. data/test/manual/test6.rb +73 -0
  159. data/test/manual/test_banner_combinations.rb +120 -0
  160. data/test/manual/test_banner_features.rb +306 -0
  161. data/test/manual/test_banner_from_file.rb +150 -0
  162. data/test/manual/test_banner_in_header.rb +35 -0
  163. data/test/manual/test_code_highlighting.rb +68 -0
  164. data/test/manual/test_complex_header.rb +74 -0
  165. data/test/manual/test_empty_header.rb +32 -0
  166. data/test/manual/test_radial_custom.rb +58 -0
  167. data/test/manual/test_radial_large_radius.rb +52 -0
  168. data/test/manual/test_svg_debug.rb +47 -0
  169. data/test/manual/test_syntax_highlighting.rb +147 -0
  170. data/test/pages-demo/config/currentview.txt +1 -0
  171. data/test/pages-demo/views/demo/config/bootstrap_css.txt +5 -0
  172. data/test/pages-demo/views/demo/config/bootstrap_js.txt +4 -0
  173. data/test/pages-demo/views/demo/config/common.js +57 -0
  174. data/test/pages-demo/views/demo/config/footer.txt +1 -0
  175. data/test/pages-demo/views/demo/config/global-head.txt +8 -0
  176. data/test/pages-demo/views/demo/config/header.txt +1 -0
  177. data/test/pages-demo/views/demo/config/layout.txt +1 -0
  178. data/test/pages-demo/views/demo/config/left.txt +1 -0
  179. data/test/pages-demo/views/demo/config/main.txt +1 -0
  180. data/test/pages-demo/views/demo/config/right.txt +1 -0
  181. data/test/pages-demo/views/demo/config.txt +3 -0
  182. data/test/pages-demo/views/demo/output/panes/footer.html +1 -0
  183. data/test/pages-demo/views/demo/output/panes/header.html +1 -0
  184. data/test/pages-demo/views/demo/output/panes/left.html +1 -0
  185. data/test/pages-demo/views/demo/output/panes/main.html +1 -0
  186. data/test/pages-demo/views/demo/output/panes/right.html +1 -0
  187. data/test/rubytext/rubytext_comprehensive_test.rb +307 -0
  188. data/test/rubytext/rubytext_demo_test.rb +42 -0
  189. data/test/rubytext/rubytext_testing_guide.md +277 -0
  190. data/test/run_automated_tests.rb +45 -0
  191. data/test/scriptorium-TEST-1754622690-146/config/bootstrap_css.txt +5 -0
  192. data/test/scriptorium-TEST-1754622690-146/config/bootstrap_js.txt +4 -0
  193. data/test/scriptorium-TEST-1754622690-146/config/common.js +57 -0
  194. data/test/scriptorium-TEST-1754622690-146/config/currentview.txt +1 -0
  195. data/test/scriptorium-TEST-1754622690-146/config/global-head.txt +9 -0
  196. data/test/scriptorium-TEST-1754622690-146/config/last_post_num.txt +1 -0
  197. data/test/scriptorium-TEST-1754622690-146/config/os_helpers.rb +4 -0
  198. data/test/scriptorium-TEST-1754622690-146/config/widgets.txt +3 -0
  199. data/test/scriptorium-TEST-1754622690-146/posts/0001/meta.txt +8 -0
  200. data/test/scriptorium-TEST-1754622690-146/posts/0001/source.lt3 +6 -0
  201. data/test/scriptorium-TEST-1754622690-146/themes/standard/README.txt +1 -0
  202. data/test/scriptorium-TEST-1754622690-146/themes/standard/config.txt +1 -0
  203. data/test/scriptorium-TEST-1754622690-146/themes/standard/initial/post.lt3 +12 -0
  204. data/test/scriptorium-TEST-1754622690-146/themes/standard/layout/config/footer.txt +2 -0
  205. data/test/scriptorium-TEST-1754622690-146/themes/standard/layout/config/header.txt +4 -0
  206. data/test/scriptorium-TEST-1754622690-146/themes/standard/layout/config/left.txt +3 -0
  207. data/test/scriptorium-TEST-1754622690-146/themes/standard/layout/config/main.txt +5 -0
  208. data/test/scriptorium-TEST-1754622690-146/themes/standard/layout/config/right.txt +3 -0
  209. data/test/scriptorium-TEST-1754622690-146/themes/standard/layout/gen/text.css +1 -0
  210. data/test/scriptorium-TEST-1754622690-146/themes/standard/layout/layout.txt +5 -0
  211. data/test/scriptorium-TEST-1754622690-146/themes/standard/templates/index.lt3 +1 -0
  212. data/test/scriptorium-TEST-1754622690-146/themes/standard/templates/index_entry.lt3 +14 -0
  213. data/test/scriptorium-TEST-1754622690-146/themes/standard/templates/post.lt3 +13 -0
  214. data/test/scriptorium-TEST-1754622690-146/themes/standard/templates/widget.lt3 +1 -0
  215. data/test/scriptorium-TEST-1754622690-146/views/sample/config/bootstrap_css.txt +5 -0
  216. data/test/scriptorium-TEST-1754622690-146/views/sample/config/bootstrap_js.txt +4 -0
  217. data/test/scriptorium-TEST-1754622690-146/views/sample/config/common.js +57 -0
  218. data/test/scriptorium-TEST-1754622690-146/views/sample/config/deploy.txt +5 -0
  219. data/test/scriptorium-TEST-1754622690-146/views/sample/config/footer.txt +2 -0
  220. data/test/scriptorium-TEST-1754622690-146/views/sample/config/global-head.txt +9 -0
  221. data/test/scriptorium-TEST-1754622690-146/views/sample/config/header.txt +4 -0
  222. data/test/scriptorium-TEST-1754622690-146/views/sample/config/layout.txt +5 -0
  223. data/test/scriptorium-TEST-1754622690-146/views/sample/config/left.txt +3 -0
  224. data/test/scriptorium-TEST-1754622690-146/views/sample/config/main.txt +5 -0
  225. data/test/scriptorium-TEST-1754622690-146/views/sample/config/reddit.txt +10 -0
  226. data/test/scriptorium-TEST-1754622690-146/views/sample/config/right.txt +3 -0
  227. data/test/scriptorium-TEST-1754622690-146/views/sample/config/social.txt +7 -0
  228. data/test/scriptorium-TEST-1754622690-146/views/sample/config/status.txt +7 -0
  229. data/test/scriptorium-TEST-1754622690-146/views/sample/config.txt +3 -0
  230. data/test/scriptorium-TEST-1754622690-146/views/sample/layout/footer.html +3 -0
  231. data/test/scriptorium-TEST-1754622690-146/views/sample/layout/header.html +3 -0
  232. data/test/scriptorium-TEST-1754622690-146/views/sample/layout/left.html +3 -0
  233. data/test/scriptorium-TEST-1754622690-146/views/sample/layout/main.html +3 -0
  234. data/test/scriptorium-TEST-1754622690-146/views/sample/layout/right.html +3 -0
  235. data/test/scriptorium-TEST-1754622690-146/views/sample/output/panes/footer.html +1 -0
  236. data/test/scriptorium-TEST-1754622690-146/views/sample/output/panes/header.html +1 -0
  237. data/test/scriptorium-TEST-1754622690-146/views/sample/output/panes/left.html +1 -0
  238. data/test/scriptorium-TEST-1754622690-146/views/sample/output/panes/main.html +1 -0
  239. data/test/scriptorium-TEST-1754622690-146/views/sample/output/panes/right.html +1 -0
  240. data/test/staging/.DS_Store +0 -0
  241. data/test/syntax_highlighting_test.lt3 +124 -0
  242. data/test/test_helpers.rb +230 -0
  243. data/test/tui_editor_integration_test.rb +296 -0
  244. data/test/tui_integration_test.rb +637 -0
  245. data/test/unit/api.rb +1056 -0
  246. data/test/unit/asset_management.rb +245 -0
  247. data/test/unit/clipboard_test.rb +60 -0
  248. data/test/unit/contract_test.rb +91 -0
  249. data/test/unit/core.rb +857 -0
  250. data/test/unit/deploy_test.rb +187 -0
  251. data/test/unit/gem_asset_management.rb +189 -0
  252. data/test/unit/livetext_basic.rb +69 -0
  253. data/test/unit/livetext_compatibility.rb +89 -0
  254. data/test/unit/post.rb +244 -0
  255. data/test/unit/read_commented_file_test.rb +276 -0
  256. data/test/unit/reddit_test.rb +235 -0
  257. data/test/unit/repo.rb +548 -0
  258. data/test/unit/social_test.rb +369 -0
  259. data/test/unit/symlink_test.rb +213 -0
  260. data/test/unit/view.rb +431 -0
  261. data/test/unit/widgets.rb +669 -0
  262. data/test/wizard_test.rb +123 -0
  263. data/ui/README.md +67 -0
  264. data/ui/common/lib/ui_common.rb +8 -0
  265. data/ui/rubytext/README.md +191 -0
  266. data/ui/rubytext/bin/scriptorium-rubytext +402 -0
  267. data/ui/rubytext/lib/rubytext_ui.rb +300 -0
  268. data/ui/tui/bin/scriptorium +1420 -0
  269. data/ui/tui/test/tui_test.rb +23 -0
  270. data/ui/web/app/app.rb +1378 -0
  271. data/ui/web/app/error_helpers.rb +150 -0
  272. data/ui/web/app/views/advanced_config.erb +190 -0
  273. data/ui/web/app/views/asset_management.erb +589 -0
  274. data/ui/web/app/views/banner_config.erb +200 -0
  275. data/ui/web/app/views/configure_view.erb +401 -0
  276. data/ui/web/app/views/dashboard.erb +162 -0
  277. data/ui/web/app/views/deploy_config.erb +146 -0
  278. data/ui/web/app/views/edit_pages.erb +195 -0
  279. data/ui/web/app/views/edit_post.erb +54 -0
  280. data/ui/web/app/views/error_page.erb +29 -0
  281. data/ui/web/app/views/header_config.erb +155 -0
  282. data/ui/web/app/views/layout_config.erb +147 -0
  283. data/ui/web/app/views/navbar_config.erb +411 -0
  284. data/ui/web/app/views/view_dashboard.erb +138 -0
  285. data/ui/web/bin/scriptorium-web +153 -0
  286. data/ui/web/test/web_basic_test.rb +38 -0
  287. data/ui/web/test_navbar.txt +7 -0
  288. data/ui/web/tmp/web_server.log +5 -0
  289. data/ui/web/tmp/web_server.pid +1 -0
  290. metadata +359 -7
  291. data/lib/scriptorium/engine.rb +0 -22
  292. data/test/engine/unit.rb +0 -44
@@ -0,0 +1,515 @@
1
+ # 10. Troubleshooting
2
+
3
+ Even with the best setup, you may encounter issues while using Scriptorium. This section covers common problems and their solutions, helping you quickly resolve issues and get back to creating content.
4
+
5
+ ## Common Issues
6
+
7
+ ### Site generation problems
8
+
9
+ #### Site won't generate
10
+
11
+ **Symptoms**: Running `scriptorium generate` fails or produces errors.
12
+
13
+ **Possible causes and solutions**:
14
+
15
+ 1. **Missing dependencies**:
16
+ ```bash
17
+ # Check if Ruby and required gems are installed
18
+ ruby --version
19
+ gem list
20
+
21
+ # Reinstall Scriptorium if needed
22
+ gem uninstall scriptorium
23
+ gem install scriptorium
24
+ ```
25
+
26
+ 2. **Corrupted repository**:
27
+ ```bash
28
+ # Check repository integrity
29
+ scriptorium status
30
+
31
+ # If corrupted, restore from backup or recreate
32
+ cp -r .scriptorium .scriptorium.backup
33
+ scriptorium init
34
+ ```
35
+
36
+ 3. **Permission issues**:
37
+ ```bash
38
+ # Check file permissions
39
+ ls -la
40
+
41
+ # Fix permissions if needed
42
+ chmod 755 .
43
+ chmod 644 *.txt *.md *.lt3
44
+ ```
45
+
46
+ #### Posts not appearing
47
+
48
+ **Symptoms**: Posts exist but don't show up on the site.
49
+
50
+ **Solutions**:
51
+
52
+ 1. **Check post status**:
53
+ ```bash
54
+ scriptorium list posts
55
+ ```
56
+
57
+ 2. **Verify post is linked to current view**:
58
+ ```bash
59
+ scriptorium post 001
60
+ # Check the "views" field
61
+ ```
62
+
63
+ 3. **Link post to view if needed**:
64
+ ```bash
65
+ scriptorium link 001
66
+ ```
67
+
68
+ 4. **Regenerate the site**:
69
+ ```bash
70
+ scriptorium generate
71
+ ```
72
+
73
+ #### Images not displaying
74
+
75
+ **Symptoms**: Images appear broken or don't load.
76
+
77
+ **Solutions**:
78
+
79
+ 1. **Check image paths**:
80
+ ```bash
81
+ # Verify image exists
82
+ ls -la assets/images/
83
+
84
+ # Check path in post
85
+ scriptorium edit posts/001.lt3
86
+ ```
87
+
88
+ 2. **Correct image references**:
89
+ ```
90
+ # Use relative paths from the post
91
+ ![Alt text](assets/images/my-image.jpg)
92
+
93
+ # Or absolute paths from site root
94
+ ![Alt text](/assets/images/my-image.jpg)
95
+ ```
96
+
97
+ 3. **Ensure images are in the correct directory**:
98
+ ```bash
99
+ # Move images to assets directory
100
+ mv my-image.jpg assets/images/
101
+ ```
102
+
103
+ ### Widget issues
104
+
105
+ #### Widget not appearing
106
+
107
+ **Symptoms**: Widget is configured but doesn't show on the site.
108
+
109
+ **Solutions**:
110
+
111
+ 1. **Check widget configuration**:
112
+ ```bash
113
+ scriptorium edit widgets/links/list.txt
114
+ # Verify the file exists and has content
115
+ ```
116
+
117
+ 2. **Generate the widget**:
118
+ ```bash
119
+ scriptorium generate widget links
120
+ ```
121
+
122
+ 3. **Check layout configuration**:
123
+ ```bash
124
+ scriptorium edit config/layout.txt
125
+ # Ensure sidebar containers are defined
126
+
127
+ scriptorium edit config/left.txt
128
+ # Ensure widget is referenced
129
+ ```
130
+
131
+ 4. **Regenerate the entire site**:
132
+ ```bash
133
+ scriptorium generate
134
+ ```
135
+
136
+ #### Widget content not updating
137
+
138
+ **Symptoms**: Changes to widget configuration don't appear on the site.
139
+
140
+ **Solutions**:
141
+
142
+ 1. **Regenerate the specific widget**:
143
+ ```bash
144
+ scriptorium generate widget widget-name
145
+ ```
146
+
147
+ 2. **Clear any caching**:
148
+ ```bash
149
+ # Remove generated files
150
+ rm -rf output/
151
+ scriptorium generate
152
+ ```
153
+
154
+ ### Theme and styling issues
155
+
156
+ #### Theme not applying
157
+
158
+ **Symptoms**: Site doesn't use the expected theme.
159
+
160
+ **Solutions**:
161
+
162
+ 1. **Check theme configuration**:
163
+ ```bash
164
+ scriptorium edit config.txt
165
+ # Verify theme: theme-name is set correctly
166
+ ```
167
+
168
+ 2. **Verify theme exists**:
169
+ ```bash
170
+ ls -la themes/
171
+ # Ensure the theme directory exists
172
+ ```
173
+
174
+ 3. **Apply theme explicitly**:
175
+ ```bash
176
+ scriptorium theme theme-name
177
+ ```
178
+
179
+ #### CSS not loading
180
+
181
+ **Symptoms**: Site appears unstyled or with broken styling.
182
+
183
+ **Solutions**:
184
+
185
+ 1. **Check CSS file paths**:
186
+ ```bash
187
+ ls -la themes/standard/layout/gen/
188
+ # Verify CSS files exist
189
+ ```
190
+
191
+ 2. **Regenerate theme**:
192
+ ```bash
193
+ scriptorium generate
194
+ # This should regenerate CSS files
195
+ ```
196
+
197
+ 3. **Check browser cache**:
198
+ - Hard refresh (Ctrl+F5 or Cmd+Shift+R)
199
+ - Clear browser cache
200
+ - Try incognito/private browsing mode
201
+
202
+ ## Dependency Management
203
+
204
+ ### Ruby version issues
205
+
206
+ **Symptoms**: Scriptorium fails to run or has compatibility issues.
207
+
208
+ **Solutions**:
209
+
210
+ 1. **Check Ruby version**:
211
+ ```bash
212
+ ruby --version
213
+ # Scriptorium requires Ruby 2.7 or higher
214
+ ```
215
+
216
+ 2. **Update Ruby if needed**:
217
+ ```bash
218
+ # Using rbenv
219
+ rbenv install 3.2.0
220
+ rbenv global 3.2.0
221
+
222
+ # Using rvm
223
+ rvm install 3.2.0
224
+ rvm use 3.2.0 --default
225
+ ```
226
+
227
+ 3. **Reinstall gems**:
228
+ ```bash
229
+ gem update
230
+ gem install scriptorium
231
+ ```
232
+
233
+ ### Gem conflicts
234
+
235
+ **Symptoms**: Scriptorium conflicts with other Ruby gems.
236
+
237
+ **Solutions**:
238
+
239
+ 1. **Use bundler**:
240
+ ```bash
241
+ # Create Gemfile
242
+ echo 'gem "scriptorium"' > Gemfile
243
+
244
+ # Install with bundler
245
+ bundle install
246
+ bundle exec scriptorium
247
+ ```
248
+
249
+ 2. **Use gem isolation**:
250
+ ```bash
251
+ # Install in user directory
252
+ gem install --user-install scriptorium
253
+ ```
254
+
255
+ 3. **Check gem environment**:
256
+ ```bash
257
+ gem env
258
+ # Verify gem paths and versions
259
+ ```
260
+
261
+ ### System dependencies
262
+
263
+ **Symptoms**: Scriptorium fails due to missing system libraries.
264
+
265
+ **Solutions**:
266
+
267
+ 1. **Install development tools**:
268
+ ```bash
269
+ # Ubuntu/Debian
270
+ sudo apt install build-essential
271
+
272
+ # macOS
273
+ xcode-select --install
274
+
275
+ # CentOS/RHEL
276
+ sudo yum groupinstall "Development Tools"
277
+ ```
278
+
279
+ 2. **Install specific libraries**:
280
+ ```bash
281
+ # Ubuntu/Debian
282
+ sudo apt install libssl-dev libreadline-dev zlib1g-dev
283
+
284
+ # CentOS/RHEL
285
+ sudo yum install openssl-devel readline-devel zlib-devel
286
+ ```
287
+
288
+ ## Error Messages
289
+
290
+ ### Common error messages and solutions
291
+
292
+ #### "Cannot read file: file not found"
293
+
294
+ **Cause**: Scriptorium can't find a required file.
295
+
296
+ **Solution**:
297
+ ```bash
298
+ # Check if file exists
299
+ ls -la path/to/file
300
+
301
+ # Create missing file if needed
302
+ touch path/to/file
303
+
304
+ # Check file permissions
305
+ chmod 644 path/to/file
306
+ ```
307
+
308
+ #### "Cannot build widget: name invalid"
309
+
310
+ **Cause**: Widget name contains invalid characters.
311
+
312
+ **Solution**:
313
+ ```bash
314
+ # Use only lowercase letters, numbers, and hyphens
315
+ # Good: my-widget, links, pages
316
+ # Bad: My_Widget, links!, pages@
317
+ ```
318
+
319
+ #### "Layout has unknown tag"
320
+
321
+ **Cause**: Layout file contains unrecognized container names.
322
+
323
+ **Solution**:
324
+ ```bash
325
+ # Check layout file
326
+ scriptorium edit config/layout.txt
327
+
328
+ # Valid containers: header, main, left, right, footer
329
+ # Remove or correct invalid container names
330
+ ```
331
+
332
+ #### "Theme doesn't exist"
333
+
334
+ **Cause**: Referenced theme is not found.
335
+
336
+ **Solution**:
337
+ ```bash
338
+ # List available themes
339
+ ls -la themes/
340
+
341
+ # Check theme configuration
342
+ scriptorium edit config.txt
343
+
344
+ # Use existing theme or create new one
345
+ scriptorium theme standard
346
+ ```
347
+
348
+ #### "Post not found"
349
+
350
+ **Cause**: Referenced post ID doesn't exist.
351
+
352
+ **Solution**:
353
+ ```bash
354
+ # List all posts
355
+ scriptorium list posts
356
+
357
+ # Check post ID format
358
+ # Posts should be numbered: 001, 002, etc.
359
+
360
+ # Create post if needed
361
+ scriptorium new post "Post Title"
362
+ ```
363
+
364
+ ### Debugging techniques
365
+
366
+ #### Enable verbose output
367
+
368
+ ```bash
369
+ # Run commands with verbose output
370
+ scriptorium generate --verbose
371
+
372
+ # Check for detailed error messages
373
+ scriptorium status --verbose
374
+ ```
375
+
376
+ #### Check log files
377
+
378
+ ```bash
379
+ # Look for error logs
380
+ find . -name "*.log" -exec cat {} \;
381
+
382
+ # Check system logs
383
+ tail -f /var/log/syslog # Linux
384
+ tail -f /var/log/system.log # macOS
385
+ ```
386
+
387
+ #### Test individual components
388
+
389
+ ```bash
390
+ # Test post generation
391
+ scriptorium generate post 001
392
+
393
+ # Test widget generation
394
+ scriptorium generate widget links
395
+
396
+ # Test theme application
397
+ scriptorium theme standard
398
+ ```
399
+
400
+ ## Getting Help
401
+
402
+ ### Self-help resources
403
+
404
+ 1. **Check the documentation**:
405
+ - Review relevant sections of this user guide
406
+ - Check the README file in your Scriptorium installation
407
+ - Look for examples in the test directory
408
+
409
+ 2. **Use built-in help**:
410
+ ```bash
411
+ scriptorium --help
412
+ scriptorium help command-name
413
+ ```
414
+
415
+ 3. **Check the source code**:
416
+ ```bash
417
+ # Find Scriptorium installation
418
+ gem which scriptorium
419
+
420
+ # Explore the source
421
+ ls -la $(gem which scriptorium | sed 's/lib\/scriptorium.rb//')
422
+ ```
423
+
424
+ ### Community resources
425
+
426
+ 1. **GitHub repository**:
427
+ - Check issues for similar problems
428
+ - Review recent commits for fixes
429
+ - Submit new issues for bugs
430
+
431
+ 2. **Documentation**:
432
+ - Check the project wiki
433
+ - Review example configurations
434
+ - Look for community-contributed guides
435
+
436
+ 3. **Forums and discussions**:
437
+ - Search for Scriptorium discussions
438
+ - Ask questions in relevant communities
439
+ - Share solutions with others
440
+
441
+ ### Reporting bugs
442
+
443
+ When reporting bugs, include:
444
+
445
+ 1. **System information**:
446
+ ```bash
447
+ ruby --version
448
+ gem list scriptorium
449
+ uname -a
450
+ ```
451
+
452
+ 2. **Steps to reproduce**:
453
+ - Exact commands run
454
+ - Expected vs. actual behavior
455
+ - Any error messages
456
+
457
+ 3. **Configuration details**:
458
+ - Relevant configuration files
459
+ - Post content (if relevant)
460
+ - Theme and widget setup
461
+
462
+ 4. **Error logs**:
463
+ - Full error messages
464
+ - Stack traces
465
+ - Debug output
466
+
467
+ ### Getting support
468
+
469
+ 1. **Before asking for help**:
470
+ - Try the solutions in this section
471
+ - Search for similar issues
472
+ - Check if the problem is user error
473
+
474
+ 2. **When asking for help**:
475
+ - Be specific about the problem
476
+ - Include relevant error messages
477
+ - Provide system and configuration details
478
+ - Explain what you've already tried
479
+
480
+ 3. **Follow up**:
481
+ - Let people know if their suggestions worked
482
+ - Share solutions that worked for you
483
+ - Help others with similar problems
484
+
485
+ ### Prevention tips
486
+
487
+ 1. **Regular backups**:
488
+ ```bash
489
+ # Backup your Scriptorium repository
490
+ tar -czf scriptorium-backup-$(date +%Y%m%d).tar.gz .
491
+ ```
492
+
493
+ 2. **Version control**:
494
+ ```bash
495
+ # Use git for version control
496
+ git init
497
+ git add .
498
+ git commit -m "Initial commit"
499
+ ```
500
+
501
+ 3. **Test changes**:
502
+ ```bash
503
+ # Test changes before applying
504
+ scriptorium generate --dry-run
505
+
506
+ # Keep a test environment
507
+ cp -r . test-environment
508
+ ```
509
+
510
+ 4. **Document your setup**:
511
+ - Keep notes on your configuration
512
+ - Document customizations
513
+ - Record solutions to problems
514
+
515
+ By following these troubleshooting steps and best practices, you can quickly resolve most issues and maintain a stable Scriptorium installation.