Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
109 commits
Select commit Hold shift + click to select a range
026144e
M10: add multilingual OCR and automatic scan correction
lukashold Oct 11, 2026
74ea39c
M10: crop scanner borders at detected paper edges
lukashold Oct 11, 2026
78a3456
M10: add Italian OCR and accented-text regression coverage
lukashold Oct 11, 2026
5ea94ba
M10: add Latin OCR languages and system-language defaults
lukashold Oct 11, 2026
f807821
M10: add optional cross-platform Hot Folder processing service
lukashold Oct 11, 2026
486653b
M10: version Hot Folder service path dependencies
lukashold Oct 11, 2026
26b989c
Harden Hot Folder supervision, durable recovery and Windows service u…
lukashold Oct 11, 2026
98010e7
M10: preserve existing SCM account during Hot Folder MSI upgrades
lukashold Oct 11, 2026
b112cd8
Keep single-command server acceptance scripts as JSON arrays
lukashold Oct 11, 2026
5ccb499
Gate server acceptance on unchanged source bytes
lukashold Oct 11, 2026
8adf4d3
M10: accept independently quoted MSI service paths
lukashold Oct 11, 2026
a0c6fee
M10: release MSI upgrade-fixture handles and preserve primary test fa…
lukashold Oct 11, 2026
ead3f6f
ci: qualify frozen Hot Folder optimization snapshot
lukashold Oct 12, 2026
37c61f8
CI-only: verify Hot Folder receipt recovery and Windows path boundaries
lukashold Oct 12, 2026
8d625a3
M13: integrate generation-aware writer into Hot Folder
lukashold Oct 13, 2026
116cd60
M13: integrate Hot Folder with current editor APIs
lukashold Oct 13, 2026
fa723c8
M13: integrate native Windows printing into Hot Folder branch
lukashold Oct 13, 2026
16bdf22
M13: fix portable packaging checks and integrate current main
lukashold Oct 14, 2026
81cfc9f
M13: make printer properties fixture withstand delayed discovery
lukashold Oct 14, 2026
9d94090
M13: wait for worker and SCM completion in service lifecycle test
lukashold Oct 14, 2026
2ec3883
M13: integrate 0.8.0 and required Linux oracle checks
lukashold Oct 15, 2026
06aca3d
M13: refresh Hot Folder integration and stabilize cancellation tests
lukashold Oct 15, 2026
fe18b08
M13: fix catalog font coverage and legacy MSI menu cleanup
lukashold Oct 15, 2026
5642fb8
fix(js): give the start-timing test room on slow CI VMs
lukashold Oct 15, 2026
8218c73
M13: merge main f0c9901 into Hot Folder branch
lukashold Oct 16, 2026
f1e100d
M13: print tests wait for the background printer list
lukashold Oct 16, 2026
5c92698
M13: merge main 9e5b70d into Hot Folder branch
lukashold Oct 16, 2026
7075206
M13: synchronize print UI tests and integrate current main
lukashold Oct 16, 2026
b45ce0c
M13: reconcile parallel printer-discovery test fixes
lukashold Oct 16, 2026
0d6fbe8
M13: drop page rasters larger than the GPU texture limit
lukashold Oct 16, 2026
7e440bb
M13: pen-stroke settling test no longer races the render worker
lukashold Oct 16, 2026
b3fe2a7
M13: merge main bc7a12b into Hot Folder branch
lukashold Oct 17, 2026
3246265
M13: accept the zbus 6 consolidation advisories in cargo-deny
lukashold Oct 17, 2026
1f026bd
M13: merge main 54a4542 into Hot Folder branch
lukashold Oct 17, 2026
18cbef6
M13: merge main be0254d into Hot Folder branch
lukashold Oct 17, 2026
5fa9873
M13: merge main 0ac9b84 into Hot Folder branch
lukashold Oct 17, 2026
530449b
M13: merge main 4f6d163 into Hot Folder branch
lukashold Oct 17, 2026
ae0c5e3
M13: merge main 12fcc64 (0.9.0) into Hot Folder branch
lukashold Oct 18, 2026
3e217d9
M13: merge main d8b2705 into Hot Folder branch
lukashold Oct 18, 2026
7829080
M13: merge main 5377a22 into Hot Folder branch
lukashold Oct 18, 2026
435c262
M13: merge main 50f261d into Hot Folder branch
lukashold Oct 18, 2026
1dd6936
M13: address CodeRabbit review on the Hot Folder PR
lukashold Oct 18, 2026
6ad436d
M13: merge main 1952a88 into Hot Folder branch
lukashold Oct 18, 2026
292889b
M13: journal snapshots of any size commit atomically
lukashold Oct 18, 2026
d6d3357
M13: merge main b0e5c6e into Hot Folder branch
lukashold Oct 18, 2026
2a3ff93
M13: merge main 932bf9c into Hot Folder branch
lukashold Oct 18, 2026
77913fa
M13: XFA node-budget test keeps its 5 s deadline only as a hang guard
lukashold Oct 18, 2026
f54de80
M13: merge main 43550c4 into Hot Folder branch
lukashold Oct 19, 2026
e2811b3
M13: merge main 459379e into Hot Folder branch
lukashold Oct 19, 2026
2ceccc6
M13: merge main 3e30645 (0.11.0) into Hot Folder branch
lukashold Oct 21, 2026
adf22bc
M13: merge main 583c1ec into Hot Folder branch
lukashold Oct 21, 2026
9aa0e11
M13: merge main 6dec57b into Hot Folder branch
lukashold Oct 21, 2026
bfaae4b
M13: merge main 6898094 into Hot Folder branch
lukashold Oct 21, 2026
a50445f
M13: merge main e451934 into Hot Folder branch
lukashold Oct 22, 2026
9e8346c
M13: merge main ffaf312 into Hot Folder branch
lukashold Oct 22, 2026
ea83aca
M13: pin Hot Folder workflow actions and require HTTPS for curl
lukashold Oct 22, 2026
9b66787
M13: merge main d676fd4 into Hot Folder branch
lukashold Oct 22, 2026
0bb0d86
M13: merge main 88dad98 into Hot Folder branch
lukashold Oct 22, 2026
ae141f3
M13: merge main 9a0ec645 (integration batch) into Hot Folder branch
lukashold Oct 22, 2026
465d8dd
M13: merge main 95263631 (one test binary per crate) into Hot Folder …
lukashold Oct 22, 2026
729ffc8
M13: merge main d5047aa4 into Hot Folder branch
lukashold Oct 22, 2026
299277e
M13: render cycle tests keep their 10 s deadline only as a hang guard
lukashold Oct 22, 2026
27f4d09
M13: merge main 77480498 into Hot Folder branch
lukashold Oct 22, 2026
242f9e2
M13: merge main 241c5512 into Hot Folder branch
lukashold Oct 22, 2026
fc2c748
M13: merge main 3e968c8a into Hot Folder branch
lukashold Oct 22, 2026
9b55014
M13: control open test waits for the worker by state, not 30 frames
lukashold Oct 22, 2026
3a24808
M13: merge main adea2c90 (0.12.0) into Hot Folder branch
lukashold Oct 22, 2026
7e4ccd5
M13: merge main 0dc77fe4 (0.13.0) into Hot Folder branch
lukashold Oct 23, 2026
5bd00d3
M13: merge main 57e531cc into Hot Folder branch
lukashold Oct 23, 2026
0fde8f4
M13: service probe fails once per request, only after removing it
lukashold Oct 23, 2026
8e02dd7
M13: merge main cf0f8060 into Hot Folder branch
lukashold Oct 23, 2026
76d6c5f
M13: merge main d1756e48 into Hot Folder branch
lukashold Oct 23, 2026
3570c6b
M13: merge main aea5e78e into Hot Folder branch
lukashold Oct 23, 2026
65cecae
M13: merge main c4a6dd6b into Hot Folder branch
lukashold Oct 23, 2026
f202d81
M13: merge main 86730ed1 into Hot Folder branch
lukashold Oct 24, 2026
1546c5d
M13: render pool replacement test holds request A's cancel flag
lukashold Oct 24, 2026
f503894
M13: merge main 0b51b204 into Hot Folder branch
lukashold Oct 24, 2026
7df130d
M13: merge main b75cbd92 into Hot Folder branch
lukashold Oct 24, 2026
af25b50
M13: merge main fc1372a6 into Hot Folder branch
lukashold Oct 24, 2026
99fc90d
M13: macOS pkg lifecycle test installs into /Applications only
lukashold Oct 24, 2026
2cc8632
M13: merge main c28d1c8e into Hot Folder branch
lukashold Oct 25, 2026
29e0dc4
M13: merge main d764a8eb into Hot Folder branch
lukashold Oct 25, 2026
a8fee02
M13: merge main e90f7882 (egui 0.37) into Hot Folder branch
lukashold Oct 25, 2026
525c8b1
M13: merge main 86a4120a into Hot Folder branch
lukashold Oct 25, 2026
e138b80
M13: merge main 833cd63c into Hot Folder branch
lukashold Oct 25, 2026
d1f7790
M13: merge main 83ba2868 into Hot Folder branch
lukashold Oct 25, 2026
6936177
M13: merge main 13bfbd07 into Hot Folder branch
lukashold Oct 25, 2026
b679290
M13: merge main 64e0868b into Hot Folder branch
lukashold Oct 26, 2026
7d216c3
M13: Hot Folder grants no shared LocalService access; an unreachable …
lukashold Oct 26, 2026
813a702
M13: merge main d28d047a (engine lib.rs split) into Hot Folder branch
lukashold Oct 26, 2026
3c5ab10
M13: merge main 1dd2737b (module layout) into Hot Folder branch
lukashold Oct 27, 2026
4b1c4af
M13: merge main 1889690b (ONNX ocrs models) into Hot Folder branch
lukashold Oct 27, 2026
ec2af3c
M13: merge main 9e90b2a5 (craft-ui ComboBox) into Hot Folder branch
lukashold Oct 27, 2026
8ef2561
M13: merge main 5af10276 (per-user or everyone MSI) into Hot Folder b…
lukashold Oct 27, 2026
0189d8e
M13: Windows service lifecycle test finds the MSI's install folder
lukashold Oct 27, 2026
dfe51c5
Merge upstream main: strict workspace Clippy
lukashold Oct 28, 2026
521b21b
Merge remote-tracking branch 'upstream/main' into codex/hot-folder
lukashold Oct 29, 2026
a23b7c8
M13: release and packaging lint use main's shared workflows
lukashold Oct 29, 2026
5da74e3
M13: MCP needs --allow-hot-folder-admin for service and credential ch…
lukashold Oct 29, 2026
ae49f9f
Merge remote-tracking branch 'upstream/main' into codex/hot-folder
lukashold Oct 30, 2026
b66daf3
Merge remote-tracking branch 'upstream/main' into codex/hot-folder
lukashold Oct 30, 2026
3fca376
M11: count a resampled soft mask as saved only when no other image us…
lukashold Oct 30, 2026
647ce3f
Merge remote-tracking branch 'upstream/main' into codex/hot-folder
lukashold Oct 31, 2026
428e639
M10: license-check covers the Hot Folder OCR models
lukashold Oct 31, 2026
f34f315
Merge remote-tracking branch 'upstream/main' into codex/hot-folder
lukashold Oct 31, 2026
6ea46a2
M10: Hot Folder adds no CI; test that input links are not followed
lukashold Nov 1, 2026
0aecc38
Merge remote-tracking branch 'upstream/main' into codex/hot-folder
lukashold Nov 1, 2026
ab7d097
Merge remote-tracking branch 'upstream/main' into codex/hot-folder
lukashold Nov 1, 2026
3cdd484
M10: drop the duplicate pdfcraft-content dependency from the merge
lukashold Nov 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 13 additions & 10 deletions ATTRIBUTION.md

