Skip to main content

max / makenotwork

Update doc paths for monorepo restructure Shared/ → MNW/shared/, MNW/src/ → MNW/server/src/ across all documentation and README files. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Author: Max J. <87768334+MaxJMath@users.noreply.github.com> · 2026-04-15 20:02 UTC
Commit: 4745e798a42a9ba4899cdd050a86bf762f23474f
Parent: b74f0c9
14 files changed, +54 insertions, -54 deletions
@@ -60,7 +60,7 @@ v0.3.2. Audit grade A. 225 tests.
60 60 | Routes | `src/routes/` (mod.rs, helpers.rs, forum/{mod,views,thread,posts,actions}.rs, moderation.rs, settings.rs, admin.rs, flagging.rs, tracking.rs, search.rs, uploads.rs) |
61 61 | Auth (OAuth) | `src/auth.rs` |
62 62 | CSRF | `src/csrf.rs` |
63 - | Markdown | `docengine` crate (`Shared/docengine/`) — features: mentions, quotes |
63 + | Markdown | `docengine` crate (`shared/docengine/`) — features: mentions, quotes |
64 64 | Config | `src/config.rs` |
65 65 | Seed data | `src/seed.rs` |
66 66 | Entry point | `src/main.rs` |
@@ -25,7 +25,7 @@ Single binary, single process. Migrations auto-run on boot. Background tasks (he
25 25 ## Code Structure
26 26
27 27 ```
28 - MNW/src/
28 + MNW/server/src/
29 29 main.rs Entry point (tracing, pool, session store, app state, graceful shutdown)
30 30 lib.rs Library root (AppState, build_app, route composition)
31 31 config.rs Configuration from environment variables
@@ -188,11 +188,11 @@ Developer sync infrastructure hosted on MNW. JWT-authenticated API for client ap
188 188
189 189 ### DocEngine
190 190
191 - Extracted crate (`Shared/docengine/`) for documentation rendering. Loads markdown files from disk at startup, renders to HTML with section hierarchy, navigation, and search index. Serves `/docs/*` routes.
191 + Extracted crate (`shared/docengine/`) for documentation rendering. Loads markdown files from disk at startup, renders to HTML with section hierarchy, navigation, and search index. Serves `/docs/*` routes.
192 192
193 193 ### TagTree
194 194
195 - Shared tag standard (`Shared/tagtree/`). Hierarchical tags with path column (migration 038). Per-app config: MNW allows 5 levels, 100 max tags. Used for content discovery and filtering.
195 + Shared tag standard (`shared/tagtree/`). Hierarchical tags with path column (migration 038). Per-app config: MNW allows 5 levels, 100 max tags. Used for content discovery and filtering.
196 196
197 197 ### File Scanning
198 198
@@ -6,14 +6,14 @@ Run after major features, monthly during active development, or when concerned a
6 6
7 7 | Harness ID | Project | Path | Stack |
8 8 |------------|---------|------|-------|
9 - | `mnw` | MakeNotWork | MNW/ | Rust/Axum/PostgreSQL, Askama, HTMX |
10 - | `synckit` | SyncKit Client SDK | Shared/synckit-client/ | Rust, reqwest, ChaCha20-Poly1305, Argon2, keychain |
11 - | `pom` | PoM | pom/ | Rust/Axum/SQLite, MCP (rmcp), reqwest |
9 + | `mnw` | MakeNotWork | MNW/server/ | Rust/Axum/PostgreSQL, Askama, HTMX |
10 + | `synckit` | SyncKit Client SDK | MNW/shared/synckit-client/ | Rust, reqwest, ChaCha20-Poly1305, Argon2, keychain |
11 + | `pom` | PoM | MNW/pom/ | Rust/Axum/SQLite, MCP (rmcp), reqwest |
12 12 | `af` | audiofiles | Apps/audiofiles/ | Rust, eframe, egui, cpal, rusqlite |
13 13 | `bb` | Balanced Breakfast | Apps/balanced_breakfast/ | Rust/Tauri 2, SQLite, Rhai plugins, vanilla JS |
14 14 | `go` | GoingsOn | Apps/goingson/ | Rust/Tauri 2, SQLite, vanilla JS, IMAP/SMTP |
15 - | `mt` | Multithreaded | multithreaded/ | Rust/Axum/PostgreSQL, Askama, HTMX, MNW OAuth |
16 - | `tagtree` | TagTree | Shared/tagtree/ | Rust library crate, no_std compatible, serde, criterion benchmarks |
15 + | `mt` | Multithreaded | MNW/multithreaded/ | Rust/Axum/PostgreSQL, Askama, HTMX, MNW OAuth |
16 + | `tagtree` | TagTree | MNW/shared/tagtree/ | Rust library crate, no_std compatible, serde, criterion benchmarks |
17 17
18 18 ---
19 19
@@ -5,7 +5,7 @@
5 5
6 6 ## Overall Grade: A
7 7
8 - Run 13 cross-project audit. ~1,186 tests (632 unit + ~551 integration + 17 admin + 28 health). 0 clippy warnings. v0.3.19. Grade stable at A. Major additions since Run 12: video upload/playback (migration 053), content fingerprinting (051), bundled license text (052), maintainability splits (validation/, git/, payments/ directory modules), S3 storage extraction to shared crate (`Shared/s3-storage/`). Dead code/duplication audit: ~40 lines removed. Run 12 test failures (delete_item_returns_toast, item_wizard_license_keys) resolved.
8 + Run 13 cross-project audit. ~1,186 tests (632 unit + ~551 integration + 17 admin + 28 health). 0 clippy warnings. v0.3.19. Grade stable at A. Major additions since Run 12: video upload/playback (migration 053), content fingerprinting (051), bundled license text (052), maintainability splits (validation/, git/, payments/ directory modules), S3 storage extraction to shared crate (`shared/s3-storage/`). Dead code/duplication audit: ~40 lines removed. Run 12 test failures (delete_item_returns_toast, item_wizard_license_keys) resolved.
9 9
10 10 ## Scorecard
11 11
@@ -299,7 +299,7 @@ Filed in `docs/mnw/todo.md`.
299 299 33. **[LOW]** bincode unmaintained (RUSTSEC-2025-0141) — upstream via syntect/yara-x, warning only
300 300
301 301 ### Run 13 (2026-04-06) — Maintenance
302 - No new action items. Dead code/duplication audit: ~40 lines removed across MNW+GO. Maintainability splits completed (validation/, git/, payments/). S3 storage extraction to `Shared/s3-storage/` shared crate (MNW + MT).
302 + No new action items. Dead code/duplication audit: ~40 lines removed across MNW+GO. Maintainability splits completed (validation/, git/, payments/). S3 storage extraction to `shared/s3-storage/` shared crate (MNW + MT).
303 303
304 304 ### New (twenty-fifth audit)
305 305 25. ~~Split email.rs into submodules~~ -- Done (email/mod.rs + email/tokens.rs, ~800 + ~500 LOC)
@@ -610,8 +610,8 @@ Per-user staging dirs at `/var/lib/mnw-cli/staging/{user_id}/`. Cleaned up:
610 610
611 611 - Design doc: `docs/mnw/server/cli.md` (this file)
612 612 - Project code: `mnw-cli/`
613 - - MNW API routes: `MNW/src/routes/api/`
614 - - MNW SSH key storage: `MNW/src/db/` (user_ssh_keys queries)
615 - - MNW internal auth: `MNW/src/routes/api/internal.rs` (to be created)
613 + - MNW API routes: `MNW/server/src/routes/api/`
614 + - MNW SSH key storage: `MNW/server/src/db/` (user_ssh_keys queries)
615 + - MNW internal auth: `MNW/server/src/routes/api/internal.rs` (to be created)
616 616 - Staging directory: `/var/lib/mnw-cli/staging/` (on server)
617 617 - Host key: `/etc/mnw-cli/host_ed25519` (on server)
@@ -578,16 +578,16 @@ Reply emails from users include `In-Reply-To` referencing the post they replied
578 578
579 579 ```
580 580 # MNW — existing (modify)
581 - MNW/src/scheduler.rs
582 - MNW/src/email/mod.rs
583 - MNW/src/routes/postmark.rs
584 - MNW/src/db/
581 + MNW/server/src/scheduler.rs
582 + MNW/server/src/email/mod.rs
583 + MNW/server/src/routes/postmark.rs
584 + MNW/server/src/db/
585 585
586 586 # MNW — new
587 - MNW/src/db/mailing_lists.rs
588 - MNW/migrations/035_community_provisioning.sql
589 - MNW/migrations/036_thread_linking.sql
590 - MNW/migrations/039_mailing_lists.sql
587 + MNW/server/src/db/mailing_lists.rs
588 + MNW/server/migrations/035_community_provisioning.sql
589 + MNW/server/migrations/036_thread_linking.sql
590 + MNW/server/migrations/039_mailing_lists.sql
591 591
592 592 # MT — existing (modify)
593 593 multithreaded/crates/mt-db/src/mutations.rs
@@ -296,22 +296,22 @@ v0.3.23. Audit grade A. ~1,233 tests.
296 296
297 297 ## Key Paths
298 298 ```
299 - MNW/src/
299 + MNW/server/src/
300 300 lib.rs, main.rs, config.rs, error.rs, auth.rs, db/
301 301 storage.rs, payments/, templates/, routes/
302 302 git/, git_issues/, synckit_auth.rs, build_runner.rs, validation/
303 303 fingerprint/ (registry, visible stamps, watermarks, streaming)
304 304 import/ (CSV converter, pipeline, intermediate format)
305 - MNW/tests/
305 + MNW/server/tests/
306 306 integration.rs, harness/, workflows/*.rs
307 - MNW/migrations/ (001-056)
308 - MNW/templates/
309 - MNW/deploy/
310 - MNW/site-docs/public/, MNW/site-docs/unpublished/
307 + MNW/server/migrations/ (001-057)
308 + MNW/server/templates/
309 + MNW/server/deploy/
310 + MNW/server/site-docs/public/, MNW/server/site-docs/unpublished/
311 311 _meta/harness/ (codebase index: SQLite DB + MCP server)
312 312 codebase.db, server/src/{index,populate,schema}.ts
313 - MNW/docs/audit.md (cross-project audit instructions, harness-integrated)
314 - MNW/docs/filetype_matrix.md (format compatibility, transcoding rules, tier strategy)
313 + MNW/server/docs/audit.md (cross-project audit instructions, harness-integrated)
314 + MNW/server/docs/filetype_matrix.md (format compatibility, transcoding rules, tier strategy)
315 315 ```
316 316
317 317 ## Deps
@@ -53,8 +53,8 @@ All optional features are off by default. Enable what you need:
53 53
54 54 ```toml
55 55 # In Cargo.toml
56 - docengine = { path = "../Shared/docengine" } # Core only
57 - docengine = { path = "../Shared/docengine", features = ["full"] } # Everything
56 + docengine = { path = "../shared/docengine" } # Core only (from MNW/server/)
57 + docengine = { path = "../../MNW/shared/docengine" } # From Apps/
58 58 ```
59 59
60 60 ## Core API
@@ -3,7 +3,7 @@
3 3 - Last audited: 2026-03-28 (seventh audit, Run 12 cross-project)
4 4 - Previous audit: 2026-03-18 (sixth audit, Run 9 cross-project)
5 5 - Crate: `synckit-client` v0.3.0
6 - - Path: `Shared/synckit-client/`
6 + - Path: `MNW/shared/synckit-client/`
7 7
8 8 ## Overall Grade: A
9 9
@@ -290,12 +290,12 @@ Expose these to the frontend:
290 290
291 291 | What | Where |
292 292 |------|-------|
293 - | SDK source | `Shared/synckit-client/src/` |
294 - | SDK auth | `Shared/synckit-client/src/client/auth.rs` |
295 - | SDK push/pull | `Shared/synckit-client/src/client/sync.rs` |
296 - | SDK encryption | `Shared/synckit-client/src/crypto.rs` |
293 + | SDK source | `MNW/shared/synckit-client/src/` |
294 + | SDK auth | `MNW/shared/synckit-client/src/client/auth.rs` |
295 + | SDK push/pull | `MNW/shared/synckit-client/src/client/sync.rs` |
296 + | SDK encryption | `MNW/shared/synckit-client/src/crypto.rs` |
297 297 | GO sync service | `Apps/goingson/src-tauri/src/sync_service.rs` |
298 298 | BB sync service | `Apps/balanced_breakfast/src-tauri/src/sync_service.rs` |
299 299 | AF sync service | `Apps/audiofiles/crates/audiofiles-sync/src/service.rs` |
300 - | Server endpoints | `MNW/src/routes/synckit.rs` |
301 - | Server DB | `MNW/src/db/synckit.rs` |
300 + | Server endpoints | `MNW/server/src/routes/synckit.rs` |
301 + | Server DB | `MNW/server/src/db/synckit.rs` |
@@ -12,8 +12,8 @@ v0.3.0. Audit grade A. 304 tests.
12 12 - [ ] C FFI layer — enables Swift/Kotlin/Python bindings. Only if non-Tauri consumers appear.
13 13
14 14 ## Key Paths
15 - - Client: `Shared/synckit-client/src/client/` (mod, auth, encryption, sync, subscribe, blob, helpers)
16 - - Crypto: `Shared/synckit-client/src/crypto.rs`
17 - - Types: `Shared/synckit-client/src/types.rs` (includes PullFilter, FilteredPullRequest)
18 - - Keystore: `Shared/synckit-client/src/keystore.rs`
19 - - Tests: `Shared/synckit-client/tests/integration.rs`
15 + - Client: `MNW/shared/synckit-client/src/client/` (mod, auth, encryption, sync, subscribe, blob, helpers)
16 + - Crypto: `MNW/shared/synckit-client/src/crypto.rs`
17 + - Types: `MNW/shared/synckit-client/src/types.rs` (includes PullFilter, FilteredPullRequest)
18 + - Keystore: `MNW/shared/synckit-client/src/keystore.rs`
19 + - Tests: `MNW/shared/synckit-client/tests/integration.rs`
@@ -121,9 +121,9 @@ At typical corpus sizes (hundreds to low thousands), `suggest` completes in sing
121 121
122 122 | What | Path |
123 123 |------|------|
124 - | Library source | `Shared/tagtree/src/lib.rs` |
125 - | Cargo manifest | `Shared/tagtree/Cargo.toml` |
126 - | Benchmarks | `Shared/tagtree/benches/tagtree_bench.rs` |
124 + | Library source | `MNW/shared/tagtree/src/lib.rs` |
125 + | Cargo manifest | `MNW/shared/tagtree/Cargo.toml` |
126 + | Benchmarks | `MNW/shared/tagtree/benches/tagtree_bench.rs` |
127 127 | Audit review | `docs/shared/tagtree/audit_review.md` |
128 128
129 129 ## Metrics
@@ -11,7 +11,7 @@ use theme_common::{load_theme, list_themes_from_dirs, dev_themes_dir};
11 11 use std::path::PathBuf;
12 12
13 13 // Set up theme directories (later entries override earlier ones)
14 - let bundled = PathBuf::from("/path/to/Shared/themes");
14 + let bundled = PathBuf::from("/path/to/MNW/shared/themes");
15 15 let custom = PathBuf::from("/path/to/user/custom-themes");
16 16 let dirs = vec![(bundled, false), (custom, true)];
17 17
@@ -27,9 +27,9 @@ println!("Name: {}", theme.meta.name); // "Catppuccin Mocha"
27 27 println!("Variant: {}", theme.meta.variant); // "dark"
28 28 println!("BG: {}", theme.colors["background.primary"]); // "#181825"
29 29
30 - // Dev helper: find Shared/themes/ relative to CARGO_MANIFEST_DIR
31 - if let Some(dev_dir) = dev_themes_dir(Path::new(env!("CARGO_MANIFEST_DIR")), 2) {
32 - // dev_dir = .../Code/Shared/themes
30 + // Dev helper: find MNW/shared/themes/ relative to CARGO_MANIFEST_DIR
31 + if let Some(dev_dir) = dev_themes_dir(Path::new(env!("CARGO_MANIFEST_DIR")), 3) {
32 + // dev_dir = .../Code/MNW/shared/themes
33 33 }
34 34 ```
35 35
@@ -95,14 +95,14 @@ The theme ID is the filename without `.toml` (e.g., `catppuccin-mocha.toml` has
95 95 | `parse_meta(id, table, is_custom)` | Parse `[meta]` from a TOML table into `ThemeMeta` |
96 96 | `extract_colors(table)` | Flatten color sections into a `HashMap<String, String>` |
97 97 | `validate_theme_id(id)` | Check that an ID contains only safe characters |
98 - | `dev_themes_dir(manifest_dir, levels)` | Walk up parent directories to find `Shared/themes/` (dev convenience) |
98 + | `dev_themes_dir(manifest_dir, levels)` | Walk up parent directories to find `MNW/shared/themes/` (dev convenience) |
99 99
100 100 ## Directory Priority
101 101
102 102 `list_themes_from_dirs` and `load_theme` accept a list of `(PathBuf, bool)` pairs. Later directories override earlier ones by theme ID. The `bool` marks whether the directory contains user-custom themes (`is_custom` on `ThemeMeta`).
103 103
104 104 Typical setup for a Tauri app:
105 - 1. Bundled themes from `Shared/themes/` (is_custom = false)
105 + 1. Bundled themes from `MNW/shared/themes/` (is_custom = false)
106 106 2. User themes from an app data directory (is_custom = true)
107 107
108 108 ## License
@@ -78,7 +78,7 @@ The filename without `.toml` is the theme ID. IDs must contain only alphanumeric
78 78 | Balanced Breakfast | Runtime from disk via Tauri resource glob | `theme-common` |
79 79 | audiofiles | Compile-time embed via `include_str!` | Direct TOML parsing |
80 80
81 - GoingsOn and Balanced Breakfast include this directory as a Tauri resource (`../../../Shared/themes/*.toml` in `tauri.conf.json`). The `theme-common` crate handles parsing and color extraction at runtime.
81 + GoingsOn and Balanced Breakfast include this directory as a Tauri resource (`../../../MNW/shared/themes/*.toml` in `tauri.conf.json`). The `theme-common` crate handles parsing and color extraction at runtime.
82 82
83 83 audiofiles embeds theme files at compile time and parses TOML directly without the `theme-common` crate.
84 84