scriptorium 0.0.2 → 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.
- checksums.yaml +4 -4
- data/README.lt3 +324 -0
- data/README.md +3155 -1
- data/assets/.DS_Store +0 -0
- data/assets/README.md +44 -0
- data/assets/back-icon.png +0 -0
- data/assets/icons/facebook.svg +1 -0
- data/assets/icons/github.svg +1 -0
- data/assets/icons/instagram.svg +1 -0
- data/assets/icons/reddit.svg +1 -0
- data/assets/icons/ui/.DS_Store +0 -0
- data/assets/icons/ui/back.png +0 -0
- data/assets/icons/ui/copy.png +0 -0
- data/assets/icons/ui/down.png +0 -0
- data/assets/icons/ui/end.png +0 -0
- data/assets/icons/ui/exit.png +0 -0
- data/assets/icons/ui/foo +10 -0
- data/assets/icons/ui/home.png +0 -0
- data/assets/icons/ui/left.png +0 -0
- data/assets/icons/ui/next.png +0 -0
- data/assets/icons/ui/right.png +0 -0
- data/assets/icons/ui/start.png +0 -0
- data/assets/icons/ui/up.png +0 -0
- data/assets/icons/x.svg +1 -0
- data/assets/icons/youtube.svg +1 -0
- data/assets/samples/placeholder.svg +9 -0
- data/assets/themes/standard/favicon.svg +6 -0
- data/bin/scriptorium +1511 -0
- data/doc/README.txt +6 -0
- data/doc/anti-amnesia/20250727-054000-scriptorium-overview.md +95 -0
- data/doc/anti-amnesia/20250727-060000-api-design-tui-planning.md +34 -0
- data/doc/anti-amnesia/20250727-061000-runeblog-tui-analysis.md +50 -0
- data/doc/anti-amnesia/20250727-123000-anti-amnesia-conventions.md +31 -0
- data/doc/anti-amnesia/20250727-154000-livetext-plugin-file-stats.md +73 -0
- data/doc/anti-amnesia/20250727-172600-cursor-rbenv-ruby-version-mystery.md +64 -0
- data/doc/anti-amnesia/20250727-172600-unified-minitest-framework.md +70 -0
- data/doc/anti-amnesia/20250727-172900-ai-cognitive-assessment-capabilities.md +40 -0
- data/doc/anti-amnesia/20250727-173000-widget-testing-achievement.md +110 -0
- data/doc/anti-amnesia/20250727-180000-post-id-num-refactoring.md +73 -0
- data/doc/anti-amnesia/20250728-124243-aaa-syntax-clarification.md +46 -0
- data/doc/anti-amnesia/20250728-124421-conversation-summary-concise.md +124 -0
- data/doc/anti-amnesia/20250729-190000-scriptorium-tui-testing-complete.md +46 -0
- data/doc/anti-amnesia/20250729-200000-scriptorium-tui-testing-edit-file-workflow.md +97 -0
- data/doc/anti-amnesia/20250729-210000-reddit-autopost-integration-complete.md +158 -0
- data/doc/anti-amnesia/20250729-211500-dependency-management-system.md +211 -0
- data/doc/anti-amnesia/20250729-213000-python-virtual-environment-setup.md +141 -0
- data/doc/anti-amnesia/20250729-214500-theme-management-commands.md +211 -0
- data/doc/anti-amnesia/20250729-215000-version-update-to-0.6.0.md +134 -0
- data/doc/anti-amnesia/20250729-220000-user-guide-complete.md +41 -0
- data/doc/anti-amnesia/20250804-190500-cognitive-loop-bug.md +45 -0
- data/doc/anti-amnesia/20250804-190700-anti-amnesia-timestamping-fix.md +30 -0
- data/doc/anti-amnesia/20250804-213700-publishing-test-fix.md +49 -0
- data/doc/anti-amnesia/20250804-214400-additional-test-fixes.md +46 -0
- data/doc/anti-amnesia/20250804-220000-asset-function-logic-clarification.md +41 -0
- data/doc/anti-amnesia/20250806-202032-asset-function-logic-clarification.md +41 -0
- data/doc/anti-amnesia/20250807-213025.md +116 -0
- data/doc/anti-amnesia/20250813-082428-syntax-highlighting-and-navigation-improvements.md +256 -0
- data/doc/banner_svg_config.md +114 -0
- data/doc/contrib.lt3 +8 -0
- data/doc/dependencies.md +281 -0
- data/doc/hacker.lt3 +5 -0
- data/doc/reddit_credentials_template.json +8 -0
- data/doc/reddit_integration.md +207 -0
- data/doc/user.lt3 +38 -0
- data/doc/user_guide_section_1.md +137 -0
- data/doc/user_guide_section_10.md +515 -0
- data/doc/user_guide_section_11.md +708 -0
- data/doc/user_guide_section_2.md +233 -0
- data/doc/user_guide_section_3.md +5 -0
- data/doc/user_guide_section_4.md +221 -0
- data/doc/user_guide_section_5.md +243 -0
- data/doc/user_guide_section_6.md +147 -0
- data/doc/user_guide_section_7.md +311 -0
- data/doc/user_guide_section_8.md +224 -0
- data/doc/user_guide_section_9.md +375 -0
- data/doc/userdoc-toc.txt +88 -0
- data/lib/rouge/lexers/livetext.rb +74 -0
- data/lib/scriptorium/api.rb +640 -0
- data/lib/scriptorium/banner_svg.rb +742 -0
- data/lib/scriptorium/contract.rb +33 -0
- data/lib/scriptorium/exceptions.rb +174 -0
- data/lib/scriptorium/helpers.rb +475 -0
- data/lib/scriptorium/post.rb +195 -0
- data/lib/scriptorium/reddit.rb +83 -0
- data/lib/scriptorium/repo.rb +624 -0
- data/lib/scriptorium/standard_files.rb +515 -0
- data/lib/scriptorium/syntax_highlighter.rb +234 -0
- data/lib/scriptorium/theme.rb +179 -0
- data/lib/scriptorium/version.rb +2 -2
- data/lib/scriptorium/view.rb +976 -0
- data/lib/scriptorium/widgets/featured_posts.rb +149 -0
- data/lib/scriptorium/widgets/links.rb +112 -0
- data/lib/scriptorium/widgets/pages.rb +133 -0
- data/lib/scriptorium/widgets/widget.rb +133 -0
- data/lib/scriptorium.rb +22 -9
- data/lib/skeleton.rb +11 -2
- data/scriptorium.gemspec +15 -4
- data/test/README.md +69 -0
- data/test/all +43 -0
- data/test/api_demo.rb +99 -0
- data/test/assets/imagenotfound.jpg +0 -0
- data/test/assets/images/.DS_Store +0 -0
- data/test/assets/images/README.md +27 -0
- data/test/assets/images/odd_aspect.png +0 -0
- data/test/assets/images/perfect.png +0 -0
- data/test/assets/images/small.png +0 -0
- data/test/assets/images/tall.png +0 -0
- data/test/assets/images/very_tall.png +0 -0
- data/test/assets/images/very_wide.png +0 -0
- data/test/assets/images/wide.png +0 -0
- data/test/assets/testbanner.jpg +0 -0
- data/test/banner_svg/simple_helpers.rb +13 -0
- data/test/banner_svg/unit.rb +768 -0
- data/test/ed_test.rb +204 -0
- data/test/integration/cursor_banner_combinations.rb +193 -0
- data/test/integration/cursor_banner_features.rb +374 -0
- data/test/integration/integration_test.rb +326 -0
- data/test/livetext_plugin_test.rb +229 -0
- data/test/manual/asset_mgmt.rb +67 -0
- data/test/manual/banner-tests/config.txt +3 -0
- data/test/manual/banner-tests/index.html +45 -0
- data/test/manual/banner-tests/test01.html +58 -0
- data/test/manual/banner-tests/test02.html +58 -0
- data/test/manual/banner-tests/test03.html +58 -0
- data/test/manual/banner-tests/test04.html +65 -0
- data/test/manual/banner-tests/test05.html +65 -0
- data/test/manual/banner-tests/test06.html +65 -0
- data/test/manual/banner-tests/test07.html +65 -0
- data/test/manual/banner-tests/test08.html +59 -0
- data/test/manual/banner-tests/test09.html +59 -0
- data/test/manual/banner-tests/test10.html +59 -0
- data/test/manual/banner-tests/test11.html +59 -0
- data/test/manual/banner-tests/test12.html +59 -0
- data/test/manual/banner-tests/test13.html +59 -0
- data/test/manual/banner-tests/test14.html +59 -0
- data/test/manual/banner-tests/test15.html +58 -0
- data/test/manual/banner-tests/test16.html +58 -0
- data/test/manual/banner-tests/test17.html +58 -0
- data/test/manual/banner-tests/test18.html +68 -0
- data/test/manual/banner-tests/test19.html +68 -0
- data/test/manual/banner-tests/test20.html +68 -0
- data/test/manual/banner-tests/test21.html +68 -0
- data/test/manual/banner-tests/test22.html +68 -0
- data/test/manual/banner-tests/test23.html +68 -0
- data/test/manual/banner-tests/test24.html +68 -0
- data/test/manual/banner-tests/test25.html +67 -0
- data/test/manual/banner_environment.rb +192 -0
- data/test/manual/deploy_symlink_demo.rb +142 -0
- data/test/manual/environment.rb +67 -0
- data/test/manual/make_banner.rb +153 -0
- data/test/manual/sample_banner_config.txt +12 -0
- data/test/manual/symlink_demo.rb +117 -0
- data/test/manual/test1.rb +47 -0
- data/test/manual/test2.rb +12 -0
- data/test/manual/test3.rb +38 -0
- data/test/manual/test4.rb +40 -0
- data/test/manual/test5.rb +24 -0
- data/test/manual/test6.rb +73 -0
- data/test/manual/test_banner_combinations.rb +120 -0
- data/test/manual/test_banner_features.rb +306 -0
- data/test/manual/test_banner_from_file.rb +150 -0
- data/test/manual/test_banner_in_header.rb +35 -0
- data/test/manual/test_code_highlighting.rb +68 -0
- data/test/manual/test_complex_header.rb +74 -0
- data/test/manual/test_empty_header.rb +32 -0
- data/test/manual/test_radial_custom.rb +58 -0
- data/test/manual/test_radial_large_radius.rb +52 -0
- data/test/manual/test_svg_debug.rb +47 -0
- data/test/manual/test_syntax_highlighting.rb +147 -0
- data/test/pages-demo/config/currentview.txt +1 -0
- data/test/pages-demo/views/demo/config/bootstrap_css.txt +5 -0
- data/test/pages-demo/views/demo/config/bootstrap_js.txt +4 -0
- data/test/pages-demo/views/demo/config/common.js +57 -0
- data/test/pages-demo/views/demo/config/footer.txt +1 -0
- data/test/pages-demo/views/demo/config/global-head.txt +8 -0
- data/test/pages-demo/views/demo/config/header.txt +1 -0
- data/test/pages-demo/views/demo/config/layout.txt +1 -0
- data/test/pages-demo/views/demo/config/left.txt +1 -0
- data/test/pages-demo/views/demo/config/main.txt +1 -0
- data/test/pages-demo/views/demo/config/right.txt +1 -0
- data/test/pages-demo/views/demo/config.txt +3 -0
- data/test/pages-demo/views/demo/output/panes/footer.html +1 -0
- data/test/pages-demo/views/demo/output/panes/header.html +1 -0
- data/test/pages-demo/views/demo/output/panes/left.html +1 -0
- data/test/pages-demo/views/demo/output/panes/main.html +1 -0
- data/test/pages-demo/views/demo/output/panes/right.html +1 -0
- data/test/rubytext/rubytext_comprehensive_test.rb +307 -0
- data/test/rubytext/rubytext_demo_test.rb +42 -0
- data/test/rubytext/rubytext_testing_guide.md +277 -0
- data/test/run_automated_tests.rb +45 -0
- data/test/scriptorium-TEST-1754622690-146/config/bootstrap_css.txt +5 -0
- data/test/scriptorium-TEST-1754622690-146/config/bootstrap_js.txt +4 -0
- data/test/scriptorium-TEST-1754622690-146/config/common.js +57 -0
- data/test/scriptorium-TEST-1754622690-146/config/currentview.txt +1 -0
- data/test/scriptorium-TEST-1754622690-146/config/global-head.txt +9 -0
- data/test/scriptorium-TEST-1754622690-146/config/last_post_num.txt +1 -0
- data/test/scriptorium-TEST-1754622690-146/config/os_helpers.rb +4 -0
- data/test/scriptorium-TEST-1754622690-146/config/widgets.txt +3 -0
- data/test/scriptorium-TEST-1754622690-146/posts/0001/meta.txt +8 -0
- data/test/scriptorium-TEST-1754622690-146/posts/0001/source.lt3 +6 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/README.txt +1 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/config.txt +1 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/initial/post.lt3 +12 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/layout/config/footer.txt +2 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/layout/config/header.txt +4 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/layout/config/left.txt +3 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/layout/config/main.txt +5 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/layout/config/right.txt +3 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/layout/gen/text.css +1 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/layout/layout.txt +5 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/templates/index.lt3 +1 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/templates/index_entry.lt3 +14 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/templates/post.lt3 +13 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/templates/widget.lt3 +1 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/bootstrap_css.txt +5 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/bootstrap_js.txt +4 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/common.js +57 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/deploy.txt +5 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/footer.txt +2 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/global-head.txt +9 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/header.txt +4 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/layout.txt +5 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/left.txt +3 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/main.txt +5 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/reddit.txt +10 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/right.txt +3 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/social.txt +7 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/status.txt +7 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config.txt +3 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/layout/footer.html +3 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/layout/header.html +3 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/layout/left.html +3 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/layout/main.html +3 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/layout/right.html +3 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/output/panes/footer.html +1 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/output/panes/header.html +1 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/output/panes/left.html +1 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/output/panes/main.html +1 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/output/panes/right.html +1 -0
- data/test/staging/.DS_Store +0 -0
- data/test/syntax_highlighting_test.lt3 +124 -0
- data/test/test_helpers.rb +230 -0
- data/test/tui_editor_integration_test.rb +296 -0
- data/test/tui_integration_test.rb +637 -0
- data/test/unit/api.rb +1056 -0
- data/test/unit/asset_management.rb +245 -0
- data/test/unit/clipboard_test.rb +60 -0
- data/test/unit/contract_test.rb +91 -0
- data/test/unit/core.rb +857 -0
- data/test/unit/deploy_test.rb +187 -0
- data/test/unit/gem_asset_management.rb +189 -0
- data/test/unit/livetext_basic.rb +69 -0
- data/test/unit/livetext_compatibility.rb +89 -0
- data/test/unit/post.rb +244 -0
- data/test/unit/read_commented_file_test.rb +276 -0
- data/test/unit/reddit_test.rb +235 -0
- data/test/unit/repo.rb +548 -0
- data/test/unit/social_test.rb +369 -0
- data/test/unit/symlink_test.rb +213 -0
- data/test/unit/view.rb +431 -0
- data/test/unit/widgets.rb +669 -0
- data/test/wizard_test.rb +123 -0
- data/ui/README.md +67 -0
- data/ui/common/lib/ui_common.rb +8 -0
- data/ui/rubytext/README.md +191 -0
- data/ui/rubytext/bin/scriptorium-rubytext +402 -0
- data/ui/rubytext/lib/rubytext_ui.rb +300 -0
- data/ui/tui/bin/scriptorium +1420 -0
- data/ui/tui/test/tui_test.rb +23 -0
- data/ui/web/app/app.rb +1378 -0
- data/ui/web/app/error_helpers.rb +150 -0
- data/ui/web/app/views/advanced_config.erb +190 -0
- data/ui/web/app/views/asset_management.erb +589 -0
- data/ui/web/app/views/banner_config.erb +200 -0
- data/ui/web/app/views/configure_view.erb +401 -0
- data/ui/web/app/views/dashboard.erb +162 -0
- data/ui/web/app/views/deploy_config.erb +146 -0
- data/ui/web/app/views/edit_pages.erb +195 -0
- data/ui/web/app/views/edit_post.erb +54 -0
- data/ui/web/app/views/error_page.erb +29 -0
- data/ui/web/app/views/header_config.erb +155 -0
- data/ui/web/app/views/layout_config.erb +147 -0
- data/ui/web/app/views/navbar_config.erb +411 -0
- data/ui/web/app/views/view_dashboard.erb +138 -0
- data/ui/web/bin/scriptorium-web +153 -0
- data/ui/web/test/web_basic_test.rb +38 -0
- data/ui/web/test_navbar.txt +7 -0
- data/ui/web/tmp/web_server.log +5 -0
- data/ui/web/tmp/web_server.pid +1 -0
- metadata +360 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: da71d5ae85fa244b22a3d7a1ab3868eed54e00c31251cc44eedd06a9763c435c
|
4
|
+
data.tar.gz: 2dd03471532a10fb6a770ac042df3c2ad773eab34dc5f7577ae485841764c802
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3f91b41df916bb566d83b231cefc24e3ca3a848b4dfa3111a84cfa8835ab5b59148a2ce2299cbba5889a13870c020211cdbd79b0de9f35c264ee260de643aed8
|
7
|
+
data.tar.gz: 9905b42d39ccf0841d29ab3aa9efe4183855147883e2cdce83346afa6b4db6b33c079fb0196578a701285eaacbb23305c401088c950350d566be6273cd5f4559
|
data/README.lt3
CHANGED
@@ -0,0 +1,324 @@
|
|
1
|
+
*Scriptorium is a major refactoring (rewrite) of Runeblog, which had an unwieldy and
|
2
|
+
fragile code base. The plan now is to develop with more of a test-first approach (and
|
3
|
+
with AI support from ChatGPT and Gemini).
|
4
|
+
|
5
|
+
<hr>
|
6
|
+
|
7
|
+
|
8
|
+
.h2 Scriptorium Project Summary
|
9
|
+
.h3 ChatGPT checkpoint - July 8, 2025
|
10
|
+
_[This file was a ChatGPT summary hand-edited and reuploaded to improve memory/response.]
|
11
|
+
|
12
|
+
.h4 1. Purpose, Assumptions, and Philosophy
|
13
|
+
.list
|
14
|
+
Scriptorium is a minimalist, Ruby-based blogging engine and static site generator, serving as a clean-slate rewrite of the older Runeblog project.
|
15
|
+
Avoids complexity, external dependencies, and hidden magic.
|
16
|
+
Designed for users who prefer plain text and transparent, hackable systems.
|
17
|
+
Useful first for the software author, then hackers who blog, then possibly others
|
18
|
+
.end
|
19
|
+
|
20
|
+
.h4 2. Technologies Used (or Avoided)
|
21
|
+
.list
|
22
|
+
Ruby is the primary language.
|
23
|
+
Minitest for testing.
|
24
|
+
Livetext for content and templating.
|
25
|
+
Avoids YAML, Liquid, databases, JS frameworks.
|
26
|
+
Filesystem used in lieu of a database
|
27
|
+
.end
|
28
|
+
|
29
|
+
.h4 3. Understanding Livetext
|
30
|
+
.list
|
31
|
+
Lightweight markup processor.
|
32
|
+
Supports variable injection, custom directives, and flexible transformation to HTML.
|
33
|
+
Also supports: include, raw copy, function definitions
|
34
|
+
There is a plan for a later rewrite
|
35
|
+
.end
|
36
|
+
|
37
|
+
.h4 4. General Terminology
|
38
|
+
.list
|
39
|
+
*containers Named layout parts of a view’s front page (e.g., header, main, right, footer), generated from corresponding config text files.
|
40
|
+
*post A finalized blog entry with metadata, body content, and a unique ID; stored in the posts/ directory.
|
41
|
+
*draft A Livetext (.lt3) source file in the drafts/ directory, created before a post is finished.
|
42
|
+
*repo A Scriptorium::Repo instance representing a blog workspace, with standard directory structure, config files, and one or more views.
|
43
|
+
*view A named subset of the repo that acts as a blog/blog-like publication; includes its own output/, config/, and staging/ directories.
|
44
|
+
*theme A named collection of templates (HTML and Livetext) that define the look and layout of posts and index pages for a view.
|
45
|
+
*slug A URL-safe, hyphenated version of a post’s title, prefixed with its 4-digit ID, e.g., 0001-my-title.html.
|
46
|
+
*output A view-local directory holding generated HTML files, including post HTML and containers like header.html and main.html.
|
47
|
+
*meta.txt A key-value file under posts/NNNN/ holding post metadata (title, slug, pubdate, views, etc.).
|
48
|
+
*post_index A generated file in output/ listing recent posts in a view; usually post_index.html, composed of index-entry templates.
|
49
|
+
.end
|
50
|
+
|
51
|
+
.h4 5. Git Repository Structure
|
52
|
+
<pre>
|
53
|
+
.
|
54
|
+
├── README.md
|
55
|
+
├── doc
|
56
|
+
├── lib
|
57
|
+
│ ├── scriptorium
|
58
|
+
│ │ ├── exceptions.rb
|
59
|
+
│ │ ├── helpers.rb
|
60
|
+
│ │ ├── layout.rb
|
61
|
+
│ │ ├── post.rb
|
62
|
+
│ │ ├── repo.rb
|
63
|
+
│ │ ├── standard_files.rb
|
64
|
+
│ │ ├── theme.rb
|
65
|
+
│ │ ├── version.rb
|
66
|
+
│ │ └── view.rb
|
67
|
+
│ ├── scriptorium.rb
|
68
|
+
│ └── skeleton.rb
|
69
|
+
├── scriptorium.gemspec
|
70
|
+
├── test
|
71
|
+
│ ├── integration
|
72
|
+
│ │ └── integration_test.rb
|
73
|
+
│ ├── post
|
74
|
+
│ │ └── unit.rb
|
75
|
+
│ ├── repo
|
76
|
+
│ │ └── unit.rb
|
77
|
+
│ └── test_helpers.rb
|
78
|
+
└── themes
|
79
|
+
└── standard
|
80
|
+
├── README.txt
|
81
|
+
├── assets
|
82
|
+
├── config.txt
|
83
|
+
├── header
|
84
|
+
├── initial
|
85
|
+
│ └── post.lt3
|
86
|
+
├── layout
|
87
|
+
│ ├── config
|
88
|
+
│ │ ├── footer.txt
|
89
|
+
│ │ ├── header.txt
|
90
|
+
│ │ ├── left.txt
|
91
|
+
│ │ ├── main.txt
|
92
|
+
│ │ └── right.txt
|
93
|
+
│ ├── gen
|
94
|
+
│ │ ├── layout.css
|
95
|
+
│ │ ├── layout.html
|
96
|
+
│ │ └── text.css
|
97
|
+
│ └── layout.txt
|
98
|
+
└── templates
|
99
|
+
├── index.lt3
|
100
|
+
├── post.lt3
|
101
|
+
└── widget.lt3
|
102
|
+
</pre>
|
103
|
+
|
104
|
+
|
105
|
+
.h4 6. Blog Repository Structure
|
106
|
+
_[This is a snapshot of a test run.]
|
107
|
+
<pre>
|
108
|
+
|
109
|
+
./scriptorium-TEST
|
110
|
+
├── assets
|
111
|
+
├── config
|
112
|
+
│ ├── currentview.txt
|
113
|
+
│ └── last_post_num.txt
|
114
|
+
├── drafts
|
115
|
+
├── posts
|
116
|
+
│ ├── 0001
|
117
|
+
│ │ ├── assets
|
118
|
+
│ │ ├── body.html
|
119
|
+
│ │ ├── draft.lt3
|
120
|
+
│ │ └── meta.txt
|
121
|
+
│ ├── 0002
|
122
|
+
│ │ ├── assets
|
123
|
+
│ │ ├── body.html
|
124
|
+
│ │ ├── draft.lt3
|
125
|
+
│ │ └── meta.txt
|
126
|
+
│ ├── 0003
|
127
|
+
│ │ ├── assets
|
128
|
+
│ │ ├── body.html
|
129
|
+
│ │ ├── draft.lt3
|
130
|
+
│ │ └── meta.txt
|
131
|
+
│ ├── 0004
|
132
|
+
│ │ ├── assets
|
133
|
+
│ │ ├── body.html
|
134
|
+
│ │ ├── draft.lt3
|
135
|
+
│ │ └── meta.txt
|
136
|
+
│ ├── 0005
|
137
|
+
│ │ ├── assets
|
138
|
+
│ │ ├── body.html
|
139
|
+
│ │ ├── draft.lt3
|
140
|
+
│ │ └── meta.txt
|
141
|
+
│ ├── 0006
|
142
|
+
│ │ ├── assets
|
143
|
+
│ │ ├── body.html
|
144
|
+
│ │ ├── draft.lt3
|
145
|
+
│ │ └── meta.txt
|
146
|
+
│ ├── 0007
|
147
|
+
│ │ ├── assets
|
148
|
+
│ │ ├── body.html
|
149
|
+
│ │ ├── draft.lt3
|
150
|
+
│ │ └── meta.txt
|
151
|
+
│ ├── 0008
|
152
|
+
│ │ ├── assets
|
153
|
+
│ │ ├── body.html
|
154
|
+
│ │ ├── draft.lt3
|
155
|
+
│ │ └── meta.txt
|
156
|
+
│ ├── 0009
|
157
|
+
│ │ ├── assets
|
158
|
+
│ │ ├── body.html
|
159
|
+
│ │ ├── draft.lt3
|
160
|
+
│ │ └── meta.txt
|
161
|
+
│ ├── 0010
|
162
|
+
│ │ ├── assets
|
163
|
+
│ │ ├── body.html
|
164
|
+
│ │ ├── draft.lt3
|
165
|
+
│ │ └── meta.txt
|
166
|
+
│ ├── 0011
|
167
|
+
│ │ ├── assets
|
168
|
+
│ │ ├── body.html
|
169
|
+
│ │ ├── draft.lt3
|
170
|
+
│ │ └── meta.txt
|
171
|
+
│ ├── 0012
|
172
|
+
│ │ ├── assets
|
173
|
+
│ │ ├── body.html
|
174
|
+
│ │ ├── draft.lt3
|
175
|
+
│ │ └── meta.txt
|
176
|
+
│ └── 0013
|
177
|
+
│ ├── assets
|
178
|
+
│ └── draft.lt3
|
179
|
+
├── themes
|
180
|
+
│ └── standard
|
181
|
+
│ ├── README.txt
|
182
|
+
│ ├── assets
|
183
|
+
│ ├── config.txt
|
184
|
+
│ ├── header
|
185
|
+
│ ├── initial
|
186
|
+
│ │ └── post.lt3
|
187
|
+
│ ├── layout
|
188
|
+
│ │ ├── config
|
189
|
+
│ │ │ ├── footer.txt
|
190
|
+
│ │ │ ├── header.txt
|
191
|
+
│ │ │ ├── left.txt
|
192
|
+
│ │ │ ├── main.txt
|
193
|
+
│ │ │ └── right.txt
|
194
|
+
│ │ ├── gen
|
195
|
+
│ │ │ ├── layout.css
|
196
|
+
│ │ │ ├── layout.html
|
197
|
+
│ │ │ └── text.css
|
198
|
+
│ │ └── layout.txt
|
199
|
+
│ └── templates
|
200
|
+
│ ├── index.lt3
|
201
|
+
│ ├── index_entry.lt3
|
202
|
+
│ ├── post.lt3
|
203
|
+
│ └── widget.lt3
|
204
|
+
└── views
|
205
|
+
├── blog1
|
206
|
+
│ ├── config
|
207
|
+
│ │ ├── footer.txt
|
208
|
+
│ │ ├── header.txt
|
209
|
+
│ │ ├── layout.txt
|
210
|
+
│ │ ├── left.txt
|
211
|
+
│ │ ├── main.txt
|
212
|
+
│ │ └── right.txt
|
213
|
+
│ ├── config.txt
|
214
|
+
│ ├── layout
|
215
|
+
│ │ ├── footer.html
|
216
|
+
│ │ ├── header.html
|
217
|
+
│ │ ├── left.html
|
218
|
+
│ │ ├── main.html
|
219
|
+
│ │ └── right.html
|
220
|
+
│ ├── output
|
221
|
+
│ │ ├── panes
|
222
|
+
│ │ │ ├── footer.html
|
223
|
+
│ │ │ ├── header.html
|
224
|
+
│ │ │ ├── left.html
|
225
|
+
│ │ │ ├── main.html
|
226
|
+
│ │ │ └── right.html
|
227
|
+
│ │ └── posts
|
228
|
+
│ │ ├── 0001-random-post-7270.html
|
229
|
+
│ │ ├── 0004-random-post-466.html
|
230
|
+
│ │ ├── 0006-random-post-1685.html
|
231
|
+
│ │ ├── 0007-random-post-6949.html
|
232
|
+
│ │ ├── 0008-random-post-5311.html
|
233
|
+
│ │ ├── 0009-random-post-6420.html
|
234
|
+
│ │ └── 0010-random-post-4555.html
|
235
|
+
│ └── staging
|
236
|
+
.
|
237
|
+
. (skipped blog2 and blog3 for brevity)
|
238
|
+
.
|
239
|
+
└── sample
|
240
|
+
├── config
|
241
|
+
│ ├── footer.txt
|
242
|
+
│ ├── header.txt
|
243
|
+
│ ├── layout.txt
|
244
|
+
│ ├── left.txt
|
245
|
+
│ ├── main.txt
|
246
|
+
│ └── right.txt
|
247
|
+
├── config.txt
|
248
|
+
├── layout
|
249
|
+
│ ├── footer.html
|
250
|
+
│ ├── header.html
|
251
|
+
│ ├── left.html
|
252
|
+
│ ├── main.html
|
253
|
+
│ └── right.html
|
254
|
+
├── output
|
255
|
+
│ ├── panes
|
256
|
+
│ │ ├── footer.html
|
257
|
+
│ │ ├── header.html
|
258
|
+
│ │ ├── left.html
|
259
|
+
│ │ ├── main.html
|
260
|
+
│ │ └── right.html
|
261
|
+
│ └── posts
|
262
|
+
└── staging
|
263
|
+
</pre>
|
264
|
+
|
265
|
+
.h4 7. State of Progress
|
266
|
+
.list
|
267
|
+
Basic classes in place: Repo, View, Post, Theme, etc.
|
268
|
+
Unit tests for Repo (22 assertions) and Post (70 assertions)
|
269
|
+
Integration tests (257 assertions)
|
270
|
+
Can create a blog repo, views, posts
|
271
|
+
Theme "standard" is honored
|
272
|
+
Can generate a rudimentary "front page"
|
273
|
+
Working on: <head> generation, Bootstrap integration, etc.
|
274
|
+
.end
|
275
|
+
|
276
|
+
.h4 8. Near-term high-level to-do list
|
277
|
+
_[This is planned by August 31, 2025.]
|
278
|
+
.list
|
279
|
+
Improved handling of blog header and <head> tag
|
280
|
+
Support for top-level menu
|
281
|
+
Improvements in Livetext blog plugin
|
282
|
+
Widget base class
|
283
|
+
Widgets: At least Featured, Links, and Pages
|
284
|
+
Isolate and codify all of API
|
285
|
+
Interactive (text) UI
|
286
|
+
Setup/config wizard(s)
|
287
|
+
Basic user docs
|
288
|
+
.end
|
289
|
+
|
290
|
+
.h4 9. Notes on future to-do items
|
291
|
+
.list
|
292
|
+
Improve the customized scriptorium plugin for Livetext
|
293
|
+
Define header far better (title, banner, navbar...)
|
294
|
+
Implement deployment, preview, and live view
|
295
|
+
Add concept of theme components (like mini-themes)
|
296
|
+
Support theme cloning
|
297
|
+
Support single-page post for viewing in isolation
|
298
|
+
Support permalinks
|
299
|
+
Support redirection (if needed) as posts change
|
300
|
+
Add user interfaces
|
301
|
+
- simple command line calls
|
302
|
+
- interactive text-oriented (TUI)
|
303
|
+
- curses-like TUI based on RubyText
|
304
|
+
- web-based (on localhost)
|
305
|
+
Add "wizards" for each UI: startup, add view, theming...
|
306
|
+
Add actual AI assistant
|
307
|
+
Codify a widget interface
|
308
|
+
Code widgets
|
309
|
+
- Highlights (list featured posts)
|
310
|
+
- Search (search within this blog/view)
|
311
|
+
- Tags (a tag cloud)
|
312
|
+
- Links (external links manager)
|
313
|
+
- Calendar (posts by year/month/day)
|
314
|
+
- Pages (local static pages unrelated to blog posts)
|
315
|
+
Add some level of support for Markdown (for others, not me)
|
316
|
+
Possibly add Atom/RSS support
|
317
|
+
Integrate Bootstrap calls as needed
|
318
|
+
Add support for reposting to Facebook, X (others?)
|
319
|
+
Add support for discussion threads on a subreddit
|
320
|
+
Create documentation:
|
321
|
+
- User level (incl. basic Livetext, usage, theme creation)
|
322
|
+
- Project contributor level
|
323
|
+
- Widget creator level
|
324
|
+
.end
|