scrybe-cli 0.6.2__tar.gz → 0.7.0__tar.gz
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.
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/Cargo.lock +56 -14
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/Cargo.toml +15 -13
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/PKG-INFO +14 -3
- {scrybe_cli-0.6.2/scrybe-cli → scrybe_cli-0.7.0}/README.md +13 -2
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/pyproject.toml +1 -1
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-cli/Cargo.toml +8 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0/scrybe-cli}/README.md +13 -2
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-cli/src/lib.rs +74 -2
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-cli/src/main.rs +192 -21
- scrybe_cli-0.7.0/scrybe-cli/src/shell_command.rs +782 -0
- scrybe_cli-0.7.0/scrybe-cli/src/viewer.rs +283 -0
- scrybe_cli-0.7.0/scrybe-cli/tests/fixtures/render-default.html +12 -0
- scrybe_cli-0.7.0/scrybe-cli/tests/fixtures/render-input.md +7 -0
- scrybe_cli-0.7.0/scrybe-cli/tests/render_profile.rs +98 -0
- scrybe_cli-0.7.0/scrybe-core/build.rs +96 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-core/src/ast.rs +94 -4
- scrybe_cli-0.7.0/scrybe-core/src/build_info.rs +33 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-core/src/document.rs +7 -6
- scrybe_cli-0.7.0/scrybe-core/src/frontmatter.rs +117 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-core/src/lib.rs +2 -0
- scrybe_cli-0.7.0/scrybe-core/tests/ast_frontmatter.rs +78 -0
- scrybe_cli-0.7.0/scrybe-core/tests/frontmatter_fixtures.rs +66 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-mcp-server/README.md +1 -1
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-mcp-server/pyproject.toml +1 -1
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-mcp-server/src/server.rs +19 -5
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-mcp-server/tests/docx_packaging.rs +4 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-mcp-server/tests/mcp_contract.rs +40 -24
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-mermaid/pyproject.toml +1 -1
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-mermaid/src/codec.rs +22 -0
- scrybe_cli-0.7.0/scrybe-ratatui/Cargo.toml +44 -0
- scrybe_cli-0.7.0/scrybe-ratatui/README.md +50 -0
- scrybe_cli-0.7.0/scrybe-ratatui/src/lib.rs +50 -0
- scrybe_cli-0.7.0/scrybe-ratatui/src/render.rs +1004 -0
- scrybe_cli-0.7.0/scrybe-ratatui/src/view.rs +646 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-render/Cargo.toml +1 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-render/src/html.rs +132 -75
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-render/src/lib.rs +3 -2
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-render/src/math.rs +18 -17
- scrybe_cli-0.7.0/scrybe-render/src/site.rs +130 -0
- scrybe_cli-0.7.0/scrybe-render/tests/fixtures/site/production.html +50 -0
- scrybe_cli-0.7.0/scrybe-render/tests/fixtures/site/production.md +55 -0
- scrybe_cli-0.7.0/scrybe-render/tests/frontmatter_fixtures.rs +39 -0
- scrybe_cli-0.7.0/scrybe-render/tests/render_correctness.rs +121 -0
- scrybe_cli-0.7.0/scrybe-render/tests/render_profiles.rs +176 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-rpc/Cargo.toml +6 -2
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-rpc/README.md +8 -7
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-rpc/src/client.rs +199 -16
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-rpc/src/lib.rs +120 -12
- scrybe_cli-0.7.0/scrybe-rpc/src/transport.rs +44 -0
- scrybe_cli-0.7.0/scrybe-rpc/tests/windows_named_pipe.rs +150 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-rpc/tests/wire_contract.rs +2 -2
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-tools/Cargo.toml +1 -2
- scrybe_cli-0.7.0/scrybe-tools/src/autolaunch.rs +228 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-tools/src/figures.rs +317 -10
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-tools/src/lib.rs +29 -4
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-tools/src/tools/tabs.rs +22 -2
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-tools/src/tools/ui.rs +254 -11
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/python/scrybe_cli/__init__.py +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/python/scrybe_cli/py.typed +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-cli/src/rpc_client.rs +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-cli/src/wrap.rs +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-cli/tests/rpc_socket.rs +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-core/Cargo.toml +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-core/README.md +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-core/src/change.rs +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-core/src/content.rs +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-core/src/error.rs +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-core/src/plugin.rs +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-core/src/workspace.rs +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-mcp-server/Cargo.toml +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-mcp-server/python/scrybe_mcp_server/__init__.py +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-mcp-server/python/scrybe_mcp_server/py.typed +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-mcp-server/src/lib.rs +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-mcp-server/src/main.rs +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-mcp-server/tests/fixtures/call_invalid_args.json +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-mcp-server/tests/fixtures/call_lint_success.json +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-mcp-server/tests/fixtures/call_no_live_app.json +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-mcp-server/tests/fixtures/call_remote_app_error.json +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-mcp-server/tests/fixtures/call_unknown_tool.json +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-mcp-server/tests/live_app_open.rs +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-mermaid/Cargo.toml +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-mermaid/README.md +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-mermaid/python/scrybe_mermaid/__init__.py +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-mermaid/python/scrybe_mermaid/py.typed +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-mermaid/src/error.rs +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-mermaid/src/lib.rs +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-mermaid/tests/test_python_quickstart.py +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-mermaid-render/Cargo.toml +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-mermaid-render/README.md +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-mermaid-render/examples/provenance_drive.rs +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-mermaid-render/src/lib.rs +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-render/README.md +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-render/src/mermaid.rs +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-render/src/theme.rs +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-render/src/themes/dark.css +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-render/src/themes/default.css +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-render/src/themes/solarized.css +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-tools/README.md +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-tools/examples/render_drive.rs +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-tools/src/lint.rs +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-tools/src/schema.rs +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-tools/src/tools/editor.rs +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-tools/src/tools/export.rs +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-tools/src/tools/lint.rs +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-tools/src/tools/mermaid.rs +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-tools/src/tools/mod.rs +0 -0
- {scrybe_cli-0.6.2 → scrybe_cli-0.7.0}/scrybe-tools/src/tools/render.rs +0 -0
|
@@ -1060,6 +1060,12 @@ dependencies = [
|
|
|
1060
1060
|
"syn 2.0.117",
|
|
1061
1061
|
]
|
|
1062
1062
|
|
|
1063
|
+
[[package]]
|
|
1064
|
+
name = "doctest-file"
|
|
1065
|
+
version = "1.1.1"
|
|
1066
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1067
|
+
checksum = "c2db04e74f0a9a93103b50e90b96024c9b2bdca8bce6a632ec71b88736d3d359"
|
|
1068
|
+
|
|
1063
1069
|
[[package]]
|
|
1064
1070
|
name = "dom_query"
|
|
1065
1071
|
version = "0.27.0"
|
|
@@ -2200,6 +2206,19 @@ dependencies = [
|
|
|
2200
2206
|
"syn 2.0.117",
|
|
2201
2207
|
]
|
|
2202
2208
|
|
|
2209
|
+
[[package]]
|
|
2210
|
+
name = "interprocess"
|
|
2211
|
+
version = "2.4.3"
|
|
2212
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2213
|
+
checksum = "798de1433ba514cc6c04c4144c2469af81396e4906195218737c776d47769572"
|
|
2214
|
+
dependencies = [
|
|
2215
|
+
"doctest-file",
|
|
2216
|
+
"libc",
|
|
2217
|
+
"recvmsg",
|
|
2218
|
+
"widestring",
|
|
2219
|
+
"windows-sys 0.61.2",
|
|
2220
|
+
]
|
|
2221
|
+
|
|
2203
2222
|
[[package]]
|
|
2204
2223
|
name = "ipnet"
|
|
2205
2224
|
version = "2.12.0"
|
|
@@ -3588,6 +3607,12 @@ version = "0.6.2"
|
|
|
3588
3607
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3589
3608
|
checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539"
|
|
3590
3609
|
|
|
3610
|
+
[[package]]
|
|
3611
|
+
name = "recvmsg"
|
|
3612
|
+
version = "1.0.0"
|
|
3613
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3614
|
+
checksum = "d3edd4d5d42c92f0a659926464d4cce56b562761267ecf0f469d85b7de384175"
|
|
3615
|
+
|
|
3591
3616
|
[[package]]
|
|
3592
3617
|
name = "redox_syscall"
|
|
3593
3618
|
version = "0.5.18"
|
|
@@ -3915,7 +3940,7 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
|
|
|
3915
3940
|
|
|
3916
3941
|
[[package]]
|
|
3917
3942
|
name = "scrybe-app"
|
|
3918
|
-
version = "0.
|
|
3943
|
+
version = "0.7.0"
|
|
3919
3944
|
dependencies = [
|
|
3920
3945
|
"anyhow",
|
|
3921
3946
|
"dirs 5.0.1",
|
|
@@ -3943,25 +3968,29 @@ dependencies = [
|
|
|
3943
3968
|
|
|
3944
3969
|
[[package]]
|
|
3945
3970
|
name = "scrybe-cli"
|
|
3946
|
-
version = "0.
|
|
3971
|
+
version = "0.7.0"
|
|
3947
3972
|
dependencies = [
|
|
3948
3973
|
"anyhow",
|
|
3949
3974
|
"clap",
|
|
3975
|
+
"crossterm",
|
|
3976
|
+
"ratatui",
|
|
3950
3977
|
"scrybe-core",
|
|
3951
3978
|
"scrybe-mcp-server",
|
|
3952
3979
|
"scrybe-mermaid",
|
|
3980
|
+
"scrybe-ratatui",
|
|
3953
3981
|
"scrybe-render",
|
|
3954
3982
|
"scrybe-rpc",
|
|
3955
3983
|
"scrybe-tools",
|
|
3956
3984
|
"serde",
|
|
3957
3985
|
"serde_json",
|
|
3986
|
+
"tempfile",
|
|
3958
3987
|
"tracing",
|
|
3959
3988
|
"tracing-subscriber",
|
|
3960
3989
|
]
|
|
3961
3990
|
|
|
3962
3991
|
[[package]]
|
|
3963
3992
|
name = "scrybe-core"
|
|
3964
|
-
version = "0.
|
|
3993
|
+
version = "0.7.0"
|
|
3965
3994
|
dependencies = [
|
|
3966
3995
|
"anyhow",
|
|
3967
3996
|
"blake3",
|
|
@@ -3978,7 +4007,7 @@ dependencies = [
|
|
|
3978
4007
|
|
|
3979
4008
|
[[package]]
|
|
3980
4009
|
name = "scrybe-mcp-client"
|
|
3981
|
-
version = "0.
|
|
4010
|
+
version = "0.7.0"
|
|
3982
4011
|
dependencies = [
|
|
3983
4012
|
"anyhow",
|
|
3984
4013
|
"dirs 5.0.1",
|
|
@@ -3993,7 +4022,7 @@ dependencies = [
|
|
|
3993
4022
|
|
|
3994
4023
|
[[package]]
|
|
3995
4024
|
name = "scrybe-mcp-server"
|
|
3996
|
-
version = "0.
|
|
4025
|
+
version = "0.7.0"
|
|
3997
4026
|
dependencies = [
|
|
3998
4027
|
"anyhow",
|
|
3999
4028
|
"clap",
|
|
@@ -4013,7 +4042,7 @@ dependencies = [
|
|
|
4013
4042
|
|
|
4014
4043
|
[[package]]
|
|
4015
4044
|
name = "scrybe-mermaid"
|
|
4016
|
-
version = "0.
|
|
4045
|
+
version = "0.7.0"
|
|
4017
4046
|
dependencies = [
|
|
4018
4047
|
"anyhow",
|
|
4019
4048
|
"base64 0.22.1",
|
|
@@ -4030,7 +4059,7 @@ dependencies = [
|
|
|
4030
4059
|
|
|
4031
4060
|
[[package]]
|
|
4032
4061
|
name = "scrybe-mermaid-render"
|
|
4033
|
-
version = "0.
|
|
4062
|
+
version = "0.7.0"
|
|
4034
4063
|
dependencies = [
|
|
4035
4064
|
"anyhow",
|
|
4036
4065
|
"hex",
|
|
@@ -4040,7 +4069,7 @@ dependencies = [
|
|
|
4040
4069
|
|
|
4041
4070
|
[[package]]
|
|
4042
4071
|
name = "scrybe-py"
|
|
4043
|
-
version = "0.
|
|
4072
|
+
version = "0.7.0"
|
|
4044
4073
|
dependencies = [
|
|
4045
4074
|
"anyhow",
|
|
4046
4075
|
"pyo3",
|
|
@@ -4054,18 +4083,21 @@ dependencies = [
|
|
|
4054
4083
|
|
|
4055
4084
|
[[package]]
|
|
4056
4085
|
name = "scrybe-ratatui"
|
|
4057
|
-
version = "0.
|
|
4086
|
+
version = "0.7.0"
|
|
4058
4087
|
dependencies = [
|
|
4059
4088
|
"ratatui",
|
|
4060
4089
|
"scrybe-core",
|
|
4090
|
+
"syntect",
|
|
4091
|
+
"unicode-width 0.2.0",
|
|
4061
4092
|
]
|
|
4062
4093
|
|
|
4063
4094
|
[[package]]
|
|
4064
4095
|
name = "scrybe-render"
|
|
4065
|
-
version = "0.
|
|
4096
|
+
version = "0.7.0"
|
|
4066
4097
|
dependencies = [
|
|
4067
4098
|
"anyhow",
|
|
4068
4099
|
"pulldown-cmark",
|
|
4100
|
+
"regex",
|
|
4069
4101
|
"scrybe-core",
|
|
4070
4102
|
"serde",
|
|
4071
4103
|
"syntect",
|
|
@@ -4075,18 +4107,21 @@ dependencies = [
|
|
|
4075
4107
|
|
|
4076
4108
|
[[package]]
|
|
4077
4109
|
name = "scrybe-rpc"
|
|
4078
|
-
version = "0.
|
|
4110
|
+
version = "0.7.0"
|
|
4079
4111
|
dependencies = [
|
|
4112
|
+
"interprocess",
|
|
4080
4113
|
"serde",
|
|
4081
4114
|
"serde_json",
|
|
4082
4115
|
"thiserror 2.0.18",
|
|
4116
|
+
"windows-sys 0.61.2",
|
|
4083
4117
|
]
|
|
4084
4118
|
|
|
4085
4119
|
[[package]]
|
|
4086
4120
|
name = "scrybe-tools"
|
|
4087
|
-
version = "0.
|
|
4121
|
+
version = "0.7.0"
|
|
4088
4122
|
dependencies = [
|
|
4089
4123
|
"anyhow",
|
|
4124
|
+
"base64 0.22.1",
|
|
4090
4125
|
"scrybe-core",
|
|
4091
4126
|
"scrybe-mermaid",
|
|
4092
4127
|
"scrybe-mermaid-render",
|
|
@@ -4102,11 +4137,12 @@ dependencies = [
|
|
|
4102
4137
|
|
|
4103
4138
|
[[package]]
|
|
4104
4139
|
name = "scrybe-tui"
|
|
4105
|
-
version = "0.
|
|
4140
|
+
version = "0.7.0"
|
|
4106
4141
|
dependencies = [
|
|
4107
4142
|
"anyhow",
|
|
4108
4143
|
"clap",
|
|
4109
4144
|
"crossterm",
|
|
4145
|
+
"open",
|
|
4110
4146
|
"ratatui",
|
|
4111
4147
|
"scrybe-core",
|
|
4112
4148
|
"scrybe-ratatui",
|
|
@@ -4114,7 +4150,7 @@ dependencies = [
|
|
|
4114
4150
|
|
|
4115
4151
|
[[package]]
|
|
4116
4152
|
name = "scrybe-vcs"
|
|
4117
|
-
version = "0.
|
|
4153
|
+
version = "0.7.0"
|
|
4118
4154
|
dependencies = [
|
|
4119
4155
|
"anyhow",
|
|
4120
4156
|
"chrono",
|
|
@@ -6036,6 +6072,12 @@ dependencies = [
|
|
|
6036
6072
|
"winsafe",
|
|
6037
6073
|
]
|
|
6038
6074
|
|
|
6075
|
+
[[package]]
|
|
6076
|
+
name = "widestring"
|
|
6077
|
+
version = "1.2.1"
|
|
6078
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
6079
|
+
checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471"
|
|
6080
|
+
|
|
6039
6081
|
[[package]]
|
|
6040
6082
|
name = "winapi"
|
|
6041
6083
|
version = "0.3.9"
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
[workspace]
|
|
2
2
|
resolver = "2"
|
|
3
|
-
members = ["scrybe-core", "scrybe-render", "scrybe-mcp-server", "scrybe-mermaid", "scrybe-mermaid-render", "scrybe-cli", "scrybe-rpc", "scrybe-tools"]
|
|
3
|
+
members = ["scrybe-core", "scrybe-render", "scrybe-mcp-server", "scrybe-mermaid", "scrybe-mermaid-render", "scrybe-cli", "scrybe-rpc", "scrybe-tools", "scrybe-ratatui"]
|
|
4
4
|
|
|
5
5
|
# Shared package metadata. Every member inherits the version via
|
|
6
6
|
# `version.workspace = true`, so a release bumps all crates in lock-step
|
|
7
7
|
# from one place. (See RELEASE.md; issue #128.)
|
|
8
8
|
[workspace.package]
|
|
9
|
-
version = "0.
|
|
9
|
+
version = "0.7.0"
|
|
10
10
|
|
|
11
11
|
# Workspace-level dependency pins keep all crates in lock-step.
|
|
12
12
|
[workspace.dependencies]
|
|
@@ -45,6 +45,8 @@ clap = { version = "4", features = ["derive", "env"] }
|
|
|
45
45
|
ratatui = "0.29"
|
|
46
46
|
crossterm = "0.28"
|
|
47
47
|
which = "7"
|
|
48
|
+
interprocess = "2.4.3"
|
|
49
|
+
windows-sys = { version = "0.61.2", features = ["Win32_Foundation", "Win32_System_Pipes"] }
|
|
48
50
|
|
|
49
51
|
# PNG / image codec (scrybe-mermaid iTXt)
|
|
50
52
|
png = "0.17"
|
|
@@ -60,17 +62,17 @@ tauri-build = { version = "2", features = [] }
|
|
|
60
62
|
# Internal crates — version pinned (=) so cargo publish accepts the
|
|
61
63
|
# tarballs (path-deps without versions are rejected at publish time).
|
|
62
64
|
# Workspace lock-step: every release bumps all members together.
|
|
63
|
-
scrybe-core = { path = "scrybe-core", version = "=0.
|
|
64
|
-
scrybe-render = { path = "scrybe-render", version = "=0.
|
|
65
|
-
scrybe-mcp-client = { path = "scrybe-mcp-client", version = "=0.
|
|
66
|
-
scrybe-mcp-server = { path = "scrybe-mcp-server", version = "=0.
|
|
67
|
-
scrybe-mermaid = { path = "scrybe-mermaid", version = "=0.
|
|
68
|
-
scrybe-vcs = { path = "scrybe-vcs", version = "=0.
|
|
69
|
-
scrybe-py = { path = "scrybe-py", version = "=0.
|
|
70
|
-
scrybe-rpc = { path = "scrybe-rpc", version = "=0.
|
|
71
|
-
scrybe-tools = { path = "scrybe-tools", version = "=0.
|
|
72
|
-
scrybe-ratatui = { path = "scrybe-ratatui", version = "=0.
|
|
73
|
-
scrybe-mermaid-render = { path = "scrybe-mermaid-render", version = "=0.
|
|
65
|
+
scrybe-core = { path = "scrybe-core", version = "=0.7.0" }
|
|
66
|
+
scrybe-render = { path = "scrybe-render", version = "=0.7.0" }
|
|
67
|
+
scrybe-mcp-client = { path = "scrybe-mcp-client", version = "=0.7.0" }
|
|
68
|
+
scrybe-mcp-server = { path = "scrybe-mcp-server", version = "=0.7.0" }
|
|
69
|
+
scrybe-mermaid = { path = "scrybe-mermaid", version = "=0.7.0" }
|
|
70
|
+
scrybe-vcs = { path = "scrybe-vcs", version = "=0.7.0" }
|
|
71
|
+
scrybe-py = { path = "scrybe-py", version = "=0.7.0" }
|
|
72
|
+
scrybe-rpc = { path = "scrybe-rpc", version = "=0.7.0" }
|
|
73
|
+
scrybe-tools = { path = "scrybe-tools", version = "=0.7.0" }
|
|
74
|
+
scrybe-ratatui = { path = "scrybe-ratatui", version = "=0.7.0" }
|
|
75
|
+
scrybe-mermaid-render = { path = "scrybe-mermaid-render", version = "=0.7.0" }
|
|
74
76
|
|
|
75
77
|
# Adopted pure-Rust Mermaid → SVG renderer (#132 spike-Pass, 2026-07-17).
|
|
76
78
|
# SVG-only by default here; the `png` feature (resvg) is opted into per-crate.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: scrybe-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.7.0
|
|
4
4
|
Summary: Scrybe CLI — headless Markdown render/lint/mermaid tool (binary wheel)
|
|
5
5
|
Home-Page: https://github.com/hartsock/scrybe
|
|
6
6
|
License: Apache-2.0
|
|
@@ -21,7 +21,7 @@ the outside, Rust on the inside.
|
|
|
21
21
|
|
|
22
22
|
## What it does
|
|
23
23
|
|
|
24
|
-
Provides a `scrybe` command-line tool with
|
|
24
|
+
Provides a `scrybe` command-line tool with a set of subcommands plus a
|
|
25
25
|
bare invocation shortcut. The binary is self-contained — no Python runtime
|
|
26
26
|
required at execution time when installed from the wheel.
|
|
27
27
|
|
|
@@ -36,7 +36,8 @@ also the launcher for the Tauri GUI app: `scrybe file.md` locates the
|
|
|
36
36
|
|
|
37
37
|
| Command | Description |
|
|
38
38
|
|---------|-------------|
|
|
39
|
-
| `scrybe render [FILE]` | Render Markdown to HTML (stdin → stdout by default); `--theme`, `--full-html`, `--output` |
|
|
39
|
+
| `scrybe render [FILE]` | Render Markdown to HTML (stdin → stdout by default); `--theme`, `--profile app\|site` (default `app`), `--body-only`, `--full-html`, `--output` |
|
|
40
|
+
| `scrybe view FILE` | View a Markdown file in the terminal (single-pane TUI): j/k scroll, g/G top/bottom, q quits; requires a TTY (exits 2 in a pipe) |
|
|
40
41
|
| `scrybe lint FILE` | Word count, headings, code blocks, broken links; `--json` for machine output; exits 1 if broken links found |
|
|
41
42
|
| `scrybe mermaid embed PNG SOURCE` | Embed Mermaid source into PNG iTXt chunk |
|
|
42
43
|
| `scrybe mermaid extract PNG` | Print embedded Mermaid source, verifying its SHA-256 by default; exit 2 if tampered, `--unverified` to skip the check (forensics) |
|
|
@@ -70,3 +71,13 @@ pip install target/wheels/scrybe_cli-*.whl
|
|
|
70
71
|
cargo test -p scrybe-cli
|
|
71
72
|
```
|
|
72
73
|
|
|
74
|
+
### Site HTML fragments
|
|
75
|
+
|
|
76
|
+
Use `scrybe render --profile site --body-only` with Markdown on stdin to write a
|
|
77
|
+
body-only HTML fragment on stdout for a site converter. The site profile enables
|
|
78
|
+
smart punctuation and keeps math delimiters literal. `--body-only` omits the theme
|
|
79
|
+
`<style>` block and conflicts with `--full-html`. Site uses unhighlighted,
|
|
80
|
+
production-shaped code blocks, ordinary Mermaid fences, automatic heading IDs,
|
|
81
|
+
and namespaced footnote IDs. HTML remains escaped. Without the new flags, output is
|
|
82
|
+
unchanged: the app dialect with theme CSS prepended. Unknown profiles are rejected.
|
|
83
|
+
|
|
@@ -11,7 +11,7 @@ the outside, Rust on the inside.
|
|
|
11
11
|
|
|
12
12
|
## What it does
|
|
13
13
|
|
|
14
|
-
Provides a `scrybe` command-line tool with
|
|
14
|
+
Provides a `scrybe` command-line tool with a set of subcommands plus a
|
|
15
15
|
bare invocation shortcut. The binary is self-contained — no Python runtime
|
|
16
16
|
required at execution time when installed from the wheel.
|
|
17
17
|
|
|
@@ -26,7 +26,8 @@ also the launcher for the Tauri GUI app: `scrybe file.md` locates the
|
|
|
26
26
|
|
|
27
27
|
| Command | Description |
|
|
28
28
|
|---------|-------------|
|
|
29
|
-
| `scrybe render [FILE]` | Render Markdown to HTML (stdin → stdout by default); `--theme`, `--full-html`, `--output` |
|
|
29
|
+
| `scrybe render [FILE]` | Render Markdown to HTML (stdin → stdout by default); `--theme`, `--profile app\|site` (default `app`), `--body-only`, `--full-html`, `--output` |
|
|
30
|
+
| `scrybe view FILE` | View a Markdown file in the terminal (single-pane TUI): j/k scroll, g/G top/bottom, q quits; requires a TTY (exits 2 in a pipe) |
|
|
30
31
|
| `scrybe lint FILE` | Word count, headings, code blocks, broken links; `--json` for machine output; exits 1 if broken links found |
|
|
31
32
|
| `scrybe mermaid embed PNG SOURCE` | Embed Mermaid source into PNG iTXt chunk |
|
|
32
33
|
| `scrybe mermaid extract PNG` | Print embedded Mermaid source, verifying its SHA-256 by default; exit 2 if tampered, `--unverified` to skip the check (forensics) |
|
|
@@ -59,3 +60,13 @@ pip install target/wheels/scrybe_cli-*.whl
|
|
|
59
60
|
# Run tests
|
|
60
61
|
cargo test -p scrybe-cli
|
|
61
62
|
```
|
|
63
|
+
|
|
64
|
+
### Site HTML fragments
|
|
65
|
+
|
|
66
|
+
Use `scrybe render --profile site --body-only` with Markdown on stdin to write a
|
|
67
|
+
body-only HTML fragment on stdout for a site converter. The site profile enables
|
|
68
|
+
smart punctuation and keeps math delimiters literal. `--body-only` omits the theme
|
|
69
|
+
`<style>` block and conflicts with `--full-html`. Site uses unhighlighted,
|
|
70
|
+
production-shaped code blocks, ordinary Mermaid fences, automatic heading IDs,
|
|
71
|
+
and namespaced footnote IDs. HTML remains escaped. Without the new flags, output is
|
|
72
|
+
unchanged: the app dialect with theme CSS prepended. Unknown profiles are rejected.
|
|
@@ -25,12 +25,20 @@ scrybe-mermaid.workspace = true
|
|
|
25
25
|
scrybe-mcp-server.workspace = true
|
|
26
26
|
scrybe-rpc.workspace = true
|
|
27
27
|
scrybe-tools.workspace = true
|
|
28
|
+
# `scrybe view` (#162) renders through the published rendering crate —
|
|
29
|
+
# scrybe-cli must NOT depend on the unpublished scrybe-tui (#194).
|
|
30
|
+
scrybe-ratatui.workspace = true
|
|
28
31
|
anyhow.workspace = true
|
|
29
32
|
serde.workspace = true
|
|
30
33
|
serde_json.workspace = true
|
|
31
34
|
tracing.workspace = true
|
|
32
35
|
tracing-subscriber.workspace = true
|
|
33
36
|
clap.workspace = true
|
|
37
|
+
ratatui.workspace = true
|
|
38
|
+
crossterm.workspace = true
|
|
34
39
|
|
|
35
40
|
[lints]
|
|
36
41
|
workspace = true
|
|
42
|
+
|
|
43
|
+
[dev-dependencies]
|
|
44
|
+
tempfile = "3"
|
|
@@ -11,7 +11,7 @@ the outside, Rust on the inside.
|
|
|
11
11
|
|
|
12
12
|
## What it does
|
|
13
13
|
|
|
14
|
-
Provides a `scrybe` command-line tool with
|
|
14
|
+
Provides a `scrybe` command-line tool with a set of subcommands plus a
|
|
15
15
|
bare invocation shortcut. The binary is self-contained — no Python runtime
|
|
16
16
|
required at execution time when installed from the wheel.
|
|
17
17
|
|
|
@@ -26,7 +26,8 @@ also the launcher for the Tauri GUI app: `scrybe file.md` locates the
|
|
|
26
26
|
|
|
27
27
|
| Command | Description |
|
|
28
28
|
|---------|-------------|
|
|
29
|
-
| `scrybe render [FILE]` | Render Markdown to HTML (stdin → stdout by default); `--theme`, `--full-html`, `--output` |
|
|
29
|
+
| `scrybe render [FILE]` | Render Markdown to HTML (stdin → stdout by default); `--theme`, `--profile app\|site` (default `app`), `--body-only`, `--full-html`, `--output` |
|
|
30
|
+
| `scrybe view FILE` | View a Markdown file in the terminal (single-pane TUI): j/k scroll, g/G top/bottom, q quits; requires a TTY (exits 2 in a pipe) |
|
|
30
31
|
| `scrybe lint FILE` | Word count, headings, code blocks, broken links; `--json` for machine output; exits 1 if broken links found |
|
|
31
32
|
| `scrybe mermaid embed PNG SOURCE` | Embed Mermaid source into PNG iTXt chunk |
|
|
32
33
|
| `scrybe mermaid extract PNG` | Print embedded Mermaid source, verifying its SHA-256 by default; exit 2 if tampered, `--unverified` to skip the check (forensics) |
|
|
@@ -59,3 +60,13 @@ pip install target/wheels/scrybe_cli-*.whl
|
|
|
59
60
|
# Run tests
|
|
60
61
|
cargo test -p scrybe-cli
|
|
61
62
|
```
|
|
63
|
+
|
|
64
|
+
### Site HTML fragments
|
|
65
|
+
|
|
66
|
+
Use `scrybe render --profile site --body-only` with Markdown on stdin to write a
|
|
67
|
+
body-only HTML fragment on stdout for a site converter. The site profile enables
|
|
68
|
+
smart punctuation and keeps math delimiters literal. `--body-only` omits the theme
|
|
69
|
+
`<style>` block and conflicts with `--full-html`. Site uses unhighlighted,
|
|
70
|
+
production-shaped code blocks, ordinary Mermaid fences, automatic heading IDs,
|
|
71
|
+
and namespaced footnote IDs. HTML remains escaped. Without the new flags, output is
|
|
72
|
+
unchanged: the app dialect with theme CSS prepended. Unknown profiles are rejected.
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
//! can be unit-tested without spawning a process.
|
|
8
8
|
|
|
9
9
|
pub mod rpc_client;
|
|
10
|
+
pub mod viewer;
|
|
10
11
|
pub mod wrap;
|
|
11
12
|
|
|
12
13
|
// Re-export the primary public API for convenience. The linter now lives in
|
|
@@ -16,13 +17,54 @@ pub mod wrap;
|
|
|
16
17
|
pub use scrybe_tools::lint::{lint_document, BrokenLink, LintReport};
|
|
17
18
|
pub use wrap::wrap_full_html;
|
|
18
19
|
|
|
20
|
+
/// Markdown dialect accepted by `scrybe render --profile`.
|
|
21
|
+
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, clap::ValueEnum)]
|
|
22
|
+
pub enum CliRenderProfile {
|
|
23
|
+
/// Desktop compatibility dialect.
|
|
24
|
+
#[default]
|
|
25
|
+
App,
|
|
26
|
+
/// Site dialect: smart punctuation, with math left literal.
|
|
27
|
+
Site,
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/// Map CLI flags to the renderer dialect and fragment selection.
|
|
31
|
+
pub fn render_settings(
|
|
32
|
+
profile: CliRenderProfile,
|
|
33
|
+
body_only: bool,
|
|
34
|
+
) -> (scrybe_render::RenderProfile, bool) {
|
|
35
|
+
let profile = match profile {
|
|
36
|
+
CliRenderProfile::App => scrybe_render::RenderProfile::App,
|
|
37
|
+
CliRenderProfile::Site => scrybe_render::RenderProfile::Site,
|
|
38
|
+
};
|
|
39
|
+
(profile, body_only)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/// Select the body, themed fragment, or full document without changing rendering.
|
|
43
|
+
///
|
|
44
|
+
/// The clap shell rejects body-only plus full-HTML before calling this function.
|
|
45
|
+
pub fn select_render_output(
|
|
46
|
+
output: &scrybe_render::RenderOutput,
|
|
47
|
+
body_only: bool,
|
|
48
|
+
full_html_title: Option<&str>,
|
|
49
|
+
) -> String {
|
|
50
|
+
if body_only {
|
|
51
|
+
output.body_html.clone()
|
|
52
|
+
} else if let Some(title) = full_html_title {
|
|
53
|
+
wrap_full_html(output, title)
|
|
54
|
+
} else {
|
|
55
|
+
output.html.clone()
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
19
59
|
// ---------------------------------------------------------------------------
|
|
20
60
|
// Version info
|
|
21
61
|
// ---------------------------------------------------------------------------
|
|
22
62
|
|
|
23
|
-
/// Returns the crate version string
|
|
63
|
+
/// Returns the crate version string, including the Git commit the binary
|
|
64
|
+
/// was built from (and a `-dirty` marker if the worktree had local changes),
|
|
65
|
+
/// e.g. `0.6.3 (a1b2c3d4e5f6)`.
|
|
24
66
|
pub fn version_string() -> &'static str {
|
|
25
|
-
|
|
67
|
+
scrybe_core::build_info::VERSION_WITH_COMMIT
|
|
26
68
|
}
|
|
27
69
|
|
|
28
70
|
/// Returns a list of active Cargo feature flags (as a static string).
|
|
@@ -41,6 +83,36 @@ mod tests {
|
|
|
41
83
|
use scrybe_core::Document;
|
|
42
84
|
use scrybe_render::{render_html, Theme};
|
|
43
85
|
|
|
86
|
+
#[test]
|
|
87
|
+
fn render_flag_mapping() {
|
|
88
|
+
use crate::{render_settings, CliRenderProfile};
|
|
89
|
+
use scrybe_render::RenderProfile;
|
|
90
|
+
assert_eq!(CliRenderProfile::default(), CliRenderProfile::App);
|
|
91
|
+
for (flag, expected) in [
|
|
92
|
+
(CliRenderProfile::App, RenderProfile::App),
|
|
93
|
+
(CliRenderProfile::Site, RenderProfile::Site),
|
|
94
|
+
] {
|
|
95
|
+
for body_only in [false, true] {
|
|
96
|
+
assert_eq!(render_settings(flag, body_only), (expected, body_only));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
#[test]
|
|
102
|
+
fn render_output_selection() {
|
|
103
|
+
use crate::select_render_output;
|
|
104
|
+
let rendered = render_html(&Document::new("# Title"), Theme::Default);
|
|
105
|
+
assert_eq!(select_render_output(&rendered, false, None), rendered.html);
|
|
106
|
+
assert_eq!(
|
|
107
|
+
select_render_output(&rendered, true, None),
|
|
108
|
+
rendered.body_html
|
|
109
|
+
);
|
|
110
|
+
assert_eq!(
|
|
111
|
+
select_render_output(&rendered, false, Some("Title")),
|
|
112
|
+
wrap_full_html(&rendered, "Title")
|
|
113
|
+
);
|
|
114
|
+
}
|
|
115
|
+
|
|
44
116
|
#[test]
|
|
45
117
|
fn test_lint_word_count() {
|
|
46
118
|
let doc = Document::new("Hello world foo bar");
|