Large diffs are not rendered by default.

57 changes: 48 additions & 9 deletions ATTRIBUTION.toml

Large diffs are not rendered by default.

1,112 changes: 1,002 additions & 110 deletions Cargo.lock

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion LICENSES.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ sha256 = "cd7032ea33b71427f188e34ffb4aee9d6868a57fd196037c5c8b2be03a2a0352"
[[document]]
source = "NOTICE"
destination = "NOTICE"
sha256 = "9f854f730719af962cd840529324d089e05e68a30bd245c50e33f96e009b4314"
sha256 = "fa1175dae1d6ec874df13204697a35b30a92982d2352c945df8f9b7453be2fcc"

[[document]]
source = "assets/app-icon/LICENSE-document.txt"
Expand Down
4 changes: 4 additions & 0 deletions NOTICE
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,10 @@ Vendored (vendor/, patched; see vendor/README.md):
- hayro 0.7.1 — Apache-2.0 OR MIT, Copyright the hayro authors (licence files kept in vendor/hayro).
- hayro-interpret 0.7.0 — Apache-2.0 OR MIT, Copyright the hayro authors (LICENSE-APACHE, LICENSE-MIT kept in vendor/hayro-interpret).

PaddleOCR PP-OCRv6 and PP-LCNet model weights and recognition dictionary
Copyright PaddlePaddle / PaddleOCR contributors. Licensed under Apache-2.0.
Fetched from the authors' pinned releases; see ATTRIBUTION.toml.

