Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
cc57cf3
Rearchitects rheo as a plugin system
breezykermo Mar 1, 2026
8c02842
Moves postprocess utilities into the HTML plugin
breezykermo Mar 1, 2026
a9e616c
Flattens formats/common into diagnostics module
breezykermo Mar 1, 2026
aa28778
Moves CompilationDispatch logic to rheo core via PluginConfig
breezykermo Mar 1, 2026
f4b2c89
Removes OutputFormat from public API, replaces with string-based plug…
breezykermo Mar 1, 2026
97fed92
Engine resolves spine and input files; plugins declare inputs declara…
breezykermo Mar 2, 2026
b0c394e
Abstracts web server functionality into plugin via `open` method
breezykermo Mar 2, 2026
a737a1a
Refactors Rheo into Cargo workspace
breezykermo Mar 2, 2026
6dc2e8e
Refactors to crates
breezykermo Mar 2, 2026
1b60947
Moves tests according to new crates structure
breezykermo Mar 2, 2026
5f833b2
Fixes tests
breezykermo Mar 2, 2026
e2f50df
Removes old src
breezykermo Mar 2, 2026
fb1788f
Fixes lints
breezykermo Mar 2, 2026
e3688c7
Eliminates hardcoded format names from cli and core
breezykermo Mar 2, 2026
d053f09
Adds a rheo shim for backwards compatibility / workflow
breezykermo Mar 2, 2026
48a4c7d
Removes main `rheo` crate
breezykermo Mar 7, 2026
fcac0d9
Strengthens core/cli abstractions: generic PluginSection, simplified …
breezykermo Mar 8, 2026
7688254
Allow alternative CSS files to be included in `html` plugin
breezykermo Mar 8, 2026
94c92fd
Removes dead code
breezykermo Mar 8, 2026
37c12b0
Lints
breezykermo Mar 8, 2026
fbf6f44
Adds `copy` option to rheo.toml
breezykermo Mar 8, 2026
9b4ae5b
Adds tests for `copy` feature
breezykermo Mar 8, 2026
bd6e03f
Lints
breezykermo Mar 8, 2026
86db0c5
Adds code review findings as beads issues and updates CLAUDE.md
breezykermo Mar 8, 2026
9fc6f37
Removes redundant compile_new_pdf and RheoCompileOptions
breezykermo Mar 8, 2026
73f6071
Fixes `rheo init` in release binaries
breezykermo Mar 8, 2026
8fe6161
Moves HTML compile utilities to rheo-core, removing cross-plugin EPUB…
breezykermo Mar 8, 2026
c3925cb
RheoCompileOptions.input and .world are Option, None in merged mode
breezykermo Mar 8, 2026
f6883ca
Lints
breezykermo Mar 8, 2026
55a2b01
Resolves five bug-quality issues: consistent spine access in PDF plug…
breezykermo Mar 8, 2026
eb2d006
Defaults `open` behavior to open all files in build directory with
breezykermo Mar 9, 2026
9955887
Watch mode works in new plugin architecture
breezykermo Mar 9, 2026
659d903
Adds bd/jj workflow to CLAUDE.md
breezykermo Mar 9, 2026
38bfe6e
EpubPlugin uses ctx.spine instead of re-reading raw config
breezykermo Mar 9, 2026
4cf5028
Calls plugin apply_defaults even when section partially configured
breezykermo Mar 9, 2026
3a60352
Removes EpubItem::create dead code
breezykermo Mar 9, 2026
2ec1a8c
Replaces plugin expect() with ok_or_else for graceful errors
breezykermo Mar 9, 2026
6c015be
Removes format-specific merge logic from RheoSpine
breezykermo Mar 9, 2026
1eab687
Adds documentation and logging to path_for_id fallback chain
breezykermo Mar 9, 2026
6f00ac3
Fixes glob spine sorting to use full path instead of filename
breezykermo Mar 9, 2026
20857aa
Single-file mode discovers rheo.toml by walking up from file
breezykermo Mar 9, 2026
8a8bfdd
Fixes ctx.inputs to map to destination paths instead of source paths
breezykermo Mar 9, 2026
fff0e01
get_files_for_plugin preserves spine ordering from glob results
breezykermo Mar 9, 2026
70de6d5
Removes anyhow dependency from epub crate
breezykermo Mar 9, 2026
dcf4224
Adds documentation to FormatPlugin trait for plugin authors
breezykermo Mar 9, 2026
d2ee6c9
Adds typst compilation wrappers to rheo_core for plugins
breezykermo Mar 9, 2026
ff0526b
Adds init_templates method to FormatPlugin trait
breezykermo Mar 9, 2026
dd653c5
Adds typst_library() method to FormatPlugin trait for plugin-contribu…
breezykermo Mar 9, 2026
8085998
Standardizes compilation logging between merged and per-file mode
breezykermo Mar 9, 2026
8d1c5b6
Eliminates unnecessary re-scan in check_duplicate_filenames by using …
breezykermo Mar 9, 2026
9209ccd
Lints
breezykermo Mar 9, 2026
12a3f35
Removes orphaned style.css from template in core
breezykermo Mar 9, 2026
e5af54c
Injects target() polyfill for all plugin formats
breezykermo Mar 9, 2026
a2873df
Exports plugin API at rheo_core top level
breezykermo Mar 9, 2026
f43e082
Adds unified compile interface with consistent naming
breezykermo Mar 9, 2026
fd2b5d8
Refactor `UniversalSpine` to better name
breezykermo Mar 9, 2026
2529cd9
Compact CLAUDE.md
breezykermo Mar 9, 2026
7baa689
Renames RheoSpine to BuiltSpine
breezykermo Mar 9, 2026
d5af478
Refines CLAUDE.md for planning with beads
breezykermo Mar 9, 2026
09e383a
Fixes CI workflow bug: removes bogus cargo publish -p rheo
breezykermo Mar 9, 2026
dce8b4b
Bumps workspace version to 0.2.0
breezykermo Mar 9, 2026
3e1d425
Updates hardcoded internal dep versions to 0.2.0 in crate Cargo.toml …
breezykermo Mar 9, 2026
f481023
Updates test fixture rheo.toml files to version 0.2.0
breezykermo Mar 9, 2026
47aecef
Makes BuiltSpine::build() accept SpineOptions instead of config::Spine
breezykermo Mar 9, 2026
f7f3fa5
Renames package::Spine to ReadingOrder in the epub crate
breezykermo Mar 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .abacus/config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
beads:
backend: bd
66 changes: 66 additions & 0 deletions .claude/settings.local.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
{
"permissions": {
"allow": [
"Read(//home/lox/code/book.cftw/**)",
"WebSearch",
"Bash(bd onboard:*)",
"Bash(bd list:*)",
"Bash(tree:*)",
"Bash(bd init:*)",
"Bash(bd create:*)",
"Bash(bd dep add:*)",
"Bash(bd update:*)",
"Bash(bd ready:*)",
"Bash(cargo check:*)",
"Bash(cargo clean:*)",
"Bash(cargo build:*)",
"Bash(cargo run:*)",
"Bash(bd close:*)",
"Bash(typst compile:*)",
"Read(//tmp/**)",
"Bash(cargo doc:*)",
"Read(//home/lox/.cargo/registry/src/**)",
"WebFetch(domain:docs.rs)",
"Read(//home/lox/.cargo/git/checkouts/**)",
"Bash(rustc:*)",
"WebFetch(domain:github.com)",
"Bash(find:*)",
"Bash(typst fonts --help:*)",
"Bash(pdffonts:*)",
"Bash(cargo tree:*)",
"Bash(typst fonts:*)",
"Bash(git clone:*)",
"Bash(cat:*)",
"WebFetch(domain:typst.app)",
"WebFetch(domain:raw.githubusercontent.com)",
"Bash(jj log:*)",
"Bash(jj status:*)",
"Bash(RUST_LOG=rheo=trace cargo run:*)",
"Bash(jj show:*)",
"WebFetch(domain:laurmaedje.github.io)",
"Bash(bd show:*)",
"Bash(jj diff:*)",
"Bash(jj describe:*)",
"Bash(jj new:*)",
"Bash(jj restore:*)",
"Bash(perl -i -pe:*)",
"Bash(cargo test:*)",
"Bash(jj squash:*)",
"Bash(nix build:*)",
"Bash(nix-prefetch-git:*)",
"Bash(nix-prefetch-url:*)",
"Bash(nix hash to-sri:*)",
"Bash(cargo clippy:*)",
"Bash(cargo fmt:*)",
"Bash(gh:*)",
"Bash(xargs cat:*)",
"Bash(jj file list:*)",
"Bash(jj file untrack:*)",
"Bash(just lint:*)",
"Bash(git submodule:*)"
],
"deny": [],
"ask": []
},
"prompt": "Before starting any work, run 'bd onboard' to understand the current project state and available issues."
}
10 changes: 8 additions & 2 deletions .github/workflows/pre-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ jobs:
- name: Setup
uses: ./.github/workflows/setup
- name: Compile binary
run: cargo ${{ matrix.command }} --locked --target ${{ matrix.target }}
run: cargo ${{ matrix.command }} --locked --target ${{ matrix.target }} -p rheo-cli
- name: Compress artifacts (Windows)
if: runner.os == 'Windows'
run: |
Expand All @@ -68,7 +68,13 @@ jobs:
- name: Login to crates.io
run: cargo login ${{ secrets.CRATES_IO_TOKEN }}
- name: Dry run of crate publish
run: cargo publish --workspace --dry-run
run: |
cargo publish -p rheo-core --dry-run --allow-dirty || true
cargo publish -p rheo-html --dry-run --allow-dirty || true
cargo publish -p rheo-pdf --dry-run --allow-dirty || true
cargo publish -p rheo-epub --dry-run --allow-dirty || true
cargo publish -p rheo-cli --dry-run --allow-dirty || true
cargo publish -p rheo --dry-run --allow-dirty || true

check-pr-name:
if: contains(github.event.pull_request.labels.*.name, 'release')
Expand Down
9 changes: 7 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:
- name: Setup
uses: ./.github/workflows/setup
- name: Compile binary
run: cargo build --locked --release --target ${{ matrix.target }}
run: cargo build --locked --release --bin rheo --target ${{ matrix.target }}
- name: Compress artifacts (Windows)
if: runner.os == 'Windows'
run: |
Expand Down Expand Up @@ -62,7 +62,12 @@ jobs:
- name: Login to crates.io
run: cargo login ${{ secrets.CRATES_IO_TOKEN }}
- name: Publish crates
run: cargo publish --workspace
run: |
cargo publish -p rheo-core
cargo publish -p rheo-html
cargo publish -p rheo-pdf
cargo publish -p rheo-epub
cargo publish -p rheo-cli
- name: Add a tag for the merged commit
uses: christophebedard/tag-version-commit@v1
with:
Expand Down
Loading
Loading