summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authort <t@tjp.lol>2026-07-11 14:06:25 -0600
committert <t@tjp.lol>2026-07-11 19:59:46 -0600
commit48352c770a932bd628cc5eb22ea3b899b041c485 (patch)
tree46f0ff0c4d206db8b5f0fd1d27555d55a20940ab
parent9cd3f87dd63bff27acbe3966e90f3b689e898b93 (diff)
Configure local site builds and note synchronization
Add Air and mise configuration for local rebuilds, record generated output paths, and update the documented sync workflow.
-rw-r--r--.air.toml44
-rw-r--r--.gitignore60
-rw-r--r--.stignore.shared1
-rw-r--r--_docs/OPERATIONS.md2
-rw-r--r--_docs/PROJECT_PLAN.md4
-rw-r--r--mise.toml5
l---------notes/sync1
7 files changed, 107 insertions, 10 deletions
diff --git a/.air.toml b/.air.toml
new file mode 100644
index 0000000..1d968d1
--- /dev/null
+++ b/.air.toml
@@ -0,0 +1,44 @@
+root = "."
+tmp_dir = ".air"
+
+[build]
+args_bin = []
+bin = ""
+cmd = "mise run gen"
+delay = 250
+exclude_dir = [".air", ".git", ".jj", "_docs"]
+exclude_file = []
+exclude_regex = []
+exclude_unchanged = true
+follow_symlink = true
+full_bin = "python3 -m http.server 8000 --bind 127.0.0.1"
+include_dir = []
+include_ext = ["css", "md", "tmpl"]
+include_file = []
+kill_delay = "500ms"
+log = "build-errors.log"
+poll = false
+poll_interval = 0
+post_cmd = []
+pre_cmd = []
+rerun = false
+rerun_delay = 500
+send_interrupt = true
+stop_on_error = false
+
+[log]
+main_only = false
+silent = false
+time = false
+
+[misc]
+clean_on_exit = true
+
+[proxy]
+app_port = 8000
+enabled = true
+proxy_port = 8001
+
+[screen]
+clear_on_rebuild = false
+keep_scroll = true
diff --git a/.gitignore b/.gitignore
index 19f2e83..17d36ea 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,8 +1,56 @@
-# Weft outputs (generated in place at every depth).
-*.html
-/feed.xml
+# Weft internal state.
/.weft-generated.json
/.weft-txn-*
-
-# Device-local Syncthing configuration; .stignore.shared is synchronized.
-/.stignore
+/.air/
+# BEGIN weft generated outputs
+/about/index.html
+/feed.xml
+/index.html
+/notes/index.html
+/notes/sync/random/SLC-bars.html
+/notes/sync/recipes/carmelized-onion-burgers.html
+/notes/sync/recipes/chicken-noodle-soup.html
+/notes/sync/recipes/chicken-piccata.html
+/notes/sync/recipes/cocktails/american-single-malt-old-fashioned.html
+/notes/sync/recipes/cocktails/aperol-spritz.html
+/notes/sync/recipes/cocktails/bicicletta.html
+/notes/sync/recipes/cocktails/boston-sour.html
+/notes/sync/recipes/cocktails/clarified-new-york-sour.html
+/notes/sync/recipes/cocktails/daiquiri.html
+/notes/sync/recipes/cocktails/division-bell.html
+/notes/sync/recipes/cocktails/final-ward.html
+/notes/sync/recipes/cocktails/fresh-lemon-rum-martini.html
+/notes/sync/recipes/cocktails/frozen-lemon-daiquiri.html
+/notes/sync/recipes/cocktails/gin-basil-smash.html
+/notes/sync/recipes/cocktails/gold-rush.html
+/notes/sync/recipes/cocktails/honey-bee.html
+/notes/sync/recipes/cocktails/index.html
+/notes/sync/recipes/cocktails/kentucky-maid.html
+/notes/sync/recipes/cocktails/killer-bee.html
+/notes/sync/recipes/cocktails/last-word.html
+/notes/sync/recipes/cocktails/margarita.html
+/notes/sync/recipes/cocktails/moscow-mule.html
+/notes/sync/recipes/cocktails/old-fashioned.html
+/notes/sync/recipes/cocktails/paloma.html
+/notes/sync/recipes/cocktails/paper-plane.html
+/notes/sync/recipes/cocktails/rum-sour.html
+/notes/sync/recipes/cocktails/sawyer.html
+/notes/sync/recipes/cocktails/siesta.html
+/notes/sync/recipes/cocktails/southside.html
+/notes/sync/recipes/cocktails/sparkling-tangawizi.html
+/notes/sync/recipes/cocktails/whiskey-smash.html
+/notes/sync/recipes/cocktails/white-lady.html
+/notes/sync/recipes/cocktails/white-russian.html
+/notes/sync/recipes/colinflower-pasta.html
+/notes/sync/recipes/index.html
+/notes/sync/recipes/penne-arrabiata.html
+/notes/sync/recipes/pork-and-mash-gratin.html
+/notes/sync/recipes/potato-soup.html
+/notes/sync/recipes/sourdough-bread.html
+/notes/sync/recipes/spaghetti-with-marinara.html
+/notes/sync/recipes/turkey-chili.html
+/notes/sync/technologies/freebsd/pf.html
+/pantograph/ds/pantograph-design-system-56a1c74e-41c1-486b-ba3c-4eabdfacef31/readme.html
+/projects/index.html
+/weblog/index.html
+# END weft generated outputs
diff --git a/.stignore.shared b/.stignore.shared
deleted file mode 100644
index 2d19fc7..0000000
--- a/.stignore.shared
+++ /dev/null
@@ -1 +0,0 @@
-*.html
diff --git a/_docs/OPERATIONS.md b/_docs/OPERATIONS.md
index a4a6d13..0afc6df 100644
--- a/_docs/OPERATIONS.md
+++ b/_docs/OPERATIONS.md
@@ -43,7 +43,7 @@ every depth in both directions while leaving Markdown synchronized.
Install the Weft binary at `/usr/local/bin/weft`, then use a cron entry like:
```cron
-17 * * * * sleep 60 && flock -n /run/lock/weft.lock /usr/local/bin/weft /srv/tjp.lol >>/var/log/weft.log 2>&1 || logger -t weft 'build failed or lock unavailable'
+17 * * * * sleep 60 && flock -n /run/lock/weft.lock /usr/local/bin/weft -gitignore /srv/tjp.lol https://tjp.lol >>/var/log/weft.log 2>&1 || logger -t weft 'build failed or lock unavailable'
```
The 60-second delay gives Syncthing time to settle, `flock -n` prevents
diff --git a/_docs/PROJECT_PLAN.md b/_docs/PROJECT_PLAN.md
index 5a8abec..6b48909 100644
--- a/_docs/PROJECT_PLAN.md
+++ b/_docs/PROJECT_PLAN.md
@@ -177,7 +177,7 @@ Only real pages enter these collections. Underscore-prefixed files, directories,
- Label the navigation link “feed.”
- Include weblog posts only.
- Sort by post date.
-- Emit full rendered post content in each entry.
+- Emit only the rendered weblog lede (`Sections[0]`) in each entry.
- Use absolute canonical URLs under `https://tjp.lol/`.
- Emit a valid zero-entry feed until real posts exist.
@@ -229,7 +229,7 @@ Not part of the generator implementation, but record a server task:
- title/section extraction;
- recursive page inventory;
- relative-path generation;
- - Atom validity and full-content entries.
+ - Atom validity and lede-only entries.
- Validate internal links and feed XML before deployment.
## Delivery sequence
diff --git a/mise.toml b/mise.toml
new file mode 100644
index 0000000..4cd8141
--- /dev/null
+++ b/mise.toml
@@ -0,0 +1,5 @@
+[tasks.gen]
+run = "weft -gitignore . https://tjp.lol"
+
+[tasks.dev]
+run = "(sleep 1 && open http://127.0.0.1:8001/) & exec air"
diff --git a/notes/sync b/notes/sync
new file mode 120000
index 0000000..967b1de
--- /dev/null
+++ b/notes/sync
@@ -0,0 +1 @@
+/Users/travis/Notes \ No newline at end of file