# Vault Changelog
## 2026-10-16 — Property standardization & tagging
Backup: PubProjects .zip (made by Marshall before the run). Script and logs live in `C:\Users\jmars\` on Enceladus (`pubprojects_migrate.ps1/.py`, `pubprojects_tag_rules.py`, `pubprojects_migration_plan.csv`, `pubprojects_migration_report_applied.json`, `pre_apply_snapshot.csv`).
Scope: 2,015 notes (excluded `.obsidian`, `.trash`, `Templates`). 1,995 changed, 20 empty notes skipped. Note bodies untouched; file modified times preserved.
### Property renames (lowercase standard)
- `Title` → `title` (666)
- `url` → `source` (650)
- `Subject` → `subject` (651); `Software` → `subject` (54)
- `Description`/`description` → `summary` (819)
- Video Summaries: `Creator` → `creator` (524). Elsewhere: `Creator`/`creator`/`authors` → `author` (150)
- `Tags` → `tags` (9)
- Conflict resolved: *Bouncing Ball with Textures and Lighting* now has a single `subject: After Effects` (dropped `Subject: Animation`).
### Properties added
- `type` on every note (note / summary / lesson / course / moc / clipping), by folder rules. Video Summaries roll-up pages (year/quarter/month ranges, Index) → `moc`.
- `project` wikilink to parent hub (1,150 + minimal blocks). Hub notes are not created yet (see missing list in report).
- `created` where neither `created` nor `published` existed (from file date).
- 844 notes with no frontmatter received a minimal block (`type`, `project`, `created`, `tags`).
### Tags
- 35 interlinking tags added by rules (folder, Video Summaries channel, existing tags, subject): teaching, teaching-resources, game-design, tutorial, xr, augmented-traveler, maya, rigging, after-effects, ai, 360-video, obsidian, unity, architecture, ttrpg, camera-gear, music-history, people, home-improvement, animation, economics, space, product-design, history, virtual-humans, x-research, science, unreal, futurism, metahuman, archive, film, vfx, travel, claude-code.
- 3,317 tags added to 1,627 notes; existing tags kept (lowercased, deduped).
### Templates
- `Templates/Video Summary Properties.md` now uses: title, type: summary, creator, source, subject, summary, image, tags, created, project.
### Still to do
- Create hub/MOC notes for projects (Courses, Augmented Traveler, Tutorials, etc.) and `Home.md`.
- Bases per type.
- 139 notes still without tags (mostly Video Summaries 87, Events 13, PacktPub 9).
## 2026-10-16 (evening) — Cleanup pass
All deletions were moved to `PubProjects/.trash/` with their relative paths kept (41 files). Script: `C:\Users\jmars\pubprojects_cleanup_apply.py`; log: `cleanup_apply_result.json`.
- **Trashed empty files (20):** 9 empty daily notes (2026-01-17 … 2026-06-14); `VFX – Performance Libraries.md`, `VFX – Physical Training for VFX.md`; `canvas temp.canvas`; 3 empty Events notes (GGJ Omara, SIGGRAPH Digital Bayou, Pioneers Reception); `The Federalist Papers.md`; Maya Rigging 039, 200, 201, 202.
- **Trashed duplicates (2):** byte-identical Alexandra Fasulo ` 1.md` copies.
- **YAML:** removed quotes from tag items in 96 notes (tags whose characters need quoting were left as they were). Rewrote 2 broken single-quoted values as double-quoted (Maxinomics "…Couldn't Answer" `title`, "How SpaceX…" `summary`).
- **Templates:** `CSharp Script Listing` now uses title/author/source/subject/summary/type. `Linking Your Thinking Template`: url→source, author→creator.
- **Maya Character Rigging:** 17 stub lessons became `- [ ]` checklist items in `Maya Character Rigging Tutorials.md`, keeping their text (e.g. 032 "Spine Controls", 040's image embed). The stubs were then trashed.
- **Folders:** `Obisidian` → `Obsidian` (8 `project:` links updated); `AI/cippings` merged into `AI/clippings`; double spaces removed in `Spring 16 wk 16 class` (GAME 2325) and `40k years ago Europeans images`. `Fall 16 wk 15 class` was left unchanged as requested. No collisions.
- **GAME 1303:** removed the `[[CustomerAI Script]]` line from `03.GAME 1303 — Scripts Source.md` and trashed the empty `CustomerAI Script.md`.
- **Renames:** `AI/grok/Untitled.md` → `Keep Windows Awake for Grok Bot.md`; `publish.css.md` → `publish.css`.
- **Bases:** created `PubProjects.base` with 8 views (All Notes, Projects & Courses, Video Summaries, Lessons, Clippings, Tutorials, Untagged, Recently Modified). Trashed `TUTORIALS Base.base`; nothing embedded it.
- **Note:** `Video Summaries/Movies Insider/Avatar The Way of Water.md` linked to the two empty VFX notes. Those links are now unresolved, like its ~30 other `VFX – …` links. To restore them, move the files back from `.trash`.
## 2026-10-16 (night) — Hub notes and Home
- The Folder Notes plugin keeps each folder note inside its folder as `FolderName.md`. Each hub is therefore that folder's folder note, and `project:` links to it resolve.
- **Created 40 hub notes.** Each has type, status, tags, created and summary in its properties, a short description, `## Key notes` (index/homepage/most-linked notes; course hubs link both the Fall and Spring homepages), and an inline `base` block (`project == this`) that lists every note in the hub.
- Courses (active): ARTV 2371, FLMC 2331, FLMC 1331, GAME 1303, GAME 2325, Portfolio Development.
- Projects (active): Augmented Traveler, Virtual Historic Human, Burning Man.
- Status for topic hubs comes from the folder's last change: active if within 60 days, paused 60–180, abandoned older. 16 are abandoned: PacktPub, Movies, Rationality, Civilization, tasksCalendar, Useful Software, Space, Articles, Finances, Computer Management, Classes, Pittman Family, Portfolio, Presentations, Recipes, Ruby Links.
- **5 stray empty files** (`AI.md`, `Finances.md`, `Home Improvement.md`, `Recipes.md`, `tasksCalendar.md`) appeared in the vault root between 20:36 and 20:39 tonight, probably from clicking unresolved links. Each was moved into its folder and became that folder's hub, so no duplicate names were created.
- **Existing folder notes reused:** `Clippings`, `Video Summaries` and `X Research` now have `type: moc` and `status: active`.
- **Created `Home.md`:** sections for Teaching, Augmented Traveler, Virtual Historic Human, AI & Agents, Research Library, Tutorials, Events, Home & Life and Archive/Dormant, plus embeds of the Projects & Courses and Recently Modified base views. It includes the intro line from `!welcome.md` (`!welcome.md` itself was kept).
- **Created `Templates/Hub Note.md`.**
- **Check:** 0 unresolved `project:` values; 0 new duplicate note names; all key-note links resolve.
## 2026-10-16 (late) — Plays, folder fix, tagging
- **Plays:** the R.U.R. note now has the standard properties (`type: play`, `project: [[Plays]]`, author, source, `published: 1920`, `subject: Theater`, summary, tags play/theater/ai/futurism/clippings). The stray "Explain Save" at the end was trimmed. Renamed to `R.U.R. (Rossum's Universal Robots) - Karel Capek.md`. Created the `Plays/Plays.md` hub.
- **Vocabulary:** added `theater` and `play`; the Plays folder rule sets both. The migration script now gives new notes in `Plays/` `type: play` and `project: [[Plays]]`.
- **`PubProjects.base`:** added a **Plays** view (type == play; name, author, published, subject, tags; sorted by published). The Clippings view still filters type == clipping only.
- **`Home.md`:** added `[[Plays]]` under Research Library.
- **Folder:** renamed `Fall 16 ek 15 class` → `Fall 16 wk 15 class` (GAME 2325) and updated references in 3 files.
- **Tags:** tagged 127 previously untagged notes. Video Summaries notes got `video-summary` plus 1–3 topic tags; MOC pages got their channel's topic tags. 3 new tags were added: `politics`, `linguistics`, `psychology`.
- **Still untagged (26):** mostly hub or folder notes, plus Topics/Organization (3), Oklahoma City, the resume and the cookie recipe.
## Property standard (current)
| Key | Meaning |
|---|---|
| `type` | project, course, lesson, summary, clipping, reference, moc, note, play |
| `status` | active, paused, done, abandoned |
| `project` | wikilink to the parent hub note |
| `tags` | list of lowercase, hyphenated tags from the vocabulary |
| `created` / `updated` | dates the note was created and last updated |
| `source` | URL of the original |
| `author` | writer of a written source |
| `creator` | channel or presenter of a video (Video Summaries) |
| `summary` | one-line summary |
| `subject` | subject or software |
| `title` | title |
| `image` | image |
| **`published`** | date of original publication (added 2026-10-18) |
| **`related`** | list of wikilinks to related notes (added 2026-10-18) |
Other keys are kept but flagged as nonstandard by `pubprojects_verify.py` (e.g. aliases, course, lesson, cssclasses).
## 2026-10-18 — Small fixes
- **Frontmatter added** (file content and modified times unchanged):
- `Events/AgentCon 2026/Agent Con 2026.md` and `Where Agents Break Deterministic Governance for Probabilistic AI.md`: type note, project [[Events]], tag ai, created 2026-10-17, summary.
- `Obsidian/DigitialGarden/01 Getting started.md` and `Obsidian/Vercel/Adding & Configuring a Custom Domain.md`: type clipping, project [[Obsidian]], tags obsidian + tutorial, created 2026-10-18, summary. The Vercel note also got `source` (vercel.com/docs/domains/working-with-domains/add-a-domain). The Digital Garden note has no URL for its own page, so it has no `source`.
- **Moved to `.trash`** after rechecking they were 0 bytes: `Omara Games at Global Game Jam 2026.md`, `Digital Bayou Pop-up Booth.md`, `Pioneers Reception 2026.md`. No notes linked to them. These had been trashed on 2026-10-16 but had reappeared, and the earlier `.trash/Events` copies were gone, which suggests a Drive or Obsidian restore.
- **Scripts:** `published` and `related` (plus `creator`) added to the migration script's kept keys. `pubprojects_verify.py` now has an ALLOWED key list and reports only nonstandard keys.
## Property standard addendum (2026-10-18)
| Key | Meaning |
|---|---|
| **`dg-publish`** | Digital Garden publish flag (true/false). New notes and templates default to `false`. |
| `dg-home` | Digital Garden home page flag (only on `Home.md`). |
## 2026-10-18 — dg-publish on every note
- Added `dg-publish` to all 2,035 notes, excluding `.obsidian`, `.trash` and `Templates`. Note bodies and modified times are unchanged; no other keys were touched.
- **true:** 1,517 notes, the ones currently on the Obsidian Publish site (source: `C:\Users\jmars\publish_published_list.txt`). That includes `Home.md`, whose existing `dg-publish: true` and `dg-home: true` were kept.
- **false:** 518 notes.
- 3 notes with no frontmatter got a minimal `dg-publish: false` block. All 3 are in `Obsidian/DigitialGarden/`: `Tutorial Connect a Network Solutions domain to Vercel (for Obsidian Digital Garden).md`, `connect-network-solutions-domain-to-vercel.md`, `digital-garden-subdomains-tutorial.md`.
- No 0-byte notes were skipped; none exist.
- **Templates:** `dg-publish: false` added to Hub Note, Video Summary Properties, CSharp Script Listing and Linking Your Thinking Template.
- **Scripts:** `pubprojects_migrate.py` keeps `dg-publish`/`dg-home` and adds `dg-publish: false` to new notes. `pubprojects_verify.py` allows both keys.
## 2026-10-18 - Web-safe hub lists (Publish + Digital Garden)
- **Why:** Obsidian Publish can't render Bases (`base` code blocks, `![[PubProjects.base#...]]` embeds), Folder Notes overview blocks or Dataview, and it showed every note's properties. Hub pages showed raw YAML.
- **New script:** `C:\Users\jmars\pubprojects_weblists.py`. It is idempotent and changes only text between generated markers. It never touches frontmatter and backs up every file it changes to `C:\Users\jmars\weblists_backup\<timestamp>\`.
- A note counts as *published* only if it is in the live Obsidian Publish cache **and** has `dg-publish: true`, so links work on both jmarshallpittman.net (Publish) and jmarshallpittman.com (Digital Garden).
- **Hubs (45):** a static list grouped by type (`### Lessons`, `### Notes`, `### Video summaries` with the newest first, and so on) between `<!-- hub-list:start -->` and `<!-- hub-list:end -->`, inserted above the base block. The base block is kept under `## Live view (in Obsidian)`. Hubs with more than 150 notes are split into `####` subfolder sections, and their summaries are capped at the newest 50.
- **`Video Summaries.md`:** the broken folder-overview block (`folderPath: ""`) and its link list were replaced with a generated channel list under `## Channels`. It links the channel folder note when that note is published; otherwise it shows the newest published summary, with note counts. 59 channel folder notes whose only content was the plugin overview got a `## Videos` list appended. Their overview blocks were left in place; CSS hides them.
- **`Home.md`:** hub sections are now generated between `<!-- home-hubs:start -->` and `<!-- home-hubs:end -->` and list only published hubs, using full-path links and each hub's `summary`. Sections with no published hubs are omitted until a hub is published. Plays moved to Research Library. The two base embeds were replaced with `## Recently updated` (15 newest published content notes, `<!-- home-recent -->`), followed by `## Live view (in Obsidian)` with `![[PubProjects.base#Projects & Courses]]`.
- **`publish.css`:** the stray YAML block was removed. A managed `/* weblists:start */ ... /* weblists:end */` block hides the properties/frontmatter box, `language-base`, `folder-overview` and `dataview` code blocks, `.base` embeds, the `Live view` heading section and stale Folder Notes link lists.
- **Scripts:** `pubprojects_migrate.py` and `pubprojects_dgpub_apply.py` now skip `publish.*` files, so they never add frontmatter to `publish.css` again. They already processed only `.md` files.
## Routine: before every publish
1. Run `python C:\Users\jmars\pubprojects_weblists.py` (dry run; previews go to `C:\Users\jmars\weblists_preview\`), then `python C:\Users\jmars\pubprojects_weblists.py --apply`.
2. In Obsidian Publish, publish the changed hubs, `Home.md` and `publish.css`. In Digital Garden, publish the changed notes.
3. After you publish *new* notes or hubs, run the script again and republish `Home.md` and the hubs it changed. The lists only include notes that are already live on Publish and have `dg-publish: true`.
## 2026-10-18 - Web-safe lists on every folder note
- `pubprojects_weblists.py` now covers every Folder Notes note (`storageLocation: insideFolder`, `<Folder>/<Folder>.md`, at any depth; no per-folder exclusions are configured). It also detects the sibling `<Parent>/<Folder>.md` style when the folder holds notes and the note is a moc/index. The 7 sibling matches found were notes with a same-named image folder, or summaries, and were left alone.
- 123 folder notes found. 43 are hubs, which keep their `hub-list`. The other 80 now have a `<!-- folder-list:start/end -->` region:
- 59 converted from the earlier channel `hub-list`, so no note has two lists
- 21 newly added under `## Videos` (channels) or `## In this folder`
- Lists include every published note in the folder, recursively, using the both-sites rule (Publish cache + `dg-publish: true`). Channels list every video newest first with dates, grouped by year past 200, and subfolder notes appear as **Sub-indexes**. Other folders are grouped by subfolder, with each subfolder's folder note as **Index**.
- The `folder-overview` code blocks were left as they were.
- **Stale plugin link lists removed:** 29. These had no per-item `fv-link-list-item` spans and were written right after a `folder-overview` block, listing vault-root files (_Vault Changelog, !welcome, Home) or the folder's own files. Examples: Clippings, AI Samson, Amy Shira Teitel, AppliancePartsPros, Bret Weinstein. Backups are in `C:\Users\jmars\weblists_backup\20261018-201144\`. 31 root lists that do have per-item spans were left (publish.css hides them on Publish). If Obsidian is open, the Folder Notes plugin may write lists back for overview blocks with `folderPath: ""`.
- The list of published files to republish is in `C:\Users\jmars\weblists_republish_20261018.txt`.
## 2026-10-18 - Folder Notes overview paths fixed
- New script `C:\Users\jmars\pubprojects_fo_fix.py` (dry run by default; `--apply` backs up to `C:\Users\jmars\fo_fix_backup\<timestamp>\`). Obsidian was not running.
- **folderPath fixed in 63 of 67 `folder-overview` blocks.** 61 were `""` and 2 had the literal text "Path of folder linked to the file" (Tonya McMillion, Practical Effects Film and HwdSoundMuseum). Each now holds the note's own folder in the plugin's unquoted format, e.g. `folderPath: Video Summaries/Steve Jobs`. No other block keys were changed. 4 were already correct, and no `folderPath: ""` remains.
- **31 stale span-marked link lists removed** (`fv-link-list-start` ... `fv-link-list-end`, all linking vault-root files). 7 correct span lists were kept (Atlas Pro, DamiLee, Inspiraggio, Studio Leonardo, Tonya McMillion, Practical Effects, About/images). With auto-sync on, Obsidian will regenerate correct lists; Publish hides them via publish.css, and Digital Garden needs the suggested custom filter.
- The `weblists` regions are intact; a re-run of the dry run reported 0 changes. Republish list: `C:\Users\jmars\fo_fix_republish_20261018.txt` (62 files).
## 2026-10-18 - Rule: Obsidian Publish is the single source of truth
- **Rule:** a note is *published* exactly when it is on the Obsidian Publish site (jmarshallpittman.net). `dg-publish` mirrors that, so Digital Garden (jmarshallpittman.com) publishes the same set: `true` for every note in the Publish cache and `false` for every note not in it, `Home.md` included. `dg-home` is untouched. The generated web lists use the same rule: a note is listed if it is in the Publish cache.
- **New flag:** `python C:\Users\jmars\pubprojects_weblists.py --sync-dg [--apply]` does this full mirror before generating lists. Modified times are kept, and changed files are backed up. It is **skipped**, and the lists fall back to `dg-publish`, if the cache fetch fails or the cache has fewer than 50% of the last known note count (stored in `C:\Users\jmars\weblists_state.json`, starting at 1,519). A network glitch can therefore never unpublish everything.
- **First run (2026-10-18 21:03):** the cache had 1,917 notes. 395 notes were set to `dg-publish: true` (The B1M 74, MountMedia 107, Josh Plunkett 90, The Overview Effect 16, Canvas 14, plus hubs such as AI, Augmented Traveler, Virtual Historic Human, Tutorials and Obsidian). 0 were set to `false`. 13 list files were regenerated; Home now shows every section. Backups: `C:\Users\jmars\weblists_backup\20261018-210349\`.
- **Routine:** run `--sync-dg` (dry run), then `--sync-dg --apply`, then publish the changed files on both sites. After publishing new notes on Publish, run it again.
## 2026-10-18 - Video Summaries PNG screenshots converted to webp (Publish storage)
- **Why:** the Obsidian Publish site was at about 4.27 GB, over the 4 GB per-site limit. Published PNG screenshots made up 3.98 GB of that.
- **Scope:** only `.png` files under `Video Summaries/` (Marshall's choice). The 350 PNGs elsewhere in the vault were not touched, and 330 of those are still on Publish (about 0.40 GB). Obsidian was closed during the run.
- **Script:** `C:\Users\jmars\pubprojects_png2webp.py`. It does a dry run by default, `--apply` makes the changes, and re-running it is safe. State is kept in `C:\Users\jmars\png2webp_state.json`, and reports are saved as `png2webp_report_<timestamp>.json`.
- **Conversion:** 568 PNGs became lossy webp (quality 85, method 6) at the same pixel size. Transparency was kept where it was used, and the original modified times were kept. Every webp has the same name as its PNG in the same folder. There were no name clashes, 0 files were skipped and 0 failed. Size went from **3.71 GB to 0.135 GB** (about 96% smaller).
- **Links:** 172 image links were rewritten in 16 notes, all in Video Summaries (embeds, sized embeds and plain links). Only the link text changed, and the notes keep their original modified times so Home's "Recently updated" list stays the same. Every rewritten link was checked and opens an existing webp. One link was ambiguous and was left alone: `AI/Species Documenting AGI/This Will Be My Most Disliked Video On YouTube.md` links to `2026-03-08 22_45_56-Greenshot.png`, a name that exists in that AI folder and in `Video Summaries/Lost Build Archives/images/`. It now opens the AI copy, which was not converted.
- **Backups and trash:** the edited notes were backed up to `C:\Users\jmars\png2webp_backup\20261018-212033\`. All 568 original PNGs were moved to `.trash/` with their folder paths kept, and nothing was deleted.
- **Published size estimate:** **4.27 GB down to 0.83 GB** once the old PNGs are removed from Publish. 541 of the converted PNGs were published, and they drop from 3.57 GB to 0.128 GB.
- **To do (Marshall):** follow `C:\Users\jmars\png2webp_republish_20261018-212033.txt`:
- (a) Republish the 16 edited notes on Publish and Digital Garden.
- (b) Publish the 541 new webp files. 170 of them are embedded in the notes from (a) and get uploaded along with those notes. No note embeds the other 371, so tick them by hand in the Publish dialog, or leave them off the site.
- (c) In the Publish changes dialog, tick the 541 old PNGs for deletion.
- The `pubprojects_weblists.py` dry run afterwards showed 0 changes.
## 2026-10-22 - Self-hosting guide (Quartz on Synology)
Added unpublished guide notes in `Obsidian/Self-Hosting with Quartz/` (all `dg-publish: false`, no `publish` property, `project: [[Obsidian]]`):
- `Self-Hosting with Quartz.md` (moc / folder note: why, static-IP answer, architecture diagram, decisions)
- `Quartz Setup Checklist.md` (phased checklist, Marshall vs Obsidian Author)
- `Synology Web Hosting.md` (Web Station + Apache 2.4, web share, deploy user, Container Manager/cloudflared, DDNS fallback)
- `Cloudflare Tunnel.md` (tunnel steps; DNS status: .net/.org on Cloudflare, .com on Vercel DNS)
- `Quartz Build and Deploy.md` (Quartz 5 install/config, staging rule = Publish checkbox, build, robocopy deploy)
Obsidian hub list unchanged: its generated list shows published notes only and these are unpublished. No scripts run; no settings or plugins touched.
## 2026-10-25 - Weekly check fixes (project, type, hubs, author)
Backup: `C:\Users\jmars\weeklyfix_backup\20261025-092151\` (531 notes before editing, plus this changelog). Scripts and logs are in `C:\Users\jmars\` on Enceladus: `weeklyfix_apply.py`, `weeklyfix_apply_log_applied.json`, `weeklyfix_verify.py` and `weeklyfix_links.py`. Fixes 1, 2 and 4 changed frontmatter only. Note bodies and modified times were kept. Nothing was deleted, and no `publish` property, `.obsidian` file or plugin setting was touched.
- **Fix 1:** added `project: "[[X Research]]"` to 512 X Research notes that had none (Topics 360, Users 129, Authors 23). Existing project values were left alone.
- **Fix 2:** added `type` (and `project`) to the 19 notes that had no type:
- Tutorials/Loish (3): clipping, `[[Tutorials]]`
- Clippings (5): clipping, `[[Clippings]]`
- X (2): clipping, `[[X]]`
- Seanald (6): clipping, `[[Seanald]]`
- Obsidian/DigitialGarden (3): note, `[[Obsidian]]`, tags obsidian and tutorial
- **Fix 3:** created 25 hub notes, all `type: moc` and `dg-publish: false`:
- `Seanald/Seanald.md` (top-level hub with a hub list)
- `Tutorials/Loish/Loish.md`
- 7 Video Summaries channel hubs with `creator`: Ben Claremont, International Center for Consciousness Studies, StarTalk Plus, Count Grey Matter, The AI Daily Brief, Google Earth and Joseph
- `X Research/Authors/Authors.md`
- 15 `@handle/@handle.md` folder hubs in X Research for folders that only had a `-x-profile` note. Each links to its profile. Profiles were not renamed or changed.
- `X Research/Topics/Topics.md` was **not** created. `Topics/topics.md` already exists, and the bare `[[Topics]]` links in Home, !welcome and Topics/ would become ambiguous.
- **Fix 4:** in *Kutcherov 2013*, renamed `authors` to `author`. There was no existing `author` to merge with.
- **`pubprojects_weblists.py --apply`:** refreshed the generated regions in 29 files:
- filled the new hubs' lists
- X Research hub list went from 16 to 111 published notes
- Obsidian, Tutorials and Seanald lists picked up the newly assigned notes
- Home's recent list now shows project labels for X Research and Seanald notes
- Its backup is `C:\Users\jmars\weblists_backup\20261025-092347\`. A second dry run showed 0 changes.
- **Verified:**
- every frontmatter block is closed, with no duplicate keys
- 0 notes without `type`
- 0 new broken links. 11 old `[[@handle]]` author links in Clippings and X now resolve to the new hubs.
- **To do (Marshall):** republish the 109 published notes listed in `C:\Users\jmars\weeklyfix_republish_20261025.txt` on Publish and Digital Garden. The new hubs are unpublished. Publish them only if you want them on the site.
## 2026-10-25 - Topics hub unified with the hub workflow
Backup: C:\Users\jmars\weeklyfix_backup\20261025-topics\
- Renamed Topics/topics.md to Topics/Topics.md (case-only rename via a temp name). The 8 [[Topics]]/[[topics]] links still resolve.
- Rebuilt Topics.md like the other top-level hubs: type moc, status active, tag topics, created 2025-03-10 kept, summary, dg-publish false kept. Dropped its self-referencing project property. Intro line kept, with "tings" fixed to "things".
- Added a folder-overview block, Key notes grouped by subfolder (Color Design, Monetization, Organization), a hub-list region and a Live view base.
- The 5 subfolder notes already had project [[Topics]] and type note, so they weren't changed.
- Ran pubprojects_weblists.py --apply. The warning "project target without hub note: Topics" is gone.
## 2026-11-02 - Weekly check fixes applied (from the 2026-11-01 check)
Backup: C:\Users\jmars\weeklyfix_backup\20261101-174356\ (originals of every edited file, the tag rules and this changelog). Obsidian was closed. Frontmatter only, mtimes preserved, no deletions, publish properties untouched.
- **Fix 1, Social Archiver import:** 63 notes (61 in Instagram, 1 in Oriko, 1 in Social Archives) got `type: clipping`, a `project` ([[Instagram]], [[Oriko]] or [[Social Archives]]) and tags `instagram`, `social-media`. New hubs: `Instagram/Instagram.md`, `Oriko/Oriko.md`, `Social Archives/Social Archives.md` (all unpublished). Added both tags to `pubprojects_tag_rules.py`. Root `Attachments/` untouched. The two `1969/12` posts were not moved; their real dates are Jan 28, 2024 (Orbit app) and Jul 16, 2022 (Taylor concert).
- Archiver check: adding properties is safe. A full re-archive of a single post rewrites its frontmatter and keeps only the archiver's own keys plus `tags`, so `type` and `project` (and `dg-publish`) would be dropped for that post. Tags survive.
- `Instagram/tropicalgabiii/Instagram.md` shares its name with the new `Instagram` hub, so bare `[[Instagram]]` is ambiguous from that folder.
- **Fix 2, X Research:** added `project: "[[X Research]]"` to 45 notes. Renamed `Topics/Grokbot/Untitled.md` to `SpaceXAI GrokBot use cases PDF - 10-step guide.md` and gave it `type: clipping`, the project and tags `x-research`, `grokbot`. Nothing linked to it. The root `X Research.md` was not given a self-project.
- **Fix 3:** 9 Clippings notes got `type: clipping` and `project: [[Clippings]]`. 3 Tutorials/Email notes got `type: note` and `project: [[Email]]`. New hub `Tutorials/Email/Email.md` (unpublished).
- **Fix 4:** the Magnesium, Grokbot and Social Security topic hubs already existed. Only their child notes needed `project` (done in fix 2).
- **`pubprojects_weblists.py --apply`:** refreshed generated regions in 15 files (new hubs, X Research hub, 8 Video Summaries hubs, Home). Backup `C:\Users\jmars\weblists_backup\20261102-174541\`. A second dry run showed 0 changes and 0 broken links. The only warning is the old "Panoramas" one.
- **To do (Marshall):** republish the notes in `C:\Users\jmars\weeklyfix_republish_20261101.txt`.
## 2026-11-02 - never-publish lockdown
- Tutorials/Email/brevo.md: added `publish: false` (marked `never-publish: true`). Backup: C:\Users\jmars\weeklyfix_backup\20261102-neverpublish.
- Weekly check now enforces `publish: false` and `dg-publish: false` on every note with `never-publish: true` and warns if one appears on the Publish site.
## 2026-11-02 - Book Summaries bot home
Backup: C:\Users\jmars\weeklyfix_backup\20261102-bookSummaries\ (originals of the scripts and the changelog; the Video Summaries hubs weblists refreshed were backed up there too). Obsidian was closed. The existing `Books/` folder was not touched.
- Created `Book Summaries/Book Summaries.md` (hub: type moc, tags book-summaries and index, dg-publish false, with a hub-list region and a Live view base), `Book Summaries/Queue.md` (the bot's to-do list, type note) and `Templates/Book Summary.md` (full book-dossier properties, project [[Book Summaries]]).
- Notes go flat in `Book Summaries/` as `<Title> - <Author>.md`. The base shows only `type == book` notes with `project == this`, so Queue is not listed as a book.
- `pubprojects_tag_rules.py`: added the `book-summaries` rule.
- `pubprojects_weblists.py`: added Book Summaries to the hub set (so the hub list exists while empty), to the Research Library section after Books, and to FALLBACK descriptions.
- `pubprojects_weblists.py --apply`: filled the hub's list and refreshed 3 Video Summaries hubs (High Performance, My First Million, USAFacts). A dry run afterwards showed 0 changes and 0 broken links.
## 2026-11-03 - Home refresh, intro links, Book Summaries lists
Backup: C:\Users\jmars\weeklyfix_backup\20261103-home (weblists own backup: weblists_backup\20261103-204717)
- Home intro: [[topics]] -> [[Topics/Topics|Topics]]; [[external tutorials]] -> [[Tutorials/external tutorials|external tutorials]]; X link kept.
- pubprojects_weblists.py: Book Summaries hub lists only type: book dossiers grouped by author; author hubs and Queue not counted; author hubs left untouched.
- Ran weblists --sync-dg --apply: 91 files changed (republish list weeklyfix_republish_20261103.txt); 53 dossiers; 0 broken links.