Compare commits

...

7 commits

Author SHA1 Message Date
Penelope Gwen
0da892b0e4 Merge remote-tracking branch 'refs/remotes/origin/main' 2026-03-10 11:09:39 -07:00
Penelope Gwen
7bbe0b83e9 add sitemap to sidebar 2026-03-10 11:09:28 -07:00
Penelope Gwen
911db49475 add footers to markdown modules 2026-03-10 11:08:57 -07:00
Penelope Gwen
b298331369 update writings.md 2026-03-10 11:08:12 -07:00
Penelope Gwen
7cab5d4224 update project blog files 2026-03-10 11:07:14 -07:00
Penelope Gwen
9e99f5f1b0 update some stylings 2026-03-10 11:06:33 -07:00
Penelope Gwen
5eff03cc9c update cargo files 2026-03-10 11:05:30 -07:00
15 changed files with 710 additions and 32 deletions

534
Cargo.lock generated
View file

@ -17,6 +17,18 @@ version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
[[package]]
name = "ahash"
version = "0.8.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75"
dependencies = [
"cfg-if",
"once_cell",
"version_check",
"zerocopy",
]
[[package]]
name = "aho-corasick"
version = "1.1.4"
@ -44,6 +56,12 @@ dependencies = [
"equator",
]
[[package]]
name = "allocator-api2"
version = "0.2.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923"
[[package]]
name = "android_system_properties"
version = "0.1.5"
@ -144,6 +162,12 @@ dependencies = [
"syn",
]
[[package]]
name = "arraydeque"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236"
[[package]]
name = "arrayref"
version = "0.3.9"
@ -165,6 +189,17 @@ dependencies = [
"stable_deref_trait",
]
[[package]]
name = "async-trait"
version = "0.1.89"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "atomic-waker"
version = "1.1.2"
@ -206,7 +241,7 @@ dependencies = [
"anyhow",
"arrayvec",
"log",
"nom",
"nom 8.0.0",
"num-rational",
"v_frame",
]
@ -244,6 +279,12 @@ dependencies = [
"backtrace",
]
[[package]]
name = "base64"
version = "0.21.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
[[package]]
name = "base64"
version = "0.22.1"
@ -291,6 +332,9 @@ name = "bitflags"
version = "2.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
dependencies = [
"serde_core",
]
[[package]]
name = "bitstream-io"
@ -464,6 +508,25 @@ dependencies = [
"windows-sys 0.61.2",
]
[[package]]
name = "config"
version = "0.14.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "68578f196d2a33ff61b27fae256c3164f65e36382648e30666dde05b8cc9dfdf"
dependencies = [
"async-trait",
"convert_case 0.6.0",
"json5",
"nom 7.1.3",
"pathdiff",
"ron",
"rust-ini",
"serde",
"serde_json",
"toml 0.8.23",
"yaml-rust2",
]
[[package]]
name = "console"
version = "0.16.2"
@ -476,6 +539,35 @@ dependencies = [
"windows-sys 0.61.2",
]
[[package]]
name = "const-random"
version = "0.1.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359"
dependencies = [
"const-random-macro",
]
[[package]]
name = "const-random-macro"
version = "0.1.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e"
dependencies = [
"getrandom 0.2.17",
"once_cell",
"tiny-keccak",
]
[[package]]
name = "convert_case"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca"
dependencies = [
"unicode-segmentation",
]
[[package]]
name = "convert_case"
version = "0.10.0"
@ -691,7 +783,7 @@ version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb"
dependencies = [
"convert_case",
"convert_case 0.10.0",
"proc-macro2",
"quote",
"rustc_version",
@ -708,6 +800,33 @@ dependencies = [
"crypto-common",
]
[[package]]
name = "dir_walker"
version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e1cb3209e3f980b7997c37b1e503a1093a87b17a27746c786983e5acdf3143a0"
[[package]]
name = "directories"
version = "5.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a49173b84e034382284f27f1af4dcbbd231ffa358c0fe316541a7337f376a35"
dependencies = [
"dirs-sys",
]
[[package]]
name = "dirs-sys"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c"
dependencies = [
"libc",
"option-ext",
"redox_users",
"windows-sys 0.48.0",
]
[[package]]
name = "displaydoc"
version = "0.2.5"
@ -719,6 +838,15 @@ dependencies = [
"syn",
]
[[package]]
name = "dlv-list"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "442039f5147480ba31067cb00ada1adae6892028e40e45fc5de7b7df6dcc1b5f"
dependencies = [
"const-random",
]
[[package]]
name = "document-features"
version = "0.2.12"
@ -740,6 +868,15 @@ version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0"
[[package]]
name = "encoding_rs"
version = "0.8.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3"
dependencies = [
"cfg-if",
]
[[package]]
name = "equator"
version = "0.4.2"
@ -858,6 +995,12 @@ version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
[[package]]
name = "fixedbitset"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
[[package]]
name = "flate2"
version = "1.1.9"
@ -1050,6 +1193,16 @@ dependencies = [
"zerocopy",
]
[[package]]
name = "hashbrown"
version = "0.14.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
dependencies = [
"ahash",
"allocator-api2",
]
[[package]]
name = "hashbrown"
version = "0.15.5"
@ -1065,13 +1218,22 @@ version = "0.16.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
[[package]]
name = "hashlink"
version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7"
dependencies = [
"hashbrown 0.14.5",
]
[[package]]
name = "headers"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b3314d5adb5d94bcdf56771f2e50dbbc80bb4bdf88967526706205ac9eff24eb"
dependencies = [
"base64",
"base64 0.22.1",
"bytes",
"headers-core",
"http",
@ -1102,7 +1264,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd54ae4f69adcc1a43637dcff230852832c3ad50df31a90e0cb5f001dd441359"
dependencies = [
"anyhow",
"lazy_static",
"lazy_static 1.5.0",
"thiserror 1.0.69",
]
@ -1436,6 +1598,17 @@ dependencies = [
"wasm-bindgen",
]
[[package]]
name = "json5"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "96b0db21af676c1ce64250b5f40f3ce2cf27e4e47cb91ed91eb6fe9350b430c1"
dependencies = [
"pest",
"pest_derive",
"serde",
]
[[package]]
name = "kurbo"
version = "0.13.0"
@ -1470,6 +1643,12 @@ dependencies = [
"syn",
]
[[package]]
name = "lazy_static"
version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73"
[[package]]
name = "lazy_static"
version = "1.5.0"
@ -1510,6 +1689,15 @@ version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
[[package]]
name = "libredox"
version = "0.1.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1744e39d1d6a9948f4f388969627434e31128196de472883b39f148769bfe30a"
dependencies = [
"libc",
]
[[package]]
name = "linux-raw-sys"
version = "0.11.0"
@ -1589,7 +1777,7 @@ version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2a756e3140350cc4bb6bfa8e63a8085119bb740d54de465c1f7b67e3a0e8de7f"
dependencies = [
"base64",
"base64 0.22.1",
"htmlentity",
"image",
"resvg",
@ -1661,6 +1849,12 @@ dependencies = [
"once_cell",
]
[[package]]
name = "minimal-lexical"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
[[package]]
name = "miniz_oxide"
version = "0.8.9"
@ -1740,6 +1934,16 @@ version = "1.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086"
[[package]]
name = "nom"
version = "7.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
dependencies = [
"memchr",
"minimal-lexical",
]
[[package]]
name = "nom"
version = "8.0.0"
@ -1848,6 +2052,31 @@ dependencies = [
"pkg-config",
]
[[package]]
name = "option-ext"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
[[package]]
name = "ordered-float"
version = "2.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c"
dependencies = [
"num-traits",
]
[[package]]
name = "ordered-multimap"
version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49203cdcae0030493bad186b28da2fa25645fa276a51b6fec8010d281e02ef79"
dependencies = [
"dlv-list",
"hashbrown 0.14.5",
]
[[package]]
name = "owo-colors"
version = "4.2.3"
@ -1913,12 +2142,71 @@ version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "35fb2e5f958ec131621fdd531e9fc186ed768cbe395337403ae56c17a74c68ec"
[[package]]
name = "pathdiff"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3"
[[package]]
name = "percent-encoding"
version = "2.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
[[package]]
name = "pest"
version = "2.8.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662"
dependencies = [
"memchr",
"ucd-trie",
]
[[package]]
name = "pest_derive"
version = "2.8.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77"
dependencies = [
"pest",
"pest_generator",
]
[[package]]
name = "pest_generator"
version = "2.8.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f"
dependencies = [
"pest",
"pest_meta",
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "pest_meta"
version = "2.8.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220"
dependencies = [
"pest",
"sha2",
]
[[package]]
name = "petgraph"
version = "0.6.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db"
dependencies = [
"fixedbitset",
"indexmap",
]
[[package]]
name = "phf"
version = "0.11.3"
@ -2087,6 +2375,21 @@ dependencies = [
"syn",
]
[[package]]
name = "ptree"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "289cfd20ebec0e7ff2572e370dd7a1c9973ba666d3c38c5e747de0a4ada21f17"
dependencies = [
"anstyle",
"config",
"directories",
"petgraph",
"serde",
"serde-value",
"tint",
]
[[package]]
name = "pxfm"
version = "0.1.27"
@ -2266,6 +2569,17 @@ dependencies = [
"bitflags 2.10.0",
]
[[package]]
name = "redox_users"
version = "0.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43"
dependencies = [
"getrandom 0.2.17",
"libredox",
"thiserror 1.0.69",
]
[[package]]
name = "regex"
version = "1.12.3"
@ -2332,6 +2646,18 @@ dependencies = [
"windows-sys 0.52.0",
]
[[package]]
name = "ron"
version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94"
dependencies = [
"base64 0.21.7",
"bitflags 2.10.0",
"serde",
"serde_derive",
]
[[package]]
name = "roxmltree"
version = "0.20.0"
@ -2347,6 +2673,16 @@ dependencies = [
"memchr",
]
[[package]]
name = "rust-ini"
version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3e0698206bcb8882bf2a9ecb4c1e7785db57ff052297085a6efd4fe42302068a"
dependencies = [
"cfg-if",
"ordered-multimap",
]
[[package]]
name = "rustc-demangle"
version = "0.1.27"
@ -2483,6 +2819,16 @@ dependencies = [
"serde_derive",
]
[[package]]
name = "serde-value"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c"
dependencies = [
"ordered-float",
"serde",
]
[[package]]
name = "serde_core"
version = "1.0.228"
@ -2517,6 +2863,15 @@ dependencies = [
"zmij",
]
[[package]]
name = "serde_spanned"
version = "0.6.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3"
dependencies = [
"serde",
]
[[package]]
name = "serde_spanned"
version = "1.0.4"
@ -2544,12 +2899,14 @@ version = "0.1.0"
dependencies = [
"anyhow",
"chrono",
"dir_walker",
"http",
"lipgloss",
"markdown",
"mdriver",
"mq-markdown",
"mq-view",
"ptree",
"rand 0.10.0",
"serde",
"strip-ansi-escapes",
@ -2558,6 +2915,7 @@ dependencies = [
"tokio",
"toml 1.0.1+spec-1.1.0",
"toml-frontmatter",
"walkdir",
"warp",
]
@ -2572,6 +2930,17 @@ dependencies = [
"digest",
]
[[package]]
name = "sha2"
version = "0.10.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
dependencies = [
"cfg-if",
"cpufeatures 0.2.17",
"digest",
]
[[package]]
name = "shlex"
version = "1.3.0"
@ -2928,6 +3297,24 @@ dependencies = [
"zune-jpeg 0.4.21",
]
[[package]]
name = "tint"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7af24570664a3074673dbbf69a65bdae0ae0b72f2949b1adfbacb736ee4d6896"
dependencies = [
"lazy_static 0.2.11",
]
[[package]]
name = "tiny-keccak"
version = "2.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237"
dependencies = [
"crunchy",
]
[[package]]
name = "tiny-skia"
version = "0.11.4"
@ -3029,6 +3416,18 @@ dependencies = [
"serde",
]
[[package]]
name = "toml"
version = "0.8.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362"
dependencies = [
"serde",
"serde_spanned 0.6.9",
"toml_datetime 0.6.11",
"toml_edit",
]
[[package]]
name = "toml"
version = "1.0.1+spec-1.1.0"
@ -3037,8 +3436,8 @@ checksum = "bbe30f93627849fa362d4a602212d41bb237dc2bd0f8ba0b2ce785012e124220"
dependencies = [
"indexmap",
"serde_core",
"serde_spanned",
"toml_datetime",
"serde_spanned 1.0.4",
"toml_datetime 1.0.0+spec-1.1.0",
"toml_parser",
"toml_writer",
"winnow",
@ -3055,6 +3454,15 @@ dependencies = [
"toml 0.5.11",
]
[[package]]
name = "toml_datetime"
version = "0.6.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c"
dependencies = [
"serde",
]
[[package]]
name = "toml_datetime"
version = "1.0.0+spec-1.1.0"
@ -3064,6 +3472,20 @@ dependencies = [
"serde_core",
]
[[package]]
name = "toml_edit"
version = "0.22.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a"
dependencies = [
"indexmap",
"serde",
"serde_spanned 0.6.9",
"toml_datetime 0.6.11",
"toml_write",
"winnow",
]
[[package]]
name = "toml_parser"
version = "1.0.8+spec-1.1.0"
@ -3073,6 +3495,12 @@ dependencies = [
"winnow",
]
[[package]]
name = "toml_write"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801"
[[package]]
name = "toml_writer"
version = "1.0.6+spec-1.1.0"
@ -3263,6 +3691,12 @@ version = "1.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb"
[[package]]
name = "ucd-trie"
version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971"
[[package]]
name = "unicase"
version = "2.9.0"
@ -3359,7 +3793,7 @@ version = "2.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "02d1a66277ed75f640d608235660df48c8e3c19f3b4edb6a263315626cc3c01d"
dependencies = [
"base64",
"base64 0.22.1",
"flate2",
"log",
"once_cell",
@ -3387,7 +3821,7 @@ version = "0.46.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e419dff010bb12512b0ae9e3d2f318dfbdf0167fde7eb05465134d4e8756076f"
dependencies = [
"base64",
"base64 0.22.1",
"data-url",
"flate2",
"fontdb",
@ -3444,7 +3878,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "da3a696d8afebb0cae4b263ff8cae3286b20ea88df0a82187b13ee6fe8398dce"
dependencies = [
"ansi_colours",
"base64",
"base64 0.22.1",
"console",
"crossterm",
"image",
@ -3717,6 +4151,15 @@ dependencies = [
"windows-link",
]
[[package]]
name = "windows-sys"
version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
dependencies = [
"windows-targets 0.48.5",
]
[[package]]
name = "windows-sys"
version = "0.52.0"
@ -3744,6 +4187,21 @@ dependencies = [
"windows-link",
]
[[package]]
name = "windows-targets"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
dependencies = [
"windows_aarch64_gnullvm 0.48.5",
"windows_aarch64_msvc 0.48.5",
"windows_i686_gnu 0.48.5",
"windows_i686_msvc 0.48.5",
"windows_x86_64_gnu 0.48.5",
"windows_x86_64_gnullvm 0.48.5",
"windows_x86_64_msvc 0.48.5",
]
[[package]]
name = "windows-targets"
version = "0.52.6"
@ -3777,6 +4235,12 @@ dependencies = [
"windows_x86_64_msvc 0.53.1",
]
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.52.6"
@ -3789,6 +4253,12 @@ version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
[[package]]
name = "windows_aarch64_msvc"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
[[package]]
name = "windows_aarch64_msvc"
version = "0.52.6"
@ -3801,6 +4271,12 @@ version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
[[package]]
name = "windows_i686_gnu"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
[[package]]
name = "windows_i686_gnu"
version = "0.52.6"
@ -3825,6 +4301,12 @@ version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
[[package]]
name = "windows_i686_msvc"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
[[package]]
name = "windows_i686_msvc"
version = "0.52.6"
@ -3837,6 +4319,12 @@ version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
[[package]]
name = "windows_x86_64_gnu"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
[[package]]
name = "windows_x86_64_gnu"
version = "0.52.6"
@ -3849,6 +4337,12 @@ version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.52.6"
@ -3861,6 +4355,12 @@ version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
[[package]]
name = "windows_x86_64_msvc"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
[[package]]
name = "windows_x86_64_msvc"
version = "0.52.6"
@ -3878,6 +4378,9 @@ name = "winnow"
version = "0.7.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829"
dependencies = [
"memchr",
]
[[package]]
name = "wit-bindgen"
@ -3985,6 +4488,17 @@ version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a5a4b21e1a62b67a2970e6831bc091d7b87e119e7f9791aef9702e3bef04448"
[[package]]
name = "yaml-rust2"
version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8902160c4e6f2fb145dbe9d6760a75e3c9522d8bf796ed7047c85919ac7115f8"
dependencies = [
"arraydeque",
"encoding_rs",
"hashlink",
]
[[package]]
name = "yoke"
version = "0.8.1"

View file

@ -21,3 +21,6 @@ toml-frontmatter = "0.1.0"
serde = "1.0.228"
rand = "0.10.0"
strip-ansi-escapes = "0.2.1"
dir_walker = "0.1.9"
walkdir = "2.5.0"
ptree = "0.5.2"

View file

@ -1,7 +1,8 @@
@font-face {
font-family: OverpassNerd;
src: url("/assets/fonts/overpass/OverpassNerdFont-Regular.otf") format("opentype");
font-family: OverpassNerd;
src: url("/assets/fonts/overpass/OverpassNerdFont-Regular.otf") format("opentype");
}
:root {
--main-bg-color: #111317;
--main-fg-color: #d7afaf;
@ -13,10 +14,17 @@ body {
background-color: rgba(from var(--main-bg-color) r g b / 1);
}
h1,h2,h3 {
h1,
h2,
h3 {
text-align: center;
}
h1,h2,h3,p,a {
h1,
h2,
h3,
p,
a {
font-family: 'OverpassNerd', sans-serif;
color: rgba(from var(--main-fg-color) r g b / 1);
}
@ -26,18 +34,20 @@ h1,h2,h3,p,a {
flex-direction: row;
justify-content: center;
flex-wrap: wrap-reverse;
/* max-width: 80vmax;
/* max-width: 80vmax;
margin: auto;*/
gap: 2vw;
}
.sidebar {
min-width: 30%;
max-width: 400px;
flex-grow: 1;
/* background-color: rgba(255,0,0,0.3);*/
/* background-color: rgba(255,0,0,0.3);*/
}
.content {
/* background-color: rgba(0,255,0,0.3);*/
/* background-color: rgba(0,255,0,0.3);*/
max-width: 60vmax;
}
@ -45,38 +55,57 @@ h1,h2,h3,p,a {
img {
display: block;
margin: auto;
/* width: 60%;*/
/* width: 60%;*/
width: 12em;
aspect-ratio: 88 / 31;
}
h1 {
border-top: 1px dashed;
padding-top: 1vh;
}
h2 {
/* line-height: 0.25;*/
border-top: 1px dotted;
padding-top: 1vh;
}
p {
text-align: center;
font-size: 1.1em;
}
}
#sitemap {
p {
line-height: 0.25;
}
}
#rats {
img {
display: block;
margin: auto;
width: 90%;
}
p {
text-align: center;
}
}
img {
width: 10vmax;
}
.markdown-module {
padding: 1vmax 2vmax;
margin: 1vmax 0;
background-color: rgba(from var(--secondary-bg-color) r g b / 0.2);
border-radius: 8px;
}
.timestamp {
opacity: 0.5;
font-style: italic;
line-height: 0.5;
}
}

View file

@ -1,7 +1,7 @@
---toml
title = "buttons"
date_created = "2026-02-14"
index = 1
index = 2
---
![pogmommy](http://pogmom.me/assets/img/webring/pogmommy/1056x372.webp)
@ -30,8 +30,7 @@ index = 1
## [Geekring](http://geekring.net)
[<](http://geekring.net/site/473/previous) [random](http://geekring.net/site/473/random) [>](http://geekring.net/site/473/next)
[<](http://geekring.net/site/473/previous) [random](http://geekring.net/site/473/random) [>](http://geekring.net/site/473/next)
[1]:https://pogmom.me
[2]:https://hotn.gay
[3]:https://cassiecandles.net

View file

@ -1,8 +1,9 @@
---toml
title = "rats"
date_created = "2026-02-15"
index = 0
index = 1
---
![${file_name}](${file_path})
Please enjoy a picture of my sons :)

View file

@ -0,0 +1,8 @@
---toml
title = "sitemap"
index = 0
---
# Sitemap
${sitemap}

View file

@ -1,3 +1,8 @@
---toml
title = "ESP32-S3 USB Authentication Key"
date_created = "2026-02-14"
index = 2
---
# ESP32-S3 USB Authentication Key
A DIY FIDO2 key using an ESP32-S3, a [top-to-top](/vocab) type-C coupler, and the [Pico-Fido firmware](https://github.com/polhenarejos/pico-fido).

View file

@ -2,6 +2,7 @@
title = "Debian on an iMac G3"
date_created = "2026-01-08"
date_updated = "2026-02-03"
index = 1
---
# Debian Sid on an iMac G3

View file

@ -1,3 +1,8 @@
---toml
title = "OnePlus 6T Cyberdeck"
date_created = "2026-02-14"
index = 3
---
# OnePlus 6T "CyberDeck"
Linux phone

View file

@ -0,0 +1,12 @@
---toml
title = "Personal Website"
date_created = "2026-03-09"
index = 0
---
# Personal Website
I'm rewriting my website!
I was inspired to do so by my friend Val who wrote her own web server in Rust using [warp](https://lib.rs/crates/warp) for her personal website (linked in the sidebar under "TerminalLesbian").

View file

@ -1,5 +1,7 @@
---toml
title = "To-Do List"
date_created = "2026-02-14"
index = 99
---
# to-do list

View file

@ -1,12 +1,13 @@
---toml
title = "Writing"
date_created = "2026-02-15"
date_updated = "2026-03-09"
index = 4
---
# Writings
I want to write more! God knows I ramble plenty, and I'd like to start collecting those thoughts again.
I've been writing more! I'd like to start collecting those thoughts and sharing them somewhere again.
These might be less technical and more personal, veering into topics such as gender and spirituality.

View file

@ -23,16 +23,31 @@ fn get_content_html(page_contents: &Vec<MarkdownModule>) -> String {
markdown::to_html_with_options(m.content.as_str(), &markdown::Options::gfm())
.ok()
.and_then(|c| {
format!(
"<div id='{}' class='markdown-module'>{}</div>",
let mut paragraph_module = format!(
"<div id='{}' class='markdown-module'>{}",
m.path
.file_stem()
.unwrap_or_default()
.to_str()
.unwrap_or_default(),
c
)
.into()
);
if let Some(created) = &m.metadata.date_created {
paragraph_module = format!(
"{}<p class='timestamp'>Created {}</p>",
paragraph_module, created
)
};
if let Some(updated) = &m.metadata.date_updated {
paragraph_module = format!(
"{}<p class='timestamp'>Modified {}</p>",
paragraph_module, updated
)
};
paragraph_module = format!("{}</div>", paragraph_module);
Some(paragraph_module)
})
})
.collect();

View file

@ -1,6 +1,61 @@
use crate::{MarkdownModule, markdowner};
use ptree::{Style, TreeItem};
use rand::seq::IteratorRandom;
use std::borrow::Cow;
use std::path::PathBuf;
use std::{fs, io};
#[derive(Clone, Debug)]
pub struct PathItem(pub PathBuf);
impl TreeItem for PathItem {
type Child = Self;
fn write_self<W: io::Write>(&self, f: &mut W, style: &Style) -> io::Result<()> {
let cwd = std::env::current_dir()
.expect("unable to parse working directory")
.join("serve");
if let Some(n) = self.0.file_name() {
write!(
f,
"[{}](/{})\n",
style.paint(n.to_string_lossy()),
self.0
.clone()
.to_path_buf()
.strip_prefix(cwd)
.expect("could not strip prefix?")
.to_str()
.unwrap()
)
} else {
Ok(())
}
}
fn children(&self) -> Cow<[Self::Child]> {
let v = if let Ok(list) = fs::read_dir(&self.0) {
list.filter_map(|item| item.ok())
.map(|entry| entry.path())
.filter(|e| {
if e.is_dir() && !e.starts_with("assets") {
e.read_dir()
.unwrap()
.any(|x| x.unwrap().path().extension().unwrap_or_default().eq("md"))
} else {
false
}
})
.map(PathItem)
.collect()
} else {
Vec::new()
};
Cow::from(v)
}
}
fn random_image_module(module: &MarkdownModule, directory: &str) -> MarkdownModule {
let image = random_image(directory);
@ -32,13 +87,14 @@ fn random_image_module(module: &MarkdownModule, directory: &str) -> MarkdownModu
module.clone()
}
pub fn sidebar_content(target_path: &PathBuf) -> Vec<MarkdownModule> {
pub fn sidebar_content(target_path: &PathBuf, root_path: PathBuf) -> Vec<MarkdownModule> {
let sidebar_modules = markdowner::get_markdown_modules(target_path);
let sidebar_modules: Vec<MarkdownModule> = sidebar_modules
.iter()
.map(|f| match f.metadata.title.as_str() {
"rats" => random_image_module(f, "rats"),
"buttons" => random_image_module(f, "buttons"),
"sitemap" => sitemap(f, &root_path),
_ => MarkdownModule {
path: f.path.clone(),
content: f.content.clone(),
@ -49,6 +105,28 @@ pub fn sidebar_content(target_path: &PathBuf) -> Vec<MarkdownModule> {
sidebar_modules
}
fn sitemap(module: &MarkdownModule, root_path: &PathBuf) -> MarkdownModule {
let mut writer: Vec<u8> = Vec::new();
let dir = PathItem(root_path.clone());
ptree::write_tree(&dir, &mut writer).expect("could not write tree");
let template_content = module.content.clone();
let template = text_template::Template::from(template_content.as_str());
let mut values = std::collections::HashMap::new();
let tree_text = String::from_utf8(writer).expect("could not parse string from utf8");
values.insert("sitemap", tree_text.as_str());
let modu = MarkdownModule {
path: module.path.clone(),
content: template.fill_in(&values).to_string(),
metadata: module.metadata.clone(),
};
modu.clone()
}
fn random_image(directory: &str) -> PathBuf {
let rat_image = std::fs::read_dir(PathBuf::from("./serve/assets/img/random/").join(directory))
.expect("where the fuck are your rat pictures?")

View file

@ -47,7 +47,12 @@ fn renderer(path: FullPath, user_agent: String, query: WebQuery) -> Box<dyn warp
let page_contents = markdowner::get_markdown_modules(&target_path);
let sidebar_dir = PathBuf::from("assets/sidebar/");
let sidebar_contents = sidebar_content(&router(sidebar_dir));
let sidebar_contents = sidebar_content(
&router(sidebar_dir),
std::env::current_dir()
.expect("unable to determine current directory")
.join("serve"),
);
let response = if user_agent.starts_with("curl/") {
curl_response(page_contents, sidebar_contents, query.width)