Bundled egui font icons

The pinned egui dependency includes egui-icons.ttf, a small subset of John Slegers'
Expand Down
38 changes: 38 additions & 0 deletions ROADMAP.md

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions apps/pdfcraft-cli/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,11 @@ macro_rules! mcp_usage {
() => {
"\
pdfcraft-cli mcp [--root DIR] [--compact] [--automation-read-root DIR] [--automation-write-root DIR]
[--allow-hot-folder-admin]
MCP server on stdin/stdout (opt-in)
--compact lists a core set of tools plus tool_search and tool_call
--allow-hot-folder-admin lets the agent install and control the Hot
Folder system service and change its stored source credentials
--automation-read-root / --automation-write-root confine the files the
agent's tools read (open, combine, import, fonts, certificates…) and
write (save, export, extract, split, reports…) to DIR, links followed;
Expand Down
7 changes: 5 additions & 2 deletions apps/pdfcraft-cli/src/options.rs
Original file line number Diff line number Diff line change
Expand Up @@ -122,8 +122,11 @@ pub(crate) const RUN_OPTIONS: &[OptionSpec] = &[
pub(crate) const UI_OPTIONS: &[OptionSpec] = &[OptionSpec { name: "--control", takes_value: true }, OptionSpec { name: "--out", takes_value: true }];

#[cfg(feature = "mcp")]
pub(crate) const MCP_OPTIONS: &[OptionSpec] =
&[OptionSpec { name: "--root", takes_value: true }, OptionSpec { name: "--compact", takes_value: false }];
pub(crate) const MCP_OPTIONS: &[OptionSpec] = &[
OptionSpec { name: "--root", takes_value: true },
OptionSpec { name: "--compact", takes_value: false },
OptionSpec { name: "--allow-hot-folder-admin", takes_value: false },
];

/// The arguments that are not options or their values. Which tokens are values is the spec's
/// answer: skipping the one after every option made `check-one --edit file.pdf` report "missing
Expand Down
7 changes: 6 additions & 1 deletion apps/pdfcraft-cli/src/run.rs
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,12 @@ pub(crate) fn mcp(args: &[String]) -> Result<(), CliError> {
let args = args.as_slice();
validate_options("mcp", args, MCP_OPTIONS)?;
let compact = args.iter().any(|a| a == "--compact");
let mut auto = automation(args)?;
// An agent may install boot services or change stored credentials only when the user says so.
let hot_folder_admin = args.iter().any(|a| a == "--allow-hot-folder-admin");
let mut auto = automation(args)?.with_hot_folder_admin(hot_folder_admin);
if hot_folder_admin {
let _ = writeln!(std::io::stderr().lock(), "pdfcraft-cli: Hot Folder administration allowed (system service and source credentials)");
}
if let Some(roots) = roots {
let show = |root: Option<&Path>| root.map_or_else(|| "none".to_string(), |r| r.display().to_string());
let _ = writeln!(
Expand Down
38 changes: 38 additions & 0 deletions apps/pdfcraft-hot-folder/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
[package]
name = "pdfcraft-hot-folder"
description = "Optional PdfCraft Hot Folder application and background worker"
version.workspace = true
edition.workspace = true
license.workspace = true

[lints]
workspace = true

[dependencies]
pdfcraft-engine = { workspace = true }
pdfcraft-fonts = { workspace = true }
pdfcraft-hot-folder-service = { path = "../../crates/hot-folder-service", version = "0.16.1" }
eframe = { workspace = true, features = ["default_fonts", "glow", "accesskit", "wayland", "x11"] }
egui = { workspace = true }
# Dropdowns whose menu can grow back while open (the workspace bans craft_ui::ComboBox, egui#5225).
craft-ui = { workspace = true }
rfd = { workspace = true }
serde_json = { workspace = true }
serde = { workspace = true }
sys-locale = "0.3"
chrono = { version = "0.4", default-features = false, features = ["clock"] }
tempfile = "3"
zeroize = "1.8"

[target.'cfg(unix)'.dependencies]
rustix = { version = "1", features = ["process"] }

[target.'cfg(windows)'.dependencies]
processkit = { version = "3.3.4", default-features = false, features = ["limits", "process-control"] }
winsafe = { version = "0.0.29", default-features = false, features = ["kernel"] }

[target.'cfg(not(windows))'.dependencies]
sysinfo = { version = "0.37", default-features = false, features = ["system"] }

[dev-dependencies]
egui_kittest = { workspace = true, features = ["eframe", "wgpu"] }
Loading
Loading