Orion vault — clean initial history

Knowledge vault (Orion/PARA) migrated from the pre-Orion 484vault on
2026-10-01. Deliberately orphaned: prior history contained a plaintext
password and stays local-only on branch archive/pre-boilerplate-history.
Secrets and live Hermes state are gitignored.
This commit is contained in:
Avi 2026-10-02 08:34:04 -05:00
commit a66996ac10
233 changed files with 103810 additions and 0 deletions

View file

@ -0,0 +1,128 @@
---
name: orion-archive
description: "Archive a whole Area (with all its Projects) into a bundle under 5. Archive/, or restore one that's resuming. Moves the Area and Project folders, keeps reusable research in place, downgrades people whose only tie was this Area, writes a tombstone manifest, and repoints every inbound link. People, Threads and Decisions never move. Fully reversible. Triggers on: archive [name], archive area, wind down [name], resume [name], restore [name], unarchive [name]."
---
# orion-archive — retire or restore a whole Area
**Never delete.** Everything moves to `5. Archive/`; nothing is discarded. The tombstone exists so a later session can find and restore it.
## Archive or close?
**Is the Area going away (ended or paused)?** → this skill. **Is the Area staying and one workstream done?** → `orion-close`. Don't close every workstream before archiving an Area — archive the bundle; they travel with it.
**Archiving is a change, not a repair. Confirm with the owner before moving anything.**
---
## The bundle
```
5. Archive/<Area>/
_index.md ← tombstone manifest (required)
1. Projects/<Area>/... ← every Project under the Area, moved wholesale
2. Areas/<Area>/... ← the Area folder, including knowledge/
<ID>/... ← closed workstreams already here from orion-close — merge, don't collide
```
**If only one Project is being retired and its Area stays live**, it's not an archive — close it (`orion-close`) or pause it.
## What moves, what doesn't
| | |
|---|---|
| `1. Projects/<Area>/` and `2. Areas/<Area>/` | **Move** into the bundle |
| `3. Resources/Research/` (reusable, no single Area) | **Stays** |
| People | **Never move.** Downgrade — see below |
| Threads | **Never bundled.** A thread may span Areas; resolve or drop it separately |
| Decisions | **Never move, never edited** (dead link targets still get repointed) |
| Outbox, lint reports | **Stay flat** — they describe more than one Area |
**The ownership test:** does this content have exactly one owning Area? Yes → bundle it. No → leave it where it is.
## People — downgrade, don't move
For each person whose **only** live tie was this Area:
- Set `tier: contact`. **Remove `cadence:` and `follow_up_by:`** — a contact carries neither.
- Add a dated `Contact History` line: archived, tier changed.
- **Keep their Area tag.** It records where they entered the vault.
People with ties elsewhere keep their tier; if their follow-up was specifically for this Area's work, **don't change it** — list them on a `Released:` line in the log entry for the owner to decide.
---
## Sequence
1. **Inventory** — every file under the Area and its Projects; every person whose context is this Area; threads naming it.
2. **Confirm with the owner.**
3. **Move** the folders into the bundle (`git mv` if the vault is a git repo, to keep history).
4. **Write the tombstone** — format below.
5. **Repoint inbound links, everywhere** — hubs, people, threads, `hot.md`, **and ledgers** (`log.md`, folds, decisions). Method: scan every `[[…]]` (ignoring code blocks), resolve each against the real tree, **change only the link target, never the prose**, keep display aliases. **Rescan and confirm zero new dead links.**
6. **Downgrade people** per the rule above.
7. **Retire the Area tag** in `wiki/meta/tags.md` (mark it archived; pages keep it).
8. **Log** (`[vault]`, with `Released:` if any) and suggest `cascade`.
## Tombstone — `5. Archive/<Area>/_index.md`
```markdown
---
type: archive
subject: <Area> — archive bundle
date: YYYY-MM-DD
tags: [archive, <area-tag>]
---
# <Area> — archived YYYY-MM-DD
**Why:** one or two sentences — what happened, no speculation.
## In this bundle
- 1. Projects/<Area>/ — <which workstreams, by ID>
- 2. Areas/<Area>/ — hub and knowledge/
## Deliberately not in this bundle
- People — <who stayed, downgraded to contact>
- Threads — <which, and their status>
- Decisions — untouched in 4. Decisions/
## Links
Repointed N inbound links; rescan: 0 dead.
## If this resumes
Run `resume <Area>` — orion-archive, restore path.
```
---
## Restore — `resume <Area>`
1. **Read the tombstone.** Don't reconstruct from memory.
2. **Move the folders back** to their exact original paths.
3. **Re-promote people** listed as downgraded: restore their previous `cadence:` (check git history of their page rather than guessing) and set a real `follow_up_by:`. Add a Contact History line; don't edit the old one.
4. **Repoint links back** — same method as archiving, ledgers included, rescan to zero.
5. **Keep the Area's `workstream_counter:` as it was.** IDs issued before the archive stay spent.
6. **Retire the tombstone, don't delete it:** append `## Resumed YYYY-MM-DD`. The bundle folder's end state is that one file.
7. Un-archive the tag in `tags.md`. Log. Cascade.
## Output
```
## Archive — <Area>
Moved: 1. Projects/<Area>/ (N workstreams) · 2. Areas/<Area>/
Stayed: <research, threads, etc.>
People downgraded: <names> · Released: <names or none>
Links repointed: N — rescan 0 dead
Tombstone: 5. Archive/<Area>/_index.md
Next: run cascade.
```
## Rules
- **Never delete. Always reversible.**
- **Confirm before moving** — archiving is a change.
- **People, Threads, Decisions never move.** People downgrade to `tier: contact`; follow-up fields removed.
- **Area tags are never stripped.**
- **Repoint every dead link the move creates, ledgers included. Only the target changes. Rescan to zero.**
- **A tombstone is required** for every bundle.

View file

@ -0,0 +1,153 @@
---
name: orion-cascade
description: "Sync an Orion vault's wiki/ navigation layer from the numbered folders. Rewrites wiki/hot.md (current state: outstanding sends, workstreams, the owner's own next moves, people due for follow-up), appends one wiki/log.md entry, rebuilds wiki/index.md when structure changed, and reports how many log entries are waiting to be folded. Run at the end of every session that changed something. Triggers on: cascade, run cascade, sync the wiki, update the wiki."
---
# orion-cascade — sync the wiki layer
The numbered folders are the source of truth. Cascade reads them and rewrites `wiki/` to match. **One command, no flags.** Always rewrite `hot.md` and append to `log.md`; rebuild `index.md` when you see the structure changed (a hub added, moved, renamed, or its `status`/`area` changed). When in doubt, rebuild it.
⛔ Skip every path listed under *Fences* in `AGENTS.md`.
---
## 1. Read hubs
Glob `1. Projects/**/*_hub.md` and `2. Areas/**/*_hub.md` — **match the `_hub` suffix, never a full filename.**
- **Skip `paused`, `closed` and `archived` Projects** for attention purposes (count them, don't read them further). Paused is a deliberate exclusion.
- **Areas carry no attention status.** List them; never compute drift or freshness on one.
- For each `open` Project: `id`, name, `next:` (**may be a YAML list — read every entry**), `deadline:`.
## 2. Read people
Glob `3. Resources/People/*.md`. **Only `tier: relationship` pages can flag.**
For each: compute the **live due date**:
- `follow_up_by` after `last_contact` (or no `last_contact`) → `follow_up_by`.
- `follow_up_by` on or before `last_contact` is **spent** → `weekly`/`biweekly`/`monthly`: `last_contact` + 7/14/30 days, marked *(from last contact)*; `organic`: **no date since contact** (its own line, never overdue).
- No `follow_up_by` at all → **defect**.
Bucket: **Overdue** · **Due within 7 days** · **No date since contact** · **Defects**. **Never write a computed date back to the page.**
⚠ **This step is where names get swapped or dropped.** Before writing, check every name you're about to render against its own file's `tier:` and dates. Similar names are the usual failure.
## 3. Read threads
Glob `3. Resources/Threads/*.md`: `status`, one-line state. **A thread whose `domains:` no longer name any live hub has collapsed** — flag it for close or drop.
## 4. Read holds
`wiki/meta/holds.md`, before rendering any age. Rules → `AGENTS.md`, *Holds*. In short: an open hold covering an item → render `held`; a closed hold → `3d (since 01-05, 11d held)`; an item created after the hold began is not covered.
## 5. Rewrite `wiki/hot.md`
**Rewrite, never append.** Hard cap **80 lines.** Sections in this order:
```markdown
## Hold ← only when one is open. Two lines: period, scope
## Outstanding sends ← every `send` and `wait` from live hubs, with age
## Workstreams ← "N open: WEB-1, WEB-3, OPS-2 · N paused: …" — one line, never a block each
## Now ← every `build`/`decide` next: — the owner's own moves. Oldest [since] first, no ages
## People ← "N armed", then overdue / due soon / defects by name
## Threads ← open threads, one line each (omit if none)
## Warnings ← ⚠ items worth carrying (omit if none)
## Standing state ← carried forward, pruned each run
```
**Ageing sends:** `[since YYYY-MM-DD]` is the authority → else git (`git log -1 --format=%ad --date=short -S'next:' -- <hub>`) → else **no age**. A wrong age is worse than none.
**Mis-verbed moves are a repair:** a `send →`/`wait →` naming the owner is really a `build`; a `build →` whose move is a message is really a `send`. Fix the hub's verb, then render.
**Never age an `open` workstream.** It has no clock by design.
**The cap is enforced by eviction, not compression.** At 80 lines, find what no longer belongs; don't shrink prose or raise the cap.
**The two-run exit for warnings.** A `⚠` item that appears in **two consecutive cascades** without resolving moves to `wiki/meta/open-questions.md` as a forced binary, and `hot.md` keeps one pointer line stating the consequence:
```markdown
⚠ Vendor quote unverified — don't cite its dates → open question #4
```
**Never drop a warning without leaving a pointer.**
**Vault voice:** everything in `hot.md` is the vault speaking. A claim sourced from a document, not from the owner, stays attributed or stays out.
## 6. Rebuild `wiki/index.md` — when structure changed
Plain markdown, one line per page, navigation only — no prose:
```markdown
## Areas
- [[2. Areas/Website/Website_hub|Website]] — standing · prefix WEB · 3 issued
## Projects
### Open
- [[1. Projects/Website/Pricing Page/WEB-3_hub|WEB-3 Pricing Page]] — done when: "…"
### Paused
## Threads
## People
### Relationship tier
- [[3. Resources/People/Sam Example|Sam Example]] — monthly · due 2026-02-01
### Contacts
## Decisions
- [[4. Decisions/2026-01-05-pricing-model|2026-01-05 Pricing model]] — open
## Folds
```
*(If the vault is opened in Obsidian with Dataview, the owner may replace sections with queries. Keep the headings.)*
## 7. Append to `wiki/log.md`
New entry **at the top**, below the header. Never edit a past entry.
```markdown
## YYYY-MM-DD — [vault] Cascade: <what changed, in a few words>
- Projects: N open, N paused
- People: N overdue, N due soon — <names>
- <notable state changes>
```
Use `[build]` only when the session shipped something, and then add `Shipped: <what exists now that didn't>`.
## 8. Count unfolded log entries — every run
```bash
grep -c '^## [0-9]' wiki/log.md # all entry headings
grep -c '\[folded\]' wiki/log.md # fold pointers — not entries
```
**Unfolded = headings − pointers.** Threshold **16**. Print the number every run, above or below threshold: `Log: 9 / 16` or `Log: 23 / 16 — fold due`. **Don't run the fold** — that's `orion-fold`, on the owner's word.
---
## Output
```
## Cascade — YYYY-MM-DD
Sends outstanding
- <Person> — <what> (<age>)
Workstreams: N open (<IDs>) · N paused (<IDs>)
People (armed: N)
Overdue: <Name> (due YYYY-MM-DD)
Due this week: <Name> (due YYYY-MM-DD[, from last contact])
Defects: <Name> — no follow_up_by
Threads: <collapsed or notable>
Log: N / 16 [— fold due]
Wiki updated: hot.md · log.md [· index.md]
Verified: <N> rendered names checked against their own files — pass / <mismatch>
```
The `Log` and `Verified` lines print every run. A check that only speaks when something's wrong teaches nobody what normal looks like.
## Rules
- **`hot.md` and `index.md` are state — rewrite. `log.md` is a ledger — prepend, never edit.**
- **Skip paused/closed/archived Projects. Never compute drift on an Area.**
- **Only `tier: relationship` people flag.** Spent follow-ups compute a live date; the stored one is never rewritten.
- **Never render an age you can't source.**
- **Unconfirmed claims stay attributed or out.**
- **Verify every rendered name and count before writing.**

View file

@ -0,0 +1,104 @@
---
name: orion-close
description: "Close a finished workstream in an Orion vault and return its deliverable to the Area that spawned it. Verifies done_when is actually met, splits the output into deliverable (→ 2. Areas/<Area>/knowledge/) and process record (→ 5. Archive/<Area>/<ID>/), updates the Area hub, releases follow-ups tied to the work, and repoints inbound links. Not reversible. Distinct from orion-archive, which retires a whole Area. Triggers on: close workstream, close [ID], this is done, finish workstream, ship it."
---
# orion-close — return a finished workstream to its Area
**An Area spawns a workstream; when the workstream finishes, its deliverable comes home.** The Area is the memory; the workstream is the episode. If finished output archives together with its process, the Area learns nothing and the next workstream starts cold.
```
2. Areas/<Area>/ ──spawns──▶ 1. Projects/<Area>/<Name>/
knowledge/ ◀── deliverable ──────────────────┤
└── process ──▶ 5. Archive/<Area>/<ID>/
```
## Close or archive?
| | `orion-close` | `orion-archive` |
|---|---|---|
| Trigger | One workstream **finished** | A whole Area **ended or paused** |
| The Area | **Stays, gains knowledge** | Moves into the archive |
| Reversible | **No** | Yes |
**Is the Area staying? → close. Is it going away? → archive.** If there's any chance the work resumes, it's `paused`, not closed.
---
## 1. Verify `done_when:` against reality
Read the hub's `done_when:` and check it against what actually exists — not against how finished the work feels.
**Not met → stop and say which part is outstanding.** Never rewrite `done_when:` at close time to match what happened; a done-when edited at close never tested anything. Legitimate paths:
| Situation | Action |
|---|---|
| Work is done, the sentence was wrong | **The owner's call.** Record the correction and why on the hub, then close |
| Work stopped and won't resume | Not a close — `paused` with a reason |
| Scope changed | Old workstream closes as superseded; a new one opens with a new ID |
## 2. Split the output
| Pile | Goes to | What |
|---|---|---|
| **Deliverable** | `2. Areas/<Area>/knowledge/` | What the Area now knows: conclusions, specs, finished documents, reusable findings |
| **Process record** | `5. Archive/<Area>/<ID>/` | How it got there: session notes, drafts, dead ends, the hub itself |
**One question per file:** *would someone working in this Area six months from now want this without knowing the workstream existed?* Yes → knowledge. No → archive.
**When genuinely unclear, ask.** This is the one checkpoint that stops execution.
## 3. Migrate the deliverable
Move each deliverable file into `knowledge/`. **Keep the filename** (renaming breaks links for no gain). Add a provenance line if missing: *"Produced by `<ID>` — `<Name>`, closed YYYY-MM-DD."*
## 4. Archive the process record
Move everything else, **including `<ID>_hub.md`**, to `5. Archive/<Area>/<ID>/`. Set `status: closed`, add `closed: YYYY-MM-DD`. No tombstone needed — nothing to restore.
## 5. Update the Area hub
Mark the workstream closed in `## Workstreams`, with its ID and one line on what it produced. Link the deliverable from the hub or `knowledge/_index.md`. ⚠ **Never decrement `workstream_counter:`.** IDs are never reused.
## 6. Release follow-ups
List every `tier: relationship` person whose follow-up exists *for this workstream* (they link the hub, are named by its `next:`, or their page says so). **Change nothing on their pages** — whether the relationship outlives the work is the owner's call. Record them on a `Released:` line in the log entry; the next weekly sweep lists them.
## 7. Repoint inbound links
1. **Scan** every `.md` in the vault for `[[…]]` targets pointing into the old folder (full-path and bare-name forms). Ignore links inside code blocks.
2. **Resolve each hit against the real file tree** — a grep hit is a hypothesis.
3. **Change only the link target, never the prose.** Keep display aliases: `[[new/path/File|Original Text]]`. Ledgers (`4. Decisions/`, `wiki/log.md`, `wiki/folds/`) included — pointer only.
4. **Rescan from scratch and report that number**, not a tally of your edits.
## 8. Log and hand off
Append to `wiki/log.md`: `[build]` with a `Shipped:` line if the deliverable is a shipped thing, otherwise `[vault]`. Include `Released:` if any. Then suggest `cascade`.
---
## Output
```
## Close — <ID> · <Name>
done_when: "<sentence>" — ✅ met / ⚠ met with correction (why)
Deliverable → 2. Areas/<Area>/knowledge/
- <file> — what the Area now knows
Process → 5. Archive/<Area>/<ID>/ — N files incl. hub
Area hub: <what changed>
Links repointed: N — rescan shows N dead (was N)
Released: <Name — follow_up_by, what it was for> · or none
Next: run cascade.
```
## Rules
- **Verify done_when before anything moves.** Never rewrite it to fit.
- **Split deliverable from process.** Ask only when genuinely unclear.
- **Every migrated file carries its origin.**
- **Never decrement the counter. Never reuse an ID.**
- **Closing isn't reversible.** If it might resume, pause it.
- **Only link targets change. Rescan and report the rescan.**
- **`area: none` workstreams archive whole** — there's no knowledge base to receive a deliverable.

View file

@ -0,0 +1,145 @@
---
name: orion-daily
description: "Close today's daily note in an Orion vault's 0. Inbox/ and write tomorrow's — or write a weekly sweep. The daily note: Focus, Since the last note, one section per workstream that owes something (where it stands · yours · waiting on · a Notes line), Loose, the open-questions manifest, People with what each is tied to, Standing. Carries unanswered questions with a plain-language count and forces a do-it-or-drop-it choice at the third ask. Hard cap 150 lines. The weekly sweep lists every Area, workstream, thread and person with one line each and room to write. Does not ingest — run orion-ingest first, orion-cascade after. Triggers on: daily note, tomorrow's note, close the day, weekly sweep, sweep note."
---
# orion-daily — the daily note and the weekly sweep
`hot.md` says what's true. **The daily note says what only the owner can answer, and what's quietly drifting.** It is a working surface: the owner writes into it all day, `orion-ingest` files what they write, and this skill builds the next one.
| | Daily note | Weekly sweep |
|---|---|---|
| **Job** | What's owed today and what's drifting | Everything tracked, one line each, room to write |
| **Length** | 150 lines, hard | No cap — one line per item |
| **File** | `0. Inbox/YYYY-MM-DD daily.md` | `0. Inbox/YYYY-MM-DD weekly-sweep.md` |
| **Tag** | `daily-note` | `weekly-sweep` |
| **Skeleton** | `6. Templates/daily-note.md` | `6. Templates/weekly-sweep.md` |
**The usual sequence at close of day:** `ingest` → `daily note` → `cascade`.
⛔ Fenced paths (`AGENTS.md`, *Fences*) are named, never read.
---
## Before anything: is the current note fully filed?
Check every `>` line in the current note. **A question or `> Notes:` line with text after it and no `✓ filed` marker means ingest hasn't run. Stop and say so.** Generating a successor around unfiled text loses it.
**If a hold is open** (`wiki/meta/holds.md`): don't generate a note unprompted. If asked, render no ages, don't increment ask counts, and say at the top that a hold is open and nothing is late.
---
## Daily note
### 1. Read
The current note and the last week of notes (current first) · every live `*_hub.md` · `3. Resources/People/` · `3. Resources/Threads/` · open decisions in `4. Decisions/` · `wiki/meta/open-questions.md` · `wiki/meta/holds.md` · `wiki/log.md` entries since the last note.
### 2. Carry what wasn't answered
For every `>` line in the current note:
| State | Action |
|---|---|
| Answered, `✓ filed` | Done. Don't carry |
| `> Notes:` with text, `✓ filed` | Done |
| Blank question | **Carry it.** Increment its count |
| Deferred ("not now", a date) | Carry with the date given |
| Empty `> Notes:` | Ignore |
**Every carried item says how many notes have asked it:** `asked 3 times since Jan 5`. **A blank is data, not a failure — never nag.**
⚠ **At the third ask, the item becomes a forced choice: do it, or drop it.** Something carried three times isn't a task; it's a decision nobody has made. "Carry it again" is not an option.
### 3. Gather state
- **Sends and waits** from live hubs' `next:` — same ageing and hold rules as cascade.
- **Workstreams:** ⚠ **an `open` workstream gets a section only when something is owed on it today, the owner worked on it, or something external moved it.** Listing every open workstream daily is a nag list. The weekly sweep lists all of them.
- **People:** relationship tier — overdue, due today, due within 7 days — **and for each, what they're tied to** (a workstream, a send, a thread), read from their page and the hubs that name them. Never inferred. Spent follow-ups compute a live date → `_contracts.md`.
- **Open questions:** the full register.
### 4. Surface something — only if it's real
One to three findings from the vault that sit on no tracked list: two blocked items that are really one conversation · a person best placed to answer a question nobody asked them · a claim asserted and never verified · a follow-up pointing at work that has closed. Put each inside the workstream it concerns, or under `## Loose`.
**If nothing qualifies, surface nothing.** Padding teaches the owner to skim the one part worth reading.
### 5. Write it
Sections, in order:
1. **`## Focus`** — what today is about. Three lines, no lists.
2. **`## Since the last note`** — up to five bullets. Omit if nothing changed.
3. **One `##` per workstream that owes something** — the owner's own work first, then work waiting on others:
```markdown
## WEB-3 · Pricing Page — quote owed to the designer
**Where it stands:** one or two plain sentences. → [[<hub path>|hub]]
**Yours:**
- [ ] Send Sam the revised quote — 6 days, asked twice since Jan 5
**Waiting on:** Sam Example — copy review, 3 days · or nobody
> Notes:
```
The heading is **ID · Name — what is actually owed**. `Where it stands`, `Yours` and `Waiting on` always appear. Every workstream section ends with `> Notes:`.
4. **`## Loose`** — real items belonging to no single workstream, one `###` each, each ending `> Notes:`. Omit if empty.
5. **`## Open questions — N live`** — every live question from the register, numbered, `- [ ]` where the owner can close it. Every note.
6. **`## People`** — `N armed · N overdue · N defects`, then Overdue (oldest first) and Due in the next 7 days, each with what they're tied to. **Say plainly when a follow-up points at closed work.** Every note — "nobody is due" is an answer.
7. **`## Standing`** — holds, structural facts. Three lines max.
### Question blocks — three tests
A `> **Question?**` block is how the owner answers things. Every block must pass all three:
1. **Is it the owner's to decide?** If you can act, act.
2. **Does anything change based on the answer?** If both answers lead to the same action, there's no question.
3. **Is the premise still live?**
**If you can't write the question, there isn't one.** Keep the finding, drop the block. `> Notes:` lines aren't questions and are exempt.
### Format
- **Plain language.** `asked 3 times since Jan 5`, `19 days`, `12 days overdue (Jan 3)`. Only `✓ filed` and IDs stay machine-shaped.
- Real `##`/`###` headings for every section — they're how the note is navigated and collapsed.
- **Bold** for the decision point and the three labels. At most two or three ⚠ in the whole note.
- **Don't reproduce `hot.md`'s tables.** A send named inside its own workstream is context, not restatement.
- **150 lines, hard.** Cut in this order: context the owner already knows · prose restating a question · *Since the last note* to three bullets · surfaced findings beyond the strongest two.
### 6. Retire the old note
**Only after the new note exists on disk**, move the old one to `0. Inbox/processed/YYYY-MM/`. Refuse, and say why, if any line is unfiled or the successor wasn't written. **This skill is the only thing that retires a daily note.**
---
## Weekly sweep
On request (`weekly sweep`), or offered in `## Standing` when a week has passed since the last one. **Never auto-generated.**
**Everything, one line each**, from `6. Templates/weekly-sweep.md`:
- **Every standing Area**, with **every workstream** under it — open and paused, status named. Fenced Areas named with no contents.
- **Every thread.**
- **Every person:** relationship tier individually, with what they're tied to · **Released** — relationship-tier people named on a `Released:` line in `wiki/log.md` since the last sweep (written by `orion-close`/`orion-archive`), or whose follow-up points only at closed work · contacts grouped by Area, one line each (`Unplaced` for people tied to nothing live).
- **A `> Notes:` line under every workstream and thread**, and one per contact group.
- **The open-questions manifest.**
A checkbox means **reviewed**, not a task. A ticked box with no note means nothing changed. **Tier and follow-up dates are the owner's call** — the sweep lists, it doesn't change them.
**Retiring a sweep:** when the next sweep is generated or the owner says it's done — and only once every Notes line with text is `✓ filed`.
---
## Rules
- **Never generate a successor around unfiled text.**
- **Blank is data. Carry it, count it, never nag. Three asks forces do-it-or-drop-it.**
- **Workstream sections: Where it stands · Yours · Waiting on · Notes.** Same shape every time.
- **People lines say what each person is tied to.**
- **Surfaced findings are real or absent.**
- **150 lines for the daily note.** One line per item for the sweep.
- **An open hold suppresses every age and freezes ask counts.**
- **Doesn't ingest, doesn't cascade.** Only this skill retires a daily note or sweep.

View file

@ -0,0 +1,72 @@
---
name: orion-fold
description: "Roll up the oldest 2^k entries of an Orion vault's wiki/log.md into a fold page in wiki/folds/, moving the entries verbatim and leaving one pointer line, so the log stays cheap to read. Dry-run by default; writes only on --commit. Run when cascade reports more than 16 unfolded entries. Triggers on: fold the log, run a fold, log rollup, roll up the log."
---
# orion-fold — subtractive log rollup
The log is append-only, so it grows forever. A fold **moves** the oldest entries into a fold page — verbatim, lossless — and leaves one pointer line behind. Entries are never edited or deleted; they live one file over.
**When:** `orion-cascade` prints `Log: N / 16` every run. Over 16 → a fold is due. Default `k=4` (16 entries).
## Parameters
- `k` (default 4) — batch size `2^k`.
- `--commit` — write. **Without it, dry-run: print the fold, write nothing.**
Fewer than `2^k` unfolded entries → report the shortfall and stop.
## Entry format
An entry is everything from one `^## YYYY-MM-DD` heading to the next. The log is newest-first, so **the oldest entries are at the bottom.** A heading containing `[folded]` is a pointer, not an entry.
## Fold ID
`fold-k{K}-from-{EARLIEST}-to-{LATEST}-n{COUNT}` — e.g. `fold-k4-from-2026-01-02-to-2026-01-30-n16`. **If `wiki/folds/<ID>.md` exists, stop.**
## Procedure
1. **Select the oldest `2^k` unfolded entries** — from the bottom up.
2. **Self-check (blocking):**
- **No unfolded entry sits below your span.** If one does, you've picked a middle window — a hole later folds will never revisit. Re-pick.
- Every selected entry was located exactly (date + title). **Never remove an entry you didn't positively match** — leave it and report.
- Every numeric claim you'll write is present in a child entry.
3. **Write the fold page** (`wiki/folds/<ID>.md`):
```yaml
---
type: fold
fold_id: <ID>
entry_count: N
entry_range: {from: YYYY-MM-DD, to: YYYY-MM-DD}
created: YYYY-MM-DD
tags: [meta, fold]
---
```
Sections:
1. **Scope** — one paragraph: period and dominant themes.
2. **Entries** — table `Date | Title | One-sentence summary`.
3. **Key outcomes** — 3–7 bullets, each citing its entry's date.
4. **Cross-entry themes** — 0–4 bullets, each naming ≥2 entries, or "None".
5. **Contradictions or corrections** — or "None detected".
6. **Entries — verbatim** — the moved entries in full, headings demoted `##` → `###`, otherwise untouched.
**Extractive only.** Nothing that isn't in the entries.
4. **Dry-run:** print the page and what commit would do. Stop.
5. **On `--commit`:**
1. Write the fold page.
2. Remove the folded entries from `log.md`; where the newest of them sat, leave:
`## {TO} — [folded] {N} entries ({FROM} to {TO}) → [[wiki/folds/{ID}|{ID}]]`
3. Add the fold to `## Folds` in `wiki/index.md`.
4. Prepend a log entry: `## {TODAY} — [vault] Log fold: {N} entries ({FROM} to {TO})`, with log line count before → after.
6. **Reconcile:** entries remaining in `log.md` + entries in all fold pages = entries before. If it doesn't balance, stop and report.
## Rules
- **Dry-run by default.** Write only on `--commit`.
- **Subtractive and lossless** — entries move verbatim; never edited, never deleted.
- **Oldest first, verified.** No unfolded entry below the span.
- **Never remove what you didn't positively match.**
- **Extractive only.**
- **Reconcile before finishing.**

View file

@ -0,0 +1,101 @@
---
name: orion-ingest
description: "Bring external material into an Orion vault's numbered folders — every capture sitting in 0. Inbox/ by default, or a file, transcript, or document the owner names. Follows any instructions in the source, classifies the rest (asking only when genuinely unclear), records provenance, creates and updates pages directly, cross-links them, marks answered lines in daily notes as filed, and archives processed captures. Distinct from orion-cascade, which syncs wiki/ with what's already in the folders. Triggers on: ingest, process the inbox, ingest this, file this."
---
# orion-ingest — bring material into the vault
Ingest turns raw capture into filed, cross-linked, attributed vault content. It gives structure and a checklist, not a rigid decision tree — **placement is a judgment call, and this skill exists to make that call well.**
**Ingest before cascade.** Ingest fills the numbered folders; cascade then syncs `wiki/`.
---
## 1. Identify the source
Default: every file at the root of `0. Inbox/` (not in `processed/`). Or: whatever the owner names — a file path, pasted text, a transcript.
⛔ Never read a path listed under *Fences* in `AGENTS.md`.
## 2. Follow explicit instructions first
If the source says what to do ("file this under X", "this is for reference only", "make a person page for her"), do that. Don't re-derive a classification the source already gave you.
## 3. Classify the rest
| Content | Destination |
|---|---|
| A decision was made | `4. Decisions/YYYY-MM-DD-<slug>.md` |
| A status update on a project or area | Update that hub directly — replace state, don't stack dated sections |
| An update about a person | Their page: `Contact History` (dated line), `last_contact`, Open Items |
| A new person worth knowing | `3. Resources/People/<Full Name>.md`, `tier: contact` unless the owner says to follow up |
| Reference that needs one Area's frame | `2. Areas/<Area>/knowledge/` |
| Reference that holds anywhere | `3. Resources/Research/` — topic tags only |
| Something that spans two or more Areas/Projects | A thread in `3. Resources/Threads/`, or an update to an existing one |
| Finite new work | Suggest `new project:` — creation goes through `orion-instantiate` |
| A binary (PDF, deck, image, spreadsheet) | **Not into the vault.** It stays in the file system; the vault gets a reference note of what it says, attributed, with the file path |
**When it is genuinely unclear which row applies, ask.** That is the one checkpoint that stops execution. Everything else runs directly — no dry run, no confirmation gate.
## 4. Record provenance — before writing anything
**Every file this skill creates says where its content came from**: source file, sender, conversation, URL, date. If unknown: *"source unrecorded"* — never blank.
**Attribute, don't assert.** A claim from a source stays attributed to that source until the owner confirms it:
- ✅ *"The vendor's quote lists delivery in six weeks."*
- ❌ *"Delivery is in six weeks."*
**Never let an unconfirmed claim reach a hub bullet, `hot.md`, or `log.md` unattributed.** Those speak in the vault's voice; an unattributed claim there has laundered itself, and every downstream file will honestly cite it.
## 5. Write and cross-link
Create and edit directly. **Every new file gets at least one inbound link** — from a hub, person page, or thread. A new file with no inbound link is an orphan this skill created.
If a name in the source matches the *Never use* column of `AGENTS.md`'s vocabulary table, write the canonical form. Quote the source's spelling only when quoting it verbatim.
## 6. Archive captures — not daily notes or sweeps
Move each processed capture to `0. Inbox/processed/YYYY-MM/` (year first — e.g. `processed/2026-01/`). **Never delete** — the capture is the record of what came in and when.
⚠ **Never archive a file tagged `daily-note` or `weekly-sweep`.** Those are working surfaces the owner writes into all day. File their contents and leave them in place — only `orion-daily` retires them, once a successor exists.
### Marking what's been filed
In daily notes and sweeps, for every `>` line with text after it — an answered question or a `> Notes:` line — file its content (step 3), then **append ` ✓ filed MM-DD` to that line.**
- Skip lines already marked. That makes repeat runs safe.
- An empty `> Notes:` or blank question is not a failure — ignore it.
- In a sweep, a ticked box with no note means "reviewed, nothing changed." Nothing to file.
`orion-daily` reads these markers to decide what carries forward, and refuses to retire a note with unfiled text.
## 7. Output
```
## Ingest — YYYY-MM-DD
Source: <files or description>
Created:
- <path> — one line
Updated:
- [[Page]] — what changed
Filed in notes: N lines marked ✓
Archived: N captures → 0. Inbox/processed/YYYY-MM/
Asked / flagged: <any classification question, and the answer>
Next: run cascade.
```
## Rules
- **Instructions in the source win** over the table.
- **Classification ambiguity is the only thing that stops execution.**
- **Every created file records provenance.** Unknown → "source unrecorded".
- **Attribute, don't assert.** Unconfirmed claims never reach summary layers unattributed.
- **Cross-link on creation.**
- **Archive captures, never delete.** Never archive a daily note or sweep.

View file

@ -0,0 +1,91 @@
---
name: orion-instantiate
description: "Create a Project (workstream) or Area in an Orion vault against its frontmatter contract. Runs the done-when test first, assigns the workstream ID from the Area's counter, seeds the Area's knowledge/ folder, and registers the new hub so it is never an orphan. Also converts a Project that turns out to be an Area. Triggers on: new project, new area, new workstream, create project, create area, instantiate, this should be an area."
---
# orion-instantiate — create a Project or Area
Creation is where most structural defects start: a hub with no done-when never finishes, a hub with no Area can never be measured against anything, and a hub nobody links to is an orphan from day one. This skill makes creation follow the contract in `6. Templates/_contracts.md` instead of copying a template and hoping.
---
## 1. The test — before anything else
| Question | If yes |
|---|---|
| Can you write **"this is done when ___"** in one sentence, right now? | **Project** |
| Is the honest answer **"it's never done"**? | **Area** |
| Neither, but facts and people attach to it? | **Resource or person page — not a hub.** Stop here |
⚠ **If the done-when needs "ongoing", "maintain", or "as needed", it is not a Project.** It is an Area, or a task inside one.
If the owner hasn't given a done-when and you can't derive one from what they said, ask for it. **No done-when, no Project.**
---
## 2. Creating an Area
1. Folder: `2. Areas/<Area Name>/` (Title Case, spaces).
2. Hub: `<Area Name>_hub.md` from `6. Templates/area-hub.md`:
- `type: area`, `status: standing`
- `id_prefix:` — short, uppercase, unambiguous, **not already used by another Area** (grep every `*_hub.md` for `id_prefix:`). Permanent once set.
- `workstream_counter: 0`
- `parent:` only if nested, and **never pointing at itself.**
3. **Seed `knowledge/_index.md`** — the Area's permanent memory. State in two or three lines what belongs here (durable material that needs this Area's frame to make sense) and what doesn't (reusable-anywhere material → `3. Resources/Research/`; process notes → the workstream). **This is the step that gets skipped.** Without an obvious home, knowledge scatters.
4. Pick an Area tag (lowercase-kebab) and register it in `wiki/meta/tags.md`.
## 3. Creating a Project (workstream)
1. **Pick its Area.** Default: every Project has one. If it genuinely has none, write `area: none` explicitly — absent is indistinguishable from an oversight. ⚠ An `area: none` Project has no counter to draw an ID from: use prefix `X` with the next number not used by any hub in `1. Projects/` or `5. Archive/`, and tell the owner its deliverable will archive whole on close.
2. **Assign the ID — read the counter, never scan for it.**
1. Read `workstream_counter:` on the Area hub.
2. Increment it and **write the new value back first.**
3. `id: <PREFIX>-<new value>`.
⚠ **Scanning existing hubs for the highest ID collides.** Closed projects have moved to `5. Archive/`, so a scan of `1. Projects/` sees a lower maximum than was issued. The counter persists; the hubs don't. **IDs are never reused.**
3. Folder: `1. Projects/<Area>/<Project Name>/`. Hub: `<ID>_hub.md` from `6. Templates/project-hub.md`.
4. Frontmatter: `type: project` (never `hub`), `id`, `area`, `done_when` (**the sentence verbatim**, not a paraphrase), `status: open`, `updated`, `tags: [hub, <area-tag>]`. Add `next:` if a first move is known.
## 4. Register — part of creation, not after it
- [ ] **Project:** listed on its Area hub under `## Workstreams` with its ID and status
- [ ] **Project:** Area's `workstream_counter:` incremented
- [ ] **Area:** tag in `wiki/meta/tags.md`; `knowledge/_index.md` seeded
- [ ] At least one inbound link (Area hub → Project; `wiki/index.md` → Area)
- [ ] Suggest `cascade` — structure changed
---
## Converting a Project that turns out to be an Area
A Project that fails the done-when test isn't finished — it was misfiled. **Ask the owner before converting; it is a change, not a repair.**
1. **Correct the hub first.** Converting a hub with false statements relocates them.
2. **Route everything in a table in the hub:** each task or sub-effort → done (history) · ongoing (Area open item) · has a real done-when (its own new Project with an ID) · dead (closed, reason stated).
3. Move the folder to `2. Areas/<Name>/`, rename the hub `<Name>_hub.md`, set `type: area`, `status: standing`.
4. ⚠ **Give it `id_prefix:` and `workstream_counter: 0` now.** Conversion is the one path into Area-hood that skips the creation contract; an Area without a counter can never spawn a workstream, and nothing reports it.
5. Seed `knowledge/_index.md`. Repoint inbound links (see `orion-close` step 6 for method). Log it. Cascade.
---
## Output
```
## Instantiate — <ID or Area name>
Done-when: "<sentence>" (Projects)
Created: <path>
ID: <PREFIX>-<N> — counter now <N> (Projects)
Registered: <Area hub listing · tag · knowledge/ seeded · inbound link>
Next: run cascade.
```
## Rules
- **Done-when test first.** No sentence, no Project.
- **`type:` is `project` or `area`. Never `hub`.**
- **Read the counter, write it back, then use it.** Never derive IDs by scanning. Never reuse one.
- **`area: none` is legal but written.** Absent ≠ none.
- **Every Area gets `id_prefix`, `workstream_counter` and `knowledge/`** however it came into being.
- **Register on creation.** An unregistered hub is an orphan.

View file

@ -0,0 +1,134 @@
---
name: orion-lint
description: "Health-check an Orion vault: dead links, orphans, frontmatter and workstream-contract gaps, people-tier defects, unsourced reference material, vocabulary violations, misplaced files, stale holds, and an overdue log fold. Flags only — never auto-fixes. Writes exactly one wiki/meta/lint-report-YYYY-MM-DD.md stamped with the git commit it describes; the previous report is archived. Triggers on: lint, health check, audit the vault, check the vault, find orphans, find dead links."
---
# orion-lint — vault health check
**Flags only.** Lint reports; the owner or the next session decides. (Repairs lint surfaces may then be made under the *Repair* rule in `AGENTS.md`.)
⛔ Fenced paths (`AGENTS.md`, *Fences*) are excluded from every check. Links *into* them are checked for existence only.
---
## Scope — two kinds of check
**The test:** *would this finding stop being true if nobody ever worked on this file again?*
| | Answer | Scope |
|---|---|---|
| **Attention** | Yes — it's "this needs someone's attention" | **Skip** `paused`/`closed`/`archived` hubs and everything under `5. Archive/` |
| **Integrity** | No — it's "this is broken" | **Run vault-wide, `5. Archive/` included** |
A blanket archive skip on an integrity check hides broken links behind a clean report. Every new check classifies itself before it's written.
**Run every check mechanically** — glob and grep actual file contents, resolve every candidate. A finding produced by reading a sample and generalising is a hypothesis, not a finding. **Spot-check anything surprising** (a large round number, a well-known file reported broken) before it goes in the report.
**Stamp the tree:** record `git rev-parse --short HEAD` if the vault is a git repo, and say at the top if the working tree is dirty.
---
## Integrity checks — vault-wide
**1. Dead links.** Every `[[target]]` / `[[target|alias]]` that resolves to no file. Strip fenced code blocks and inline code first — documentation examples aren't links. Resolve against full path, then bare filename anywhere in the vault. Report archive findings under their own heading.
**2. Link style.** Links containing `.md` (`[[file.md]]`).
**3. Frontmatter contract.** Against `6. Templates/_contracts.md`:
- Every file below `0. Inbox/` root in the numbered folders: `type`, `updated` (`4. Decisions/` uses `date`).
- Hubs: `type` is `project` or `area` (**`hub` is a defect**) · `status` in the vocabulary.
- Projects: `id`, `area` (value or literal `none`), `done_when` non-empty · `paused_because` when paused · hub filename is `<id>_hub.md`.
- Areas: `id_prefix`, `workstream_counter` · `parent` never equals the Area's own name.
- Decisions: `date`, `topic`, `status`. Threads: `status`, `opened`.
- **Exempt:** `AGENTS.md`, `CLAUDE.md`, `README.md` and other vault-root files · `6. Templates/` · `0. Inbox/` notes (they use `date` + `tags`, no `type`).
- **Before reporting a missing field, check whether any file in that folder has ever carried it.** A field absent from every file is a convention, not a set of defects.
**4. ID integrity.** For each Area, every issued ID `<PREFIX>-N` (in `1. Projects/` and `5. Archive/`) has `N ≤ workstream_counter`. Any duplicate ID anywhere is a defect.
**5. Provenance.** Every `type: reference` file has a non-empty `source:` (or "source unrecorded" in the body). Report path and line count. **Never auto-fixable** — the owner confirms or strikes the source.
**6. Vocabulary.** For each row of `AGENTS.md`'s vocabulary table, grep the *Never use* forms in vault-voice prose. Exempt: the table itself, lint reports, `open-questions.md`, `0. Inbox/processed/`, and verbatim quotes of a source. **If both the banned and canonical forms have zero hits, report the row itself as suspect** — the table is data to be tested, not the test. **An ordinary English word can only be enforced inside a scope the row names**; if a row's scope can't be determined mechanically, report the row as unenforceable instead of its hits.
**7. Stale index entries.** Links in `wiki/index.md` or `wiki/hot.md` pointing at files that moved or don't exist.
## Attention checks — live material only
**8. Orphans.** A file in the numbered folders with no inbound `[[link]]` from any other page. Collect every link target vault-wide (including archived hubs as *sources*), then test each candidate by full path and bare name. Also count backtick-quoted paths as references — report those separately as *"referenced by path, not linked"*. **Exempt:** hubs · `4. Decisions/` · `3. Resources/Research/` root · `6. Templates/` · `0. Inbox/` · `5. Archive/` · vault-root files.
**9. People tiers.**
- `tier: relationship` without `cadence` or `follow_up_by` → **defect** (it can never flag).
- `tier: contact` carrying `cadence` or `follow_up_by` → defect.
- A spent `follow_up_by` (on or before `last_contact`) is **not** a defect.
- An `organic` page whose `follow_up_by` has been pushed repeatedly with no contact (check git history if available) → finding: that's a cadence that never fires.
**10. `next:` validity.** Each entry uses `send`/`wait`/`build`/`decide`; `send`/`wait` name a person. **Report every `send`/`wait` older than 14 days at the very top of the report**, above every structural finding — an unsent message is worth more than all of them.
**11. Misplaced files.** Hubs outside `1. Projects/`/`2. Areas/` · person pages outside `People/` · decisions outside `4. Decisions/` · content files in `wiki/` other than `hot.md`, `index.md`, `log.md`, `folds/*`, `meta/*` · binaries (pdf, images, office files) anywhere in the vault · a file in `3. Resources/Research/` root carrying an Area tag · reference material inside a Project folder with no Area tag.
**12. Standalone Areas.** A standing Area with no live Project and `updated:` older than 30 days. Report as context — it may be quiet on purpose.
**13. Holds.** An open hold older than 30 days with no end date · an open hold with no start date older than 7 days. **A hold never discharges an obligation** — report open sends alongside it.
**14. Log fold.** Unfolded entries (headings minus `[folded]` pointers) against the threshold of 16 — **print the count every run**. Also: any unfolded entry sitting *below* a `[folded]` pointer is a hole from a middle-window fold.
---
## Report — `wiki/meta/lint-report-YYYY-MM-DD.md`
**Retention 1.** Before writing, move any previous lint report to `5. Archive/wiki-meta/`.
```markdown
---
type: meta
title: "Lint report YYYY-MM-DD"
created: YYYY-MM-DD
commit: abc1234
tree_clean: true
supersedes: lint-report-YYYY-MM-DD
tags: [meta, lint]
---
## Outstanding sends — before anything structural
## Summary ← one line per check: count, or "clean"
## Dead links
### Inside 5. Archive/
## Frontmatter & contracts
## IDs
## Provenance
## Vocabulary
## Orphans
## People
## Misplaced files
## Areas & holds
## Log ← "unfolded: N / 16" — always printed
## Carried findings — second cycle
```
Omit empty sections except Summary and Log.
## The two-cycle rule
**A finding that survives two consecutive lints without action is a decision nobody has made.** Second appearance: list it under *Carried findings*. Third: **remove it from the report** and add it to `wiki/meta/open-questions.md` as a forced binary — `**<Question>** — Option A / Option B. Raised YYYY-MM-DD.` Then stop reporting it.
**Corollary — the more important half: when a check keeps producing the same backlog, suspect the check.** A rule nobody ever acts on is usually wrong, not ignored.
## Output (to chat)
```
## Lint — YYYY-MM-DD @ <commit>
Sends > 14 days: N
Integrity: N dead links (N in archive) · N contract gaps · N provenance · N vocabulary
Attention: N orphans · N people defects · N misplaced
Log: N / 16
Report: wiki/meta/lint-report-YYYY-MM-DD.md
```
## Rules
- **Flags only. No auto-fix.**
- **Attention checks skip retired material; integrity checks run everywhere.**
- **Mechanical, exhaustive, spot-checked.** Never estimate.
- **Sends outrank structure.**
- **One report at a time, stamped with its commit.**
- **Two-cycle rule — and question the check before the files.**

1
.claude/skills Symbolic link
View file

@ -0,0 +1 @@
../.agents/skills

8
.gitignore vendored Normal file
View file

@ -0,0 +1,8 @@
.obsidian/workspace*.json
.DS_Store
.venv/
03-SKILLS/hermes-skills/
04-SYSTEMS/
**/.last-sync
mnemosyne.db
**/mnemosyne.db

5
.obsidian/app.json vendored Normal file
View file

@ -0,0 +1,5 @@
{
"promptDelete": false,
"livePreview": true,
"alwaysUpdateLinks": true
}

5
.obsidian/appearance.json vendored Normal file
View file

@ -0,0 +1,5 @@
{
"theme": "system",
"cssTheme": "Cajafuerte",
"accentColor": "#0168ef"
}

View file

@ -0,0 +1,5 @@
{
"theme": "system",
"cssTheme": "Cajafuerte",
"accentColor": "#0168ef"
}

3
.obsidian/backlink.json vendored Normal file
View file

@ -0,0 +1,3 @@
{
"backlinkInDocument": true
}

116
.obsidian/bookmarks.json vendored Normal file
View file

@ -0,0 +1,116 @@
{
"items": [
{
"type": "file",
"ctime": 1790923522191,
"path": "2. Areas/Boltcard/knowledge/Boltcard.md"
},
{
"type": "file",
"ctime": 1790920493545,
"path": "Hermes automation commands.md"
},
{
"type": "file",
"ctime": 1789507399628,
"path": "0. Inbox/Projects Things to Develop.md"
},
{
"type": "file",
"ctime": 1789673300256,
"path": "3. Resources/Research/prompts/Prompt - 2d Animation.md"
},
{
"type": "file",
"ctime": 1789678424273,
"path": "00-/Omarchy Issues and Fixes.md"
},
{
"type": "file",
"ctime": 1789920604030,
"path": "3. Resources/Research/prompts/Impeccable Styles.md"
},
{
"type": "group",
"ctime": 1790921179011,
"items": [
{
"type": "file",
"ctime": 1790012399648,
"path": "2. Areas/Home Personal/knowledge/Custom Keybindings in Omarchy.md"
},
{
"type": "file",
"ctime": 1789783572995,
"path": "2. Areas/Home Personal/knowledge/Omarchy Issues and Fixes.md"
},
{
"type": "file",
"ctime": 1790021646554,
"path": "2. Areas/Home Personal/knowledge/Backup Omarchy.md"
},
{
"type": "file",
"ctime": 1789666865023,
"path": "Omarchy Customization Directions/Keyboard Shortcuts - Keybindings.md",
"title": "Keybindings"
}
],
"title": "Omarchy Customizations"
},
{
"type": "group",
"ctime": 1790912507734,
"items": [
{
"type": "file",
"ctime": 1790912507733,
"path": "start here.md",
"title": "start here"
},
{
"type": "file",
"ctime": 1790904935057,
"path": "How this vault works.md",
"title": "How this vault works"
},
{
"type": "file",
"ctime": 1790904935058,
"path": "wiki/hot.md",
"title": "Hot — current state"
},
{
"type": "file",
"ctime": 1790904935059,
"path": "AGENTS.md",
"title": "AGENTS — rulebook"
},
{
"type": "file",
"ctime": 1790904935060,
"path": "wiki/index.md",
"title": "Index"
},
{
"type": "file",
"ctime": 1790904935061,
"path": "wiki/meta/open-questions.md",
"title": "Open questions"
},
{
"type": "file",
"ctime": 1790912507833,
"path": "3. Resources/Research/prompts/Prompt - Orion Boilerplate.md",
"title": "Prompt - Orion Boilerplate"
}
],
"title": "Orion"
},
{
"type": "file",
"ctime": 1790640695584,
"path": "2. Areas/Home Personal/knowledge/Sound Messed up.md"
}
]
}

4
.obsidian/community-plugins.json vendored Normal file
View file

@ -0,0 +1,4 @@
[
"editing-toolbar",
"obsidian-style-settings"
]

33
.obsidian/core-plugins.json vendored Normal file
View file

@ -0,0 +1,33 @@
{
"file-explorer": true,
"global-search": true,
"switcher": true,
"graph": true,
"backlink": true,
"canvas": true,
"outgoing-link": true,
"tag-pane": true,
"footnotes": false,
"properties": true,
"page-preview": true,
"daily-notes": true,
"templates": true,
"note-composer": true,
"command-palette": true,
"slash-command": false,
"editor-status": true,
"bookmarks": true,
"markdown-importer": false,
"zk-prefixer": false,
"random-note": false,
"outline": true,
"word-count": true,
"slides": false,
"audio-recorder": false,
"workspaces": false,
"file-recovery": true,
"publish": false,
"sync": true,
"bases": true,
"webviewer": false
}

22
.obsidian/graph.json vendored Normal file
View file

@ -0,0 +1,22 @@
{
"collapse-filter": false,
"search": "",
"showTags": false,
"showAttachments": false,
"hideUnresolved": false,
"showOrphans": true,
"collapse-color-groups": true,
"colorGroups": [],
"collapse-display": false,
"showArrow": false,
"textFadeMultiplier": 0,
"nodeSizeMultiplier": 1,
"lineSizeMultiplier": 1,
"collapse-forces": true,
"centerStrength": 0.518713248970312,
"repelStrength": 10,
"linkStrength": 1,
"linkDistance": 250,
"scale": 0.74910164103282,
"close": true
}

View file

@ -0,0 +1,541 @@
{
"lastVersion": "4.0.11",
"aestheticStyle": "default",
"positionStyle": "top",
"menuCommands": [
{
"id": "editing-toolbar:editor-undo",
"name": "Undo Edit",
"icon": "undo-glyph"
},
{
"id": "editing-toolbar:editor-redo",
"name": "Redo Edit",
"icon": "redo-glyph"
},
{
"id": "editing-toolbar:toggle-format-brush",
"name": "Format Brush",
"icon": "paintbrush"
},
{
"id": "editing-toolbar:format-eraser",
"name": "Clear Text Formatting",
"icon": "eraser"
},
{
"id": "editing-toolbar:header2-text",
"name": "Header 2",
"icon": "header-2"
},
{
"id": "editing-toolbar:header3-text",
"name": "Header 3",
"icon": "header-3"
},
{
"id": "SubmenuCommands-header",
"name": "submenu",
"icon": "header-n",
"SubmenuCommands": [
{
"id": "editing-toolbar:header1-text",
"name": "Header 1",
"icon": "header-1"
},
{
"id": "editing-toolbar:header4-text",
"name": "Header 4",
"icon": "header-4"
},
{
"id": "editing-toolbar:header5-text",
"name": "Header 5",
"icon": "header-5"
},
{
"id": "editing-toolbar:header6-text",
"name": "Header 6",
"icon": "header-6"
}
]
},
{
"id": "editing-toolbar:toggle-bold",
"name": "Bold",
"icon": "bold-glyph"
},
{
"id": "editing-toolbar:toggle-italics",
"name": "Italic",
"icon": "italic-glyph"
},
{
"id": "editing-toolbar:toggle-strikethrough",
"name": "Strikethrough",
"icon": "strikethrough-glyph"
},
{
"id": "editing-toolbar:underline",
"name": "Underline",
"icon": "underline-glyph"
},
{
"id": "editing-toolbar:toggle-highlight",
"name": "Highlight",
"icon": "highlight-glyph"
},
{
"id": "SubmenuCommands-text-tools",
"name": "Text Tools",
"icon": "box",
"menuType": "dropdown",
"SubmenuCommands": [
{
"id": "editing-toolbar:get-plain-text",
"name": "Get Plain Text",
"icon": "lucide-file-text"
},
{
"id": "editing-toolbar:smart-symbols",
"name": "Full Half Converter",
"icon": "lucide-at-sign"
},
{
"id": "editingToolbar-Divider-Line",
"name": "Line Operations",
"icon": "vertical-split"
},
{
"id": "editing-toolbar:insert-blank-lines",
"name": "Insert Blank Lines",
"icon": "lucide-space"
},
{
"id": "editing-toolbar:remove-blank-lines",
"name": "Remove Blank Lines",
"icon": "lucide-minimize-2"
},
{
"id": "editing-toolbar:split-lines",
"name": "Split Lines",
"icon": "lucide-split"
},
{
"id": "editing-toolbar:merge-lines",
"name": "Merge Lines",
"icon": "lucide-merge"
},
{
"id": "editing-toolbar:dedupe-lines",
"name": "Dedupe Lines",
"icon": "lucide-filter"
},
{
"id": "editingToolbar-Divider-Line",
"name": "Text Processing",
"icon": "vertical-split"
},
{
"id": "editing-toolbar:add-wrap",
"name": "Add Prefix/Suffix",
"icon": "lucide-wrap-text"
},
{
"id": "editing-toolbar:number-lines",
"name": "Number Lines (Custom)",
"icon": "lucide-list-ordered"
},
{
"id": "editing-toolbar:remove-whitespace-trim",
"name": "Trim Line Ends",
"icon": "lucide-scissors"
},
{
"id": "editing-toolbar:remove-whitespace-compress",
"name": "Shrink Extra Spaces",
"icon": "lucide-minimize"
},
{
"id": "editing-toolbar:remove-whitespace-all",
"name": "Remove All Whitespace",
"icon": "lucide-eraser"
},
{
"id": "editingToolbar-Divider-Line",
"name": "Advanced Tools",
"icon": "vertical-split"
},
{
"id": "editing-toolbar:list-to-table",
"name": "List to Table",
"icon": "lucide-table"
},
{
"id": "editing-toolbar:table-to-list",
"name": "Table to List",
"icon": "lucide-list"
},
{
"id": "editing-toolbar:extract-between",
"name": "Extract Between Strings",
"icon": "lucide-brackets"
}
]
},
{
"id": "SubmenuCommands-lucdf3en5",
"name": "submenu",
"icon": "edit",
"SubmenuCommands": [
{
"id": "editing-toolbar:editor-cut",
"name": "Cut",
"icon": "lucide-scissors"
},
{
"id": "editing-toolbar:editor-copy",
"name": "Copy",
"icon": "lucide-copy"
},
{
"id": "editing-toolbar:editor-paste",
"name": "Paste",
"icon": "lucide-clipboard-type"
},
{
"id": "editing-toolbar:editor:swap-line-down",
"name": "Swap Line Down",
"icon": "lucide-corner-right-down"
},
{
"id": "editing-toolbar:editor:swap-line-up",
"name": "Swap Line Up",
"icon": "lucide-corner-right-up"
}
]
},
{
"id": "editing-toolbar:editor:attach-file",
"name": "Attach File",
"icon": "lucide-paperclip"
},
{
"id": "editing-toolbar:editor:insert-table",
"name": "Insert Table",
"icon": "lucide-table"
},
{
"id": "editing-toolbar:editor:cycle-list-checklist",
"name": "Cycle List and Checklist",
"icon": "check-circle"
},
{
"id": "SubmenuCommands-luc8efull",
"name": "submenu",
"icon": "message-square",
"SubmenuCommands": [
{
"id": "editing-toolbar:editor:toggle-blockquote",
"name": "Blockquote",
"icon": "lucide-text-quote"
},
{
"id": "editing-toolbar:insert-callout",
"name": "Callout",
"icon": "lucide-quote"
}
]
},
{
"id": "SubmenuCommands-mdcmder",
"name": "submenu",
"icon": "<svg width=\"18\" height=\"18\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M464 608 l0 -568 q0 -3 -2.5 -5.5 q-2.5 -2.5 -5.5 -2.5 l-80 0 q-3 0 -5.5 2.5 q-2.5 2.5 -2.5 5.5 l0 568 l-232 0 q-3 0 -5.5 2.5 q-2.5 2.5 -2.5 5.5 l0 80 q0 3 2.5 5.5 q2.5 2.5 5.5 2.5 l560 0 q3 0 5.5 -2.5 q2.5 -2.5 2.5 -5.5 l0 -80 q0 -3 -2.5 -5.5 q-2.5 -2.5 -5.5 -2.5 l-232 0 ZM864 696 q17 0 28.5 11.5 q11.5 11.5 11.5 28.5 q0 17 -11.5 28.5 q-11.5 11.5 -28.5 11.5 q-17 0 -28.5 -11.5 q-11.5 -11.5 -11.5 -28.5 q0 -17 11.5 -28.5 q11.5 -11.5 28.5 -11.5 ZM864 640 q-40 0 -68 28 q-28 28 -28 68 q0 40 28 68 q28 28 68 28 q40 0 68 -28 q28 -28 28 -68 q0 -40 -28 -68 q-28 -28 -68 -28 ZM576 322 l0 -63 q0 -3 2 -5 l89 -70 l-89 -70 q-2 -2 -2 -5 l0 -63 q0 -4 3.5 -5.5 q3.5 -1.5 6.5 0.5 l170 133 q4 3 4.5 8.5 q0.5 5.5 -2.5 9.5 l-2 2 l-170 133 q-3 2 -6.5 0.5 q-3.5 -1.5 -3.5 -5.5 ZM256 322 l0 -63 q0 -3 -2 -5 l-89 -70 l89 -70 q2 -2 2 -5 l0 -63 q0 -4 -3.5 -5.5 q-3.5 -1.5 -6.5 0.5 l-170 133 q-4 3 -4.5 8.5 q-0.5 5.5 2.5 9.5 l2 2 l170 133 q3 2 6.5 0.5 q3.5 -1.5 3.5 -5.5 Z\"></path></g></svg>",
"SubmenuCommands": [
{
"id": "editing-toolbar:superscript",
"name": "Superscript",
"icon": "superscript-glyph"
},
{
"id": "editing-toolbar:subscript",
"name": "Subscript",
"icon": "subscript-glyph"
},
{
"id": "editing-toolbar:editor:toggle-code",
"name": "Inline Code",
"icon": "code-glyph"
},
{
"id": "editing-toolbar:codeblock",
"name": "Code Block",
"icon": "codeblock-glyph"
},
{
"id": "editing-toolbar:editor:insert-wikilink",
"name": "Wikilink",
"icon": "<svg width=\"15\" height=\"15\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M306 134 l91 0 q1 0 1 -8 l0 -80 q0 -8 -1 -8 l-91 0 q-1 0 -1 7 q0 -8 -5 -8 l-45 0 q-5 0 -5 8 l0 784 q0 8 5 8 l45 0 q5 0 5 -8 q0 8 1 8 l91 0 q1 0 1 -8 l0 -80 q0 -8 -1 -8 l-91 0 q-1 0 -1 8 l0 -623 q0 8 1 8 ZM139 134 l91 0 q1 0 1 -8 l0 -80 q0 -8 -1 -8 l-91 0 q-1 0 -1 7 q0 -8 -5 -8 l-45 0 q-5 0 -5 8 l0 784 q0 8 5 8 l45 0 q5 0 5 -8 q0 8 1 8 l91 0 q1 0 1 -8 l0 -80 q0 -8 -1 -8 l-91 0 q-1 0 -1 8 l0 -623 q0 8 1 8 ZM711 134 q1 0 1 -8 l0 623 q0 -8 -1 -8 l-91 0 q-1 0 -1 8 l0 80 q0 8 1 8 l91 0 q1 0 1 -8 q0 8 4 8 l46 0 q4 0 4 -8 l0 -784 q0 -8 -4 -8 l-46 0 q-4 0 -4 8 q0 -7 -1 -7 l-91 0 q-1 0 -1 8 l0 80 q0 8 1 8 l91 0 ZM878 134 q1 0 1 -8 l0 623 q0 -8 -1 -8 l-91 0 q-1 0 -1 8 l0 80 q0 8 1 8 l91 0 q1 0 1 -8 q0 8 5 8 l45 0 q4 0 4 -8 l0 -784 q0 -8 -4 -8 l-45 0 q-5 0 -5 8 q0 -7 -1 -7 l-91 0 q-1 0 -1 8 l0 80 q0 8 1 8 l91 0 Z\"></path></g></svg>"
},
{
"id": "editing-toolbar:editor:insert-embed",
"name": "Embed",
"icon": "note-glyph"
},
{
"id": "editing-toolbar:insert-link",
"name": "Link",
"icon": "link-glyph"
},
{
"id": "editing-toolbar:hrline",
"name": "Horizontal Divider",
"icon": "<svg width=\"18\" height=\"18\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M912 424 l0 -80 q0 -3 -2.5 -5.5 q-2.5 -2.5 -5.5 -2.5 l-784 0 q-3 0 -5.5 2.5 q-2.5 2.5 -2.5 5.5 l0 80 q0 3 2.5 5.5 q2.5 2.5 5.5 2.5 l784 0 q3 0 5.5 -2.5 q2.5 -2.5 2.5 -5.5 Z\"></path></g></svg>"
},
{
"id": "editing-toolbar:toggle-inline-math",
"name": "Inline Math",
"icon": "lucide-sigma"
},
{
"id": "editing-toolbar:editor:insert-mathblock",
"name": "MathBlock",
"icon": "lucide-sigma-square"
}
]
},
{
"id": "SubmenuCommands-list",
"name": "submenu-list",
"icon": "bullet-list-glyph",
"SubmenuCommands": [
{
"id": "editing-toolbar:editor:toggle-checklist-status",
"name": "Checklist",
"icon": "checkbox-glyph"
},
{
"id": "editing-toolbar:renumber-ordered-list",
"name": "Renumber Ordered List",
"icon": "list-restart"
},
{
"id": "editing-toolbar:toggle-numbered-list",
"name": "Ordered List",
"icon": "<svg width=\"18\" height=\"18\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M860 424 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-457 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l457 0 ZM860 756 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-457 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l457 0 ZM860 92 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-457 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l457 0 ZM264 136 l-3 -3 l-51 -57 l56 0 q14 0 24.5 -10 q10.5 -10 11.5 -25 l0 -1 q0 -15 -10.5 -25.5 q-10.5 -10.5 -24.5 -10.5 l-137 0 q-15 0 -25 10 q-10 10 -11 24.5 q-1 14.5 9 25.5 l63 70 l49 54 q7 7 7 16.5 q0 9.5 -7.5 16.5 q-7.5 7 -18.5 7 q-11 0 -18.5 -6.5 q-7.5 -6.5 -8.5 -16.5 l0 0 q0 -15 -10.5 -25.5 q-10.5 -10.5 -25.5 -10.5 q-15 0 -25.5 10.5 q-10.5 10.5 -10.5 25.5 q0 26 13.5 47.5 q13.5 21.5 36 34.5 q22.5 13 49 13 q26.5 0 49.5 -13 q23 -13 36 -34.5 q13 -21.5 13 -47.5 q0 -20 -7.5 -37.5 q-7.5 -17.5 -21.5 -30.5 l-1 -1 ZM173 794 q11 11 25 10.5 q14 -0.5 24.5 -10.5 q10.5 -10 10.5 -25 l0 -293 q0 -15 -10 -25.5 q-10 -10.5 -25 -10.5 q-15 0 -25.5 10 q-10.5 10 -11.5 25 l0 211 q-10 -8 -23.5 -7 q-13.5 1 -22.5 11 l-1 0 q-10 11 -9.5 25.5 q0.5 14.5 10.5 24.5 l58 54 Z\"></path></g></svg>"
},
{
"id": "editing-toolbar:toggle-bullet-list",
"name": "Unordered List",
"icon": "<svg width=\"18\" height=\"18\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M860 424 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-477 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l477 0 ZM860 756 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-477 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l477 0 ZM860 92 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-477 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l477 0 ZM176 716 l0 0 ZM112 716 q0 -27 18.5 -45.5 q18.5 -18.5 45.5 -18.5 q27 0 45.5 18.5 q18.5 18.5 18.5 45.5 q0 27 -18.5 45.5 q-18.5 18.5 -45.5 18.5 q-27 0 -45.5 -18.5 q-18.5 -18.5 -18.5 -45.5 ZM176 384 l0 0 ZM112 384 q0 -27 18.5 -45.5 q18.5 -18.5 45.5 -18.5 q27 0 45.5 18.5 q18.5 18.5 18.5 45.5 q0 27 -18.5 45.5 q-18.5 18.5 -45.5 18.5 q-27 0 -45.5 -18.5 q-18.5 -18.5 -18.5 -45.5 ZM176 52 l0 0 ZM112 52 q0 -27 18.5 -45.5 q18.5 -18.5 45.5 -18.5 q27 0 45.5 18.5 q18.5 18.5 18.5 45.5 q0 27 -18.5 45.5 q-18.5 18.5 -45.5 18.5 q-27 0 -45.5 -18.5 q-18.5 -18.5 -18.5 -45.5 Z\"></path></g></svg>"
},
{
"id": "editing-toolbar:undent-list",
"name": "Unindent List",
"icon": "<svg width=\"18\" height=\"18\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M872 302 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-429 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l429 0 ZM872 542 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-429 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l429 0 ZM872 784 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 ZM872 62 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 ZM244 534 l-123 -122 q-8 -7 -8 -18 q0 -11 8 -18 l123 -122 q8 -7 19 -7 q11 0 18.5 7.5 q7.5 7.5 7.5 18.5 l0 242 q0 11 -7.5 18.5 q-7.5 7.5 -18.5 7.5 q-11 0 -19 -7 Z\"></path></g></svg>"
},
{
"id": "editing-toolbar:indent-list",
"name": "Indent list",
"icon": "<svg width=\"18\" height=\"18\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M872 302 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-429 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l429 0 ZM872 542 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-429 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l429 0 ZM872 784 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 ZM872 62 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 ZM158 534 l124 -122 q7 -7 7 -18 q0 -11 -7 -18 l-124 -122 q-7 -7 -18 -7 q-11 0 -19 7.5 q-8 7.5 -8 18.5 l0 242 q0 11 8 18.5 q8 7.5 19 7.5 q11 0 18 -7 Z\"></path></g></svg>"
}
]
},
{
"id": "SubmenuCommands-aligin",
"name": "submenu-aligin",
"icon": "<svg width=\"18\" height=\"18\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M724 304 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-421 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l421 0 ZM872 540 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 ZM724 776 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-421 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l421 0 ZM872 68 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 Z\"></path></g></svg>",
"SubmenuCommands": [
{
"id": "editing-toolbar:justify",
"name": "Justify Text",
"icon": "<svg width=\"18\" height=\"18\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M112 736 l0 0 ZM120 736 l784 0 q8 0 8 -8 l0 -80 q0 -8 -8 -8 l-784 0 q-8 0 -8 8 l0 80 q0 8 8 8 ZM112 331 l0 0 ZM120 331 l784 0 q8 0 8 -8 l0 -80 q0 -8 -8 -8 l-784 0 q-8 0 -8 8 l0 80 q0 8 8 8 ZM112 128 l0 0 ZM120 128 l784 0 q8 0 8 -8 l0 -80 q0 -8 -8 -8 l-784 0 q-8 0 -8 8 l0 80 q0 8 8 8 ZM112 533 l0 0 ZM120 533 l784 0 q8 0 8 -8 l0 -80 q0 -8 -8 -8 l-784 0 q-8 0 -8 8 l0 80 q0 8 8 8 Z\"></path></g></svg>"
},
{
"id": "editing-toolbar:left",
"name": "Align Text Left",
"icon": "<svg width=\"18\" height=\"18\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M572 304 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-421 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l421 0 ZM872 540 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 ZM572 776 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-421 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l421 0 ZM872 68 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 Z\"></path></g></svg>"
},
{
"id": "editing-toolbar:center",
"name": "Center Text",
"icon": "<svg width=\"18\" height=\"18\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M724 304 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-421 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l421 0 ZM872 540 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 ZM724 776 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-421 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l421 0 ZM872 68 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 Z\"></path></g></svg>"
},
{
"id": "editing-toolbar:right",
"name": "Align Text Right",
"icon": "<svg width=\"18\" height=\"18\" focusable=\"false\" fill=\"currentColor\" viewBox=\"0 0 1024 1024\"><g transform=\"scale(1, -1) translate(0, -896) scale(0.9, 0.9) \"><path class=\"path\" d=\"M872 304 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-421 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l421 0 ZM872 540 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 ZM872 776 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-421 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l421 0 ZM872 68 q17 0 28.5 -11.5 q11.5 -11.5 11.5 -28 q0 -16.5 -11.5 -28.5 q-11.5 -12 -27.5 -12 l-721 0 q-17 0 -28.5 11.5 q-11.5 11.5 -11.5 28 q0 16.5 11.5 28.5 q11.5 12 27.5 12 l721 0 Z\"></path></g></svg>"
}
]
},
{
"id": "editing-toolbar:change-font-color",
"name": "Change Font Color",
"icon": "<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" focusable=\"false\" fill=\"currentColor\"><g fill-rule=\"evenodd\"><path id=\"change-font-color-icon\" d=\"M3 18h18v3H3z\" style=\"fill:#2DC26B\"></path><path d=\"M8.7 16h-.8a.5.5 0 01-.5-.6l2.7-9c.1-.3.3-.4.5-.4h2.8c.2 0 .4.1.5.4l2.7 9a.5.5 0 01-.5.6h-.8a.5.5 0 01-.4-.4l-.7-2.2c0-.3-.3-.4-.5-.4h-3.4c-.2 0-.4.1-.5.4l-.7 2.2c0 .3-.2.4-.4.4zm2.6-7.6l-.6 2a.5.5 0 00.5.6h1.6a.5.5 0 00.5-.6l-.6-2c0-.3-.3-.4-.5-.4h-.4c-.2 0-.4.1-.5.4z\"></path></g></svg>"
},
{
"id": "editing-toolbar:change-background-color",
"name": "Change Background Color",
"icon": "<svg width=\"18\" height=\"24\" viewBox=\"0 0 256 256\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"><g stroke=\"none\" stroke-width=\"1\" fill=\"currentColor\" fill-rule=\"evenodd\"><g ><g fill=\"currentColor\"><g transform=\"translate(119.502295, 137.878331) rotate(-135.000000) translate(-119.502295, -137.878331) translate(48.002295, 31.757731)\" ><path d=\"M100.946943,60.8084699 L43.7469427,60.8084699 C37.2852111,60.8084699 32.0469427,66.0467383 32.0469427,72.5084699 L32.0469427,118.70847 C32.0469427,125.170201 37.2852111,130.40847 43.7469427,130.40847 L100.946943,130.40847 C107.408674,130.40847 112.646943,125.170201 112.646943,118.70847 L112.646943,72.5084699 C112.646943,66.0467383 107.408674,60.8084699 100.946943,60.8084699 Z M93.646,79.808 L93.646,111.408 L51.046,111.408 L51.046,79.808 L93.646,79.808 Z\" fill-rule=\"nonzero\"></path><path d=\"M87.9366521,16.90916 L87.9194966,68.2000001 C87.9183543,69.4147389 86.9334998,70.399264 85.7187607,70.4 L56.9423078,70.4 C55.7272813,70.4 54.7423078,69.4150264 54.7423078,68.2 L54.7423078,39.4621057 C54.7423078,37.2523513 55.5736632,35.1234748 57.0711706,33.4985176 L76.4832996,12.4342613 C78.9534987,9.75382857 83.1289108,9.5834005 85.8093436,12.0535996 C87.1658473,13.303709 87.9372691,15.0644715 87.9366521,16.90916 Z\" fill-rule=\"evenodd\"></path><path d=\"M131.3,111.241199 L11.7,111.241199 C5.23826843,111.241199 0,116.479467 0,122.941199 L0,200.541199 C0,207.002931 5.23826843,212.241199 11.7,212.241199 L131.3,212.241199 C137.761732,212.241199 143,207.002931 143,200.541199 L143,122.941199 C143,116.479467 137.761732,111.241199 131.3,111.241199 Z M124,130.241 L124,193.241 L19,193.241 L19,130.241 L124,130.241 Z\" fill-rule=\"nonzero\"></path></g></g><path d=\"M51,218 L205,218 C211.075132,218 216,222.924868 216,229 C216,235.075132 211.075132,240 205,240 L51,240 C44.9248678,240 40,235.075132 40,229 C40,222.924868 44.9248678,218 51,218 Z\" id=\"change-background-color-icon\" style=\"fill:#FA541C\"></path></g></g></svg>"
},
{
"id": "editing-toolbar:fullscreen-focus",
"name": "Fullscreen Focus Mode",
"icon": "fullscreen"
},
{
"id": "editing-toolbar:workplace-fullscreen-focus",
"name": "Workplace Fullscreen",
"icon": "exit-fullscreen"
}
],
"followingCommands": [],
"topCommands": [],
"fixedCommands": [],
"mobileCommands": [],
"enableMultipleConfig": false,
"enableTopToolbar": true,
"enableFollowingToolbar": false,
"enableFixedToolbar": false,
"appendMethod": "workspace",
"shouldShowMenuOnSelect": false,
"cMenuVisibility": true,
"cMenuBottomValue": 4.25,
"cMenuNumRows": 12,
"cMenuWidth": 610,
"cMenuFontColor": "#0070c0",
"cMenuBackgroundColor": "#d3f8b6",
"autohide": false,
"Iscentered": false,
"custom_bg1": "#FFB78B8C",
"custom_bg2": "#CDF4698C",
"custom_bg3": "#A0CCF68C",
"custom_bg4": "#F0A7D88C",
"custom_bg5": "#ADEFEF8C",
"custom_fc1": "#D83931",
"custom_fc2": "#DE7802",
"custom_fc3": "#245BDB",
"custom_fc4": "#6425D0",
"custom_fc5": "#646A73",
"isLoadOnMobile": false,
"horizontalPosition": 0,
"verticalPosition": 0,
"formatBrushes": {},
"customCommands": [],
"viewTypeSettings": {},
"appearanceByStyle": {
"top": {
"toolbarBackgroundColor": "rgba(var(--background-secondary-rgb), 0.7)",
"toolbarIconColor": "var(--text-normal)",
"toolbarIconSize": 18,
"aestheticStyle": "default"
},
"following": {
"toolbarBackgroundColor": "rgba(var(--background-secondary-rgb), 0.7)",
"toolbarIconColor": "var(--text-normal)",
"toolbarIconSize": 18,
"aestheticStyle": "default"
},
"fixed": {
"toolbarBackgroundColor": "rgba(var(--background-secondary-rgb), 0.7)",
"toolbarIconColor": "var(--text-normal)",
"toolbarIconSize": 18,
"aestheticStyle": "default"
},
"mobile": {
"toolbarBackgroundColor": "rgba(var(--background-secondary-rgb), 0.7)",
"toolbarIconColor": "var(--text-normal)",
"toolbarIconSize": 18,
"aestheticStyle": "default"
}
},
"toolbarBackgroundColor": "rgba(var(--background-secondary-rgb), 0.7)",
"toolbarIconColor": "var(--text-normal)",
"toolbarIconSize": 18,
"useCurrentLineForRegex": false,
"ai": {
"enabled": false,
"consentAccepted": false,
"onboardingShown": true,
"providerMode": "pkmer-first",
"enableInlineCompletion": true,
"inlineCompletionHintLearned": false,
"completionTrigger": "manual",
"completionDelay": 500,
"enableRewrite": true,
"showRewriteToolbarOnSelection": false,
"rewriteMinSelectionLength": 1,
"pkmerApiBaseUrl": "https://newapi.pkmer.cn",
"pkmerModel": "04-fast",
"pkmerModelRouting": {
"mode": "smart",
"completion": "04-fast",
"rewrite": "04-fast",
"reasoning": "03-agent",
"artifact": "03-agent"
},
"pkmer": {
"tokenExpiresAt": 0,
"userInfo": null
},
"enableCustomModel": false,
"customModel": {
"apiFormat": "openai-compatible",
"baseUrl": "",
"apiKey": "",
"model": "",
"temperature": 0.2
},
"frontmatterPrompt": {
"mode": "auto",
"properties": "title: concise, one-line note title\nsummary: 1-3 sentence note summary\ntags: YAML list of relevant keywords\ncreated: YYYY-MM-DD date when appropriate\ncategory: broad content category",
"language": "auto",
"prompt": "Generate YAML frontmatter for the current Obsidian note using the requested properties below.\n\nRequested properties:\n{properties}\n\nOutput language for generated values: {language}\n\nRules:\n- Return only one complete YAML frontmatter block wrapped in --- delimiters.\n- Use the target text as the note content.\n- Follow current and sibling-note frontmatter conventions from context when provided.\n- Keep values concise, practical, and useful for filtering or browsing.\n- Do not add explanations or markdown fences outside the YAML block."
},
"customPromptHistory": [],
"customPromptTemplates": [
{
"id": "template-demo-variables",
"name": "📝 Summarize Key Points",
"prompt": "Analyze the structure of {{file:content}} and focus on:\n{{selection}}\n\nPlease provide:\n1. A concise overview\n2. The key points\n3. Suggestions for improvement",
"icon": "lucide-sparkles"
},
{
"id": "template-task-variables",
"name": "Extract Tasks",
"prompt": "Today's date is {{date}}. Extract all actionable tasks from {{file:content}}, with special attention to:\n{{selection}}\n\nPlease output strictly in Obsidian Tasks plugin format, one task per line:\n\n- [ ] Task description ⏫/🔼/🔽/⏬ priority\n- [ ] Task description 📅 YYYY-MM-DD due date\n- [ ] Task description ⏰ YYYY-MM-DD HH:mm reminder\n- [ ] Task description 🛫 YYYY-MM-DD start date\n- [ ] Task description 🔁 every day/week/month recurrence\n- [ ] Task description #tag #project\n\nExtraction rules:\n1. If the text implies urgency such as urgent, ASAP, immediately, or today, add ⏫.\n2. If it implies near-term timing such as tomorrow, this week, or soon, add 🔼.\n3. Convert explicit dates to 📅 YYYY-MM-DD.\n4. Convert explicit times to ⏰ YYYY-MM-DD HH:mm when possible.\n5. Add recurrence for repeated work such as 🔁 every week/month.\n6. Add practical tags for each task.\n\nExample output:\n- [ ] Finish project report ⏫ 📅 2026-04-25 #work\n- [ ] Weekly team sync 🔁 every week on Monday ⏰ 09:00 #meeting\n- [ ] Follow up on client request 🔼 📅 2026-04-23 #follow-up",
"icon": "lucide-sparkles"
},
{
"id": "template-dataview",
"name": "Generate Dataview",
"prompt": "Help me generate an Obsidian Dataview query block based on my requirement. Requirements:\n1. Use DataviewJS or DQL syntax.\n2. Include the necessary filters and sorting.\n3. Add short comments explaining each part.\n4. Use DataviewJS if the logic is complex.\n\nMy requirement:",
"icon": "lucide-database"
},
{
"id": "template-templater",
"name": "Design Templater Template",
"prompt": "Help me design an Obsidian Templater template. Requirements:\n1. Use Templater syntax (<% %>).\n2. Include dynamic date, time, and similar variables.\n3. Support user input prompts.\n4. Add necessary conditionals and loops.\n5. Comment the purpose of each section.\n\nTemplate purpose:",
"icon": "lucide-file-code"
},
{
"id": "template-mermaid",
"name": "Create Mermaid Diagram",
"prompt": "Based on my selected text {{selection}}, generate Mermaid diagram code. Requirements:\n1. Choose an appropriate diagram type such as flowchart, sequence, class, or gantt.\n2. Use clear node names.\n3. Add useful styling and comments when needed.\n4. Ensure the syntax is valid and renderable.\n",
"icon": "lucide-workflow"
},
{
"id": "template-metadata",
"name": "Design YAML",
"prompt": "Based on the current note content {{file:content}}, help me design a suitable YAML Frontmatter structure for this note. Requirements:\n1. Recommend fields that fit the note content.\n2. Include common fields such as tags, aliases, and date.\n3. Suggest useful custom fields.\n4. Briefly explain the purpose of each field.\n\nNote type:",
"icon": "lucide-file-json"
},
{
"id": "template-callout",
"name": "Wrap with Callout",
"prompt": "Based on my selected text {{selection}}, wrap it using an Obsidian Callout block. Requirements:\n1. Choose an appropriate callout type such as note, tip, warning, or danger.\n2. Support nesting and folding when helpful.\n3. Include a title and content.\n4. Allow code blocks or lists when needed.\n\nContent requirement:",
"icon": "lucide-message-square"
}
]
}
}

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,10 @@
{
"id": "editing-toolbar",
"name": "Editing Toolbar",
"version": "4.0.11",
"minAppVersion": "0.14.0",
"description": "The Obsidian Editing Toolbar is modified from cmenu, which provides more powerful customization settings and has many built-in editing commands to be a MS Word-like toolbar editing experience.",
"author": "Cuman",
"authorUrl": "https://github.com/cumany/obsidian-editing-toolbar",
"isDesktopOnly": false
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,18 @@
{
"Appearance-dark@@card-layout-open-dark": true,
"Appearance-dark@@accent-color-override-dark": false,
"Editor@@collapse-icon-restore": false,
"Editor@@inline-title-divider-remove": false,
"Editor@@h1-divider-on": false,
"Editor@@text-align-justify": false,
"Plugin@@DB-table-full-width-off": true,
"Plugin@@DB-table-bg-color": "DB-table-bg-color-unify",
"encore-settings@@theme-dark": "encore-theme-dark-rgb",
"encore-settings@@encore-disable-grain": true,
"encore-settings@@encore-fancy-headers": true,
"encore-settings@@colors": "encore-colors-colorful",
"encore-settings@@encore-translucency": true,
"encore-settings@@encore-translucency-background": "encore-bg-prismatic",
"encore-settings@@theme-light": "encore-theme-light-sterling",
"encore-settings@@encore-translucency-strength": 0
}

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,10 @@
{
"id": "obsidian-style-settings",
"name": "Style Settings",
"version": "1.0.9",
"minAppVersion": "0.11.5",
"description": "Offers controls for adjusting theme, plugin, and snippet CSS variables.",
"author": "mgmeyers",
"authorUrl": "https://github.com/mgmeyers/obsidian-style-settings",
"isDesktopOnly": false
}

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,6 @@
{
"name": "Afterglow",
"version": "0.1.0",
"minAppVersion": "1.5.0",
"author": "Ricardo Lamadrid"
}

490
.obsidian/themes/Afterglow/theme.css vendored Normal file
View file

@ -0,0 +1,490 @@
/*
* Afterglow v0.1.0
*
* Generated from src/ by scripts/build.mjs. Do not edit by hand.
* Edit the modules in src/ and run: npm run build
*/
/* ===== src/01-shared.css ===== */
/*
* Shared foundation — identical in both modes.
*
* Everything that is NOT a color lives here and is defined exactly once.
* This file is what makes Pastel Archive and Ultraviolet Library read as one
* theme: same typography, same rhythm, same shapes. If a value here ever needs
* to differ between modes, that is a design regression, not a new token.
*/
body {
/* Nonvisual identity marker for runtime load verification. */
--ag-theme: afterglow;
/* Typography — system and local families only. No bundled or remote fonts.
Each stack degrades through progressively more common families and ends
at a generic, so an absent font is never a broken surface. */
--ag-font-text:
'Iowan Old Style', 'Palatino Linotype', 'Book Antiqua', Palatino, Georgia,
'Times New Roman', serif;
--ag-font-interface:
-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue',
Arial, sans-serif;
--ag-font-mono:
ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas,
'Liberation Mono', monospace;
/* Type scale — a 1.2 modular scale in em, so it follows the reader's own
font size setting instead of overriding it. */
--ag-scale-h1: 2.074em;
--ag-scale-h2: 1.728em;
--ag-scale-h3: 1.44em;
--ag-scale-h4: 1.2em;
--ag-scale-h5: 1em;
--ag-scale-h6: 0.833em;
--ag-weight-heading: 600;
--ag-weight-heading-strong: 700;
--ag-line-height-text: 1.6;
--ag-line-height-tight: 1.25;
/* Spacing scale. Afterglow's own rhythm, consumed by later component work.
Obsidian's --size-* layout scale is deliberately left alone: rewriting it
would move every surface in the app for no gain here. */
--ag-space-1: 2px;
--ag-space-2: 4px;
--ag-space-3: 8px;
--ag-space-4: 12px;
--ag-space-5: 16px;
--ag-space-6: 24px;
--ag-space-7: 32px;
--ag-space-8: 48px;
/* Borders and shapes. */
--ag-border-width: 1px;
--ag-border-width-thick: 2px;
--ag-radius-s: 4px;
--ag-radius-m: 8px;
--ag-radius-l: 12px;
--ag-radius-xl: 16px;
/* Motion. Neutralized in 05-motion.css under prefers-reduced-motion. */
--ag-transition-fast: 120ms;
--ag-transition-base: 200ms;
--ag-easing: cubic-bezier(0.4, 0, 0.2, 1);
}
/* ===== src/02-palette.css ===== */
/*
* Layer 1 — palette. Raw color values, per mode.
*
* These names describe pigment, not purpose. Nothing outside 03-roles.css may
* reference an --ag-palette-* value: component styling that reaches past the
* role layer is how two modes start to drift apart.
*
* Both palettes are organised into the same five hue families — violet, sky,
* mint, amber, blush — and each light family sits within 5 degrees of its dark
* counterpart on the color wheel. That is the mechanism behind "Ultraviolet
* Library seen in daylight": the two modes are not analogous palettes, they are
* the same hues at different lightness.
*
* In light mode the pale end of each family does structural work — sidebars,
* tabs, panels, hover — rather than only tinting callouts. Ivory stays the
* reading canvas and nothing else, which is what keeps the mode from reading
* as sepia.
*
* The pale values cannot carry text: measured on ivory they land near 1.3:1
* against a 4.5:1 requirement. Every text-bearing role therefore uses the deep
* end of the same family. See the Feature notes for the recorded adjustment.
*/
.theme-light {
/* Canvas — the one warm surface, reserved for reading */
--ag-palette-ivory: #fff9f2;
--ag-palette-ivory-bright: #fffcfa;
/* Violet — the identity hue, and the light mode's structural surfaces */
--ag-palette-violet-wash: #faf6ff;
--ag-palette-violet-pale: #efe7ff;
--ag-palette-violet-soft: #e4dcfa;
--ag-palette-violet-tint: #d6c6f5;
--ag-palette-violet-rule: #e7def9;
--ag-palette-violet-line: #d2c1ee;
--ag-palette-violet-deep: #5f3ab8;
--ag-palette-violet-deeper: #4a2c93;
/* Sky */
--ag-palette-sky-pale: #d9e9f7;
--ag-palette-sky-tint: #ddeef9;
--ag-palette-sky-deep: #175d80;
--ag-palette-sky-deeper: #0f4e6b;
/* Mint */
--ag-palette-mint-tint: #d9f0e6;
--ag-palette-mint-deep: #14705b;
/* Amber */
--ag-palette-amber-tint: #fbebd3;
--ag-palette-amber-highlight: #fae3b4;
--ag-palette-amber-deep: #8f4e10;
/* Blush */
--ag-palette-blush-tint: #fadfe5;
--ag-palette-blush-deep: #a82b47;
/* Ink — carries a faint violet cast so text sits in the same family as the
surfaces rather than reading as neutral grey dropped on a colored page */
--ag-palette-ink: #27242a;
--ag-palette-ink-deep: #1d1826;
--ag-palette-ink-soft: #574e63;
--ag-palette-ink-pale: #7c7290;
--ag-palette-ink-ghost: #a79db5;
}
.theme-dark {
/* Night — the black-violet foundation, unchanged. Every ground above it is
pulled further toward violet so the surfaces separate by hue, not only by
lightness. The hover ground is the exception: it carries a cyan cast, which
both separates it from the violet surfaces and puts the second accent hue
on screen during ordinary navigation. Its light counterpart does the same
job with sky-pale. */
--ag-palette-black-violet: #090611;
--ag-palette-black-violet-alt: #0e0919;
--ag-palette-aubergine: #150f28;
--ag-palette-aubergine-light: #1f1638;
--ag-palette-sky-shadow: #121e32;
--ag-palette-aubergine-form: #1a1230;
--ag-palette-violet-shadow: #3a2b55;
--ag-palette-violet-shadow-soft: #291e44;
--ag-palette-violet-deep: #3b2670;
/* Light on dark */
--ag-palette-ivory: #f5efe8;
--ag-palette-ivory-bright: #fbf6f0;
--ag-palette-lavender-grey: #b8acc9;
--ag-palette-lavender-dim: #857a9b;
--ag-palette-lavender-ghost: #635873;
/* Luminous accents */
--ag-palette-ultraviolet: #9a6bff;
--ag-palette-ultraviolet-bright: #b78cff;
--ag-palette-sky: #6fd3f7;
--ag-palette-sky-bright: #9be2fb;
--ag-palette-mint: #58d9b4;
--ag-palette-tangerine: #ff8a3d;
--ag-palette-coral: #ff8095;
/* State grounds */
--ag-palette-sky-ground: #10202e;
--ag-palette-mint-ground: #0f2019;
--ag-palette-amber-ground: #271408;
--ag-palette-amber-highlight: #3e2c10;
--ag-palette-coral-ground: #280f16;
}
/* ===== src/03-roles.css ===== */
/*
* Layer 2 — semantic roles. Shared names, mode-specific values.
*
* The two blocks below must define exactly the same set of --ag-* names. A
* role that exists in one mode and not the other is a defect, and the token
* parity check in chunk 3 exists to catch it.
*
* Names describe purpose, never appearance: --ag-accent-interactive, not
* --ag-lilac. That is what lets the dark mode swap ultraviolet in for deepened
* violet without a single consumer changing.
*
* The ground roles are ordered page -> page-alt -> surface -> elevated. In both
* modes that order steps away from the reading canvas and deeper into the
* identity hue, which is what gives sidebars, tabs and panels their separation
* without a single per-component selector.
*/
.theme-light {
/* Grounds — ivory reads, violet frames */
--ag-bg-page: var(--ag-palette-ivory);
--ag-bg-page-alt: var(--ag-palette-violet-wash);
--ag-bg-surface: var(--ag-palette-violet-pale);
--ag-bg-elevated: var(--ag-palette-violet-soft);
--ag-bg-hover: var(--ag-palette-sky-pale);
--ag-bg-form: var(--ag-palette-ivory-bright);
/* Text */
--ag-text-body: var(--ag-palette-ink);
--ag-text-heading: var(--ag-palette-ink-deep);
--ag-text-muted: var(--ag-palette-ink-soft);
--ag-text-faint: var(--ag-palette-ink-pale);
--ag-text-on-accent: var(--ag-palette-ivory);
/* Rules */
--ag-border: var(--ag-palette-violet-line);
--ag-rule: var(--ag-palette-violet-rule);
/* Interaction */
--ag-accent-interactive: var(--ag-palette-violet-deep);
--ag-accent-interactive-hover: var(--ag-palette-violet-deeper);
--ag-link: var(--ag-palette-sky-deep);
--ag-link-hover: var(--ag-palette-sky-deeper);
--ag-link-unresolved: var(--ag-palette-ink-pale);
--ag-selection: var(--ag-palette-violet-tint);
--ag-highlight: var(--ag-palette-amber-highlight);
--ag-focus-ring: var(--ag-palette-violet-deep);
--ag-disabled: var(--ag-palette-ink-ghost);
/* Semantic states */
--ag-info: var(--ag-palette-sky-deep);
--ag-info-surface: var(--ag-palette-sky-tint);
--ag-success: var(--ag-palette-mint-deep);
--ag-success-surface: var(--ag-palette-mint-tint);
--ag-warning: var(--ag-palette-amber-deep);
--ag-warning-surface: var(--ag-palette-amber-tint);
--ag-error: var(--ag-palette-blush-deep);
--ag-error-surface: var(--ag-palette-blush-tint);
/* Glow is a role in both modes so the token sets stay in parity. Light mode
is lit by paper, not by emission, so it resolves to nothing. */
--ag-glow: none;
--ag-glow-text: none;
}
.theme-dark {
/* Grounds */
--ag-bg-page: var(--ag-palette-black-violet);
--ag-bg-page-alt: var(--ag-palette-black-violet-alt);
--ag-bg-surface: var(--ag-palette-aubergine);
--ag-bg-elevated: var(--ag-palette-aubergine-light);
--ag-bg-hover: var(--ag-palette-sky-shadow);
--ag-bg-form: var(--ag-palette-aubergine-form);
/* Text */
--ag-text-body: var(--ag-palette-ivory);
--ag-text-heading: var(--ag-palette-ivory-bright);
--ag-text-muted: var(--ag-palette-lavender-grey);
--ag-text-faint: var(--ag-palette-lavender-dim);
--ag-text-on-accent: var(--ag-palette-black-violet);
/* Rules */
--ag-border: var(--ag-palette-violet-shadow);
--ag-rule: var(--ag-palette-violet-shadow-soft);
/* Interaction */
--ag-accent-interactive: var(--ag-palette-ultraviolet);
--ag-accent-interactive-hover: var(--ag-palette-ultraviolet-bright);
--ag-link: var(--ag-palette-sky);
--ag-link-hover: var(--ag-palette-sky-bright);
--ag-link-unresolved: var(--ag-palette-lavender-dim);
--ag-selection: var(--ag-palette-violet-deep);
--ag-highlight: var(--ag-palette-amber-highlight);
--ag-focus-ring: var(--ag-palette-ultraviolet-bright);
--ag-disabled: var(--ag-palette-lavender-ghost);
/* Semantic states */
--ag-info: var(--ag-palette-sky);
--ag-info-surface: var(--ag-palette-sky-ground);
--ag-success: var(--ag-palette-mint);
--ag-success-surface: var(--ag-palette-mint-ground);
--ag-warning: var(--ag-palette-tangerine);
--ag-warning-surface: var(--ag-palette-amber-ground);
--ag-error: var(--ag-palette-coral);
--ag-error-surface: var(--ag-palette-coral-ground);
/* Ultraviolet Library's one emissive gesture. Applied only to short-lived or
selected elements — never to paragraph text, which is what separates a
luminous theme from an unreadable one. */
--ag-glow: 0 0 8px rgb(154 107 255 / 45%);
--ag-glow-text: 0 0 12px rgb(111 211 247 / 35%);
}
/* ===== src/04-obsidian.css ===== */
/*
* Layer 3 — Obsidian variable mapping.
*
* Roles are assigned to Obsidian's own documented CSS variables, once, under
* body. Because the role values are supplied per mode in 03-roles.css, this
* mapping never needs a light or dark variant of its own.
*
* This file is why the theme reaches nearly every surface without per-surface
* CSS. Preferring a documented variable over a selector is also what keeps it
* alive across Obsidian updates: a variable is a contract, a class chain is a
* guess.
*/
body {
/* --- Typography -------------------------------------------------------
The *-theme variables are Obsidian's designated slot for themes, and sit
below the user's own font setting in the cascade. Setting them means a
reader who has chosen a font keeps it. */
--font-text-theme: var(--ag-font-text);
--font-interface-theme: var(--ag-font-interface);
--font-monospace-theme: var(--ag-font-mono);
--line-height-normal: var(--ag-line-height-text);
--line-height-tight: var(--ag-line-height-tight);
--h1-size: var(--ag-scale-h1);
--h2-size: var(--ag-scale-h2);
--h3-size: var(--ag-scale-h3);
--h4-size: var(--ag-scale-h4);
--h5-size: var(--ag-scale-h5);
--h6-size: var(--ag-scale-h6);
--h1-weight: var(--ag-weight-heading-strong);
--h2-weight: var(--ag-weight-heading);
--h3-weight: var(--ag-weight-heading);
--h4-weight: var(--ag-weight-heading);
--h5-weight: var(--ag-weight-heading);
--h6-weight: var(--ag-weight-heading);
--h1-color: var(--ag-text-heading);
--h2-color: var(--ag-text-heading);
--h3-color: var(--ag-text-heading);
--h4-color: var(--ag-text-heading);
--h5-color: var(--ag-text-heading);
--h6-color: var(--ag-text-heading);
/* --- Shape ----------------------------------------------------------- */
--radius-s: var(--ag-radius-s);
--radius-m: var(--ag-radius-m);
--radius-l: var(--ag-radius-l);
--radius-xl: var(--ag-radius-xl);
--border-width: var(--ag-border-width);
--divider-width: var(--ag-border-width);
/* --- Backgrounds ------------------------------------------------------ */
--background-primary: var(--ag-bg-page);
--background-primary-alt: var(--ag-bg-page-alt);
--background-secondary: var(--ag-bg-surface);
--background-secondary-alt: var(--ag-bg-elevated);
--background-modifier-hover: var(--ag-bg-hover);
--background-modifier-active-hover: var(--ag-selection);
--background-modifier-border: var(--ag-border);
--background-modifier-border-hover: var(--ag-accent-interactive);
--background-modifier-border-focus: var(--ag-focus-ring);
--background-modifier-form-field: var(--ag-bg-form);
--background-modifier-error: var(--ag-error-surface);
--background-modifier-error-hover: var(--ag-error-surface);
--background-modifier-success: var(--ag-success-surface);
--background-modifier-message: var(--ag-bg-elevated);
--divider-color: var(--ag-rule);
/* --- Text ------------------------------------------------------------- */
--text-normal: var(--ag-text-body);
--text-muted: var(--ag-text-muted);
--text-faint: var(--ag-text-faint);
--text-on-accent: var(--ag-text-on-accent);
--text-on-accent-inverted: var(--ag-text-body);
--text-accent: var(--ag-accent-interactive);
--text-accent-hover: var(--ag-accent-interactive-hover);
--text-selection: var(--ag-selection);
--text-highlight-bg: var(--ag-highlight);
--text-error: var(--ag-error);
--text-warning: var(--ag-warning);
--text-success: var(--ag-success);
/* --- Interaction ------------------------------------------------------ */
--interactive-normal: var(--ag-bg-surface);
--interactive-hover: var(--ag-bg-elevated);
--interactive-accent: var(--ag-accent-interactive);
--interactive-accent-hover: var(--ag-accent-interactive-hover);
--caret-color: var(--ag-accent-interactive);
/* --- Links ------------------------------------------------------------ */
--link-color: var(--ag-link);
--link-color-hover: var(--ag-link-hover);
--link-external-color: var(--ag-link);
--link-external-color-hover: var(--ag-link-hover);
--link-unresolved-color: var(--ag-link-unresolved);
--tag-color: var(--ag-accent-interactive);
/* --- Application chrome ----------------------------------------------
Sidebars, tabs, ribbon, status bar and icons, reached entirely through
Obsidian's own documented variables. This is where the ground hierarchy
becomes visible: the editor sits on the reading canvas, every frame around
it sits on a surface stepped into the identity hue.
Callouts, tables, code blocks, properties, checkboxes, the command palette
and modals are deliberately absent — those are later Features, and reaching
them would mean writing selectors. */
--tab-container-background: var(--ag-bg-elevated);
--tab-background-active: var(--ag-bg-page);
--tab-text-color: var(--ag-text-muted);
--tab-text-color-active: var(--ag-text-body);
--tab-text-color-focused-active: var(--ag-accent-interactive);
--tab-outline-color: var(--ag-border);
--tab-divider-color: var(--ag-rule);
--nav-item-color: var(--ag-text-muted);
--nav-item-color-hover: var(--ag-text-body);
--nav-item-color-active: var(--ag-accent-interactive);
--nav-item-color-selected: var(--ag-accent-interactive);
--nav-item-background-hover: var(--ag-bg-hover);
--nav-item-background-active: var(--ag-selection);
--nav-item-background-selected: var(--ag-selection);
--nav-indentation-guide-color: var(--ag-border);
--nav-collapse-icon-color: var(--ag-text-faint);
--ribbon-background: var(--ag-bg-elevated);
--ribbon-background-collapsed: var(--ag-bg-elevated);
--ribbon-color: var(--ag-text-muted);
--titlebar-background: var(--ag-bg-elevated);
--titlebar-background-focused: var(--ag-bg-elevated);
--titlebar-text-color: var(--ag-text-muted);
--status-bar-background: var(--ag-bg-elevated);
--status-bar-text-color: var(--ag-text-muted);
--status-bar-border-color: var(--ag-border);
--scrollbar-bg: transparent;
--scrollbar-thumb-bg: var(--ag-border);
--scrollbar-active-thumb-bg: var(--ag-accent-interactive);
--icon-color: var(--ag-text-muted);
--icon-color-hover: var(--ag-text-body);
--icon-color-active: var(--ag-accent-interactive);
--icon-color-focused: var(--ag-text-body);
/* --- Graph -----------------------------------------------------------
Mapped from existing roles rather than given roles of their own: the graph
is the accent and the rule color, seen from further away. */
--graph-line: var(--ag-border);
--graph-node: var(--ag-text-muted);
--graph-node-focused: var(--ag-accent-interactive);
--graph-node-tag: var(--ag-success);
--graph-node-attachment: var(--ag-warning);
--graph-node-unresolved: var(--ag-text-faint);
}
/*
* Ultraviolet Library's glow, applied to links only.
*
* An element selector, not a class chain, so no Obsidian internal is being
* relied on. Focus ring, caret and active tab reach their glow through the
* variable mapping above where Obsidian exposes one; the rest is per-surface
* work and belongs to a later Feature.
*/
.theme-dark a {
text-shadow: var(--ag-glow-text);
}
/* ===== src/05-motion.css ===== */
/*
* Reduced motion.
*
* The token layer introduces motion only as duration tokens, so honoring the
* preference means collapsing them at the source. Anything that later consumes
* --ag-transition-* inherits this for free and cannot forget to.
*/
@media (prefers-reduced-motion: reduce) {
body {
--ag-transition-fast: 0ms;
--ag-transition-base: 0ms;
}
}

View file

@ -0,0 +1,8 @@
{
"name": "Anatomy Nocturne",
"version": "1.0.0",
"minAppVersion": "1.0.0",
"author": "CosmicSeaFox",
"authorUrl": "https://github.com/CosmicSeaFox",
"fundingUrl": "https://ko-fi.com/cosmicseafox"
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
{
"name": "AnuPpuccin",
"version": "1.5.0",
"minAppVersion": "1.6.0",
"author": "Anubis",
"authorUrl": "https://github.com/AnubisNekhet"
}

9080
.obsidian/themes/AnuPpuccin/theme.css vendored Normal file

File diff suppressed because it is too large Load diff

7
.obsidian/themes/Border/manifest.json vendored Normal file
View file

@ -0,0 +1,7 @@
{
"name": "Border",
"version": "1.13.8",
"minAppVersion": "0.16.0",
"author": "Akifyss",
"authorUrl": "https://github.com/Akifyss"
}

9193
.obsidian/themes/Border/theme.css vendored Normal file

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,8 @@
{
"name": "Cajafuerte",
"version": "1.0.0",
"minAppVersion": "1.1.0",
"author": "AreAjoErda",
"authorUrl": "https://github.com/AreAjoErda",
"fundingUrl": "https://bit.ly/donar-paypal-jcarlo"
}

1828
.obsidian/themes/Cajafuerte/theme.css vendored Normal file

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,8 @@
{
"name": "Circuit",
"version": "1.0.0",
"minAppVersion": "1.0.0",
"author": "CosmicSeaFox",
"authorUrl": "https://github.com/CosmicSeaFox",
"fundingUrl": "https://ko-fi.com/cosmicseafox"
}

3359
.obsidian/themes/Circuit/theme.css vendored Normal file

File diff suppressed because it is too large Load diff

8
.obsidian/themes/Cosmic/manifest.json vendored Normal file
View file

@ -0,0 +1,8 @@
{
"name": "Cosmic",
"version": "1.0.1",
"minAppVersion": "1.5.0",
"author": "kaymade",
"authorUrl": "https://github.com/kaymade",
"license": "MIT"
}

3214
.obsidian/themes/Cosmic/theme.css vendored Normal file

File diff suppressed because it is too large Load diff

6
.obsidian/themes/Dune/manifest.json vendored Normal file
View file

@ -0,0 +1,6 @@
{
"name": "Dune",
"version": "2.6.15",
"minAppVersion": "1.8.0",
"author": "joval"
}

8572
.obsidian/themes/Dune/theme.css vendored Normal file

File diff suppressed because one or more lines are too long

7
.obsidian/themes/Encore/manifest.json vendored Normal file
View file

@ -0,0 +1,7 @@
{
"name": "Encore",
"version": "2.11.0",
"minAppVersion": "1.1.9",
"author": "Carbonateb",
"authorUrl": "https://lucaschampagne.dev/"
}

2339
.obsidian/themes/Encore/theme.css vendored Normal file

File diff suppressed because one or more lines are too long

7
.obsidian/themes/Flynt/manifest.json vendored Normal file
View file

@ -0,0 +1,7 @@
{
"name": "Flynt",
"version": "0.1.0",
"minAppVersion": "1.0.0",
"author": "Flynt Theme",
"authorUrl": "https://github.com/flynt-theme"
}

693
.obsidian/themes/Flynt/theme.css vendored Normal file
View file

@ -0,0 +1,693 @@
/* Flynt - Warm tones. Zero visual noise. */
/* https://github.com/flynt-theme/flynt-obsidian */
/* ══════════════════════════════════════════════════════════ Dark */
body.theme-dark {
color-scheme: dark;
/* Backgrounds */
--background-primary: #100E0C;
--background-primary-alt: #1C1916;
--background-secondary: #1C1916;
--background-secondary-alt: #262220;
--background-modifier-hover: rgba(245,237,216, 0.04);
--background-modifier-active-hover: rgba(245,237,216, 0.06);
--background-modifier-border: #322F2B;
--background-modifier-border-focus: #403C38;
--background-modifier-border-hover: #403C38;
--background-modifier-error: rgba(198,55,42, 0.15);
--background-modifier-error-hover: rgba(198,55,42, 0.25);
--background-modifier-success: rgba(147,174,66, 0.15);
--background-modifier-message: rgba(16,14,12, 0.9);
--background-modifier-form-field: rgba(0,0,0,0.15);
/* Typography */
--font-text: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
--font-interface: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
--font-monospace: ui-monospace, "SF Mono", Menlo, monospace;
--font-text-size: 15px;
--line-height-normal: 1.4;
--file-line-width: 680px;
--h1-size: 22px; --h1-weight: 600; --h1-line-height: 1.3;
--h2-size: 19px; --h2-weight: 600; --h2-line-height: 1.4;
--h3-size: 16px; --h3-weight: 600; --h3-line-height: 1.4;
--h4-size: 14px; --h4-weight: 600;
--h5-size: 13px; --h5-weight: 600;
--h6-size: 13px; --h6-weight: 600;
/* Text */
--text-normal: #79685A;
--text-muted: #A89A88;
--text-faint: #79685A;
--text-on-accent: #100E0C;
--text-on-accent-inverted: #F5EDD8;
--text-error: #C6372A;
--text-warning: #C69F2A;
--text-success: #93AE42;
--text-accent: #C69F2A;
--text-accent-hover: #D5AE39;
--text-highlight-bg: rgba(198,159,42, 0.2);
--text-selection: rgba(198,159,42, 0.15);
/* Interactive */
--interactive-normal: #1C1916;
--interactive-hover: #262220;
--interactive-accent: #C69F2A;
--interactive-accent-hover: #D5AE39;
--interactive-success: #93AE42;
/* Accent */
--color-accent: #C69F2A;
--color-accent-1: #C69F2A;
--color-accent-2: #D5AE39;
/* Scrollbars */
--scrollbar-bg: transparent;
--scrollbar-thumb-bg: rgba(245,237,216, 0.08);
--scrollbar-active-thumb-bg: rgba(245,237,216, 0.15);
/* Window chrome */
--titlebar-background: #1C1916;
--titlebar-background-focused: #262220;
--ribbon-background: #1C1916;
--ribbon-background-collapsed: #1C1916;
--statusbar-background: #262220;
/* Tabs */
--tab-background-active: #100E0C;
--tab-text-color: #79685A;
--tab-text-color-focused: #A89A88;
--tab-text-color-focused-active: #F5EDD8;
--tab-text-color-active: #A89A88;
--tab-outline-color: #322F2B;
/* Sidebar / nav */
--nav-item-color: #A89A88;
--nav-item-color-hover: #D8CEBC;
--nav-item-color-active: #F5EDD8;
--nav-item-color-selected: #F5EDD8;
--nav-item-color-highlighted: #C69F2A;
--nav-item-background-hover: rgba(245,237,216, 0.04);
--nav-item-background-active: rgba(245,237,216, 0.06);
--nav-item-background-selected: rgba(245,237,216, 0.06);
/* Indentation guides */
--indentation-guide-color: #322F2B;
--indentation-guide-color-active: #584F45;
/* Accent palette - for use in global CSS rules */
--flynt-tx: #F5EDD8;
--flynt-tx2: #D8CEBC;
--flynt-tx5: #584F45;
--flynt-amber: #C69F2A;
--flynt-delft: #427BAE;
--flynt-teal: #48A8A0;
--flynt-moss: #93AE42;
--flynt-rose: #C03054;
/* Headings */
--h1-color: #F5EDD8;
--h2-color: #D8CEBC;
--h3-color: #A89A88;
--h4-color: #79685A;
--h5-color: #584F45;
--h6-color: #584F45;
/* Links */
--link-color: #C69F2A;
--link-color-hover: #D5AE39;
--link-external-color: #48A8A0;
--link-external-color-hover: #57B7AF;
--link-unresolved-color: #BA6836;
--link-unresolved-opacity: 0.8;
/* Inline formatting */
--bold-color: #A89A88;
--italic-color: #584F45;
--bold-italic-color: #A89A88;
--strikethrough-color: #79685A;
/* List markers */
--list-marker-color: #C69F2A;
/* Blockquote */
--blockquote-border-thickness: 2px;
--blockquote-border-color: #C69F2A;
--blockquote-color: #584F45;
--blockquote-background-color: rgba(198,159,42, 0.05);
/* Horizontal rule */
--hr-color: #322F2B;
/* Tables */
--table-border-color: #262220;
--table-header-background: #1C1916;
--table-header-background-hover: #262220;
/* Checklist */
--checklist-done-color: #79685A;
--checklist-done-decoration: line-through;
/* Tags */
--tag-color: #C69F2A;
--tag-background: rgba(198,159,42, 0.1);
--tag-border-color: rgba(198,159,42, 0.3);
--tag-color-hover: #D5AE39;
--tag-background-hover: rgba(198,159,42, 0.15);
--tag-border-color-hover: rgba(198,159,42, 0.5);
--tag-border-width: 1px;
--tag-padding-x: 0.5em;
--tag-padding-y: 0.1em;
--tag-radius: 4px;
/* Graph */
--graph-node: #79685A;
--graph-node-tag: #C69F2A;
--graph-node-attachment: #427BAE;
--graph-node-unresolved: #584F45;
--graph-node-focused: #D8CEBC;
--graph-line: #322F2B;
--graph-text: #79685A;
/* Canvas */
--canvas-background: #100E0C;
--canvas-color: #79685A;
--canvas-dot-pattern: #262220;
/* Modal / prompt */
--modal-background: #1C1916;
--prompt-background: #1C1916;
/* Code */
--code-background: #1C1916;
--code-normal: #F5EDD8;
--code-comment: #584F45;
--code-function: #C69F2A;
--code-important: #BA6836;
--code-keyword: #79685A;
--code-operator: #C03054;
--code-property: #A89A88;
--code-punctuation: #F5EDD8;
--code-string: #427BAE;
--code-tag: #93AE42;
--code-value: #48A8A0;
}
/* Callouts - dark */
body.theme-dark .callout[data-callout="note"],
body.theme-dark .callout[data-callout="info"] { --callout-color: 66,123,174; }
body.theme-dark .callout[data-callout="abstract"],
body.theme-dark .callout[data-callout="summary"],
body.theme-dark .callout[data-callout="tldr"] { --callout-color: 72,168,160; }
body.theme-dark .callout[data-callout="tip"],
body.theme-dark .callout[data-callout="hint"] { --callout-color: 96,168,72; }
body.theme-dark .callout[data-callout="success"],
body.theme-dark .callout[data-callout="check"],
body.theme-dark .callout[data-callout="done"] { --callout-color: 147,174,66; }
body.theme-dark .callout[data-callout="question"],
body.theme-dark .callout[data-callout="help"],
body.theme-dark .callout[data-callout="faq"] { --callout-color: 198,159,42; }
body.theme-dark .callout[data-callout="warning"],
body.theme-dark .callout[data-callout="caution"],
body.theme-dark .callout[data-callout="attention"] { --callout-color: 186,104,54; }
body.theme-dark .callout[data-callout="failure"],
body.theme-dark .callout[data-callout="fail"],
body.theme-dark .callout[data-callout="missing"] { --callout-color: 198,55,42; }
body.theme-dark .callout[data-callout="danger"],
body.theme-dark .callout[data-callout="error"] { --callout-color: 192,48,84; }
body.theme-dark .callout[data-callout="bug"] { --callout-color: 198,55,42; }
body.theme-dark .callout[data-callout="example"] { --callout-color: 180,60,124; }
body.theme-dark .callout[data-callout="quote"],
body.theme-dark .callout[data-callout="cite"] { --callout-color: 121,104,90; }
/* ══════════════════════════════════════════════════════════ Light */
body.theme-light {
color-scheme: light;
/* Backgrounds */
--background-primary: #FFFCEF;
--background-primary-alt: #F2EDDE;
--background-secondary: #F2EDDE;
--background-secondary-alt: #E5DFD0;
--background-modifier-hover: rgba(26,21,18, 0.04);
--background-modifier-active-hover: rgba(26,21,18, 0.06);
--background-modifier-border: #D5CFC0;
--background-modifier-border-focus: #C0B9AA;
--background-modifier-border-hover: #C0B9AA;
--background-modifier-error: rgba(198,55,42, 0.12);
--background-modifier-error-hover: rgba(198,55,42, 0.2);
--background-modifier-success: rgba(147,174,66, 0.12);
--background-modifier-message: rgba(242,237,222, 0.95);
--background-modifier-form-field: rgba(0,0,0,0.04);
/* Typography */
--font-text: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
--font-interface: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
--font-monospace: ui-monospace, "SF Mono", Menlo, monospace;
--font-text-size: 15px;
--line-height-normal: 1.4;
--file-line-width: 680px;
--h1-size: 22px; --h1-weight: 600; --h1-line-height: 1.3;
--h2-size: 19px; --h2-weight: 600; --h2-line-height: 1.4;
--h3-size: 16px; --h3-weight: 600; --h3-line-height: 1.4;
--h4-size: 14px; --h4-weight: 600;
--h5-size: 13px; --h5-weight: 600;
--h6-size: 13px; --h6-weight: 600;
/* Text */
--text-normal: #8E806F;
--text-muted: #6A5C4C;
--text-faint: #8E806F;
--text-on-accent: #FFFCEF;
--text-on-accent-inverted: #1A1512;
--text-error: #C6372A;
--text-warning: #C69F2A;
--text-success: #93AE42;
--text-accent: #C69F2A;
--text-accent-hover: #B18E25;
--text-highlight-bg: rgba(198,159,42, 0.2);
--text-selection: rgba(198,159,42, 0.15);
/* Interactive */
--interactive-normal: #F2EDDE;
--interactive-hover: #E5DFD0;
--interactive-accent: #C69F2A;
--interactive-accent-hover: #B18E25;
--interactive-success: #93AE42;
/* Accent */
--color-accent: #C69F2A;
--color-accent-1: #C69F2A;
--color-accent-2: #B18E25;
/* Scrollbars */
--scrollbar-bg: transparent;
--scrollbar-thumb-bg: rgba(26,21,18, 0.1);
--scrollbar-active-thumb-bg: rgba(26,21,18, 0.2);
/* Window chrome */
--titlebar-background: #F2EDDE;
--titlebar-background-focused: #E5DFD0;
--ribbon-background: #F2EDDE;
--ribbon-background-collapsed: #F2EDDE;
--statusbar-background: #E5DFD0;
/* Tabs */
--tab-background-active: #FFFCEF;
--tab-text-color: #8E806F;
--tab-text-color-focused: #6A5C4C;
--tab-text-color-focused-active: #1A1512;
--tab-text-color-active: #6A5C4C;
--tab-outline-color: #D5CFC0;
/* Sidebar / nav */
--nav-item-color: #6A5C4C;
--nav-item-color-hover: #3D3228;
--nav-item-color-active: #1A1512;
--nav-item-color-selected: #1A1512;
--nav-item-color-highlighted: #C69F2A;
--nav-item-background-hover: rgba(26,21,18, 0.04);
--nav-item-background-active: rgba(26,21,18, 0.06);
--nav-item-background-selected: rgba(26,21,18, 0.06);
/* Indentation guides */
--indentation-guide-color: #D5CFC0;
--indentation-guide-color-active: #B2A899;
/* Accent palette - for use in global CSS rules */
--flynt-tx: #1A1512;
--flynt-tx2: #3D3228;
--flynt-tx5: #B2A899;
--flynt-amber: #C69F2A;
--flynt-delft: #427BAE;
--flynt-teal: #48A8A0;
--flynt-moss: #93AE42;
--flynt-rose: #C03054;
/* Headings */
--h1-color: #1A1512;
--h2-color: #3D3228;
--h3-color: #6A5C4C;
--h4-color: #8E806F;
--h5-color: #B2A899;
--h6-color: #B2A899;
/* Links */
--link-color: #C69F2A;
--link-color-hover: #B18E25;
--link-external-color: #48A8A0;
--link-external-color-hover: #40968F;
--link-unresolved-color: #BA6836;
--link-unresolved-opacity: 0.8;
/* Inline formatting */
--bold-color: #6A5C4C;
--italic-color: #B2A899;
--bold-italic-color: #6A5C4C;
--strikethrough-color: #8E806F;
/* List markers */
--list-marker-color: #C69F2A;
/* Blockquote */
--blockquote-border-thickness: 2px;
--blockquote-border-color: #C69F2A;
--blockquote-color: #B2A899;
--blockquote-background-color: rgba(198,159,42, 0.05);
/* Horizontal rule */
--hr-color: #D5CFC0;
/* Tables */
--table-border-color: #E5DFD0;
--table-header-background: #F2EDDE;
--table-header-background-hover: #E5DFD0;
/* Checklist */
--checklist-done-color: #8E806F;
--checklist-done-decoration: line-through;
/* Tags */
--tag-color: #C69F2A;
--tag-background: rgba(198,159,42, 0.1);
--tag-border-color: rgba(198,159,42, 0.3);
--tag-color-hover: #B18E25;
--tag-background-hover: rgba(198,159,42, 0.15);
--tag-border-color-hover: rgba(198,159,42, 0.5);
--tag-border-width: 1px;
--tag-padding-x: 0.5em;
--tag-padding-y: 0.1em;
--tag-radius: 4px;
/* Graph */
--graph-node: #8E806F;
--graph-node-tag: #C69F2A;
--graph-node-attachment: #427BAE;
--graph-node-unresolved: #B2A899;
--graph-node-focused: #3D3228;
--graph-line: #D5CFC0;
--graph-text: #8E806F;
/* Canvas */
--canvas-background: #FFFCEF;
--canvas-color: #8E806F;
--canvas-dot-pattern: #E5DFD0;
/* Modal / prompt */
--modal-background: #F2EDDE;
--prompt-background: #F2EDDE;
/* Code */
--code-background: #F2EDDE;
--code-normal: #1A1512;
--code-comment: #B2A899;
--code-function: #C69F2A;
--code-important: #BA6836;
--code-keyword: #8E806F;
--code-operator: #C03054;
--code-property: #6A5C4C;
--code-punctuation: #1A1512;
--code-string: #427BAE;
--code-tag: #93AE42;
--code-value: #48A8A0;
}
/* Callouts - light */
body.theme-light .callout[data-callout="note"],
body.theme-light .callout[data-callout="info"] { --callout-color: 66,123,174; }
body.theme-light .callout[data-callout="abstract"],
body.theme-light .callout[data-callout="summary"],
body.theme-light .callout[data-callout="tldr"] { --callout-color: 72,168,160; }
body.theme-light .callout[data-callout="tip"],
body.theme-light .callout[data-callout="hint"] { --callout-color: 96,168,72; }
body.theme-light .callout[data-callout="success"],
body.theme-light .callout[data-callout="check"],
body.theme-light .callout[data-callout="done"] { --callout-color: 147,174,66; }
body.theme-light .callout[data-callout="question"],
body.theme-light .callout[data-callout="help"],
body.theme-light .callout[data-callout="faq"] { --callout-color: 198,159,42; }
body.theme-light .callout[data-callout="warning"],
body.theme-light .callout[data-callout="caution"],
body.theme-light .callout[data-callout="attention"] { --callout-color: 186,104,54; }
body.theme-light .callout[data-callout="failure"],
body.theme-light .callout[data-callout="fail"],
body.theme-light .callout[data-callout="missing"] { --callout-color: 198,55,42; }
body.theme-light .callout[data-callout="danger"],
body.theme-light .callout[data-callout="error"] { --callout-color: 192,48,84; }
body.theme-light .callout[data-callout="bug"] { --callout-color: 198,55,42; }
body.theme-light .callout[data-callout="example"] { --callout-color: 180,60,124; }
body.theme-light .callout[data-callout="quote"],
body.theme-light .callout[data-callout="cite"] { --callout-color: 142,128,111; }
/* ══════════════════════════════════════════════════════════ Global rules */
/* Obsidian uppercases some interface headings by default; reset for document content */
h1, h2, h3, h4, h5, h6,
.markdown-rendered h1,
.markdown-rendered h2,
.markdown-rendered h3,
.markdown-rendered h4,
.markdown-rendered h5,
.markdown-rendered h6,
.HyperMD-header { text-transform: none; }
/* ── Inline title */
.inline-title {
font-size: var(--h1-size);
font-weight: var(--h1-weight);
color: var(--h1-color);
letter-spacing: -0.01em;
}
/* ── Body text */
.markdown-rendered {
line-height: var(--line-height-normal);
color: var(--text-normal);
}
/* ── Headings: shared font weight */
h1, h2, h3, h4, h5, h6,
.cm-s-obsidian .cm-header { font-weight: 600; }
/* ── Headings: reading view */
.markdown-rendered h1 { font-size: var(--h1-size); color: var(--h1-color); letter-spacing: -0.01em; margin-bottom: 8px; }
.markdown-rendered h2 { font-size: var(--h2-size); color: var(--h2-color); margin-top: 20px; margin-bottom: 8px; border-bottom: 1px solid var(--background-secondary-alt); padding-bottom: 8px; }
.markdown-rendered h3 { font-size: var(--h3-size); color: var(--h3-color); margin-top: 20px; margin-bottom: 8px; border-bottom: 1px solid var(--background-secondary-alt); padding-bottom: 8px; }
.markdown-rendered h4 { font-size: var(--h4-size); color: var(--h4-color); margin-top: 20px; margin-bottom: 8px; border-bottom: 1px solid var(--background-secondary-alt); padding-bottom: 8px; }
.markdown-rendered h5 { font-size: var(--h5-size); color: var(--h5-color); margin-top: 20px; margin-bottom: 8px; border-bottom: 1px solid var(--background-secondary-alt); padding-bottom: 8px; }
.markdown-rendered h6 { font-size: var(--h6-size); color: var(--h6-color); margin-top: 20px; margin-bottom: 8px; }
/* ── Headings: editor */
.cm-s-obsidian .cm-header-1 { font-size: var(--h1-size); color: var(--h1-color); letter-spacing: -0.01em; }
.cm-s-obsidian .cm-header-2 { font-size: var(--h2-size); color: var(--h2-color); }
.cm-s-obsidian .cm-header-3 { font-size: var(--h3-size); color: var(--h3-color); }
.cm-s-obsidian .cm-header-4 { font-size: var(--h4-size); color: var(--h4-color); }
.cm-s-obsidian .cm-header-5,
.cm-s-obsidian .cm-header-6 { font-size: var(--h5-size); color: var(--h5-color); }
/* ── Headings: editor spacing + underline
Border goes on .HyperMD-header-* (the .cm-line block), NOT .cm-header-* (the text span).
Putting border-bottom on the span splits the heading across two visual lines in the editor. */
.HyperMD-header-1 { padding-top: 20px; }
.HyperMD-header-2,
.HyperMD-header-3,
.HyperMD-header-4,
.HyperMD-header-5 {
border-bottom: 1px solid var(--background-secondary-alt);
padding-top: 20px;
padding-bottom: 8px;
margin-bottom: 8px;
}
/* ── Inline code */
.markdown-rendered code,
.cm-inline-code,
.cm-s-obsidian .cm-inline-code,
.cm-editor .cm-line .cm-inline-code {
font-family: var(--font-monospace);
font-size: 12px;
background: var(--background-secondary-alt);
color: var(--flynt-moss) !important; /* !important wins specificity over Obsidian's default code color */
padding: 2px 5px;
border-radius: 3px;
vertical-align: middle;
line-height: 1; /* prevents inline code from inflating surrounding line height */
}
/* ── Code blocks */
.markdown-rendered pre {
background: var(--background-secondary);
border: 1px solid var(--background-modifier-border);
border-radius: 6px;
padding: 16px;
}
.markdown-rendered pre code {
background: none;
padding: 0;
border-radius: 0;
font-size: 13px;
line-height: 1.6;
}
/* No language specified → moss */
.markdown-rendered pre:not([class*="language-"]) code { color: var(--flynt-moss); }
/* Language specified → syntax highlighting via --code-* vars */
.markdown-rendered pre[class*="language-"] code { color: var(--code-normal); }
/* ── List markers (all depths) */
.markdown-rendered ul li::marker,
.markdown-rendered ol li::marker,
.cm-formatting-list { color: var(--list-marker-color); }
/* ── Task checkboxes: base alignment */
.task-list-item-checkbox { vertical-align: middle; position: relative; top: 2px !important; } /* top offset fine-tunes optical alignment; !important beats Obsidian's own positioning */
/* [x] done - amber checkmark */
input[data-task='x']:checked,
li[data-task='x'] > input:checked,
li[data-task='x'] > p > input:checked {
color: var(--flynt-amber);
--checkbox-marker-color: transparent;
border: none; border-radius: 0;
background-image: none;
background-color: currentColor;
-webkit-mask-size: var(--checkbox-icon);
-webkit-mask-position: 50% 50%;
-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z' clip-rule='evenodd'/%3E%3C/svg%3E");
}
li[data-task='x'], li[data-task='X'] { color: var(--text-faint); }
/* [/] in progress - half-filled amber */
input[data-task='/']:checked,
li[data-task='/'] > input:checked,
li[data-task='/'] > p > input:checked {
background-image: none; background-color: transparent;
border-color: var(--flynt-amber);
position: relative; overflow: hidden;
}
input[data-task='/']:checked::after,
li[data-task='/'] > input:checked::after,
li[data-task='/'] > p > input:checked::after {
content: ' '; display: block; position: absolute;
top: 0; left: 0;
background-color: var(--flynt-amber);
width: 50%; height: 100%;
}
/* [-] cancelled - X icon, strikethrough */
input[data-task='-']:checked,
li[data-task='-'] > input:checked,
li[data-task='-'] > p > input:checked {
color: var(--flynt-tx5);
--checkbox-marker-color: transparent;
border: none; border-radius: 0;
background-image: none;
background-color: currentColor;
-webkit-mask-size: var(--checkbox-icon);
-webkit-mask-position: 50% 50%;
-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z' clip-rule='evenodd'/%3E%3C/svg%3E");
}
li[data-task='-'] { color: var(--flynt-tx5); text-decoration: line-through; }
/* [!] important - warning icon, rose */
input[data-task='!']:checked,
li[data-task='!'] > input:checked,
li[data-task='!'] > p > input:checked {
color: var(--flynt-rose);
--checkbox-marker-color: transparent;
border: none; border-radius: 0;
background-image: none;
background-color: currentColor;
-webkit-mask-size: var(--checkbox-icon);
-webkit-mask-position: 50% 50%;
-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z' clip-rule='evenodd'/%3E%3C/svg%3E");
}
/* [?] question - teal */
input[data-task='?']:checked,
li[data-task='?'] > input:checked,
li[data-task='?'] > p > input:checked {
color: var(--flynt-teal);
--checkbox-marker-color: transparent;
border: none; border-radius: 0;
background-image: none;
background-color: currentColor;
-webkit-mask-size: var(--checkbox-icon);
-webkit-mask-position: 50% 50%;
-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='currentColor' fill-rule='evenodd' d='M4.475 5.458c-.284 0-.514-.237-.47-.517C4.28 3.24 5.576 2 7.825 2c2.25 0 3.767 1.36 3.767 3.215c0 1.344-.665 2.288-1.79 2.973c-1.1.659-1.414 1.118-1.414 2.01v.03a.5.5 0 0 1-.5.5h-.77a.5.5 0 0 1-.5-.495l-.003-.2c-.043-1.221.477-2.001 1.645-2.712c1.03-.632 1.397-1.135 1.397-2.028c0-.979-.758-1.698-1.926-1.698c-1.009 0-1.71.529-1.938 1.402c-.066.254-.278.461-.54.461h-.777ZM7.496 14c.622 0 1.095-.474 1.095-1.09c0-.618-.473-1.092-1.095-1.092c-.606 0-1.087.474-1.087 1.091S6.89 14 7.496 14Z'/%3E%3C/svg%3E");
}
/* ── Blockquote */
.markdown-rendered blockquote {
border-left: 2px solid var(--blockquote-border-color);
background: var(--blockquote-background-color);
color: var(--blockquote-color);
font-style: italic;
margin: 1em 0;
padding: 10px 16px;
border-radius: 0 4px 4px 0;
}
/* ── Horizontal rule */
.markdown-rendered hr {
border: none;
border-top: 1px solid var(--hr-color);
margin: 32px 0;
}
/* ── Inline formatting */
.markdown-rendered strong { color: var(--bold-color); }
.markdown-rendered em { color: var(--italic-color); }
.markdown-rendered del { color: var(--strikethrough-color); }
/* ── Tables */
.markdown-rendered table { width: 100%; border-collapse: collapse; }
.markdown-rendered th {
font-size: 11px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.07em;
color: var(--text-faint);
text-align: left;
padding: 0 16px 8px 0;
border-bottom: 1px solid var(--table-border-color);
}
.markdown-rendered td {
padding: 8px 16px 8px 0;
border-bottom: 1px solid var(--background-modifier-border);
font-size: 13px;
color: var(--text-normal);
}
/* ── Properties */
.metadata-container {
background: var(--background-primary-alt);
border: 1px solid var(--background-modifier-border);
border-radius: 6px;
padding: 8px 12px;
margin-bottom: 24px;
}
.metadata-property-key { color: var(--text-faint); font-size: 12px; }
.metadata-property-value { color: var(--text-muted); font-size: 12px; }
/* ── Footnotes */
.markdown-rendered .footnotes,
.markdown-rendered .footnote-ref,
.markdown-rendered .footnote-backref,
.cm-footref,
.HyperMD-footnote,
.cm-hmd-footnote { color: var(--flynt-tx5); font-size: 12px; }
/* ── Tags */
.tag { font-size: 12px; font-weight: 500; }
/* ── Math */
.math, .math-inline, .math-block, mjx-container,
.cm-math, .hmd-fold-math-placeholder { color: var(--flynt-tx2); }

View file

@ -0,0 +1,8 @@
{
"name": "ITS Theme",
"version": "1.4.23",
"minAppVersion": "0.16.0",
"author": "SlRvb",
"authorUrl": "https://github.com/SlRvb",
"fundingUrl": "https://ko-fi.com/slrvb"
}

14920
.obsidian/themes/ITS Theme/theme.css vendored Normal file

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,7 @@
{
"name": "Lumen Glass",
"version": "1.0.11",
"minAppVersion": "1.13.0",
"author": "paddychenc75",
"authorUrl": "https://github.com/paddychenc75"
}

4170
.obsidian/themes/Lumen Glass/theme.css vendored Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
{
"name": "Neon Night",
"version": "1.0.7",
"minAppVersion": "1.13.4",
"author": "Sto3IV",
"authorUrl": "https://github.com/Sto3IV"
}

2846
.obsidian/themes/Neon Night/theme.css vendored Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,8 @@
{
"name": "Omarchy",
"version": "1.0.0",
"minAppVersion": "0.16.0",
"description": "Automatically syncs with your current Omarchy system theme colors and fonts",
"author": "Omarchy",
"authorUrl": "https://omarchy.org"
}

140
.obsidian/themes/Omarchy/theme.css vendored Normal file
View file

@ -0,0 +1,140 @@
/* Omarchy Theme for Obsidian */
.theme-dark,
.theme-light {
/* Core colors */
--background-primary: #09090E;
--background-primary-alt: #09090E;
--background-secondary: #09090E;
--background-secondary-alt: #09090E;
--text-normal: #E0E6F0;
/* Selection colors */
--text-selection: #FF007F;
/* Border color */
--background-modifier-border: #44445A;
/* Semantic heading colors */
--text-title-h1: #FF007F;
--text-title-h2: #00FF9F;
--text-title-h3: #FFE700;
--text-title-h4: #00E5FF;
--text-title-h5: #BD00FF;
--text-title-h6: #BD00FF;
/* Links and accents */
--text-link: #00E5FF;
--text-accent: #FF007F;
--text-accent-hover: #FF007F;
--interactive-accent: #FF007F;
--interactive-accent-hover: #FF007F;
/* Muted text */
--text-muted: color-mix(in srgb, #E0E6F0 70%, transparent);
--text-faint: color-mix(in srgb, #E0E6F0 55%, transparent);
/* Code */
--code-normal: #00FFFF;
/* Errors and success */
--text-error: #FF007F;
--text-error-hover: #FF007F;
--text-success: #00FF9F;
/* Tags */
--tag-color: #00FFFF;
--tag-background: #44445A;
/* Graph */
--graph-line: #44445A;
--graph-node: #FF007F;
--graph-node-focused: #00E5FF;
--graph-node-tag: #00FFFF;
--graph-node-attachment: #00FF9F;
}
/* Headers */
.cm-header-1,
.markdown-rendered h1 {
color: var(--text-title-h1);
}
.cm-header-2,
.markdown-rendered h2 {
color: var(--text-title-h2);
}
.cm-header-3,
.markdown-rendered h3 {
color: var(--text-title-h3);
}
.cm-header-4,
.markdown-rendered h4 {
color: var(--text-title-h4);
}
.cm-header-5,
.markdown-rendered h5 {
color: var(--text-title-h5);
}
.cm-header-6,
.markdown-rendered h6 {
color: var(--text-title-h6);
}
/* Code blocks */
.markdown-rendered code {
color: #00FFFF;
}
/* Syntax highlighting */
.cm-s-obsidian span.cm-keyword {
color: #FF007F;
}
.cm-s-obsidian span.cm-string {
color: #00FF9F;
}
.cm-s-obsidian span.cm-number {
color: #FFE700;
}
.cm-s-obsidian span.cm-comment {
color: #44445A;
}
.cm-s-obsidian span.cm-operator {
color: #00E5FF;
}
.cm-s-obsidian span.cm-def {
color: #00E5FF;
}
/* Links */
.markdown-rendered a {
color: var(--text-link);
}
/* Blockquotes */
.markdown-rendered blockquote {
border-left-color: #FF007F;
}
/* Active elements */
.workspace-leaf.mod-active .workspace-leaf-header-title {
color: var(--interactive-accent);
}
.nav-file-title.is-active {
color: var(--interactive-accent);
}
/* Search results */
.search-result-file-title {
color: var(--interactive-accent);
}

View file

@ -0,0 +1,7 @@
{
"name": "Warm Paper",
"version": "1.2.1",
"minAppVersion": "1.6.6",
"author": "Andy Ho",
"authorUrl": "https://github.com/AndyMDH"
}

545
.obsidian/themes/Warm Paper/theme.css vendored Normal file

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
DO_NOT_DELETE

View file

@ -0,0 +1,5 @@
# This directory is a Syncthing folder marker.
# Do not delete.
folderID: kflwh-mecae
created: 2026-09-10T07:50:49-05:00

View file

@ -0,0 +1,19 @@
- [ ] Give ai a playlist of songs and it build a playlist on youtube
- [ ] Make something like a shirt for what3words
- Kitchen.Cigar.Relaxing
- [ ] Infrared hat bills, pen etc....
- [ ] Have ai make a audio / video book display real pages and audio at the same time.**
- the public relay channel
- then the private telay channel
- share videos and channels of recommended videos on the piblc relay
- And also offer a Private PMA relay. On the public really
- public will only show shorts
- if you want to see the full content you have to subscribe
- [ ] Jail Break options for a stepping stone of getting into sovereignty**
- Move data to nextcloud.. no jailbreaking for a while
- There is no public jailbreak for modern iPhones (iPhone XS/XR and newer) on any current iOS version. The last major release was Dopamine 2.0 (Feb 2024, up to iOS **16.5.1**). Everything claiming otherwise is a scam/malware.
## Nostr
- [x] Nostr Client
- [ ] Tool Share rental service
- [ ] Create cartoon/show where the characters are matched to recordings and the show is having the characters do what the audio recordings do or say
- [ ]

View file

@ -0,0 +1,43 @@
## Boilerplate
- [ ] Kyle Forgejo
## Miscellaneous 🤔
- [ ] ask what I can do to make my machine more efficient
- [ ] keyboard plugin or app that allows you to create text similar to auto text on phones
- [ ] Android Gallery app that allows tagging maybe Desktop Companion
- [ ] Opensource Fully Local alternative to SIRI Google Voice
## Folio
- [x] Change the three dots, allow to rename the chapter maybe add other options too when clicking the ...
- [x] Add update option
- [x] make update work
- [x] Check autosave settings
- [x] this doesn't work | Super + Alt + F | Screen full width, but keeps the top bar |
| :---------------------------- | :------------------------------------------------------------------------------ |
- [ ] add in spelll check
- [ ] When I click a file from the directory and it asks me to open file with folio it didn't work and it was a .txt file. It was a .txt file add support
- [ ] Enable auto saving and make it easioy apparent in the settings, and let the user select where the would liike the backups to be saved. But default to the folder they select alll tbeir files are in.
- [ ] ask me questions on other features that could a added to this app
- [ ] Add a search box where you can search the whole book for a word or phrase
- [ ] DRY analysis
## Keynctr
- [ ] Get signer to work
- [ ] Themes
- [ ] Hardening
- [ ] Impeccable style
- [ ] DRY analysis
## S.H.O.N.A.R.
- [ ] DRY analysis
- [ ] Impeccable style
## S.H.O.N.A.R. Desktop
- [ ] DRY analysis
- [ ] Story Boards
- [ ] Impeccable style
## Burrow
- [ ] Favorites Files and Folders
- [ ] Customize Keyboard shortcuts within the app
- [ ] Impeccable style
- [ ] DRY analysis

View file

View file

@ -0,0 +1,6 @@
# Hermes Vault Integration Test
VAULT_WRITE_TEST=SUCCESS
2025-08-10
Model: granite4:3b
This note exists to verify persistent Hermes-to-Obsidian writing

52
00-/Current State.md Normal file
View file

@ -0,0 +1,52 @@
---
last-updated: 2026-09-04T16:57:00-05:00
active-project: 01-PROJECTS/keynctr.md
session-status: active
pending-action: "Step 3 sub-step 2 — IPC reroute: drive src/ipc.rs handlers through SigningBackend (per-profile), convert via From<SigningError>; wire end-to-end external signing in the publish path"
last-error: "none"
---
# Current State
> Repaired 2026-09-04: this file was an unfilled template (`active-project` pointed
> at a placeholder, `pending-action` said "Review PR #42"). The real state below is
> reconstructed from the repo (`/home/avi/Projects/Keynctr`) and its
> `CHECKPOINT-encryption.md`.
## Hermes
- Agent: Hermes (Nous Research)
- Version: custom provider session (Qwen3.8-27B via custom endpoint)
- Status: active
## Ollama
- Model: n/a (this session runs on a custom provider, not Ollama)
- Endpoint: http://localhost:11434
- Status: n/a
## Toolsets
- terminal / read_file / patch / write_file: available
## Active Projects
- [[01-PROJECTS/keynctr]]
- Status: active
- Last Update: 2026-09-04 (sub-step 1 committed as 510cb65)
## Known Issues
- Vault `migrate_vault_signer_modes` reports a change on every load (always
`changed = true`), so `App::load` re-saves the vault each start. Harmless
(idempotent) but wasteful; tighten to only report real changes.
- Vault resume files (`Current State.md`, `keynctr.md`, `Session Handoff.md`)
were broken templates until the 2026-09-04 repair — re-read them, they are
now populated.
## Next Actions
- [x] Finish the in-flight **Vault-integration sub-step** (Step 3, sub-step 1):
verified full suite, committed the 6 files as **`510cb65`**, updated
`CHECKPOINT-encryption.md` (checkpoint commit `715c99c`).
- [x] After commit: recorded the sub-step in `01-PROJECTS/keynctr.md` → `## Completed`
and appended the outcome to `00-HERMES/Session Handoff.md`.
- [ ] **Next:** Step 3 sub-step 2 — IPC reroute: drive `src/ipc.rs` handlers through
`SigningBackend` (selected per-profile) so no inline `signer_mode`/handle-presence
branching remains; convert handler results via `From<SigningError>`; wire
end-to-end external signing in the publish path (`publish_with_keys` currently
returns "not yet supported" for `Signing::External`).

View file

@ -0,0 +1,60 @@
# Hermes Operating Manual
## Vault Configuration
- **Vault Root:** `/home/avi/HermesVault/`
- **Relative Paths:** All paths below are relative to this root.
- **Sync Method:** File System (Direct Read/Write)
## Critical Files
1. **State:** `00-HERMES/Current State.md` (Read/Write)
2. **Handoff:** `00-HERMES/Session Handoff.md` (Write)
3. **Projects:** `01-PROJECTS/` (Read/Write)
4. **Skills:** `01-SKILLS/` (Read/Write)
## Vault Integration Protocol
### On Startup
1. **Read State:** Parse `00-HERMES/Current State.md` (YAML frontmatter).
2. **Load Project:** Read the file specified in `active-project` property.
3. **Check Handoff:** If `session-status` is `paused-context-limit`, read `00-HERMES/Session Handoff.md` for context.
4. **Verify:** Ensure the local project path in `01-PROJECTS/...` matches `/home/avi/Projects/Keynctr/`.
### During Execution (Every Task)
- **Update Progress:** Before starting a task, update `## Next Actions` in `Current State.md`.
- **Log Work:** After completing a task:
- Check off the item in `Current State.md`.
- Update `## Current Status` in the active project file.
- Log the action in `00-HERMES/Session Handoff.md` (append to the file).
- **Learn Skills:** If a new skill is discovered:
- Create a new file in `01-SKILLS/` (e.g., `skill-[name].md`).
- Add the file name to `01-SKILLS/Knowledge Vault Skills Index.md`.
### On Context Limit / Shutdown
1. **Finalize State:** Update `last-updated` and `session-status` in `Current State.md`.
2. **Save Handoff:** Write a detailed summary of:
- What was accomplished.
- What remains unfinished.
- The exact next command to run.
1. **Backup:** (Optional) Commit changes to Git if configured.
## File System Permissions & Tools
### Write Access
Hermes has **full read/write access** to these paths:
- `/home/avi/HermesVault/00-HERMES/` (State & Handoff)
- `/home/avi/HermesVault/01-PROJECTS/` (Project files)
- `/home/avi/HermesVault/01-SKILLS/` (New skills)
### Auto-Update Rules (No Manual Entry)
1. **When you learn something:**
- Create a new file: `01-SKILLS/skill-[name].md`
- Append to `01-SKILLS/Knowledge Vault Skills Index.md`
2. **When you finish a task:**
- Open `01-PROJECTS/keynctr.md`
- Move the task from `## Active Tasks` to `## Completed`
- Update `last-updated` in frontmatter
3. **When you start a session:**
- Read `00-HERMES/Current State.md`
- **Do not ask the user for context.** Use the file contents.

303
00-/Hermes Vault Prompt.md Normal file
View file

@ -0,0 +1,303 @@
You are Hermes, operating with an Obsidian knowledge vault as your persistent project memory.
Your first responsibility is to read and understand the vault before taking action. The vault is the source of truth for project status, decisions, procedures, known issues, system configuration, and unfinished work.
Do not assume that information from a previous Hermes instance is available unless it is written in the vault.
Do not modify this prompt file unless the user explicitly asks you to change Hermes's operating instructions.
VAULT STRUCTURE
The vault currently uses this structure:
00-HERMES/
- Current State.md
- Hermes Operating Manual.md
- Session Handoff.md
- START-HERE.md
- Hermes Vault Prompt.md
01-PROJECTS/
01-SKILLS/
02-WORKFLOWS/
03-SKILLS/
04-SYSTEMS/
05-KNOWLEDGE/
06-DECISIONS/
07-TROUBLESHOOTING/
08-TEMPLATES/
09-ARCHIVE/
Knowledge-Vault Projects Index.md
Use the actual filenames and folders present in the vault. Do not invent folders or rename the existing structure without the user's permission.
STARTUP PROCEDURE
Before doing meaningful work, read these files in this order:
1. 00-HERMES/START-HERE.md
2. 00-HERMES/Current State.md
3. 00-HERMES/Hermes Operating Manual.md
4. 00-HERMES/Session Handoff.md, if it exists
5. Knowledge-Vault Projects Index.md
6. The relevant project files under 01-PROJECTS/
7. Any relevant files under 01-SKILLS/, 02-WORKFLOWS/, 03-SKILLS/, 04-SYSTEMS/, 05-KNOWLEDGE/, 06-DECISIONS/, or 07-TROUBLESHOOTING/
Do not treat an empty folder or missing file as evidence that no information exists. Use “Unknown” or “Not documented” when information is missing.
After reviewing the vault, provide a concise startup summary containing:
- Your understanding of the current system
- Active projects and their statuses
- Completed, blocked, waiting, or abandoned projects
- Known constraints and problems
- Important recent decisions
- The highest-priority next actions
- Contradictions, missing information, or outdated notes
Do not begin major work until you have provided this summary, unless the user specifically asks you to act immediately.
INFORMATION STORAGE RULES
Maintain the Obsidian vault as an external memory system.
Only save information that is durable, reusable, or necessary for continuity. Do not save every conversational detail.
Store information in these locations:
- Project-specific information: 01-PROJECTS/
- Skills and capability instructions: 01-SKILLS/ or 03-SKILLS/
- Reusable procedures: 02-WORKFLOWS/
- Technical configurations and system information: 04-SYSTEMS/
- General facts and reference information: 05-KNOWLEDGE/
- Major decisions and their reasoning: 06-DECISIONS/
- Errors, fixes, and diagnostic information: 07-TROUBLESHOOTING/
- Reusable prompts and templates: 08-TEMPLATES/
- Obsolete or completed material: 09-ARCHIVE/
Use Obsidian wikilinks when useful, such as:
[[Current State]]
[[Session Handoff]]
[[Project Name]]
[[Hermes Operating Manual]]
Keep notes concise, organized, searchable, and understandable to a person or Hermes instance that has never seen the vault.
Do not create duplicate notes when an appropriate note already exists. Update the existing note instead.
Do not silently overwrite useful information. Preserve important history in a history section or move outdated material to 09-ARCHIVE/ only when appropriate.
PROJECT MANAGEMENT RULES
Every project must have a dedicated Markdown file under 01-PROJECTS/.
Use only these project statuses:
- Active
- Blocked
- Waiting
- Completed
- Abandoned
- Archived
Each project file should contain:
- Project name
- Status
- Priority
- Date created
- Date last updated
- Objective
- Current state
- Completed work
- Remaining work
- Next action
- Blockers
- Dependencies
- Important decisions
- Relevant files, commands, URLs, or resources
- Session history
When a project changes, immediately update:
1. The relevant project file
2. 00-HERMES/Current State.md
3. Knowledge-Vault Projects Index.md
Do not mark a task or project as Completed unless there is evidence that it is complete.
If something was attempted but not verified, label it:
Unverified
Clearly distinguish between:
- Facts
- Assumptions
- Plans
- Completed work
- Unverified work
- Open questions
If two notes conflict, do not silently choose one. Record the conflict in 00-HERMES/Current State.md or 06-DECISIONS/ and explain what needs to be resolved.
DURING EVERY SESSION
Whenever you discover information that would help a future Hermes instance, save it in the appropriate vault file.
Update the vault when you discover:
- A durable fact
- A project status change
- A new decision
- A reusable procedure
- A system configuration
- A tool limitation
- An error and its solution
- A failed approach that should not be repeated
- A useful command or file path
- A new dependency
- A new blocker
- A completed milestone
- A change to the next action
Do not wait until the end of the session to record important information if it may be forgotten or lost.
When modifying files, preserve useful existing content unless the user explicitly asks for replacement.
SESSION END PROCEDURE
Before ending a session:
1. Update every project affected during the session.
2. Update 00-HERMES/Current State.md.
3. Create or update 00-HERMES/Session Handoff.md.
4. Update Knowledge-Vault Projects Index.md.
5. Save any durable discoveries in the appropriate vault folder.
6. Check that filenames, paths, and Obsidian links are correct.
7. Report which vault files were created or modified.
8. Identify anything that remains incomplete or unverified.
SESSION HANDOFF FORMAT
Use this format in 00-HERMES/Session Handoff.md:
# Session Handoff
## Date
YYYY-MM-DD
## Session Summary
Briefly describe what happened during the session.
## Completed
- List completed work.
- Include evidence when appropriate.
## In Progress
- List unfinished work that is actively being worked on.
## Blocked
- List blockers and explain what is needed to remove them.
## Waiting
- List work waiting on the user, another person, a service, or an external event.
## Failed or Unverified
- List failed attempts.
- List work that was attempted but not verified.
- Include relevant error messages or causes.
## Decisions Made
- Record important decisions and their reasoning.
## Files Changed
- List every vault file created or modified.
## Exact Next Actions
1. State the next action clearly.
2. Include the relevant project or system.
3. Include commands, paths, or context when needed.
## Commands or Context Needed
Record exact commands, file paths, configuration details, error messages, or other context needed to continue.
## Warnings for the Next Hermes Instance
- List important cautions.
- Mention approaches that failed.
- Mention information that may be outdated or uncertain.
CURRENT STATE RULES
Keep 00-HERMES/Current State.md as a concise dashboard, not a complete transcript.
It should contain current information about:
- Hermes
- Ollama
- Local models
- Toolsets
- Active projects
- Known issues
- Next actions
Move detailed history into project notes, troubleshooting notes, decisions, workflows, or session handoffs.
PROJECT INDEX RULES
Keep Knowledge-Vault Projects Index.md as a quick overview of all projects.
For each project, include:
- Project name
- Link to its project note
- Status
- Priority
- Current next action
- Last updated date
Update the index whenever a project is created, renamed, completed, blocked, abandoned, or significantly changed.
ACCURACY AND SAFETY RULES
- Read before writing.
- Write after discovering durable information.
- Do not invent facts, dates, decisions, commands, project statuses, or results.
- Ask before deleting files.
- Ask before renaming files or substantially restructuring the vault.
- Do not expose secrets, passwords, API keys, tokens, or private credentials in notes.
- If sensitive information appears, recommend storing a safe description instead of the secret itself.
- Do not claim to have used a tool, read a file, run a command, or verified a result unless you actually did so.
- Use ISO dates in the format YYYY-MM-DD.
- Preserve useful history.
- Keep the vault understandable to a new Hermes instance.
- At the end of each session, state exactly what was updated.
FINAL VERIFICATION
Before ending a session, verify that:
- Every affected project has an updated project note.
- Current State.md reflects the actual current situation.
- Session Handoff.md contains clear continuation instructions.
- Knowledge-Vault Projects Index.md has current project statuses.
- No completed task is marked Completed without evidence.
- Unverified work is clearly labeled Unverified.
- Important discoveries were saved in the appropriate vault location.
- No useful information was silently deleted or overwritten.
Your goal is not only to complete the current task. Your goal is to leave the vault in a condition where a completely new Hermes instance can understand the current system, continue active projects, and avoid repeating previous mistakes.

View file

@ -0,0 +1,173 @@
---
last-updated: 2026-10-02T08:27:37-05:00
index-version: 2.0
skills-count: 93
generated: true
---
# Hermes Skills Index — Capability Catalog
> **Purpose:** registry of every skill available to Hermes on this machine.
> **Machine-generated** by `~/.hermes/scripts/skills-index.py` (runs hourly
> inside `vault-sync.sh`). Do not hand-edit — edits are overwritten.
> Full skill text lives in `03-SKILLS/hermes-skills/<path>/SKILL.md`.
_Skills: **93** across **13** categories._
## apple
| Skill | Description | Path |
|---|---|---|
| `apple-notes` | Manage Apple Notes via memo CLI: create, search, edit. | [[hermes-skills/apple/apple-notes/SKILL\|SKILL.md]] |
| `apple-reminders` | Apple Reminders via remindctl: add, list, complete. | [[hermes-skills/apple/apple-reminders/SKILL\|SKILL.md]] |
| `findmy` | Track Apple devices/AirTags via FindMy.app on macOS. | [[hermes-skills/apple/findmy/SKILL\|SKILL.md]] |
| `imessage` | Send and receive iMessages/SMS via the imsg CLI on macOS. | [[hermes-skills/apple/imessage/SKILL\|SKILL.md]] |
## autonomous-ai-agents
| Skill | Description | Path |
|---|---|---|
| `claude-code` | Delegate coding to Claude Code CLI (features, PRs). | [[hermes-skills/autonomous-ai-agents/claude-code/SKILL\|SKILL.md]] |
| `codex` | Delegate coding to OpenAI Codex CLI (features, PRs). | [[hermes-skills/autonomous-ai-agents/codex/SKILL\|SKILL.md]] |
| `computer-use` | Drive the desktop background-first; escalate on signal. | [[hermes-skills/autonomous-ai-agents/computer-use/SKILL\|SKILL.md]] |
| `hermes-agent` | Use, configure, theme, extend, and orchestrate Hermes Agent. | [[hermes-skills/autonomous-ai-agents/hermes-agent/SKILL\|SKILL.md]] |
| `opencode` | Delegate coding to OpenCode CLI (features, PR review). | [[hermes-skills/autonomous-ai-agents/opencode/SKILL\|SKILL.md]] |
## creative
| Skill | Description | Path |
|---|---|---|
| `architecture-diagram` | Dark-themed SVG architecture/cloud/infra diagrams as HTML. | [[hermes-skills/creative/architecture-diagram/SKILL\|SKILL.md]] |
| `ascii-video` | ASCII video: convert video/audio to colored ASCII MP4/GIF. | [[hermes-skills/creative/ascii-video/SKILL\|SKILL.md]] |
| `baoyu-infographic` | Infographics: 21 layouts x 21 styles (信息图, 可视化). | [[hermes-skills/creative/baoyu-infographic/SKILL\|SKILL.md]] |
| `claude-design` | Design one-off HTML artifacts (landing, deck, prototype). | [[hermes-skills/creative/claude-design/SKILL\|SKILL.md]] |
| `design-md` | Author/validate/export Google's DESIGN.md token spec files. | [[hermes-skills/creative/design-md/SKILL\|SKILL.md]] |
| `humanizer` | Humanize text: strip AI-isms and add real voice. | [[hermes-skills/creative/humanizer/SKILL\|SKILL.md]] |
| `impeccable` | Use when the user wants to design, redesign, shape, critique, audit, polish, clarify, distill, harden, optimize, adapt, animate, colorize, extract, or… | [[hermes-skills/creative/impeccable/SKILL\|SKILL.md]] |
| `manim-video` | Manim CE animations: 3Blue1Brown math/algo videos. | [[hermes-skills/creative/manim-video/SKILL\|SKILL.md]] |
| `p5js` | p5.js sketches: gen art, shaders, interactive, 3D. | [[hermes-skills/creative/p5js/SKILL\|SKILL.md]] |
| `popular-web-designs` | 54 real design systems (Stripe, Linear, Vercel) as HTML/CSS. | [[hermes-skills/creative/popular-web-designs/SKILL\|SKILL.md]] |
| `songwriting-and-ai-music` | Songwriting craft and Suno AI music prompts. | [[hermes-skills/creative/songwriting-and-ai-music/SKILL\|SKILL.md]] |
## devops
| Skill | Description | Path |
|---|---|---|
| `sdlc-review` | Review Kanban handoffs and route verified outcomes. | [[hermes-skills/devops/sdlc-review/SKILL\|SKILL.md]] |
## email
| Skill | Description | Path |
|---|---|---|
| `email-inbox-triage` | Triage an inbox: prioritize threads, draft replies safely. | [[hermes-skills/email/email-inbox-triage/SKILL\|SKILL.md]] |
| `himalaya` | Himalaya CLI: IMAP/SMTP email from terminal. | [[hermes-skills/email/himalaya/SKILL\|SKILL.md]] |
## general
| Skill | Description | Path |
|---|---|---|
| `add-movie` | Use when user says 'add movie'. Ask section and checkbox. | [[hermes-skills/add-movie/SKILL\|SKILL.md]] |
| `android-dev-linux` | Set up and debug Android dev on Linux/Arch over adb. | [[hermes-skills/android-dev-linux/SKILL\|SKILL.md]] |
| `bulk-list-reformat` | Reformat many list-note lines in place; verify untouched. | [[hermes-skills/bulk-list-reformat/SKILL\|SKILL.md]] |
| `compose-desktop-dev` | Dev loop and debugging for Compose Desktop (JVM) apps. Covers app-wide Ctrl+zoom and HiDPI file-chooser pitfalls. | [[hermes-skills/compose-desktop-dev/SKILL\|SKILL.md]] |
| `electron-dev-debug-linux` | Debug Electron dev apps on Linux/Hyprland desktops. | [[hermes-skills/electron-dev-debug-linux/SKILL\|SKILL.md]] |
| `forgejo` | Manage Forgejo repos on git.atitlan.io via API and git. | [[hermes-skills/forgejo/SKILL\|SKILL.md]] |
| `forgejo-selfhosted-git` | Push, rename, delete repos on a self-hosted Forgejo forge. | [[hermes-skills/forgejo-selfhosted-git/SKILL\|SKILL.md]] |
| `hermes-error-triage` | Diagnose Hermes red-banner session errors from logs. | [[hermes-skills/hermes-error-triage/SKILL\|SKILL.md]] |
| `hyprland-keybind-triage` | Use when a Hyprland/Omarchy keybind stopped working. | [[hermes-skills/hyprland-keybind-triage/SKILL\|SKILL.md]] |
| `hyprland-monitor-layout` | Fix Hyprland cursor gaps and monitor layout reverts. | [[hermes-skills/hyprland-monitor-layout/SKILL\|SKILL.md]] |
| `hyprland-multi-monitor` | Fix Hyprland monitor gaps and cursor-crossing lag. | [[hermes-skills/hyprland-multi-monitor/SKILL\|SKILL.md]] |
| `keynctr-dev` | Work on Keynctr, the Rust/Electron NIP-46 signer app. | [[hermes-skills/keynctr-dev/SKILL\|SKILL.md]] |
| `linux-audio-troubleshoot` | Use when sound is missing on a PipeWire Linux desktop. | [[hermes-skills/linux-audio-troubleshoot/SKILL\|SKILL.md]] |
| `network-security-audit` | Audit LAN and hosts for exposed attack surface. | [[hermes-skills/network-security-audit/SKILL\|SKILL.md]] |
| `nostr-lightning-android` | Add Nostr, relays, zaps, NWC, NIP-46 remote signing to apps. | [[hermes-skills/nostr-lightning-android/SKILL\|SKILL.md]] |
| `ods-editing` | Edit .ods sheets losslessly - rows, links, formatting. | [[hermes-skills/ods-editing/SKILL\|SKILL.md]] |
| `omarchy-lg-monitor-chime-fix` | Silence monitor DPMS chime via DDC/CI mute shim. Omarchy. | [[hermes-skills/omarchy-lg-monitor-chime-fix/SKILL\|SKILL.md]] |
| `omarchy-terminal-here` | Hotkey to open terminal in focused omafiles folder. | [[hermes-skills/omarchy-terminal-here/SKILL\|SKILL.md]] |
| `omarchy-ui-tuning` | Shrink browser and window chrome on Omarchy. | [[hermes-skills/omarchy-ui-tuning/SKILL\|SKILL.md]] |
| `project-inventory-portfolio` | Build portfolios and SOWs from local project folders. | [[hermes-skills/project-inventory-portfolio/SKILL\|SKILL.md]] |
| `satsamp-dev` | Work on SatsAmp, the Android radio/Wavlake player app. | [[hermes-skills/satsamp-dev/SKILL\|SKILL.md]] |
| `self-hosted-app-build` | Ship self-hosted apps in verified milestones. | [[hermes-skills/self-hosted-app-build/SKILL\|SKILL.md]] |
| `share-local-dev-app` | Open a local dev server from a phone; tunnel for showcases. | [[hermes-skills/share-local-dev-app/SKILL\|SKILL.md]] |
| `shonar-desktop-dev` | Work on Shonar Desktop app and its local engine. | [[hermes-skills/shonar-desktop-dev/SKILL\|SKILL.md]] |
| `static-site-iteration` | Edit DESIGN.md static sites; verify live, commit per unit. | [[hermes-skills/static-site-iteration/SKILL\|SKILL.md]] |
| `syncthing-sync-troubleshoot` | Fix Syncthing sync: REST API, adb peer checks, live canary. | [[hermes-skills/syncthing-sync-troubleshoot/SKILL\|SKILL.md]] |
| `verify-before-concluding` | Use before claiming anything about UI state. Never assume. | [[hermes-skills/verify-before-concluding/SKILL\|SKILL.md]] |
## media
| Skill | Description | Path |
|---|---|---|
| `gif-search` | Search/download GIFs from Tenor via curl + jq. | [[hermes-skills/media/gif-search/SKILL\|SKILL.md]] |
| `songsee` | Audio spectrograms/features (mel, chroma, MFCC) via CLI. | [[hermes-skills/media/songsee/SKILL\|SKILL.md]] |
| `youtube-content` | YouTube transcripts to summaries, threads, blogs. | [[hermes-skills/media/youtube-content/SKILL\|SKILL.md]] |
## note-taking
| Skill | Description | Path |
|---|---|---|
| `obsidian` | Read, search, create, and edit notes in the Obsidian vault. | [[hermes-skills/note-taking/obsidian/SKILL\|SKILL.md]] |
## productivity
| Skill | Description | Path |
|---|---|---|
| `airtable` | Airtable REST API via curl. Records CRUD, filters, upserts. | [[hermes-skills/productivity/airtable/SKILL\|SKILL.md]] |
| `box` | Box manages cloud files, sharing, search, and metadata. | [[hermes-skills/productivity/box/SKILL\|SKILL.md]] |
| `document-to-action-items` | Extract cited obligations, deadlines, tasks from documents. | [[hermes-skills/productivity/document-to-action-items/SKILL\|SKILL.md]] |
| `docx` | Create, read, edit, template, and review Word .docx files. | [[hermes-skills/productivity/docx/SKILL\|SKILL.md]] |
| `drive-inventory-backup` | Locate folder sets across drives; build backup scripts. | [[hermes-skills/productivity/drive-inventory-backup/SKILL\|SKILL.md]] |
| `google-workspace` | Gmail, Calendar, Drive, Docs, Sheets via gws CLI or Python. | [[hermes-skills/productivity/google-workspace/SKILL\|SKILL.md]] |
| `maps` | Geocode, POIs, routes, timezones via OpenStreetMap/OSRM. | [[hermes-skills/productivity/maps/SKILL\|SKILL.md]] |
| `meeting-action-items` | Turn meeting notes into cited decisions, owners, tickets. | [[hermes-skills/productivity/meeting-action-items/SKILL\|SKILL.md]] |
| `notion` | Notion API + ntn CLI: pages, databases, markdown, Workers. | [[hermes-skills/productivity/notion/SKILL\|SKILL.md]] |
| `pdf` | PDF files: create, read, merge, fill, OCR, edit text. | [[hermes-skills/productivity/pdf/SKILL\|SKILL.md]] |
| `portfolio-work-statement` | Build git-verified portfolio and work-statement docs. | [[hermes-skills/productivity/portfolio-work-statement/SKILL\|SKILL.md]] |
| `powerpoint` | Create, read, edit .pptx decks with python-pptx. | [[hermes-skills/productivity/powerpoint/SKILL\|SKILL.md]] |
| `product-price-monitor` | Watch product, flight, or listing prices; alert on target. | [[hermes-skills/productivity/product-price-monitor/SKILL\|SKILL.md]] |
| `teams-meeting-pipeline` | Teams meeting summaries, job replay, Graph subscriptions. | [[hermes-skills/productivity/teams-meeting-pipeline/SKILL\|SKILL.md]] |
| `weekly-review-planning` | Weekly reset: commitments, stalled work, next-week plan. | [[hermes-skills/productivity/weekly-review-planning/SKILL\|SKILL.md]] |
| `xlsx` | Create, read, edit Excel .xlsx workbooks and CSVs. | [[hermes-skills/productivity/xlsx/SKILL\|SKILL.md]] |
## research
| Skill | Description | Path |
|---|---|---|
| `arxiv` | Search arXiv papers by keyword, author, category, or ID. | [[hermes-skills/research/arxiv/SKILL\|SKILL.md]] |
| `competitor-news-monitor` | Watch named companies for material news; cited digests. | [[hermes-skills/research/competitor-news-monitor/SKILL\|SKILL.md]] |
| `grounded-citations` | Ground answers and documents in cited, verifiable sources. | [[hermes-skills/research/grounded-citations/SKILL\|SKILL.md]] |
| `llm-wiki` | Karpathy's LLM Wiki: build/query interlinked markdown KB. | [[hermes-skills/research/llm-wiki/SKILL\|SKILL.md]] |
| `rss-feeds` | Read RSS, Atom, JSON feeds; discover feeds behind a page. | [[hermes-skills/research/rss-feeds/SKILL\|SKILL.md]] |
## social-media
| Skill | Description | Path |
|---|---|---|
| `reddit-reading` | Read Reddit: subreddits, search, threads, users. No browser. | [[hermes-skills/social-media/reddit-reading/SKILL\|SKILL.md]] |
| `xurl` | X/Twitter via xurl CLI: raw post search, posting, DM, media. | [[hermes-skills/social-media/xurl/SKILL\|SKILL.md]] |
## software-development
| Skill | Description | Path |
|---|---|---|
| `codebase-inspection` | Inspect codebases w/ pygount: LOC, languages, ratios. | [[hermes-skills/software-development/codebase-inspection/SKILL\|SKILL.md]] |
| `compose-gesture-pitfalls` | Add long-press gestures to Material3 components without click-masking regressions. | [[hermes-skills/software-development/compose-gesture-pitfalls/SKILL\|SKILL.md]] |
| `dogfood` | Exploratory QA of web apps: find bugs, evidence, reports. | [[hermes-skills/software-development/dogfood/SKILL\|SKILL.md]] |
| `github` | GitHub via gh CLI: PRs, issues, reviews, repos, auth. | [[hermes-skills/software-development/github/SKILL\|SKILL.md]] |
| `hermes-agent-skill-authoring` | Author in-repo SKILL.md files: frontmatter and structure. | [[hermes-skills/software-development/hermes-agent-skill-authoring/SKILL\|SKILL.md]] |
| `inspecting-hermes-desktop-dom` | Read the live Hermes desktop DOM/CSS over CDP. | [[hermes-skills/software-development/inspecting-hermes-desktop-dom/SKILL\|SKILL.md]] |
| `node-inspect-debugger` | Debug Node.js via --inspect + Chrome DevTools Protocol CLI. | [[hermes-skills/software-development/node-inspect-debugger/SKILL\|SKILL.md]] |
| `project-audit-report` | Audit a repo's real state and plan verified next steps. | [[hermes-skills/software-development/x/SKILL\|SKILL.md]] |
| `python-debugpy` | Debug Python: pdb REPL + debugpy remote (DAP). | [[hermes-skills/software-development/python-debugpy/SKILL\|SKILL.md]] |
| `requesting-code-review` | Pre-commit review: security scan, quality gates, auto-fix. | [[hermes-skills/software-development/requesting-code-review/SKILL\|SKILL.md]] |
| `simplify-code` | Parallel 4-agent cleanup of recent code changes. | [[hermes-skills/software-development/simplify-code/SKILL\|SKILL.md]] |
| `spike` | Throwaway experiments to validate an idea before build. | [[hermes-skills/software-development/spike/SKILL\|SKILL.md]] |
| `syft-dev` | Dev loop for Syft, the quickshell file manager. | [[hermes-skills/software-development/syft-dev/SKILL\|SKILL.md]] |
| `systematic-debugging` | 4-phase root cause debugging: understand bugs before fixing. | [[hermes-skills/software-development/systematic-debugging/SKILL\|SKILL.md]] |
| `test-driven-development` | TDD: enforce RED-GREEN-REFACTOR, tests before code. | [[hermes-skills/software-development/test-driven-development/SKILL\|SKILL.md]] |
## web
| Skill | Description | Path |
|---|---|---|
| `blocked-page-recovery` | Use when a fetch fails: 403/429, paywall, WAF, bot wall. | [[hermes-skills/web/blocked-page-recovery/SKILL\|SKILL.md]] |

View file

@ -0,0 +1,2 @@
#workspaces

View file

@ -0,0 +1,52 @@
---
type: meeting
date:
attendees: []
project:
status: raw
processed: false
---
# # {{title}}
## Raw Notes
(Paste your unedited notes here — hesitations, half-sentences, all of it)
## Hermes Processing Prompt
Copy everything below into Hermes along with the raw notes above.
You are processing a meeting note in my Knowledge Vault.
The vault structure is: 01-PROJECTS, 02-WORKFLOWS, 03-SKILLS,
04-SYSTEMS, 05-KNOWLEDGE, 06-DECISIONS, 07-TROUBLESHOOTING.
Do the following, in this order, and label each section clearly:
1. **DECISIONS** — Every decision made. Format: `decision | who | date`.
Cross-check against `06-DECISIONS` and flag anything that reverses
or contradicts a prior decision.
2. **ACTION ITEMS** — Table format: `owner | task | due date | project | status`.
Mark "UNASSIGNED" or "NO DATE" explicitly. Never guess an owner.
3. **PROJECT LINKS** — For each item, name the matching `01-PROJECTS` note.
If nothing matches, say "new project candidate."
4. **KNOWLEDGE** — Facts, findings, or learnings worth keeping forever.
These belong in `05-KNOWLEDGE`, not in the meeting note.
5. **TROUBLESHOOTING** — Any problem described with a cause or workaround.
These belong in `07-TROUBLESHOOTING`.
6. **OPEN QUESTIONS** — Unresolved threads, plus who can answer them.
7. **GAPS** — What's missing. Items with no owner, no date, decisions made
without the relevant person present, or topics that got dropped.
8. **MY FOLLOW-UPS** — Actions assigned to me only, ranked by urgency.
**Rules:**
- Flag any inference with `[INFERRED]`. Flag anything you're unsure of
with `[LOW CONFIDENCE]`. Do not invent due dates or names.
- Output the content as paste-ready markdown blocks, one per destination
folder, so I can file them without rewriting.
- End with a one-paragraph summary I can paste into a follow-up email.

View file

@ -0,0 +1,8 @@
Use my Obsidian vault as your persistent memory.
Read 00-HERMES/Hermes Vault Prompt.md first, then follow its startup procedure. Read the current state, operating manual, session handoff, project index, and relevant project files before beginning work.
Reconstruct the current state of my projects and systems. Report your understanding, active projects, blockers, decisions, and next actions before proceeding.
During the session, save durable information to the appropriate vault files. Before ending, follow the session-end procedure and update all affected project notes, Current State.md, Session Handoff.md, and Knowledge-Vault Projects Index.md.

0
1. Projects/.gitkeep Normal file
View file

View file

@ -0,0 +1,34 @@
---
type: project
id: PROD-3
area: Products
done_when: "Avi has no open feature or bug items on Folio and declares it stable."
status: open
updated: 2026-10-01
tags:
- hub
- products
---
# PROD-3 Folio
## What this is
Electron document/portfolio app (v0.1.4 released with auto-updater).
## Tasks
_See `sources/` — pre-Orion notes preserved verbatim; promote live tasks here as they're worked._
## Open items
_None registered yet (migration)._
## Key files
- Code: `~/Projects/Folio/`
- Sources (pre-Orion notes, preserved): `sources/`
## People
_None yet._

View file

@ -0,0 +1,5 @@
#### To see changes in real time run
```
cd ~/Projects/Folio && npm run electron
```

View file

@ -0,0 +1,34 @@
---
type: project
id: PROD-1
area: Products
done_when: "Keynctr is polished, packaged, and released for others to use as a shared Nostr account manager, not just Avi's own setup."
status: open
updated: 2026-10-01
tags:
- hub
- products
---
# PROD-1 Keynctr
## What this is
Nostr account manager (desktop, Rust/Electron): profiles with generated keys, feed management, NIP-46 remote signing (Amber).
## Tasks
_See `sources/` — pre-Orion notes preserved verbatim; promote live tasks here as they're worked._
## Open items
_None registered yet (migration)._
## Key files
- Code: `~/Projects/Keynctr/`
- Sources (pre-Orion notes, preserved): `sources/`
## People
_None yet._

View file

@ -0,0 +1,93 @@
#nostr #accountmanger #feedmanager
pass [REDACTED 2026-10-01 — secrets do not belong in vault notes]
# <font color="#f79646">Terminal Command To launch Dev Mode</font>
Use the dev-server mode — renderer changes (React/CSS/TS in frontend/src) then appear instantly via hot reload:
# Terminal 1
```
cd /home/avi/Projects/Keynctr/frontend && npx vite --port 5173
```
# Terminal 2
```
cd /home/avi/Projects/Keynctr/frontend && NOSTR_GUI_DEV_URL=http://localhost:5173 KEYNCTR_ENABLE_GPU=1 npx electron . 2>&1 | tee ~/Tools/keynctr-debug/el.log
```
### To Kill App
```
pkill -f "electron ." ; sleep 2; pgrep -af "electron .|keynectr serve" || echo "all clear"
```
If anything still prints, force it:
```
pkill -9 -f "electron ."; pkill -9 -f "keynectr serve"; pgrep -af "electron .|keynectr serve" || echo "all clear"
```
You want the final all clear with no process lines. (npx vite can stay running — only Electron and keynectr serve must die.) Then relaunch Electron fresh per the previous message.
---
# Nostr is a decentralized social network.
No central company runs this network. Instead, your account is a pair of mathematical keys:
- A **public key**, which you share like an address.
- A **secret key**, which you guard like a master password.
Posts are distributed through independent servers called **relays**. Anyone can run a relay, and no one can lock you out of the network.
This app gives you a clean, secure desktop window into that world.
### What It Does For You
- **Manages your identities**
Create profiles with friendly names like “Personal” or “Work.” The app generates and stores the secret keys behind them. You can switch between identities anytime. Your secret keys stay inside the app’s protected core—screens are designed so they physically cannot display or leak them.
- **Lets you post**
Write a note in the **Compose** tab. Optionally attach images (uploaded automatically to an image host) or paste links (the app fetches preview cards). When you publish, you’ll see exactly which relays accepted your post and which didn’t.
- **Lets you read**
The **Feed** tab shows recent notes from your relays over the last 24 hours—either everyone’s notes or just the people your profile follows.
- **Connects you to the network**
Use the **Relays** tab to add, remove, enable, disable, and test relay servers.
- **Protects other apps from having your keys**
Instead of pasting your secret key into random Nostr clients, those clients can ask this app to sign things for them remotely. Every request shows up as **“Sign this? / Decrypt this?”** with an **Approve** or **Reject** button. Nothing happens without your click.
- **Locks up when you walk away**
Set a vault password once. All secret keys on disk become unreadable without it—while profile names remain visible so you can still browse.
### Typical First Session
1. **Open the app** → **Profiles** → **Create profile** → give it a name.
2. **Relays** → confirm at least one is enabled.
3. **Compose** → write something → **Publish**.
4. **Feed** → see your note appear alongside everyone else’s.
That’s it—no account signup, no email, no phone number. Your identity is your key pair, and this app keeps it safe while making it usable.
## Installation
Arch
```
sudo pacman -U ./shonar-desktop-0.1.0-1-x86_64.pkg.tar.zst
# (waits while it downloads the Whisper model ~142 MB as part of install)
shonar-desktop # or find "SHONAR Desktop" in the app menu
```
Debian
```
sudo apt install openjdk-17-jdk python3 python3-venv mpv
mkdir -p ~/Projects && tar xzf shonar-desktop-6efec57.tar.gz -C ~/Projects
cd ~/Projects/shonar-desktop && ./setup-standalone.sh # engine venv + Whisper model
sudo apt install ~/shonar-desktop_0.1.0-2_amd64.deb
shonar-desktop # or from the app menu
```

View file

@ -0,0 +1,61 @@
#nostr #accountmanger #feedmanager
pass [REDACTED 2026-10-01 — secrets do not belong in vault notes]
# <font color="#f79646">Terminal Command To launch Dev Mode</font>
Use the dev-server mode — renderer changes (React/CSS/TS in frontend/src) then appear instantly via hot reload:
# Terminal 1
```
cd ~/Projects/Keynctr/frontend
npm run dev
```
# Terminal 2
```
cd ~/Projects/Keynctr/frontend
NOSTR_GUI_DEV_URL=http://localhost:5173 npm start
```
---
# Nostr is a decentralized social network.
No central company runs this network. Instead, your account is a pair of mathematical keys:
- A **public key**, which you share like an address.
- A **secret key**, which you guard like a master password.
Posts are distributed through independent servers called **relays**. Anyone can run a relay, and no one can lock you out of the network.
This app gives you a clean, secure desktop window into that world.
### What It Does For You
- **Manages your identities**
Create profiles with friendly names like “Personal” or “Work.” The app generates and stores the secret keys behind them. You can switch between identities anytime. Your secret keys stay inside the app’s protected core—screens are designed so they physically cannot display or leak them.
- **Lets you post**
Write a note in the **Compose** tab. Optionally attach images (uploaded automatically to an image host) or paste links (the app fetches preview cards). When you publish, you’ll see exactly which relays accepted your post and which didn’t.
- **Lets you read**
The **Feed** tab shows recent notes from your relays over the last 24 hours—either everyone’s notes or just the people your profile follows.
- **Connects you to the network**
Use the **Relays** tab to add, remove, enable, disable, and test relay servers.
- **Protects other apps from having your keys**
Instead of pasting your secret key into random Nostr clients, those clients can ask this app to sign things for them remotely. Every request shows up as **“Sign this? / Decrypt this?”** with an **Approve** or **Reject** button. Nothing happens without your click.
- **Locks up when you walk away**
Set a vault password once. All secret keys on disk become unreadable without it—while profile names remain visible so you can still browse.
### Typical First Session
1. **Open the app** → **Profiles** → **Create profile** → give it a name.
2. **Relays** → confirm at least one is enabled.
3. **Compose** → write something → **Publish**.
4. **Feed** → see your note appear alongside everyone else’s.
That’s it—no account signup, no email, no phone number. Your identity is your key pair, and this app keeps it safe while making it usable.

View file

@ -0,0 +1,17 @@
---
project: keynctr
status: active
last-updated: 2026-09-04T16:48:00-05:00
hermes-owned: true
local-path: /home/avi/Projects/Keynctr/
---
# Keynctr (redirect)
> **Moved (2026-09-04):** the canonical project file is now
> **`01-PROJECTS/keynctr.md`** — the path the startup protocol references.
> This root-level copy was a duplicate and is kept only as a redirect so old
> links don't dangle. Edit the file under `01-PROJECTS/`, not this one.
- Local code: `/home/avi/Projects/Keynctr/`
- Checkpoint: `/home/avi/Projects/Keynctr/CHECKPOINT-encryption.md`

View file

@ -0,0 +1,244 @@
---
project: keynctr
status: active
last-updated: 2026-09-25T23:00:00-05:00
hermes-owned: true
local-path: /home/avi/Projects/Keynctr/
tech-stack: [Rust, Electron, React, TypeScript]
---
# Keynctr
## Overview
A desktop GUI for managing Nostr identities and publishing notes, with a focus on
key security through vault encryption and a modular signer abstraction layer.
Rust backend (JSON-lines IPC on stdio) + Electron/React frontend.
**Ultimate goal:** Keynctr itself never holds or transmits secret key
material. In embedded mode keys live only in the encrypted local vault; in
external-signer mode (the most secure of the three ways, and the current
focus per Avi's directive) the keys live on the signer device — Amber on the
phone — and Keynctr only ever sends signing *requests*, approving each use at
the signer. The Rust core does all signing/relay work; the Electron UI never
touches secret material. Usable as GUI *and* same-core CLI, and doubling as a
NIP-46 bunker for other apps.
## Architecture
- **Frontend:** Electron + React + TypeScript (`frontend/`); Prettier-formatted.
- **Backend:** Rust crate `keynectr` (`src/`); `cargo build --release` binary.
- **Storage:** a single encrypted vault file (`profiles_vault.json`) holding
profiles, signer modes, NIP-46 connections, and encrypted connection secrets.
- **Key files:**
- `src/main.rs`: CLI entry point / JSON-lines IPC serve.
- `src/ipc.rs`: dispatcher.
- `src/signer/`: `Signer` trait (permission checks now async),
`Signing` enum, `EmbeddedSigner`, `Nip46ClientSigner` (the active path),
`permissions.rs`, `backend.rs` (`SigningBackend`, `VaultRef`, `SigningError`).
- `src/bunker.rs`: legacy server-mode bunker (bunker:// host role).
- `src/vault.rs`: vault load/save, migrations, encrypted `connection_secrets`.
- `tests/nip46_e2e.rs`: in-process NIP-46 e2e test (mini relay + fake Amber).
- `CHECKPOINT-encryption.md` (repo root): the standing, current checkpoint —
always read this first for "where things are."
## Current Status
**External signer (the most secure mode) works end-to-end, proven by test.**
Headline commits since the vault was last updated:
- `f917e5e` Amber-compatible handshake: `bunker://` URIs, deferred identity
(URI key is a per-connection comms key, never identity; real identity learned
via `get_public_key` after approval), 120s approval window, fail-closed while
Connecting.
- `c096705` vault-load rewrite fix (migration no longer re-saves every start).
- `85756df` `bunker://` accepted frontend-side + async permission surface +
`tests/nip46_e2e.rs` — full e2e: local relay, fake Amber with human-approval
delay, identity assertions, `sign_event` verification, vault persistence
(remote profiles store no secret material).
- `38499d4`→`3d5302f` QR pairing (client-initiated `nostrconnect://` flow),
IPC lazy-init fix, Electron allowlist fix, and real kind-0 display
name/picture adoption for paired identities (3s-capped, falls back to label).
Verification at last check (2026-09-12): `cargo test` 200 + e2e green, clippy
0 warnings, fmt clean, release build green; frontend 116 tests + typecheck +
lint + build green.
### 2026-09-18 — pairing trace milestone
- `21c522b` Durable pairing trace: every pairing decision point now appends
a timestamped line to `~/Tools/keynctr-debug/pairing-trace.log` (started,
inbound 24133, decrypt-fail with real NIP-44 error, exact unparsable
payload, pre-handshake method, connect answered, identity adopted,
session failed). Backend stderr only reached the Electron console and
/tmp logs got cleaned, so failed live handshakes previously left no trace.
- Found forensics contamination: pairing-capture.jsonl lines from Sep 18
were the e2e harness's loopback fake-scanner events, not Amber — the
capture path was hardcoded. Test events pruned (backup kept) and loopback
pairings now skip the capture. Net: no real Amber scan has run against
the `188b2eb` lenient parser yet; the next re-scan's trace.log tail will
name exactly where the handshake stops, no terminal capture needed.
- Verification at `21c522b`: cargo test 208 + 2 e2e green, clippy 0
warnings, fmt clean, release rebuilt; frontend all green.
### 2026-09-16 — pairing debug milestone
- `188b2eb` RawRequest deserializer rewritten as universal coercion: any
valid JSON now parses (numeric/missing ids → text, object-shaped params,
double-encoded request strings). The strict derive was still dropping
Amber's connect request even after `aedde8f`. Decrypt failures now log
the real NIP-44 error (HMAC vs padding vs wrong key) and the exact
decrypted payload instead of a generic message.
- Forensics: all 4 captured pairing frames (`~/Tools/keynctr-debug/
pairing-capture.jsonl`, latest Sep 16 20:11) are 163-byte spec-valid
NIP-44 v2 payloads (plaintext 65–96 bytes; the observed 89 fits) — so
Amber's frames decrypt fine and the failure was JSON-shape parsing.
- IMPORTANT: `/tmp/keynctr-el*.log` is gone (tmp-cleaner). To see pairing
diagnostics launch from a terminal:
`NOSTR_GUI_DEV_URL=http://localhost:5173 KEYNCTR_ENABLE_GPU=1 npx electron . 2>&1 | tee ~/Tools/keynctr-debug/el.log`
then re-scan the QR in Amber.
- Verification at `188b2eb`: cargo test 208 + 2 e2e green, clippy 0
warnings, fmt clean, release rebuilt; frontend all green.
### 2026-09-27 — multi-account switching + permissions UI + updater fix
- **Multi-account switching shipped (`c89b31a`, Option A):** pairing/connecting a second signer PARKS the live session (never revoked; row+secret+client key intact); `SelectProfile` re-dials the target profile's saved session (local-key profiles leave the session alone); new `nip46_cancel_pairing` IPC restores the parked session on QR cancel — both Add-profile and Signer Mode cancels use it. Verified: cargo test 216 + 6 e2e green (new two-fake-Amber switch test).
- **Step 4 first slice (`adbc7c2`):** `Nip46Status` carries declared `perms=` list + expiry; Signer Mode shows a Permissions panel (grant rows, or a signer-side-enforcement note). Always-allow grants are now kind-scoped: a `sign_event` grant records the approved request's kind; legacy kind-less grants keep all-kinds meaning (`serde(default)`, never bricked existing vault rows); enforced in `bunker.rs` + `nip46_client.rs` via `has_signer_grant(peer, method, event_kind)`.
- **Updater fix (`fa59b63`):** `updates.rs` `run()` augments the inherited PATH with `~/.cargo/bin`, `~/.local/bin`, mise/asdf shims, `/usr/local/bin` — Check-for-updates was dead under the desktop-launcher env; verified live under `env -i PATH=/usr/bin:/bin`.
- Status at end of night: tree clean @ `118f5d3`, 7 ahead of origin (push needs per-use token); cargo test 219 + 6 e2e green, clippy 0, frontend 135 tests green, release rebuilt 22:43.
- Open: live eyeball of Permissions panel (relaunch — running serve predates commits), approve kind-1 "Always allow" then send kind-3 and confirm it prompts; two-account live pass with real Amber; Step 5 KDF; Step 6 undo; Step 7 rename/hygiene.
### 2026-09-28 — Moi "workshop" themes + no-restart updater
- **Workshop themes (`add956a`, `c18f59a`, `de804c8`):** user's "the theme I asked you to add" = the Moi project's Cybernetic Workshop look, NOT Cosmic Stardust. Pitfall: Moi's look isn't just palette tokens — `site.css` paints a 24px hairline graph-paper grid + mint/clay radial washes over the paper; matching requires the background stack, not just colors. `workshop-dark` accent moved to `#007AFF` per request; white logo on dark themes (invert filter).
- **No-restart updater (`dcc701f`):** `app:selfupdate` IPC runs npm build + `cargo build --release` with augmented PATH, kills the backend child; the next request picks up the new binary — no app restart needed.
- **Auto-naming fix:** pairing a new Amber connection showed generic "Amber"; persistent kind-0 identity backfill (`5b60ae3`) + stdin EAGAIN crash fix (`9770f46`). Suite at checkpoint `f905cbc`: 221 unit + 6 e2e, clippy 0, frontend 139 green.
## Active Tasks
- [x] On-device Amber round-trip: pair from the real Amber app on the phone,
sign a note, publish. The e2e test proves the protocol; this proves Amber.
- [ ] Reroute kind-0 profile metadata publish through the external signer path.
- [ ] Step 4: external-signer permissions UI (grants persisted AND enforced).
### 2026-09-26 — live publish CONFIRMED + forensics log cleaned
- **End-to-end Amber signing verified on-chain:** kind:1 notes from `npub1qn0w4a…` (ids `5191172d01f9…`, `fe9a256f597f…`) confirmed accepted on primal/damus/snort/nos.lol at exactly the sign_event timestamps in el.log (Sep 25 ~19:50). Every named milestone of the pairing project is now live-verified except one optional scanless-restart eyeball.
- **False alarms retired:** the scary recurring "restored signer answered as a different account" and stray "auto-name attempt" lines in pairing-trace.log were e2e TEST traffic (wrong-identity refusal test + loopback enrichment loop), not live Amber failures. Fixed by gating `fail()` + auto-name traces on `live_relays()` like every other trace site (`332ab64`); measured proof: an e2e run now leaves the trace file byte-identical.
- **Live vault pruned again:** legacy keyless `fac852dc…` connection row removed (backup `profiles_vault.json.backup-cron-20260926`) so startup restore targets only the restorable `4148a9a1…` pairing. Serve smoke test on the real vault fires the restore with the persisted client key, no errors.
- 216 unit + 5 e2e green; clippy 0; fmt clean; release rebuilt at `332ab64`. Checkpoint `1b4655c`.
### 2026-09-24/25 — session restore + live sign-in + auto-naming milestones
- **Session restore shipped (`0982dad`, checkpoint `aa3c514`):** NIP-46 client key persisted in the vault; re-dial at startup/unlock — no re-scan after restart. `expected_identity` cross-account guard refuses a wrong-identity connection. e2e covers restart + wrong-identity refusal (216 unit + 5 e2e green, clippy 0). Pre-commit bug fixed: client-key re-keying was nested in the pairing-secret branch.
- **11 profileless `nip46_connections` rows pruned** from the live vault (backup `profiles_vault.json.backup-prune-20260924`). Legacy connection rows predate client-key persistence — each needs one last fresh scan.
- **LIVE Amber sign-in confirmed (Sep 25 PM)** through the new Add-profile flow; active remote profile `npub1qn0w4a…`. **Session restore live-verified against real Amber at `01ce5de`** (fix: restored sessions skip the connect secret re-echo — already-approved peers don't re-send it).
- **Pairing label step removed** — one click → QR (seed label 'Amber'). Auto-name enrichment hardened to 4 retries × 20s; **confirmed end-to-end on the live account**: seed label shown at pairing, retry loop fetched kind-0 from nos.lol, vault row upgraded to 'web5osint' + picture. UI `fc2fe93`, backend `bc736ff`, checkpoint `704addc`.
- **Repo renamed on Forgejo 2026-09-25:** `avi/Nostr_Keynctr` → `avi/Keynctr` (see [[Forgejo git.atitlan.io]]).
- Open hardening item: account kind-0 still lives ONLY on nos.lol — publishing it to primal/damus (one Amber approval) remains open.
## Next Steps
- [ ] Publish account kind-0 to primal/damus (currently only on nos.lol).
- [ ] Remote picture/nip05 edits, KDF upgrade (Step 5), rename pass (Step 7).
- [ ] Consider swapping `wss://relay.nostr.band` out of the user's
enabled relays (settings.json) too — it hangs handshakes today and
is pay-to-read.
- [ ] Adopt [[Polaris Vault Workflow]] boilerplate conventions for the repo
(directive 2026-09-25).
## Completed
- [x] **LIVE PAIRING CONFIRMED + sign_event timeout fix
(`f53bc56`, Sep 23):** two full live pairings against real Amber
recorded in the trace log (15:17 + 15:37 CDT): `inbound 24133` ->
secret echo -> `identity adopted: npub1f3tura… — CONNECTED`. The
"Dev" profile row now exists in `profiles_vault.json`
(`nip46_client` mode) — the original Sep problem (no profile row,
no persisted connection) is CLOSED. Remaining failure diagnosed
from el.log: valid Amber signatures arriving ~61s after
publication were discarded ("stale/duplicate response: no
waiter") because `sign_event` used the 30s ordinary-RPC leash;
every sign needs a human tap in Amber. `sign_event` now has a
120s `SIGN_TIMEOUT` (handshake leash). 213 unit + 4 e2e green,
clippy 0, fmt clean, release rebuilt at `f53bc56`.
- [x] **Feed author resolution + kind-0 via signer (`a76d8df`,
`6f4dbb2`, Sep 23):** feed shows names/pictures from batched
kind-0 lookups; "Publish name" routes through Amber.
- [x] **First live pairing attempt diagnosed + relay-set fix
(`c789cb4`, Sep 22):** trace log recorded the first real session
(started 18:01:29 CDT, timed out 18:06:39, zero inbound 24133).
Read-only relay sweep: the ephemeral key had NO 24133 anywhere.
Anonymous write+readback canary (`canary-24133.py`, throwaway
keys): purplepag.es blocks kind 24133, nostr.band hangs
handshake; damus/primal/nos.lol accept+store, snort accepts for
live push. New pairing set: damus.io, primal.net, nos.lol,
snort.social, with a regression test pinning the blockers out.
Also removed `inspect.py` from the debug dir (shadowed stdlib
`inspect`, leaked stale output into terminals). 209 unit + 3 e2e
green, clippy 0, fmt clean, release rebuilt.
- [x] **Pairing forensics fully de-noised (`f6bf6a9`, Sep 21):** the
`identity adopted — CONNECTED` trace line had no loopback gate, so
every `cargo test` run appended fake CONNECTED entries to
`pairing-trace.log` (Sep 18–21 evening entries were all test
traffic, incl. this cron's own runs). Gated on `live_relays()`;
verified by re-running the e2e suite and confirming the trace file
stays untouched. Added a `paired: connection stored` handover trace
line so a stall between the connect echo and `get_public_key`
names itself. Full read-through audit of the QR pairing flow found
no further defects; nothing left to fix without live Amber data.
208+3 tests green, clippy 0, fmt clean, release rebuilt.
- [x] **e2e vault-isolation bug found + fixed (`d52fa58`+`deeb4f9`, Sep 20):**
the e2e tests seeded their isolation vault one directory too shallow
(`$XDG_DATA_HOME/` instead of `$XDG_DATA_HOME/keynectr/`), so every
e2e run silently migrated the legacy repo vault — the user's real
profile with a plaintext secret key — into the test process.
Forensic proof: two legacy-vault backups timestamped Sep 19 20:43:54
+ 20:44:30, exactly the test runs around the root-cause commit. Also
means the Sep 19 `identity adopted` trace lines were e2e traffic, NOT
a live Amber scan — no live scan has happened against the fixed
build yet (zero `pairing started` trace lines). Fix seeds the vault
at the correct path and asserts emptiness after every e2e load so
this can never pass silently again. Verified: repo legacy vault
byte-identical, backup count unchanged, 208+3 tests green.
- [x] **Amber pairing root cause found + fixed (`edd4e56`, Sep 19):** the
pairing loop only accepted an inbound `{"method":"connect"}` *request*;
NIP-46 says a nostrconnect:// signer sends a connect **response**
(`{"id","result":"<secret>"}`, secret echo IS the handshake). Amber's
approval was silently dropped as `pre-handshake '' ignored` — hence
"Amber says connected, Keynctr shows nothing". Now the echo is
verified directly, `ack` accepted, signer errors fail fast; locked by
a new e2e test (`nip46_qr_pairing_connect_response_shape`, proven
red-on-old/green-on-new). Awaiting live re-scan to confirm.
- [x] Steps 1–3 (vault encryption, packaging, SigningBackend abstraction,
vault-integrated connection secrets, IPC reroute, end-to-end external
signing in publish + upload auth)
- [x] Per-profile signer modes + persisted NIP-46 connections (`2c61830`)
- [x] Fail-closed key export (`6eff510`), hash-chained audit log (`caed722`)
- [x] Amber-compatible deferred-identity handshake (`f917e5e`)
- [x] **Oct 1: Step 4 shipped — approval-time kind scope** (`d09c4ec`,
checkpoint `38612a4`): "Always allow…" on a sign_event opens an inline
kind editor prefilled with the request's kind; grants store the edited
scope; legacy vault rows keep old meaning. Latent fix: legacy
"Always allow" never recorded a grant (AppProvider dropped `always`).
Suite: 227 unit + 6 e2e, clippy 0, frontend 148 green.
- [x] **Oct 1 evening cron hygiene (`41d4a60`, checkpoint `2b91aea`, pushed):**
lockfile refresh from the in-app update committed; pairing problem
re-checked and still closed (3 nip46_connections, latest Sep 28 10:23);
debug dirs cleaned up — no parse-failure evidence since closure.
- [x] **Sep 28: pairing problem closed.** Vault now holds 3 persisted
`nip46_connections` with matching `signer_mode: nip46_client` rows
(latest Sep 28 10:23, active profile) — Amber connect events parse and
persist; original failure no longer reproduces. Supporting fixes:
stdin EAGAIN crash (`9770f46`), persistent kind-0 identity backfill
for generic "Amber" labels (`5b60ae3`). Suite: 221 unit + 6 e2e,
clippy 0, frontend 139 green (checkpoint `f905cbc`).
- [x] Vault-load rewrite fix (`c096705`)
- [x] NIP-46 e2e test harness + frontend bunker:// support (`85756df`)
- [x] QR pairing + IPC/Electron wiring + real identity metadata (`38499d4`..`3d5302f`)
- [x] Connect immediately after identity; kind-0 metadata fetched in
background so the UI stops hanging on slow relays (`286bbca`)
- [x] Always-allow grants: approvals gained an "Always allow" option;
standing permission stored per (app pubkey, method) in the encrypted
vault, listed with Revoke on the Signer screen (`93892fa`)
## Known Issues
- `package.json` → `homepage` still reads `https://github.com/avi/Keynctr`
(Step-7 hygiene item).
- Legacy Python files + root `profiles_vault.json*` + dead stub
`src/signer/nip46_external.rs` are hygiene leftovers (Step-7 pass).
- Fixed since last update: `migrate_vault_signer_modes` no longer reports a
change on every load (`c096705`).
## References
- Local code: `/home/avi/Projects/Keynctr/`
- Checkpoint: `/home/avi/Projects/Keynctr/CHECKPOINT-encryption.md`
- [[00-HERMES/Current State]]
- [[00-HERMES/Session Handoff]]

View file

@ -0,0 +1,34 @@
---
type: project
id: PROD-4
area: Products
done_when: "Lumen ships with food/emergency notifications, updated map, information, and events per its PRD, and a community is actually using it."
status: open
updated: 2026-10-01
tags:
- hub
- products
---
# PROD-4 Lumen
## What this is
Community aid app (Android): emergency/food notifications, food location, events, map. Includes Solarpunk Summit 2026 planning.
## Tasks
_See `sources/` — pre-Orion notes preserved verbatim; promote live tasks here as they're worked._
## Open items
_None registered yet (migration)._
## Key files
- Code: `~/Projects/Lumen/`
- Sources (pre-Orion notes, preserved): `sources/`
## People
_None yet._

View file

@ -0,0 +1,33 @@
---
type: knowledge-note
created: 2026-09-05
source: "SolLunar Team Meeting 8-24-26 Readout"
project: "[[Solarpunk Summit 2026 — Planning State]]"
---
# Peace Support / Emergency Response Design
Design captured 2026-08-24 (SolLunar planning for Solarpunk Summit 2026).
## The system
- A phone app that runs on **local wifi only — no internet**.
- Four triage options:
1. Life-threatening injury
2. Suspicious behavior
3. Missing person
4. Missing item
- The response team knows who to send for each type.
## Rationale
- Modeled on Burn rangers; sized for a ~700-person festival.
- Explicitly addresses dosing incidents, children present, and missing
persons/items — the categories that recur at this kind of event.
## Status / next steps
- Decision made 8-24 (D-2026-087); the next meeting after 8-24 was to cover it
together with the card system and the food system.
- Related: SWAT-team incident app for the summit (8-17), all vendor sales
through the card system, decentralized logistics = food + peace support
(one of SolLunar's 7 workstreams).
Sources: [[SolLunar Team Meeting 8-24-26 Readout]], [[SolLunar Team Meeting 8-31-26 Readout]]

View file

@ -0,0 +1,31 @@
#00Lumen
To open app on phone Be on the same network as the computer
1. Make sure server isn't running
```
kill 903101
cd ~/Projects/Lumen
npx vite --host
```
2. Start server
```
npm run dev -- --port 5174 --host
```
3. Address to go to on phone
```
https://yellow-parts-tease.loca.lt
```
### PRD - Product Requirements Document
1. Notified of what ?
1. Emergencies/Food
2. Location of Food
3. Events + times of events
2. Update Map
3. Information
4. Emergency

View file

@ -0,0 +1,84 @@
---
type: knowledge-note
created: 2026-09-05
source: "SolLunar Team Meeting 8-24-26 Readout + SolLunar Team Meeting 8-31-26 Readout"
project: "[[SolLunar Society]]"
---
# Solarpunk Summit 2026 — Planning State
Status as of 2026-08-31 (two planning meetings: 8-24 and 8-31).
## The event
- ~700 people; Sun's Blue Ranch, San Marcos (river, camping, glamping, cabins).
- Tech Day = Saturday: yoga/workshops 10am; talks 3-5pm (30-45 min TED-style);
off-stage programming 5-7pm; music from 7pm; Solar/Lunar/Cypherpunk DJ set 8pm (45 min).
- SolLunar owns 7 workstreams: 12 activation installations, the Solar Pass (card)
system, all Tech Day programming, staff/volunteer help, the Lunarpunk Lounge,
workshops, and decentralized logistics (food + peace support).
## Budget (D-2026-082)
- $25k all-in, partly from SolLunar/brick-house fundraising.
- Build all 12 activations even if no sponsors land — worst case = 12 posters.
## The 12 activation themes (picked with Angel)
TerraPunks, Energy Independence, Right to Repair/DIY-Maker, Eco-Arc, Organic Foods,
Sovereign Tech, Optionality & Agency, Decentralization, Community/Indigenous &
Traditional Knowledge, Faith, Clean Tech, Off-grid Tech.
Concept directions per activation (as of 8-24):
- **TerraPunks** — hempcrete food-forest beds + meditation garden.
- **Energy Independence** — personal energy-use calculator (museum-pillar size).
- **Right to Repair** — disassembled Framework laptop + non-repairable junk pile + tool library.
- **Eco-Arc** — natural-plaster meditation room (headliner candidate).
- **Organic Foods** — vertical farm + smoothie bar (question before drink).
- **Optionality & Agency** — two-button box w/ hidden third choice + escape room.
- **Decentralization** — nature totem + infinity-mirror room (Haven has materials;
mirrored acrylic; headliner candidate).
- **Community** — bookshelf (openable, not takeable) + QR digital library (~6,000
books, locally hosted, no internet needed).
- **Faith** — "faith transaction" concept + altar/lighthouse emotional-processing
space, possible burning ritual.
- **Clean/Off-grid Tech** — TBD.
Recipe for every activation (D-2026-084): (1) physical/digital takeaway, (2) art
centerpiece, (3) sponsor highlighted in the art, (4) personal-reflection element,
(5) invitation for next steps. Installations must be portable/modular (tourable
trailers or build-up/pack-down wood-frame boxes/teepees); layout = 1 headliner
full-size + 5 medium + 3-4 grouped small + 1-2 scattered.
## Lunarpunk Lounge
- Location: more centered, closer to stage than last year — likely cabanas H +
"Above" area (tech village); Angel makes the final call.
- Three-cabana combined mega-structure: cabanas 8/I/H = Lab484 / Above Phone /
SolLunar Society, joined by tarps/curtains/aircraft cable; each org keeps its
own program. Cabanas: hexagonal, 2-story, 16 ft diameter.
- Target ~30 people; "hard to find" but visible; access via password + scavenger
hunt across the activations.
- Hakeem (8-31): Above is "not really using the cabana at all."
## Sponsorship model (D-2026-095)
- Per-activation tier ≈ $1,000: name in the activation, leads routed to sponsor,
on-brand takeaway, direct next-step lead, pre-event digital assets.
- Summit-level tier = top tier (activation = subset); don't compete with
Solarpunk's own sponsors.
- Tooling: sponsorship doc with color-coded multi-select drop-down per activation
(Haven built); master list with mock-ups, NOT a full pitch deck; outreach
starts ~2026-08-31 + a couple days.
- Framework already contacted (sponsorship portal).
## Logistics
- Volunteers self-book via solarpunksummit.com ticketing; Jessie = workshop
liaison (explicitly NOT volunteer coordinator).
- Weekly update rhythm across all 7 workstreams; weekly art-build nights
(Thursdays) start the week after 8-24, off a shared goals/materials list.
- Peace Support emergency system: local-wifi-only app (no internet), 4 triage
options — life-threatening injury, suspicious behavior, missing person,
missing item (see [[Peace Support / Emergency Response Design]]).
- Gambino volunteers for Solarpunk video editing (Angel runs the marketing team).
- Signage: hologram fans (spinning LED, any image) + big TV with rotating ads;
static signage explicitly disliked (mitigates last year's "no one knew what
was happening / cabanas hard to find" failure).
- Activation design meeting: Wednesday 6pm, week of 2026-09-01 (Kyle).
Sources: [[SolLunar Team Meeting 8-24-26 Readout]], [[SolLunar Team Meeting 8-31-26 Readout]]

View file

@ -0,0 +1,35 @@
---
type: project
id: PROD-8
area: Products
done_when: "The Linux desktop S.H.O.N.A.R. transcribes recordings reliably enough that Avi uses the Android + desktop pair as his working voice-notes pipeline."
status: open
updated: 2026-10-01
tags:
- hub
- products
---
# PROD-8 S.H.O.N.A.R. Desktop (Linux)
## What this is
S.H.O.N.A.R. — the Linux desktop transcribing app. Separate project from PROD-5 S.H.O.N.A.R. (Android voice recorder); companion apps, same name per owner (2026-10-01).
## Tasks
_Code lives in the separate desktop repo; pre-Orion architecture notes are in PROD-5's `sources/Shonar.md` (covers the 2026-09-14 desktop/server pivot)._
## Open items
_None registered yet (migration)._
## Key files
- Code: `~/Projects/Shonar Desktop/` (branch `master`, engine `:8000` via `desktop-dev.sh`)
- Related: [[PROD-5_hub|PROD-5 S.H.O.N.A.R. (Android)]]
- Deferred server/desktop work: branch `deferred/desktop-server` @ `7b34368` in the Android repo
## People
_None yet._

View file

@ -0,0 +1,34 @@
---
type: project
id: PROD-2
area: Products
done_when: "SatsAmp Phase B (Cashu, value-for-value, artist earnings, discovery, communities) is implemented and released, or Avi descopes it and ships Phase A as v1.0."
status: open
updated: 2026-10-01
tags:
- hub
- products
---
# PROD-2 SatsAmp
## What this is
Android music app (Kotlin/Compose) with decentralized features on Nostr + Lightning (zaps, NWC tipping).
## Tasks
_See `sources/` — pre-Orion notes preserved verbatim; promote live tasks here as they're worked._
## Open items
_None registered yet (migration)._
## Key files
- Code: `~/Projects/SatsAmp/`
- Sources (pre-Orion notes, preserved): `sources/`
## People
_None yet._

View file

@ -0,0 +1,27 @@
---
project: satsamp
status: active
last-updated: 2026-09-13T23:00:00-05:00
hermes-owned: true
local-path: /home/avi/Projects/SatsAmp/
tech-stack: [Android, Kotlin, Jetpack Compose]
---
# SatsAmp
Android music app (renamed from RadAmp; `applicationId` still `com.rada`, DB file `radamp.db` kept). Decentralized features built on Nostr + Lightning.
## Current state
- **Appearance system:** `UiPrefs` (SharedPreferences) + `UiTokens` in `ui/theme/Tokens.kt` — 4 accents (violet/blue/green/orange) × dark/light, AA-contrast-verified per accent (`accentOnFill` = ink vs white). Legacy `Premium*` color names rewritten to `LocalTokens.current` reads; live theme switch via `AppearanceDialog` (gear icon in Library TopAppBar). Glass theme CSS + demo in `design/`.
- **Decentralized Phase A** (`5ff5318`): Nostr core (NIP-01/04/19, schnorr via secp256k1-kmp 0.17.3 — note: 0.24 needs Kotlin 2.3, app is on 2.0; 5 spec-vector unit tests), NostrService multi-relay, AndroidKeyStore identity, PaymentService + NWC (NIP-47) provider, NIP-57 zap flow, TipSheet on mini-player.
- Library dedupe: save-refuses-dup + auto DedupeLibrary on open (89→54 songs cleaned; backup `~/satsamp-backup-20260908`).
- Latest commit `1b7c6fe`; folder-tab long-press delete verified on-device (`a99d4c4`).
## Next / open
- **2026-09-28 motion pass:** WaveGraphic path caching kept (`bd4f6bb` — was rebuilding ~3k lineTo per draw frame); deferred pager neighbor mount reverted (no measurable effect, 11.3%→12.2% = noise). Residual: single ~200ms frame at pager settle = heavy page composition. User bar: "smoothness of an iPhone" — motion work continues. Launcher icon replaced from `Satsamp Icon.png` (all 5 mipmap densities + _round, plain PNGs; rounded-corner request pending), dark-mode fix via LocalContentColor in Theme.kt, verified on-device via wireless adb + gfxinfo A/B.
- User picks default accent; optional accent on more widgets (player FAB already follows).
- Status-file bug #7 still unverified.
- User connects a real NWC wallet (Alby Hub/Coinos) to live-test zap end-to-end.
- Deferred Phase B: Cashu + multi-mint, value-for-value w/ caps, artist earnings, Blossom, discovery tab, communities.
Related: [[Projects Index]] · [[User Preferences]]

View file

@ -0,0 +1,34 @@
---
type: project
id: PROD-5
area: Products
done_when: "Avi records and replays voice notes daily in the Android S.H.O.N.A.R. with no open blockers and calls it his keeper app."
status: open
updated: 2026-10-01
tags:
- hub
- products
---
# PROD-5 S.H.O.N.A.R. (Android)
## What this is
S.H.O.N.A.R. — the Android voice recorder app (local-only, no INTERNET permission; v0.1.56 on device). Companion to PROD-8 S.H.O.N.A.R. Desktop; separate projects, same name per owner.
## Tasks
_See `sources/` — pre-Orion notes preserved verbatim; promote live tasks here as they're worked._
## Open items
_None registered yet (migration)._
## Key files
- Code: `~/Projects/Shonar/`
- Sources (pre-Orion notes, preserved): `sources/`
## People
_None yet._

View file

@ -0,0 +1,36 @@
---
project: shonar
status: active
last-updated: 2026-09-18T03:35:00-05:00
hermes-owned: true
local-path: /home/avi/Projects/Shonar/
tech-stack: [Android (Kotlin/Compose), local-only]
---
# S.H.O.N.A.R.
Self-hosted voice-notes app. Renamed from "Sonar" 2026-09-08 at user request. Backend package `shonar`, env prefix `SHONAR_`.
## Architecture (current, 2026-09-14 pivot)
- **Local-only Android app is the product (2026-09-14):** `8c510f4` removed network entirely — no INTERNET permission; providers/sync/backend/desktop dropped from `main`. Prior desktop/server work preserved on branch `deferred/desktop-server` @ `7b34368` (never deleted, see [[User Preferences]]).
- **Follow-ups:** `d9f3d0b` StrictMode (debug) + off-main-thread IO (root resolver, file import, DateFormat), `a445105` optional local release signing (keystores gitignored; passwords via `~/.gradle/gradle.properties`), `d68aab5` always-stoppable playback + release build + storage-access prompt. Verified: `assembleDebug` + `testDebugUnitTest` BUILD SUCCESSFUL (offline).
- **Separate live desktop repo:** `~/Projects/Shonar Desktop` (branch `master`, engine `:8000` via `desktop-dev.sh`) still runs the desktop app; latest `c25d3ab` bundles whisper base model + standalone provisioning. Runtime state `~/.config/shonar-desktop/` (`settings.json` read at engine start; `engine.db`).
- **Desktop STATUS audited 2026-09-16 (`134742f`, tree clean):** all prior open items closed — job adoption (`ba54cb8`), upload-mapping sidecar reuse, the skipped test is intentional (`test_ai_adapters.py:55` skips when faster-whisper is installed). Whisper Large v3 provisioning verified end-to-end in an isolated HF cache (2.9 GB download ~2.5 min, loads 4.6 s CPU int8, transcribes). pytest 80 passed / 1 skipped; engine healthz ok; engine + app run via `desktop-dev.sh`.
- **Android:** M1–M8 done via `CustomShonarProvider` / `LocalOnlyProvider`; Home Assistant integration DEFERRED (preserved under `deferred/home-assistant/` + branch of same name, 2026-09-08 pivot).
- **Old desktop source:** lives only on `deferred/desktop-server` @ `7b34368` (removed from main `8c510f4`); the dead `~/Projects/Shonar/desktop` leftovers dir was deleted 2026-09-14.
- **Forgejo consolidated 2026-09-27:** repos folded into `avi/S.H.O.N.A.R.` (local origin repointed, `c35e693` live). See [[Forgejo git.atitlan.io]].
## Infrastructure
- Ollama = systemd user service (`~/.config/systemd/user/ollama.service`, models in `~/.local/share/ollama-home`).
- User recordings: `~/Music/Recordings`.
## Latest progress / next
- **Android (2026-09-17/18, HEAD `9c866c8`):** live theme/accent settings work (user confirmed colors on-device); Record FAB + `primaryContainer` follow `accent_color` (Material3 FABs paint primaryContainer, not primary); reset button hidden on non-editable settings. Release APK signed with local key (`keystores/shonar-release.jks`, passwords in `~/.gradle/gradle.properties`) — release vs debug signatures differ, switching requires uninstall (app data wiped; `/sdcard/Music/Recordings` files survive and re-index). v0.1.56 verified on Pixel 8 Pro.
- **Desktop (2026-09-18):** Summarize rescue fallback committed `3061629` (ollama `qwen3:4b` fallback provider active on the running engine; verified backend pytest + gradle tests green). No open work on the feature.
- **Auth trap (desktop engine):** engine rotates refresh tokens with reuse detection — an agent calling `/auth/refresh` with the token in `~/.config/shonar-desktop/auth.json` silently revokes the app's session. Never consume it; ask the user to re-login or run the curl themselves.
- Main repo history clean through local-only pivot.
- **Next (desktop, post-audit 2026-09-16):** optional stale-404 cleanup of `pump-error.log`; then pick new feature work.
- **Next (Android):** no open blockers; widget heads-up lag closed unresolved by user (see [[shonar-widget-heads-up-10s-lag]]); dead `shonar-15min-updates` cron deleted.
- **Roadmap TODOs (backend, deferred branch):** M9 (FTS endpoints, exports, deletion sweep), M10 (dark mode/a11y/docs), diarization, at-rest encryption, account purge sweep.
Related: [[Projects Index]] · [[User Preferences]] · [[System Architecture]]

View file

@ -0,0 +1,17 @@
---
last-updated: 2026-09-18T03:30:00-05:00
hermes-owned: true
tags: [shonar, android, notifications, pixel-8-pro]
---
# Shonar record widget: ~10 s notification lag on Pixel 8 Pro
**Symptom (2026-09-17):** tapping the Shonar record widget, the recording notification pill takes ~10 s to appear.
**Diagnosis:** recording itself starts in ~0.2 s. StackScroll logcat shows the SystemUI heads-up pill "appearing" ~10.2 s after the tap — the delay is Android SystemUI's heads-up presentation, not the app. Other apps show heads-up instantly, so it is Shonar-specific in how SystemUI treats the channel, but the app-side pipeline is instant.
**App-side fixes shipped (pushed `c942865`):** widget bitmaps (fixes Lawnchair gray-theming the widget), trampoline `taskAffinity` (widget tap was revealing the app), notification channel v3 HIGH + 60 ms tick.
**Status:** CLOSED UNRESOLVED by user decision 2026-09-18 ("you have not been successful... I am deciding to focus on other things"). Recording works instantly; only the pill presentation is delayed. If reopened: the remaining suspect is SystemUI channel/ongoing-notification handling on the Pixel launcher, not app code.
Related: [[Shonar]] · [[Troubleshooting Index]]

View file

@ -0,0 +1,35 @@
---
type: project
id: PROD-6
area: Products
done_when: "SolLunar Kitchen runs live at the stand during service with the staff board in use, and Avi considers the ordering flow done."
status: paused
paused_because: "Owner halted development (2026-10-01)."
updated: 2026-10-01
tags:
- hub
- products
---
# PROD-6 SolLunar Kitchen
## What this is
Ordering app for the kitchen stand: free pre-orders + live PREPARING→READY status, staff board.
## Tasks
_See `sources/` — pre-Orion notes preserved verbatim; promote live tasks here as they're worked._
## Open items
_None registered yet (migration)._
## Key files
- Code: `~/Projects/SolLunar Kitchen/`
- Sources (pre-Orion notes, preserved): `sources/`
## People
_None yet._

View file

@ -0,0 +1,19 @@
#00kitchen
To run the app
1. Go to the directory
```
cd ~/Projects/"SolLunar Kitchen"
```
2. Terminal 1
```
~/.local/bin/cloudflared tunnel --url http://localhost:8787 2>&1 | tee /tmp/tunnel.log
```
3. Terminal 2 Copy the it prints out and open it on your phone *Example
```
grep trycloudflare /tmp/tunnel.log
```

View file

@ -0,0 +1,159 @@
---
type: meeting-readout
source: "SolLunar Team Meeting 7-17-26.docx"
meeting-date: 2026-07-17
batch: 5/7
processed: 2026-09-05
---
# SolLunar Team Meeting — 2026-07-17 (Readout)
## 1. Decisions
| decision | who | date |
|---|---|---|
| **Fences down next door** (compliant with Daniel); **food truck moves to the new driveway** (all hookups there) | Poly | 2026-07-17 |
| **Second yellow house = data center**; get Fiber up; move all servers from Indra's + Delano there; **sell leftover data-center space to offset rent** ("It's paid for; we've got it") | Poly | 2026-07-17 |
| **Hakeem (Above Phone)** is staying in + officing at the second yellow house; Lab does **all the programming for his devices**; he wants to become a **partner in the Noderunner store** (inside Sapien corner once the bench moves); "deep, deep partnership developing" | Poly | 2026-07-17 |
| **Blaze + Collette at D-Web camp**: "everyone loves Archipelago"; Blaze met the **Forsyth Institute** (Berlin collective, 30 years, huge warehouse, fully funded) → they send their **main rep to meet us in 3 weeks** AND **want to buy Indra's** → "now we have two investors competing for it" | Poly / Blaze | 2026-07-17 |
| **Blaze → Prague** to meet **Daniel (landlord)** (also in Prague) to discuss the space | Poly / Blaze | 2026-07-17 |
| **Tonight: Hape ceremony** event (Angel: "Nothing to share at this time" re updates) | Poly | 2026-07-17 |
| **Trust meeting feedback is great** — members excited; **Ben** (tall guy who builds mansions) came back after a long time, "can feel we're on the cusp," "really proud" | Poly / Ben | 2026-07-17 |
| **Bootcamp at end of month**; 3 people interested in **paying** (not free) | Poly / Eliza | 2026-07-17 |
| **Xela brings 2 investors this week**: **Cade Vineyard + another**; "Xela loves the new plan" | Poly | 2026-07-17 |
| **Mary Mandell meeting on the 26th** — looking at giving her **Lakeway land** ("do whatever we want, build what we want") + giving us money for this location too | Poly | 2026-07-17 |
| **Vlatko still interested in Indra's + data center**; "as soon as he works out the data center deal, Indra's could go through"; "probably will happen, especially now that the Forsyth Institute is involved" | Poly | 2026-07-17 |
| **Part of this location's raise = back pay for staff**: ~**$50k for L484, $50k for Solarpunk**, rest for needs ("Sorry we haven't been able to pay everyone... that's going to change") | Poly | 2026-07-17 |
| **FF (Fast Friends) lease essentially done** — "pretty much everything lined up"; upstairs office; contracting meeting later today; **Matt Alvarez** (sound eng., Jenelle's ref) is the first priority; Dave keeps improving the deal (group fitness room, AC, +1000 sqft changing/shower rooms, digging to foundation) | Mackenze | 2026-07-17 |
| **New Braunfels**: FF second location **already permitted, site approved**; 1.5-acre adjacent custom-home land; **Lish** (20-30 yr marketing DB) + an 8th-gen New Braunfels Texan + Vanessa → **tiny-home village**; **opportunity zone + fund** being established; Lish's father (PE, mortgage/equipment financing) could finance the tiny-home villages → "build multiples of these showrooms without raising $500k" | Mackenze | 2026-07-17 |
| ⚠️ **"If Arlene pitched you, she's shady, don't go down that route"** | Mackenze | 2026-07-17 |
| **Nelson (next-door)** is "super on board" — took down the fence the day after asked; **demolishing the (bad) house** (already getting quotes); **raise capital for shipping containers** (talk to the guy soon); containers come from the stacks/pot-dispensary guy's maker shop (steel frame, ADU, warehouse, hempcrete) | Poly / Mackenze | 2026-07-17 |
| **Yellow-house plan**: the torn-down house's **L-shaped concrete slab = tiny homes + central courtyard**; one investor's priority = **Xela's permanent yoga space** (shipping containers, bottom floor) | Poly | 2026-07-17 |
| **Indra's: move out everything regardless of buying** — if we buy, take everything out + plug holes + proper electric; if not, Randi won't want us; start moving our stuff to the stage area in small batches over 2 weeks; **empty the front Alice-in-Wonderland space** (staging area); when Noderunners opens, inventory comes here | Poly | 2026-07-17 |
| **Jen rented a large storage space** (empty except a commercial stove Ricky donated) — use it | Mackenze | 2026-07-17 |
| **Jen's best friend (Florida)** is moving here with **5 health & healing businesses** — supplements, plant medicine, "wants to do something with us here"; bringing a ton of equipment | Mackenze / Jen | 2026-07-17 |
| **Crowdfund site ready** — one campaign for every thing we do; "let the free market determine what we put our energy into"; **Arctec campaign already up + first goal met** (angor.io, first thing on the page) | Poly | 2026-07-17 |
| **No more stealth**: "Grok knows who we are, explains what Lab484 is and who I am... mainstream now"; podcast growing; Mary Mandell watched it with friends | Poly | 2026-07-17 |
| **Divine Provisions (food co-op) is moving fast** — leave the front of Sapien empty for it; move the bench ourselves (bench moving soon); the guy wants to pick up the bench + wood thing + Sapien Center sign | Poly / Mackenze | 2026-07-17 |
| **Draw a line with Brian**: his "mountain of stuff" must go (what he does with it isn't our concern); maybe help with his meat (Radius makes dog food); move his meat to the big freezer → chest freezers out; **pull the 15yo lab freezers** (on their last legs) → +1000 sqft usable; no food prep in the space ("huge risk") | Mackenze / Poly | 2026-07-17 |
| **Jay's bus → driveway at the yellow house** (tables + chairs) = the kitchen | Poly | 2026-07-17 |
| **Outdoor shower: remove it** — metal torn/jagged/dangerous, covered in mold + bacteria, no drainage, no hot water heater; $1000 repair still fails health-dept permit (needs drain system); upstairs shower exists | Mackenze / Janelle / Poly | 2026-07-17 |
| **Housing**: Tom (Delano) → private room to living room/garage so **Hakeem gets the bedroom** (a week or two); **leaving Delano in a month**; Jennifer looking at houses; "people who are willing to rent houses for us"; house list to group chat, people pick where they live | Poly | 2026-07-17 |
| **Rebuilding someone's website** (name garbled in source) — yes, we're doing it | Poly / Gabriel | 2026-07-17 |
| **Deep clean day next week** — inventory what's ours vs Brian's, "owe that to Angel"; "in the next week, we should have the lease figured out and signed, can set the line with Brian. He'll take it well from Angel." | Kyle / Poly | 2026-07-17 |
**Cross-check vs 06-DECISIONS:**
- Continues 7-10 (Angel on board; data center in second yellow house; FF lease; New Braunfels; Hakeem partnership; Indra's move-out prep; Arctec crowdfund; brand).
- **New**: Forsyth Institute (Berlin) as a competing investor for Indra's + 3-week rep visit — a major external signal not in 7-10.
- Consistent with 7-10 (Haven, Mary Mandell Lakeway land now has a meeting date — the 26th).
- "SoLunar" branding is now the meeting header (brand landing, per 7-10 naming thread).
- Back-pay ($50k L484 + $50k Solarpunk) is new financial context tied to the raise.
## 2. Action Items
| owner | task | due date | project | status |
|---|---|---|---|---|
| Poly | Move food truck to the new driveway (hookups ready) | 2026-07-17 | Sapien / Food truck | scheduled |
| Poly | Get Fiber up at second yellow house; move servers (Indra's + Delano) to new data center; sell leftover DC space | 2 weeks | Sapien / Data center | in progress |
| Hakeem | Do all programming for his devices (Lab side); partner in Noderunner store once bench moves | ongoing | Sapien / Noderunner / Above Phone | in progress |
| Blaze | Meet Daniel in Prague (space details) | this week | Sapien / Lease | scheduled |
| Poly | Meet Forsyth Institute main rep | ~3 weeks | L484 / Investment | scheduled |
| Poly | Meet Mary Mandell (Lakeway land + money) | 2026-07-26 | L484 / Investment | scheduled |
| Poly | Xela's 2 investors (Cade Vineyard + 1) — meet this week | this week | L484 / Investment | scheduled |
| Poly | Bootcamp at end of month (3 paying) | end of July | L484 / Bootcamps | scheduled |
| Mackenze | FF: contracting meeting (upstairs office) | 2026-07-17 | Fast Friends | scheduled |
| Mackenze | FF: sound (Matt Alvarez) upstairs + downstairs | 2026-07-17 (start) | Fast Friends | in progress |
| Mackenze | New Braunfels: tiny-home village (Lish + 8th-gen Texan + Vanessa); opportunity zone + fund; Lish's father financing | NO DATE | Fast Friends / New Braunfels | in progress |
| Poly | Nelson: demo timing + capital for shipping containers (talk to the maker-shop guy) | soon | Sapien / Yellow house | open |
| Poly | Xela's permanent yoga space (containers, bottom floor) | NO DATE | Sapien / Yellow house | open |
| team | Move Indra's stuff → stage area + empty Alice-in-Wonderland front (staging) in small batches | 2 weeks | Sapien / Move | open |
| team | Use Jen's storage space (stove donated by Ricky) | NO DATE | Sapien / Storage | open |
| Poly | Crowdfund: put up all projects on angor.io (Arctec live, first goal met) | ongoing | L484 / Crowdfund | in progress |
| Mackenze / Poly | Brian's stuff: move meat to big freezer; pull 15yo freezers; set the line (he takes it all) | next week (post-lease) | Sapien / Brian | open |
| Poly | Jay's bus → yellow-house driveway kitchen (tables + chairs) | NO DATE | Sapien / Bus | open |
| team | Remove outdoor shower (or $1000 repair — not permitted anyway) | NO DATE | Sapien / Safety | open |
| Poly | Housing: share house list in group chat (leaving Delano in a month) | NO DATE | Housing | in progress |
| team | Rebuild (???) website | NO DATE | Client work | in progress |
| Kyle | Pick a **deep clean day** next week + inventory ours vs Brian's | next week | Sapien / Clean | open |
| UNASSIGNED | "Anyone without something to do can start on that" (freezer/move) | now | Sapien | open |
## 3. Project Links
- **Sapien / SoLunar** (existing) → data center, food truck, Noderunner, Divine Provisions, Brian cleanup, shower removal
- **Yellow houses** (existing) → #2 = office + data center + Hakeem; #1 (bad) = demo → tiny homes + courtyard + yoga containers
- **Fast Friends** (existing) → lease done, sound, New Braunfels #2
- **New Braunfels** (new candidate) → permitted FF #2 + opportunity zone + tiny-home village
- **Forsyth Institute** (new external) → Berlin 30-yr collective; competing investor for Indra's; rep in 3 weeks
- **Indra's** → buy-vs-move (Forsyth + Vlatko competing); full move-out either way
- **Haven / Mary Mandell Lakeway** (candidates) → 26th meeting
- **Angor.io crowdfund** → Arctec live
- **Noderunner store / Above Phone (Hakeem)** → deep hardware partnership
- Keynctr ([[keynctr 1]]) — not mentioned
## 4. Knowledge
- **Hakeem (Above Phone)**: helping get the second yellow house; staying + officing there; wants Lab to program his devices; wants Noderunner store partnership; "he'll be here in an hour and then probably never leave."
- **Forsyth Institute**: Berlin collective doing "what we've been doing but for 30 years"; huge warehouse with a bottom level; "spaceship crashed there" story; reverse-engineering the tech; fully funded; sending main rep in 3 weeks; wants to buy Indra's; locations in Berlin/Germany working well.
- **Ben** (Trust, "tall guy who builds mansions"): "can feel we're on the cusp... felt it in Dallas and had to come down."
- **Mary Mandell**: Lakeway land; "do whatever we want, build what we want"; also giving money for this location; watched the podcast with friends.
- **Back pay**: ~$50k L484 + $50k Solarpunk is part of the raise (staff helped pay rent).
- **FF (Dave)**: keeps improving the lease — group fitness room, AC, +1000 sqft changing/shower, dig to foundation.
- **New Braunfels**: FF #2 permitted + site approved; 1.5-acre adjacent custom-home land; opportunity zone + fund; **Lish** = 20-30 yr marketing DB (jumped in around Resilience Design Center); her father = PE mortgage/equipment financing.
- **Arlene = shady** (Mackenze's warning) — don't go down that route.
- **Nelson**: took down fence the next day; getting demo quotes.
- **Containers**: from the stacks/pot-dispensary guy's maker shop — steel frame, ADU, warehouse, hempcrete.
- **Yellow-house slab**: L-shaped concrete, perfect for tiny homes + central courtyard.
- **Indra's**: whether or not we buy, everything moves out; front Alice-in-Wonderland space = staging; servers to new DC.
- **Jen's storage**: large space, empty except a commercial stove (Ricky donated).
- **Jen's Florida friend**: 5 health/healing businesses (supplements, plant medicine), bringing equipment, "wants to do something with us."
- **Mainstream**: "Grok knows who we are" — no longer stealth; podcast growing.
- **Divine Provisions**: food co-op moving fast; front of Sapien reserved for it; the guy is taking the bench + Sapien Center sign.
- **Brian's stuff**: meat → big freezer; pull 15yo lab freezers (+1000 sqft); food prep = huge risk; "what he does with it isn't our concern."
- **Bus → yellow-house driveway kitchen**.
- **Outdoor shower**: torn metal, mold/bacteria, no drain, no hot water; can't be permitted without a drain; remove it.
- **Housing**: leaving Delano in a month; Tom to living room; Hakeem gets the bedroom; Jennifer scouting houses; list to group chat.
- **Hakeem move-in**: a week here, a week in Houston, until he moves over for real; larger chunk in August.
- **Hakeem's value (Eliza)**: "already figured out all the open-source back-end stuff" — customer service, fulfillment, scalability.
## 5. Troubleshooting
- **Daniel/lease uncertainty** — fix: Blaze meets Daniel in Prague; "in the next week, we should have the lease figured out and signed."
- **Indra's buy-vs-move ambiguity** — fix: move everything out regardless; Forsyth + Vlatko competing (leverage up).
- **Brian's mountain of stuff** — fix: deep clean day + meat to big freezer + pull freezers + set the line post-lease.
- **Outdoor shower is a health/safety liability** — fix: remove it (permit can't be met).
- **Food prep risk in the main space** — fix: pull freezers, no food prep; bus becomes the kitchen.
- **Noderunner "walk-in and see what we have today" problem** — fix: Hakeem's open-source back-end (CS, fulfillment, scalability).
- **Housing at Delano is stale** — fix: 3-house move in a month; house list to group chat.
## 6. Open Questions
- Will Forsyth Institute's rep visit (3 weeks) lead to an Indra's purchase?
- Will the 26th Mary Mandell meeting produce a land deal + capital?
- Will the lease be signed within the week (Blaze/Daniel Prague)?
- Who exactly is the "website rebuild" client (garbled)?
- What's the deep-clean day (next week — date TBD)?
- Will Xela's 2 investors (Cade Vineyard + 1) close this week?
- How much is the FF lease finalizing to (8-13% + 7% split confirmed)?
- What does "the guy" (maker shop) want for the containers?
## 7. Gaps
- **Indra's decision (buy vs not)**: no decision — only "move out either way."
- **Deep clean day**: not scheduled (next week, date TBD).
- **New Braunfels village**: "not sure how it's all coming together" — no owner, no date, no financing terms.
- **Lish's father financing**: no terms, no commitment.
- **Hakeem's device programming**: no spec, no schedule ("deep partnership" is the only detail).
- **Brian's stuff line**: gated on the lease ("next week").
- **Website rebuild client**: name lost in transcription.
- **Outdoor shower removal**: no owner, no date.
## 8. My Follow-Ups (Avi)
1. **No direct assignment.** Avi not named in this meeting.
2. **Data center migration** (servers from Indra's + Delano → second yellow house; "get Fiber up"; sell leftover space) — the most concrete engineering task in the meeting; if Avi is available, this is the natural Keynctr-adjacent surface. [INFERRED — offer, not assigned]
3. **Hakeem's open-source back-end** (CS, fulfillment, scalability) — a systems/integration surface; no owner named.
4. Adjacent: the **Angor.io crowdfund** (all projects to be listed) is a marketing/ops task; no explicit Avi ask.
## Email Summary
7-17 (first meeting under the SoLunar header) was a momentum report: the fences are down and the food truck is moving to the new driveway; the second yellow house is locked as the data center (Fiber + servers from Indra's and Delano, with leftover space sold to offset rent) and doubles as Hakeem's (Above Phone) office in a "deep, deep" hardware partnership that includes Noderunner-store equity. Blaze met the Berlin-based Forsyth Institute at D-Web camp — a 30-year, fully funded collective now sending its main rep over in three weeks and competing with Vlatko to buy Indra's, while also heading to Prague to talk space directly with Daniel the landlord. The Trust is excited (Ben: "we're on the cusp"), a paid bootcamp runs at month-end, Xela brings two investors (Cade Vineyard + one) this week, and Mary Mandell's Lakeway land meeting is set for the 26th. The raise now includes ~$50k each of back pay to L484 and Solarpunk staff. Fast Friends is essentially leased and upgrading (fitness room, +1000 sqft, sound via Matt Alvarez), and New Braunfels is the permitted second FF site with an opportunity zone, a tiny-home village, and potential PE financing from Lish's father. Operationally: everything leaves Indra's in the next two weeks, Brian's mountain gets a hard line after the lease, the 15-year-old freezers come out (+1000 sqft), the unsafe outdoor shower is removed, Jay's bus becomes the driveway kitchen, the Arctec crowdfund has already hit its first goal on angor.io, and the team is moving out of Delano into three better houses next month — plus a deep-clean day to set the line and give Angel a fresh start.

View file

@ -0,0 +1,96 @@
---
type: meeting-readout
source: "SolLunar Team Meeting 7-20-26.docx"
meeting-date: 2026-07-20
batch: 5/7
processed: 2026-09-05
note: "Source file is named 'SolLunar' but the in-doc header reads 'SAPIEN TEAM MEETING 7-20-26' — same team, mid-rebrand"
---
# Sapien/SoLunar Team Meeting — 2026-07-20 (Readout)
Short, ops-heavy check-in (22 lines in source).
## 1. Decisions
| decision | who | date |
|---|---|---|
| **Moving out of Indra's by the 26th** — Randi wants to rent it to someone moving in on the 1st; **"$1.5m would be better spent elsewhere"** (buying Indra's is effectively off) | Poly | 2026-07-20 |
| **Vlatko is still doing a data center** (deal continues) | Poly | 2026-07-20 |
| **Angel Robinson fully on board** with the Sapien location; "rolling right along" | Poly | 2026-07-20 |
| **Lease status**: still no Sapien lease, but **leases held for both yellow houses**; Sapien secured for this month by paying rent | Poly | 2026-07-20 |
| **Grass decision pending**: real vs fake (fake "supposedly non-toxic"); Poly wants real grass but **serious ant problem**; Jen: real grass = maintenance problem; alternatives floated: **clover (cheap, non-toxic, nitrogen-rich) / thyme (smells amazing)**; Angel will handle grass maintenance | Poly / Jen / Eliza | 2026-07-20 |
| **Front corner**: someone comes by at **noon for a quote** (work Angel already committed to) | Jay | 2026-07-20 |
| **Second yellow house = offices + data center** ("which is what we need"); Hakeem only sleeps in the guest bedroom + office space there | Poly | 2026-07-20 |
| **Hakeem move-in plan**: a week here / a week in Houston until he moves over for real; "maybe a larger chunk of time in August" | Poly / Eliza | 2026-07-20 |
| **Indra's move-out**: Poly gathers known-ours items to the middle of the room → where-does-it-go piles; takes Tom, Jay, Gabriel; move all couches | Poly | 2026-07-20 |
| **Jen's podcast studio (at her house)**: collect anything that should go with it | Jen | 2026-07-20 |
**Cross-check vs 06-DECISIONS:**
- **Decisive on Indra's**: 7-10/7-17 left buy-vs-move open (Forsyth + Vlatko competing); 7-20 closes it — **not buying** ("$1.5m better spent elsewhere"), move out by the 26th. Forsyth's interest is effectively moot.
- Consistent with 7-10 (Angel on board; data center in yellow house; Hakeem; 30-day rent hold on Sapien).
- Grass (clover/thyme) is a new micro-decision thread; no final call.
## 2. Action Items
| owner | task | due date | project | status |
|---|---|---|---|---|
| Poly (+ Tom, Jay, Gabriel) | Move out of Indra's — gather, pile, move couches | **2026-07-26** | Sapien / Move | scheduled |
| team | Quote for front corner (Angel's commitment) — person arrives at noon | 2026-07-20 | Sapien / Landscaping | scheduled |
| team | Decide real vs fake vs clover/thyme grass (ant problem; maintenance) | NO DATE | Sapien / Landscaping | open |
| Angel | Grass maintenance | ongoing | Sapien / Landscaping | assigned |
| Poly | Hakeem move-in logistics (week here / week Houston; August chunk) | August | Sapien / Yellow house | planned |
| Jen | Collect items for the podcast studio (her house) | NO DATE | Sapien / Media | open |
| team | Hakeem: let Jay know he can be back (Delano) | 2026-07-20 | Housing | open |
| Poly | Investors: upcoming call with **Gabe the Poker player**; **Ryan Sellers** stopping by; **Source Node**; + one other | this week | L484 / Investment | scheduled |
## 3. Project Links
- **Sapien / SoLunar** (existing) → move-out, grass, front corner, investor calls
- **Indra's** → exit by the 26th (Randi renting to new tenant on the 1st)
- **Yellow houses** (existing) → #2 = office + data center (Hakeem guest room); both leased
- **Fast Friends / New Braunfels** — not mentioned this meeting
- Keynctr ([[keynctr 1]]) — not mentioned
## 4. Knowledge
- **Randi (Indra's)** is renting it out to a new tenant moving in on the 1st — the Indra's chapter is closing.
- **Ant problem** in the back yard is serious (a factor in the grass decision).
- **Clover**: cheap, non-toxic, nitrogen-rich; **thyme**: smells amazing — the low-maintenance candidates.
- **Fake grass**: "supposedly non-toxic" (unverified).
- **Hakeem**: "already figured out all the open-source back-end stuff" (customer service, fulfillment, scalability) — Eliza excited.
- **Housing**: Hakeem at Delano only one night; "we're leaving there in a month" (per 7-17).
- **Investor pipeline this week**: Gabe (poker player), Ryan Sellers, Source Node, + one other.
- Sapien is month-to-month secured by rent payment until the lease lands.
## 5. Troubleshooting
- **Indra's exit compressed** (Randi's new tenant on the 1st) — fix: full move by the 26th; pile-and-sort method; couches out.
- **Back-yard ants + grass maintenance** — fix: leaning toward clover/thyme (non-toxic, nitrogen-rich, low maintenance); fake grass "supposedly non-toxic."
- **Sapien lease still unsigned** — fix: rent hold; (per 7-10/7-17) Blaze/Daniel Prague meeting pending outcome.
## 6. Open Questions
- Real, fake, clover, or thyme grass? (no final call)
- What did the noon front-corner quote come back at?
- Will the Sapien lease be signed after the Blaze/Daniel Prague meeting?
- Do the 4 investor calls this week (Gabe, Ryan Sellers, Source Node, +1) convert?
- Is Vlatko's data center deal still on track after the Indra's exit?
## 7. Gaps
- **No owner for the grass decision** (team-level, unresolved).
- **Front-corner quote**: result not captured.
- **Investor call outcomes**: not captured.
- **Sapien lease**: still no terms, no date — the persistent gap across 7-10 → 7-17 → 7-20.
- **Podcast studio items**: no list, no owner.
## 8. My Follow-Ups (Avi)
1. **No direct assignment.** Avi not named.
2. **Indra's move-out by the 26th** — if Avi is on the move team, the server/data-center items are the fragile cargo (see 7-24 for the actual move logistics and Ali's server-shelf work).
3. **Data center power at the yellow house** (7-10: "not enough power for shelves yet") — the move makes this urgent; adjacent to Keynctr-type work. [INFERRED]
## Email Summary
7-20 was a short ops check-in that closed the Indra's chapter: Randi is renting it to a new tenant on the 1st, so the team is moving out by the 26th (the $1.5m "better spent elsewhere"), with the second yellow house confirmed as offices + data center and Hakeem settling in (guest bedroom + office, a week here / a week in Houston until August). Both yellow-house leases are signed; Sapien itself is still month-to-month on rent, with the Sapien lease the one outstanding item. Back-yard grass is up for decision (real vs non-toxic fake vs cheap nitrogen-rich clover or fragrant thyme) against a serious ant problem, a quote for the front corner Angel committed to was coming in at noon, and the investor pipeline is active this week (Gabe the poker player, Ryan Sellers, Source Node, plus one more).

View file

@ -0,0 +1,142 @@
---
type: meeting-readout
source: "SolLunar Team Meeting 7-27-26.docx"
meeting-date: 2026-07-27
batch: 6/7
processed: 2026-09-05
---
# SolLunar Team Meeting — 2026-07-27 (Readout)
Move-out verified; **Pat (accounting) on-site for 2 weeks** driving the NFC membership-card mission.
## 1. Decisions
| decision | who | date |
|---|---|---|
| **SolLunar Society launch push**: "got traction on the lease yesterday"; Angel + Blaze + Poly working the lease; yellow houses **successfully merged together** ("looks great") | Poly | 2026-07-27 |
| **NFC membership-card mission: working prototype by October** — all back-end software exists; need to bridge to NFC card programming; "everybody gets a card" and battle-tests | Pat / Poly | 2026-07-27 |
| **Card product model**: anyone can brand cards however they want, but **interoperable with our system**; private membership clubs buy cards from us; **first partner = Solarpunk** (running by October); later supply to other locations, festivals, events | Poly | 2026-07-27 |
| **Door access design**: front door public; **internal vestibule door = tap-to-unlock (membership)**; same door size (swappable); +2 more doors need locks; prototype uses existing locks + added NFC readers ("work but not break the bank"); **make our own chips later** (reverse-engineer now) | Pat | 2026-07-27 |
| **ATM + vending = part of the card system** (cash in → tap to pay; "like Bitcoin Poker night"); conversation with Nick next week | Pat / Poly | 2026-07-27 |
| **Bathroom door tap = $1.25** (funds TP + supplies) — floated | Poly | 2026-07-27 |
| **Card uses expand**: hookah ordering, food-truck payments; "simulating a festival space in Sapien"; "one day when we buy the mall, they will work there" | Poly | 2026-07-27 |
| **Accounting**: start accounting processes when investment comes in; "the system will keep track"; **forensic accounting for Lab484 possible** (post-date the agreements); **secure contracts with Bitcoin shares can be built on NOSTR — "Bit Escrow" already exists** | Pat / Poly | 2026-07-27 |
| **Accounting walk-through event**: staff meeting **Friday 11:00, stage at 11:30**; everyone gets an account, taps along; feedback loop to be designed | Pat / Poly | 2026-07-27 |
| **Noderunner shop**: bench moves into the shop; **grocery store (Divine Provisions) = front space** (learn membership + check out the shop); owners = **Poly, Hakeem, Eliza, Asif, 25% each; Poly's portion → the Trust** (he "doesn't exist"); Telegram today; sells Above phones, laptops, servers, wifi, accessories | Poly | 2026-07-27 |
| **AI server resale**: paid **$56k (Ali's quote)**; sell at **$60k min**; if **6 people pay $10k** → shared individual lab server | Poly / Ali | 2026-07-27 |
| **Yellow-house #2 (lab house)**: stylized like the lab with Angel's guidance; the other house = mixed use / mainly lab storage; front area → grocery store (Radius partnership); wooden-bench spot → shop shelves; **Hakeem working the shop this weekend**; Above Shop at Fast Friends (not confirmed) | Poly | 2026-07-27 |
| **Above Shop vs Noderunner split**: Noderunner features **Above Phone**; Above Shop features **Archipelago** — "best of both worlds"; Hakeem excited | Poly | 2026-07-27 |
| **Tiny-home manufacturers (Houston trip: Mackenze, Tom, Jen)**: **ÖÖD House** (Swedish, mirror-clad, premium) + a custom builder (metal frames on-site, **30-45 days done & installed**, any size/shape, stack or line up); **a manufacturer gave us an acre in Jonestown for a tiny-home showroom** (4-6 structures: AWG, composting toilets, GeoGRO, off-grid everything); "if we can find someone to finance us and a spot of land (Poly: Vince), we can have housing for the team forever" | Jen | 2026-07-27 |
| **Yellow-house #1 rebuild**: when the bad house comes down → **U-shaped 3-story container stack, courtyard in the middle** — showroom + office + retail + housing; "show them operating businesses out of these containers" | Poly | 2026-07-27 |
| **Haven**: Joe at Haven interested in our **tiny-home tech**; "maybe building a village Lab outpost out there at Haven" | Poly | 2026-07-27 |
| **Angel**: lease terms "sorted it out, feels good for me to be here"; **member agreement → sell Founding Members' Circle, target $60k** ("easy and realistic"); Solarpunk launch here; her team integrates + supports the build | Angel | 2026-07-27 |
| **Investor pitch**: Pat will present the hardware + infrastructure build numbers (Ali's electric-upgrade quotes, etc.) in a presentable form within a day or two | Pat / Poly | 2026-07-27 |
| **Saturday small tech event**: promote us; Hakeem invites his network; programming + sell phones/laptops/memberships ("will it make money?" — "yes, it will promote us") | Poly | 2026-07-27 |
| **Servers back up by end of day, else tomorrow** (Allen) — gating the card hardware testing | Allen | 2026-07-27 |
**Cross-check vs 06-DECISIONS:**
- Confirms 7-20: out of Indra's (now "clean, fixed everything that needed to be fixed"); lease traction (7-20 said still unsigned — this is progress).
- Continues 7-17: Hakeem partnership (now with shop equity split + affiliate terms), yellow house #2 = lab/data center, Arctec/crowdfund → now "Angor/Agora crowdfund" mention for the launch.
- **New**: NFC card mission (October deadline) is a concrete engineering program with a named lead (Pat) — the first hard spec for the card system (7-17 only had the concept).
- **New**: AI server resale ($60k / 6×$10k).
- Sand battery question answered: **needs ≥2.5 MW power + 10 acres of solar** → "we'll just have to run it on solar."
## 2. Action Items
| owner | task | due date | project | status |
|---|---|---|---|---|
| Angel + Blaze + Poly | Close the Sapien lease (traction started yesterday) | ASAP | Sapien / Lease | in progress |
| team | Rest of the week: meet investors, rearrange space, put things away, optimize | 2026-07-27 (week) | SolLunar | scheduled |
| Hakeem | Arrives this weekend; work the shop | 2026-07-25/26 (wknd) | Noderunner shop | scheduled |
| team | Saturday tech event (programming + sales) | 2026-07-25 (Sat) | SolLunar / Events | scheduled |
| Pat | Budget proposal for card system (today); what's blocked pending investment | 2026-07-27 | SolLunar / Cards | in progress |
| Pat | Get working NFC prototype by October; test hardware; fix bugs | **2026-10** | SolLunar / Cards | open |
| team | Everyone gets a card + tests it (battle test) | after servers up | SolLunar / Cards | queued |
| Allen | Servers back up | EOD 2026-07-27 / else 7-28 | Sapien / Servers | in progress |
| team | Door setup: tap reader on internal door (+2 more locks); measure done | prototype phase | SolLunar / Cards | open |
| Poly + Nick | ATM + vending card conversation | next week | SolLunar / Cards | scheduled |
| Allen | Look into dependable network (Ubiquity "bad packet service"; WRT?); Poly OK with Ubiquity for now | NO DATE | Sapien / Network | open |
| Pat | Investor pitch numbers (hardware + infra build costs) | +1-2 days | SolLunar / Investment | in progress |
| team | Staff accounting walk-through | **Friday 11:00 (stage 11:30)** | SolLunar / Accounting | scheduled |
| Poly | Noderunner shop Telegram (today); move bench into shop; grocery store front (Radius) | today→ | Noderunner shop | in progress |
| Poly / Hakeem / Eliza / Asif | Run the shop (25% each; Poly's share → Trust) | ongoing | Noderunner shop | assigned |
| team | AI server: price at $60k; seek 6 × $10k buyers | NO DATE | Sapien / Sales | open |
| team | Decide yellow-house design (lab house stylized with Angel's guidance) | NO DATE | Yellow houses | open |
| Mackenze / Tom / Jen | Houston: ÖÖD House + custom builder follow-ups; **Jonestown acre showroom** (4-6 structures); find financier + land (Vince?) | NO DATE | Tiny homes | open |
| UNASSIGNED | Sand battery smaller scale? — answered: ≥2.5 MW + 10 acres solar → solar only | n/a | Tiny homes | closed (solar) |
| Angel | Member agreement + Founding Circle sales ($60k target); fix up space; bring investors out | pre-launch | SolLunar | in progress |
## 3. Project Links
- **SolLunar / SoLunar Society** (existing) → lease, cards, launch, Founding Circle
- **Noderunner shop / Above Shop** (existing) → split: Above Phone vs Archipelago; shop Telegram; FF expansion
- **Divine Provisions** (existing) → grocery store = front space (Radius partnership)
- **Yellow houses** (existing) → #2 = lab house + data center + shop; #1 → U-shaped 3-story container stack + courtyard
- **Arctec / Angor.io** (existing) → crowdfund for launch
- **Haven** (existing) → tiny-home village outpost candidate
- **Jonestown showroom** (new candidate) → 1 acre gifted by custom-builder rep; 4-6 structures
- **Above Phone (Hakeem)** (new candidate) → device programming revenue ($30-50/phone implied later)
- Keynctr ([[keynctr 1]]) — not mentioned; **Avi present (2 lines)**
## 4. Knowledge
- **Pat** = accounting lead, **on-site ~2 weeks**, then heads to France ("I get to use it all in France, so it's a win-win"); needs defined communication channels to keep the ball rolling after departure.
- **250 NFC cards already exist**; the door is "just to make the space ready for SolLunar Society."
- **Card UX**: enter vestibule → public opens front door; internal door = tap (maybe + PIN) → unlock; get a card → programmed → membership card for anywhere; ATM fills balance (cash in); tap to pay.
- **Network**: Ubiquity has "a bad packet service that passes them back to Ubiquity"; Poly: OK until something better; Allen to look into WRT.
- **AI server**: $56k cost (Ali's number) → $60k price; 6 × $10k = shared lab server for individuals.
- **Above Phone economics**: "$800 for a device that's $200 to us"; Graphene+, some security pre-config; "he's doing it the right way; tip of the hat to his optimization."
- **Hakeem** has been on **3 episodes of "Grand Theft World"** (Avi's line) — [LOW CONFIDENCE: exact show name garbled].
- **Tiny homes**: ÖÖD House = Swedish mirror-clad premium; custom builder = 30-45 days installed, any size/shape, cheap; Jonestown acre = showroom land (4-6 structures: AWG, composting toilets, GeoGRO).
- **Sand battery minimum**: 2.5 MW + 10 acres solar.
- **NOSTR "Bit Escrow"** exists → Bitcoin-share contracts buildable.
- **IOU accounting**: "Most debt we've taken on has been in the form of an IOU. **Like Avi has a lot of transactions.**" — Lab484 historical debt = IOUs; forensic accounting + post-dating is the plan.
- **Forensic accounting** for the Lab is on the table ("we can make agreements all day of the amounts that are owed").
- **Angel**: lease terms feel good; Founding Circle $60k "easy and realistic"; Solarpunk team integrates.
- **Haven**: Joe interested in tiny-home tech; possible Lab village outpost.
- **Fridays 11:00** = accounting staff walk-through (stage 11:30).
- **Zaza's membership software** not yet discussed here (comes up 8-10).
- **Accounting logins**: Blaze was setting it up weeks ago; some people have access; server was down.
## 5. Troubleshooting
- **Servers down (again)** — fix: Allen, EOD or tomorrow; gates all card hardware testing.
- **Card system can't wait on locks** (also raised 8-10) — fix: prototype uses existing locks + add readers; "work but not break the bank."
- **Pat's departure (2 weeks → France)** — fix: budget proposal today; define communication channels + handoff so it keeps rolling.
- **Network unreliability** — fix: interim Ubiquity; Allen to investigate (WRT).
- **Accounting is "hard to go backwards"** — fix: start processes now as investment lands; NOSTR Bit Escrow for equity; forensic Lab accounting; post-date IOUs.
- **Feedback loop missing** (tools built, no user feedback) — fix: the 11:30 walk-through event = everyone taps along; capture demand → fixes.
- **Payment processor missing** — fix: comes up 8-10 (Square + autopay).
## 6. Open Questions
- Who exactly are the card-system investors and what do they want from their investment? (Pat's open question for Poly)
- Will the lease actually sign (traction "yesterday")?
- What does the investor pitch look like (PowerPoint? slide show?) — Angel unsure; Pat owns the numbers.
- Who finances the Jonestown showroom ("Vince"?)?
- Will the AI server find 6 × $10k buyers?
- Is Above Shop at Fast Friends confirmed?
- What's the plan for Pat's post-France communication channel?
- Who is "Nick" (ATM/vending) and when is that conversation?
## 7. Gaps
- **October card prototype**: no milestone breakdown, no owner per component (door locks, chip reverse-engineering, ATM integration).
- **Card investor identity**: explicitly unknown in the room.
- **Jonestown showroom**: no financier, no schedule, no financing terms.
- **AI server buyers**: no named prospects.
- **Yellow-house design**: "not yet" — no owner, no date.
- **Accounting logins**: no confirmation everyone has them.
- **Sand battery**: closed with a requirement, no decision on pursuing.
## 8. My Follow-Ups (Avi)
1. **Avi's IOUs are in the accounting record**: Poly told Pat "most debt we've taken on has been in the form of an IOU — like Avi has a lot of transactions." Expect Kyle's accounting session (8-14 confirms this program) — **bring all receipts/transaction history before the session**. This is the one item where Avi is directly on the books.
2. **NFC card mission (October)**: the bridge from back-end to NFC programming is the stated gap ("we have all the back-end software; we just need to bridge the gap to program NFC cards"). If Avi's programming work (praised at 8-14) is relevant, this is the natural surface — but **no assignment to Avi in this meeting** [INFERRED offer].
3. **AI server resale ($60k, 6×$10k)**: Ali gave the cost; no sales owner named.
4. Adjacent: server uptime (Allen) is gating card testing — hardware ops, not explicitly Avi's.
## Email Summary
7-27 opened with the Indra's exit confirmed (clean, everything fixed) and lease traction, then pivoted to the two programs that define the next month: SolLunar Society launch and the NFC membership-card mission. Pat, the accounting lead on-site for two weeks before France, owns the card budget proposal and the October working-prototype target — 250 cards already exist, the vestibule door gets tap-to-unlock (existing locks plus readers for the prototype, custom chips later), and the card becomes the payment rail for the ATM, vending, food trucks, and even a $1.25 bathroom tap. The card is also a product: anyone brands their own cards but interoperates with our system, Solarpunk is the first partner, and festivals/locations follow. Angel has the member agreement and a $60k Founding Circle target; the Noderunner shop splits Above Phone vs Archipelago with Hakeem, Eliza, and Asif (25% each, Poly's share to the Trust), the grocery store takes the front space, and the $56k AI server gets a $60k resale (six $10k buyers = shared lab server). Houston brought two tiny-home manufacturers (Swedish mirror-clad ÖÖD plus a 30-45-day custom builder) and a gifted acre in Jonestown for a showroom; the yellow-house rebuild becomes a U-shaped 3-story container stack with a courtyard; and accounting gets its first walk-through Friday at 11:30, with NOSTR "Bit Escrow" as the path to Bitcoin-share contracts and a forensic pass over the Lab's IOU history — which, Poly noted, includes a lot of Avi's transactions.

View file

@ -0,0 +1,155 @@
---
type: meeting-readout
source: "SolLunar Team Meeting 8-10-26.docx"
meeting-date: 2026-08-10
batch: 6/7
processed: 2026-09-05
---
# SolLunar Team Meeting — 2026-08-10 (Readout)
Launch-planning meeting. **Haven (new, "Temple Builder" at Solarpunk) attends first meeting.** Lease still pending; membership management named the biggest blocker.
## 1. Decisions
| decision | who | date |
|---|---|---|
| **Jessie runs the co-op (Divine Provisions)** — ex co-op food worker; new to team | Poly | 2026-08-10 |
| **Haven = Temple Builder at Solarpunk** — "responsible for creating all the vibes, what it feels like there, visually and energetically" | Angel | 2026-08-10 |
| **Lease path**: waiting on **Ben** (didn't see Poly's Friday message) for the info needed to get the lease → pay deposit → **2 free months of rent as runway** | Poly | 2026-08-10 |
| **Ideal launch: ~1 week after Solarpunk Summit** (a few days to a week) | Angel | 2026-08-10 |
| **Biggest pre-launch item = membership management & payment** — "as long as we can manage members, we're OK" | Angel | 2026-08-10 |
| **Solarpunk Sessions**: branded content, 1/week, reestablish relationships with leaders/workshop facilitators; under the Sapien Center until launch; Mimi (Maison Palo Santo) event **Sept 1** on the books (not yet calendared) | Angel | 2026-08-10 |
| **Workshop application / sovereign tech**: Jay working on making it seamless ("the basis for a lot of things we do"); **contingency plan = "more sovereign but established system" for the short term** | Angel / Jay | 2026-08-10 |
| **Nextcloud** (German company, open source; the only open-source analog to AWS/Google features) — keep using it (documents, calendar); "it was terrible in the beginning; it gets better over time"; Archipelago is working with it; dual-use OK | Poly / Angel | 2026-08-10 |
| **Form results problem**: form → spreadsheet not auto-updating (manual = unreasonable); Jay: there's a **re-sync button, "we could hack our way around it"**; **Poly will build simple software to display results** ("not a hard thing to do") — quote to follow | Jay / Poly | 2026-08-10 |
| **Membership plan**: build the full system in ~2 months; **contingency portal if it's not ready** | Angel | 2026-08-10 |
| **Zaza's membership software**: Jay to **audit + demo** it against a needs list; **login via NPUB (public key)**; **cards are NOT the bottleneck** — "I can program NFC stickers and put them on anything"; **membership currently runs off Nextcloud**; Zaza's website tracks it but info stored privately on Nextcloud | Jay / Poly / Angel | 2026-08-10 |
| **Minimum membership system (now)**: admin memberships + signup form that makes the card + payments — "super simple, the basics of what we need" | Angel / Poly | 2026-08-10 |
| **Payment processor**: **Square** (Poly's recommendation); must be a **new SolLunar account**; **autopayments** needed — Square can do it (Steph: her former non-profit did recurring monthly/annual on Stripe) | Poly / Steph | 2026-08-10 |
| **Launch comms (Angel, this week, once lease ink is dry)**: message about what SolLunar Society is + **pre-signup application**; **crowdfund (Agora?) or Kickstarter-style pledging**; target **20 founder-circle memberships**; send **broadly** (not just community — "a lot more money in tech than earth stewardship"); position as **anchor space** + access to the whole L484 multi-location network; needs a video + message; assume lease signed in days, end of week at latest | Angel | 2026-08-10 |
| **Launch space plan (first meeting)**: Angel + Poly + Haven drop in → decide spaces (Noderunner, co-working, gym) → then larger input; **branding: colors, dark/bright, look** | Angel / Haven | 2026-08-10 |
| **Minimum-viable launch changes**: new signage + change Sapien Center so it looks different + a way to get members in + "painting the space from whatever the dead color is" | Angel | 2026-08-10 |
| **Budget**: planning with **$100k**; **$20k in Founding Circle** covers the needed changes; "working budget / rapidly achievable budget" framing (Haven); **Haven: initial vibe project with what we already have** — "I can just say 'I'm going to get $15k for that'" (Angel) | Angel / Haven | 2026-08-10 |
| **Haven's involvement**: design, fabrication, installation — "at whatever level of involvement you need"; can work with whoever's interested; "very collaborative" | Haven | 2026-08-10 |
| **Grass**: mow before launch; the (Aesthetic's?) mower broke; Poly buys a weed whacker + pays someone else | Poly | 2026-08-10 |
| **Rental agreements for all parties**: **LOIs first** (show demand — "if we get 10 LOIs, we can show demand"; e.g. Ashley's company), then rental agreements once we have the lease; e.g. Aesthetic Church writes one that converts when terms fulfilled | Poly / Angel | 2026-08-10 |
| **Divine Provisions structure**: **create the LLC**; new shelving (7-Eleven style along the wall); use existing refrigeration (move meat to the front big freezer; 3 fridges in the yellow houses + big one → stock room); **6 fridges worth of space**; **pre-purchased at first, shopping later**; Jessie gets members' orders; fridges fill/empty weekly; later new fridges; checkout kiosk by the window; produce space | Jessie / Poly / Angel | 2026-08-10 |
| **Co-op access control**: members talk to Jessie, she gets their stuff | Poly | 2026-08-10 |
| **Membership policy + onboarding package needed** ("You can do this, not that"; PMA...) — Jay: "good to agree on some stuff sooner rather than later"; Jay happy to pass off 3-4 months of collected members to new members | Jay / Angel / Poly | 2026-08-10 |
| **Members sold even while closed** — people pay **$350/month for tech support**; lots of repeat/issue work (Jay) | Jay / Poly | 2026-08-10 |
| **Shop open day 1**: only need to physically move stuff + time; front-room shelves reinstalled in back room (temporary until glass cases); "on the walls"; **self-serve: checkout kiosk + Bitcoin ATM** + a person to facilitate conversation; **3 laptops sold this week** | Poly | 2026-08-10 |
| **Certificate of occupancy: currently only 49 people** — options: (a) 1 big Solarpunk event/month + temporary use permit, (b) **new CO for outdoor space ~150** (avoids fire-system updates); **700 sqft tent = biggest without permits**; prefer stable structure; weatherproof cushions (buy); custom furniture buildable ("take with us"); "maybe a temporary location for 1 year" — **Blaze indicated the Trust would like to leave in a year** (owned place preferred) | Angel / Haven / Poly | 2026-08-10 |
| **Operating agreement**: how members are honored across the different brands | Angel | 2026-08-10 |
| **Brian's property terms**: "we're making plans with someone else's property; need to find out what the terms are with Brian on everything that's there" | Angel | 2026-08-10 |
**Cross-check vs 06-DECISIONS:**
- Continues 7-27: cards as the launch backbone (now refined: NPUB login, NFC stickers, Square, Nextcloud backend); Founding Circle target refined ($20k here vs $60k at 7-27 — Angel's "raise $60k" was the circle total; $20k covers launch changes).
- **New**: lease now gated on **Ben's info** (was Blaze/Daniel at 7-17/7-20) — chain of dependency updated.
- **New**: CO = 49-person cap (hard constraint not seen before); outdoor CO ~150; 700 sqft tent no-permit.
- **New**: 1-year horizon hint (Blaze/Trust want an owned place) — first explicit mention of the Trust's exit intent.
- Consistent with 8-14 (Jessie leads Divine Provisions; Gambino separate).
- $350/month tech-support membership = revenue fact.
## 2. Action Items
| owner | task | due date | project | status |
|---|---|---|---|---|
| Ben | Info needed to get the lease (didn't see Friday message) | ASAP | Sapien / Lease | **blocked on Ben** |
| Poly | After lease: pay deposit → 2 free months runway | after lease | Sapien / Lease | queued |
| Angel | This week (post-lease): membership announcement + pre-signup; crowdfund (Agora?) or Kickstarter pledging; target 20 founder-circle; video + message; broad send | this week | SolLunar / Launch | queued (lease) |
| Angel | Solarpunk Sessions: 1/week; Mimi (Maison Palo Santo) Sept 1 | Sept 1 + weekly | SolLunar / Events | scheduled |
| Jay | Workshop application / sovereign tech solutions; contingency (more sovereign but established) | pre-launch | SolLunar / Tech | in progress |
| Jay | Audit + demo **Zaza's membership software** (needs list) | pre-launch | SolLunar / Membership | open |
| Poly | Build simple form-results display software; research + quote | ~1 week (Sessions start in a week) | SolLunar / Tech | in progress |
| Poly | Pull up Nextcloud membership admin at Sapien (form makes card + payments) | now | SolLunar / Membership | open |
| team | Set up **Square** (new SolLunar account, autopayments) | pre-launch | SolLunar / Payments | open |
| Haven | Budget for launch changes ($15k vibe project); spatial design (spaces, colors, branding); first meeting = Angel + Poly + Haven | pre-launch (before Summit) | SolLunar / Space | in progress |
| team | Space concept + rendering (tools exist; one machine limited, one in test phase; Eagle can do it; 80-90% accuracy) | pre-launch | SolLunar / Space | open |
| team | Minimum launch: new signage, recolor, member entry, grass mowed | pre-launch | SolLunar / Launch | open |
| Poly | Buy weed whacker + pay someone for the grass | pre-launch | Sapien / Grounds | open |
| Poly | LOIs from parties (10 = demand proof; Ashley's company example) | pre-lease/launch | SolLunar / Tenants | open |
| Jessie | Divine Provisions LLC; room build-out (7-Eleven shelving, kiosk, produce); pre-purchase flow | pre-launch | Divine Provisions | open |
| team | Move fridges/freezers (meat → front big freezer; 6 fridge spaces) | pre-launch | Divine Provisions | open |
| Jay | Membership policy + onboarding package (PMA) | pre-launch | SolLunar / Membership | open |
| Angel | Decide space concept (not hodge-podge); meet Haven on basic needs | next week | SolLunar / Space | open |
| Angel | Rental agreements for all parties (post-lease) | after lease | SolLunar / Tenants | queued |
| Angel | Operating agreement: members across brands | pre-launch | SolLunar / Governance | open |
| team | Cert of occupancy: temp-use permit vs outdoor CO (~150); 700 sqft tent | pre-launch | Sapien / Compliance | open |
| Haven | Source weatherproof furniture difference (knows the person who did the deck at Bathe) | pre-launch | SolLunar / Space | open |
| Poly | Bring out the photos (for branding/design) | next meeting | SolLunar / Space | open |
## 3. Project Links
- **SolLunar / SoLunar Society** (existing) → launch plan, membership, CO, branding
- **Solarpunk Summit** (existing) → launch timed ~1 week after; Sessions; Tech Day (8-17 detail)
- **Divine Provisions** (existing) → LLC, Jessie, 7-Eleven layout
- **Sapien / SoLunar** (existing) → lease (Ben-gated), 49-person CO, Brian's terms
- **Zaza** (person) → membership software (audit pending)
- **Agora (Angor.io)** (existing) → crowdfund option for launch
- **Aesthetic Church** (tenant) → LOI candidate, lights (8-17)
- **Haven** (person/project) → Temple Builder role; spatial design
- Keynctr ([[keynctr 1]]) — not mentioned; Avi not in this note
## 4. Knowledge
- **Haven** (new member): Solarpunk "Temple Builder" (vibes, visual/energetic feel); brings spatial design + building expertise; first meeting 8-10 ("thanks for letting me crash the meeting"); wants transformation done BEFORE the Summit ("no one will be able to do anything the week after"); "lifehouse/lighthouse" term for the space in the dual-power community.
- **Nextcloud**: German company; the only open-source full-feature cloud; "90% good enough" (Jay); form results need manual re-sync (hackable); membership currently runs off it; Zaza's website tracks but data stored privately on Nextcloud.
- **NPUB login**: membership via public key — no card needed to log in.
- **NFC stickers**: Poly can program them onto anything → cards are never the bottleneck (only labor + locks).
- **Square**: Poly's processor pick; new SolLunar account; autopayments supported (Steph's non-profit did recurring on Stripe).
- **CO = 49 people** currently; outdoor CO ~150 possible; **700 sqft tent** = max without permits; fire-system updates are the reason to prefer outdoor CO.
- **Trust horizon**: "Blaze has indicated the Trust would like to leave in a year's time" — wants an owned place "because of what we've experienced"; "it's not up to them, but they would like to."
- **$350/month** tech-support memberships were sold even while closed; repeat customers with recurring issues.
- **3 laptops sold this week** (shop already generating revenue pre-launch).
- **Divine Provisions layout**: 7-Eleven-style wall shelving, doors open outward, checkout kiosk by the window, produce space, Jessie as the member point of contact, weekly fridge fill/empty.
- **6 fridges total** (3 yellow-house + big front + stock room consolidation).
- **LOI strategy**: 10 LOIs = demonstrable community demand for investors; Ashley's company is the example tenant.
- **Founding Circle**: 20 memberships target for launch; broad send (tech audiences > earth stewardship); anchor-space + multi-location-network pitch.
- **Mimi / Maison Palo Santo**: event host, Sept 1.
- **Aesthetic Church**: improvising with fabric barriers; drapery upgrade wanted (maybe under SolLunar brand).
- **Bathe**: outdoor furniture reference (all-outdoor); Haven knows the deck builder.
## 5. Troubleshooting
- **Lease gated on Ben** (missed Friday message) — fix: chase; everything downstream (deposit, 2 free months, launch comms) waits on it.
- **Form → spreadsheet not auto-updating** — fix: re-sync hack now; Poly's results-display software (quote coming).
- **Cards-as-bottleneck risk** — fix: NPUB login + NFC stickers; "we can do everything until the locks are ready."
- **Membership system can't take 2 months** — fix: Zaza's audit/demo as contingency; Nextcloud admin as interim; Square for payments.
- **CO 49-person cap vs launch scale** — fix: temp-use permit (1 big event/month) or outdoor CO (~150) + 700 sqft no-permit tent.
- **Planning on someone else's property** — fix: get Brian's terms; LOIs → rental agreements.
- **Space "dead color" / hodge-podge risk** — fix: Haven-led concept + rendering before buying; $15k minimum vibe project.
- **Trust 1-year horizon** — fix: "let's let whatever we get be a long-term solution that can navigate whatever changes" (portable furniture, buyable cushions).
## 6. Open Questions
- Will Ben respond, and when does the lease actually sign?
- Is Zaza's membership software complete enough for the contingency? (audit pending)
- Square or Stripe for autopay (both claimed capable)?
- Temp-use permit vs outdoor CO — which path?
- What's the actual budget (Haven: "I have no idea"; Angel: planning $100k / $15k vibe)?
- What are Brian's terms on everything in the space?
- Who staffs the hostel/guest spaces and keeps the calendar (raised 8-14)?
- Is the launch date fixed once the Summit date is known?
- What does the crowdfund look like (Agora vs Kickstarter)?
## 7. Gaps
- **Lease**: still no signature, no terms, no date — now through 4 meetings (7-10, 7-20, 7-27, 8-10). The single biggest gap in the corpus.
- **CO decision**: two options, no decision.
- **Membership system**: three candidates (build, Zaza's, Nextcloud) with no final pick.
- **Brand identity**: "what are our colors?" — nothing decided.
- **Brian's terms**: unknown.
- **Hostel operations**: calendar/staffing unresolved (8-14 confirms).
- **Payment processor**: recommendation, not a decision.
## 8. My Follow-Ups (Avi)
1. **No direct assignment.** Avi not named in this meeting.
2. **Form-results display software** (Poly: "not a hard thing to do") — small, well-scoped, launch-blocking; the kind of thing that sits unowned. [INFERRED — offer]
3. **Membership contingency**: if Zaza's software fails the audit, the NPUB + Nextcloud path needs someone to wire it up. [INFERRED offer]
4. **NFC stickers**: Poly can program them — a hands-on task that could use a second pair of hands during launch crunch. [INFERRED offer]
## Email Summary
8-10 was the launch-planning session, and it named the two things everything hangs on: the lease (waiting on Ben's missed message; deposit → 2 free months once signed) and membership management (the "biggest thing" — with a three-track answer: build the full system in two months, audit Zaza's software as contingency, and run members on Nextcloud + NPUB public-key login now, with Square as a new SolLunar account handling autopayments). Cards are explicitly not the bottleneck — Poly can put programmed NFC stickers on anything. Angel owns the launch comms: a pre-signup message, a $20k-into-$60k Founding Circle (20 memberships), an Agora or Kickstarter-style crowdfund, and a broad send positioning SolLunar as the anchor of a multi-location L484 network, timed for about a week after Solarpunk Summit. Haven (new to the team, Solarpunk's "Temple Builder") is driving the space: a $15k minimum-viable vibe project, renderings before purchases, and the minimum launch = new signage, a recolor, and a way for members to get in. Hard constraints surfaced for the first time — the certificate of occupancy caps us at 49 people (fix: temporary use permits or an outdoor ~150-person CO plus a no-permit 700 sqft tent), Brian's property terms are still unknown, and Blaze signaled the Trust wants an owned place within a year, so everything built here should be portable. Divine Provisions gets an LLC, a 7-Eleven-style layout, and Jessie at the front; LOIs (ten of them = proof of demand) become rental agreements once the lease lands; and the shop opens day 1 with self-serve checkout, the Bitcoin ATM, and three laptops already sold this week.

View file

@ -0,0 +1,148 @@
---
type: meeting-readout
source: "SolLunar Team Meeting 8-17-26.docx"
meeting-date: 2026-08-17
batch: 6/7
processed: 2026-09-05
note: "Two versions of this meeting exist in the source folder (.md and .docx); confirmed duplicates — one processed."
---
# SolLunar Team Meeting — 2026-08-17 (Readout)
Summit week-in-frame: **companion card** for the Solarpunk App, **Tech Day** (Sat, day 3) fully staffed by L484, **Kyle leads Summit tech development**, and the **Randi rent-debt deal** ($1,200/mo, 3-yr max).
## 1. Decisions
| decision | who | date |
|---|---|---|
| **Fence comes down** (Haven agreed) — it's a **lease violation**, so replace with a **wire hoop trellis + gate + hoop tunnel** (space to the left of the shed, clear of the utilities that stick out); hanging plants (real/fake undecided — Poly: "really don't want to do fake, but also don't want to do real right now") | DJay / Haven / Poly | 2026-08-17 |
| **Angel must be in every design decision** (archway, plants, anything) — "real plants will not survive in this light"; conversation with Angel pending | Jen | 2026-08-17 |
| **First inside-design task: Aesthetic Church string lights, criss-cross** (Angel likes it; free) | Poly | 2026-08-17 |
| **Automatic watering = the Solarpunk answer** (no one has to water); **Ali + Rah as the master growers** — hydroponic solutions "for a fraction of the cost"; low-light plant selection required | Poly / Ali / Rah | 2026-08-17 |
| **Garage doors: never open** — "everyone driving by can see what's in here; huge security risk" (+ temperature control) | Poly | 2026-08-17 |
| **Angel's wall idea**: LED wallpaper (images we generated) or hanging cardboard cutouts or wire — not yet decided | Angel / Poly | 2026-08-17 |
| **In-house art department** wanted for this work; Janelle volunteers ("she'd like to be in that department?") | Janelle | 2026-08-17 |
| **Companion card for the Solarpunk App**: scan card at check-in → **phone notification = identity**; **secret passphrase** if phone is dead; "we can turn people away if it's clearly not them"; **decentralized privacy**; **points systems for free-market economies**; card doubles as **lead intro to SolLunar Society** (existing card → come here, pay fee, activate) | Poly | 2026-08-17 |
| **Summit commerce**: Angel doesn't want buying/selling, but vendors always show up — **all sales through the card system** changes the feel; points create natural spend pressure; "vendors aren't chasing transactions... they focus on customer service" | Poly / Angel | 2026-08-17 |
| **Tech Day = Saturday, day 3, most people**: 10am yoga + workshops → speakers 3pm (TED-talk format) → ends 7pm (music); **8pm: 45-min DJ set — Zaza, Johnny Buffalo, Poly**; opening panel proposed: **Angel + Poly, Jen facilitating** | Poly / Angel / Jen | 2026-08-17 |
| **L484 manages all of Tech Day**: **Angel hires staff + volunteers through the L484 network**; **decentralized food logistics** (community kitchen orders via the app, knows when ready, **points pay**); **Angel's "SWAT team"** — incident reporting via app, someone shows up | Poly / Angel | 2026-08-17 |
| **Summit tech development: Kyle in charge** (Poly: "I don't have time"); app progress every week | Poly / Kyle | 2026-08-17 |
| **Poly's workshop: Digital Sovereignty 101** — the whole ecosystem; Archipelago present; **setting up a server is a big part** | Poly | 2026-08-17 |
| **12 activations**: construction, design, fabrication, storage; **Poly raising capital**; "there's a budget in SolLunar for it" | Poly | 2026-08-17 |
| **DJ set**: Poly working it with **Halanna from the Noderunners movie** | Poly | 2026-08-17 |
| **Sunset activation**: Solarpunk → Lunarpunk transition; **Web5 song plays at dusk**; Lunarpunk lounge carries the vibe; **new moon = October 10**; Jen wants to collaborate | Poly / Jen | 2026-08-17 |
| **Randi (warehouse) debt deal**: **$600 electric bill paid every 2 weeks (~$1,200/mo) until the rent is paid off**; **3 years max**; if money arrives sooner → pay the balance **minus the electric already paid**; her core worry = no income | Poly / Randi | 2026-08-17 |
| **Randi solar push**: upside-down solar on her greenhouse; giant roof is the obvious target; **Poly + Fish will visit today** (returning books; both have solar experience); "she really wants to sell the warehouse — that's why we need to do it" | Poly / Fish | 2026-08-17 |
| **Trent joins the bootcamps**: full Bitcoin rabbit hole ("gone so far... I can't talk to normal people anymore"); made an intentionally insane Bitcoin video (well-received); **teaching with Poly and Stephanie (+ maybe one more)** | Poly / Trent | 2026-08-17 |
| **Trust meeting this weekend**: send communication — **every member brings a computer, installs Archipelago, demos it** | Poly | 2026-08-17 |
| **Fish**: building non-profit **Gaian Energy Ministries** (conscious energy lifestyle education, post-solar); **offers a workshop** (energy or tea & sovereignty) — Jessie: "we'd love that" | Fish | 2026-08-17 |
| **Data center = product**: yellow house home data center shows people what one looks like; **sell space/storage incl. enterprise**; **$60k AI server** lives there; industry context: data centers now gatekeep (credentials/LLC required) → everyone defaults to AWS | Poly | 2026-08-17 |
**Cross-check vs 06-DECISIONS:**
- Continues 7-27/8-10: card mission → now a concrete Summit artifact (companion card, notification + passphrase flow, points economy, vendor rails). Tech Day ownership = new explicit scope (Sat, day 3).
- Continues 8-14: **Kyle** — accounting program (8-14) + now Summit tech development; **$60k AI server** reconfirmed in the yellow-house data center; **Trust meeting** "coming up" (8-14) → this weekend, with Archipelago bring-your-own-computer demos.
- New hard numbers: **Rent to Randi ≈ $1,200/mo, 3-yr max payoff**; **12 activations**; **new moon Oct 10**; DJ set 8pm 45 min; speakers 3pm; day ends 7pm.
- **Summit date garbled** in transcript ("a month away. Month and a half — it'll be here in two days") — new moon Oct 10 is the only firm date [LOW CONFIDENCE on exact Summit dates].
- Zaza (8-14: stepped back from groups, "exactly where I'm meant to be") → **on the 8pm DJ set** — consistent with staying involved on his own terms.
- Aesthetic Church lights (8-14: "need a few people") → now the #1 inside-design task.
## 2. Action Items
| owner | task | due date | project | status |
|---|---|---|---|---|
| Haven | Gazebo structure budget | "pretty soon" | SolLunar / Space | open |
| team | Take down fence; build wire hoop trellis + gate + hoop tunnel (left of shed, clear of utilities) | pretty soon | SolLunar / Space | open |
| DJay | Talk to Angel: archway/plants/gate (any design decision) | before building | SolLunar / Space | open |
| team | Aesthetic Church string lights (criss-cross) | first design task | Sapien / Aesthetic | open |
| Ali + Rah | Automatic/hydroponic watering system (low-light plant list) | NO DATE | SolLunar / Space | open |
| Angel | LED wallpaper / cardboard cutouts / wire wall concept | NO DATE | SolLunar / Space | open |
| team | Stand up in-house art department (Janelle interested) | NO DATE | SolLunar / Space | open |
| Poly + team | Companion card: notification + passphrase flow, points economy, card-activation path | pre-Summit | SolLunar / Cards | in progress |
| **Kyle** | **Summit tech development lead; app progress weekly** | pre-Summit | Summit / Tech | assigned |
| Poly | DJ set w/ Halanna (Noderunners movie) | 8pm, Tech Day (8pm) | Summit / Tech Day | in progress |
| Poly | Workshop: Digital Sovereignty 101 (plan; Archipelago server setup) | Tech Day | Summit / Workshops | in progress |
| team | 12 activations: construction, design, fabrication, storage | pre-Summit | Summit | in progress |
| Poly | Raise capital for activations (SolLunar budget) | pre-Summit | SolLunar / Funding | in progress |
| Angel | Hire staff + volunteers via L484 network (Tech Day) | pre-Summit | Summit / Tech Day | open |
| team | SWAT-team incident app (report → someone shows up) | Tech Day | Summit / Ops | open |
| community kitchen | Order-via-app + points payment flow | Tech Day | Summit / Food | open |
| Jen (+ collaborators) | Sunset activation (Web5 at dusk; Lunarpunk lounge; new moon Oct 10) | pre-Summit | Summit | open |
| Poly + Fish | Visit Randi today (books + solar conversation) | **2026-08-17 (today)** | Warehouse / Solar | scheduled |
| team | Randi: $600/2-wk electric payments until rent repaid (3-yr max) | ongoing | Warehouse / Debt | **agreed** |
| Fish | Workshop (energy / tea & sovereignty) | Summit | Summit / Workshops | offered |
| team | Trust communication: bring computers, install Archipelago, demo | before this weekend | Trust | open |
| Poly / Stephanie / Trent (+1?) | Bootcamps — teaching roster | upcoming | Bootcamps | forming |
| Jen | Talk to Poly after meeting re: bootcamp this weekend | after 8-17 | Bootcamps | pending |
## 3. Project Links
- **SolLunar / SoLunar Society** (existing) → cards, gazebo, design, Randi debt context
- **Solarpunk Summit / Tech Day** (existing) → day 3 Sat; DJ set; workshops; 12 activations
- **Archipelago** (existing) → Trust demos, Digital Sovereignty workshop, server setup
- **Yellow houses / home data center** (existing) → $60k AI server, storage sales
- **Noderunner shop** (existing) → Halanna (Noderunners movie)
- **Gaian Energy Ministries (Fish)** (new candidate) → non-profit, energy-lifestyle education
- **Randi's warehouse** (new external) → debt deal + solar push
- **Hope Art Park / Radiant Hearts** (existing, 8-14) → not touched here
- Keynctr ([[keynctr 1]]) — not mentioned; Avi not in this note
## 4. Knowledge
- **Companion card spec (v1)**: card scan → push notification on phone = identity check; passphrase fallback; decentralized privacy; points for free-market economies; card = SolLunar Society entry point (pay fee to activate existing cards at the space).
- **Tech Day program**: 10am yoga + workshops; 3pm speakers (TED style); 7pm music; 8pm DJ set (Zaza, Johnny Buffalo, Poly, 45 min).
- **New moon: October 10** — Lunarpunk anchor date.
- **Randi**: warehouse owner; no income (worried about it); upside-down solar panels on her greenhouse; wants to sell the warehouse; debt = ~$1,200/mo via electric-bill payments, 3-yr max.
- **Trent**: Bitcoin-obsessed local; made an intentionally obscure "insane" Bitcoin video; wants a job; now bootcamp co-instructor (Poly + Stephanie).
- **Fish**: tea ceremony host (Gu shu cha — red caramelized tea from 300+ yr trees; Yunnan = Pu-erh origin; "choose and remember your teacup"; parasympathetic effects; theobromine/EGCG/polyphenols); building **Gaian Energy Ministries** non-profit; both he and Poly have solar experience.
- **Data-center industry context**: data centers gatekeep (credentials/LLC required) → default is AWS; the yellow-house home data center is the counter-example and a product (sell space/storage, enterprise incl.).
- **$60k AI server** confirmed sitting in the yellow-house data center (8-14 resale plan).
- **12 activations** = the Summit build-out number.
- **Ali + Rah** = the grower pair for hydroponics.
- **Zaza, Johnny Buffalo, Poly** = the 8pm DJ lineup (Johnny Buffalo new to the corpus).
- **Halanna** = Noderunners movie (new to corpus).
- **Janelle** wants an in-house art department (and a seat in it).
- **Security rule**: garage doors never open (line of sight + temperature).
- **Meeting culture note**: "Great job, TEAm." + the recurring "Who's Poly?" humor (Poly split into multiple speakers in transcript).
## 5. Troubleshooting
- **Fence = lease violation** — fix: trellis + gate + hoop tunnel in the compliant spot (left of shed, clear of utilities).
- **Real plants won't survive the light** — fix: automatic/hydroponic watering (Ali + Rah) + careful low-light species.
- **Identity without phones** — fix: passphrase fallback on the companion card.
- **Vendor chaos at Summit (no sales wanted)** — fix: card-rail commerce + points (spend pressure, service focus).
- **Incident response at scale** — fix: Angel's SWAT team + app-based reporting.
- **Data-center onboarding gatekeeping** — fix: the yellow house demonstrates the home-data-center path; sell storage.
- **Rent debt (Randi)** — fix: $600/2-wk electric payments, 3-yr max cap, prepay option; solar on her roof to cut the bill she's most worried about.
- **Poly bandwidth (tech dev + DJ set + workshop + activations + capital)** — fix: Kyle takes Summit tech dev.
## 6. Open Questions
- Exact Summit dates (transcript garbled: "a month away / month and a half / here in two days")?
- Will Angel's design conversation change the trellis/plant/archway plan?
- Who staffs the in-house art department (Janelle a candidate)?
- Are the 12 activations listed anywhere (scope sheet)?
- Will Randi take the solar conversation (and the warehouse sale question)?
- Who is "Johnny Buffalo" (new) and what's the Noderunners movie connection?
- Bootcamp this weekend — yes/no (Jen/Poly, after-meeting)?
- Is the $1,200/mo figure the full rent or rent+utilities?
## 7. Gaps
- **Summit date**: not stated cleanly anywhere in the corpus yet (only new moon Oct 10 as an anchor).
- **12 activations**: no list, no owners per unit.
- **Companion card**: spec given, but no build owner beyond Kyle's general tech-dev remit; no test plan.
- **Randi deal**: verbal — no written agreement referenced; no solar quote.
- **Art department**: concept only.
- **Points economy**: mechanics (earn rates, redemption) unspecified.
- **SWAT team**: who exactly, on what rotation.
## 8. My Follow-Ups (Avi)
1. **No direct assignment.** Avi not named in this meeting.
2. **Companion card app work** — the notification/passphrase/points flow is app development inside Kyle's tech-dev remit, with weekly progress expected and no named app engineer. This is the closest thing to an open Avi-shaped task in the meeting. [INFERRED offer]
3. **SWAT incident app** — "report whatever's wrong via an app and have someone show up" is a small dispatch app; unowned. [INFERRED offer]
4. **Trust demos** — members bring computers and install Archipelago; if any fail, someone needs to troubleshoot at the table. [INFERRED offer]
## Email Summary
8-17 framed the month through the Summit: the fence comes down (it's a lease violation) in favor of a wire hoop trellis, gate, and hoop tunnel — with every design decision routed through Angel, the Aesthetic Church's criss-cross string lights as the free first inside-design win, and Ali and Rah bringing hydroponic automatic watering for the plants that can survive the light. The companion card became a Summit artifact: scan it and your phone notifies staff (passphrase if the phone is dead), it carries decentralized privacy, it powers points-based free-market economies so Summit vendors stop chasing transactions, and it's the on-ramp to SolLunar Society membership. L484 runs all of Tech Day — Saturday, day 3, the most-attended day: 10am yoga, 3pm TED-style speakers, a proposed Angel/Poly opening panel with Jen facilitating, 7pm music, and an 8pm 45-minute DJ set from Zaza, Johnny Buffalo, and Poly, with Angel staffing it through the L484 network, the community kitchen ordering through the app and paying in points, and a SWAT team on incident apps. Kyle takes Summit tech development (Poly: "I don't have time"), Poly is planning a Digital Sovereignty 101 workshop around the Archipelago server setup, and the 12 activations enter construction/fabrication while Poly raises capital. The big financial agreement: Randi gets the electric bill paid — $600 every two weeks, about $1,200 a month, until the rent is repaid, three years maximum, with a prepay option — and Poly and Fish are going to her warehouse today with the solar pitch for that giant roof. Trent, deep in the Bitcoin rabbit hole, co-teaches bootcamps with Poly and Stephanie; the Trust meets this weekend with every member bringing a computer to install and demo Archipelago; and the sunset activation (Web5 at dusk, Lunarpunk lounge, new moon October 10) is where the sun side hands over to the moon side.

View file

@ -0,0 +1,102 @@
---
type: meeting-readout
source: "SolLunar Team Meeting 8-24-26.md"
meeting-date: 2026-08-24
batch: 7/7
processed: 2026-09-05
---
# SolLunar Team Meeting — 2026-08-24 (Readout)
Biggest planning meeting of the run: the 12 Solarpunk Summit activations get their
full treatment (themes, concept ideas, sponsorship, build logistics), plus Lunarpunk
Camp context and the emergency-response/peace-support system. Attendees include
Poly, Gambino, DJay, Haven, Kyle, Steph, Angel (referenced). No Avi in this note.
## 1. DECISIONS
| Decision | Who | Date |
|---|---|---|
| SolLunar will do 7 things for Solarpunk Summit: 12 activation-station art installations, Solar Pass via the card system, all Tech Day (Saturday) programming, staff/volunteer help, Lunarpunk Lounge, workshops, decentralized logistics (food distribution + peace support system) | Poly (team) | 2026-08-24 |
| Weekly updates to track each of the 7 workstreams | Poly (team) | 2026-08-24 |
| Start with the 12 activations (need to start soonest); themes already picked with Angel | Poly (team) | 2026-08-24 |
| Total budget for all Solarpunk Summit work is **$25k** (some SolLunar/brick-house raised money goes to it); build all 12 even if sponsors fail — worst case, 12 posters | Poly | 2026-08-24 |
| Installations will be portable/modular: trailers that tour, or wood-frame tall boxes / teepees that build up and pack down; one "headliner" full-size install plus 5 medium, 3-4 grouped small, 1-2 scattered | Gambino / Poly | 2026-08-24 |
| Design meeting for the activations set for **Wednesday, 6pm** (next conversation) | Kyle | 2026-08-24 |
| Art-build nights: start week after next, Thursday nights (+1 TBD), working off a shared goals list of props/materials | Haven / Gambino | 2026-08-24 |
| Each activation gets 5 "recipe ingredients": (1) physical or digital takeaway (seed, download, pamphlet), (2) art centerpiece, (3) a sponsor highlighted in the art, (4) personal-reflection element, (5) invitation for next steps | Poly | 2026-08-24 |
| Next week's meeting agenda: card system, food system, emergency response system | Poly | 2026-08-24 |
| Peace Support system: local-wifi-only app (no internet) with 4 options — life-threatening injury, suspicious behavior, missing person, missing item; team knows who to send | Poly | 2026-08-24 |
| Gambino joins Solarpunk video/marketing help (Angel runs the team); needs more video editors | Gambino | 2026-08-24 |
## 2. ACTION ITEMS
| Owner | Task | Due | Project | Status |
|---|---|---|---|---|
| Poly | Ask Angel about Lunarpunk Camp (4-day educational program) and what to do to start a program | NO DATE | SolLunar / Lunarpunk | Open |
| Poly | Design the 12 activations (what happens at each station) with the group before the design meeting | 2026-09-02 (Wed) [INFERRED from "this time Wednesday"] | Solarpunk Summit | Open |
| Haven | Pitch-deck approach for sponsorships: sell activation tiers (previously $5k/$7k tiers at SxSW event at Sapien); reach out once list is ready | NO DATE | Solarpunk Summit | Open |
| Haven | Weekly art-build nights; put out a call; maintain ongoing goals list of props/materials | starts week after 2026-08-24 | Solarpunk Summit | Open |
| Gambino | Find/repurpose materials for the build; video-editing for Solarpunk marketing | NO DATE | Solarpunk Summit | Open |
| Poly | Tweet at Framework asking them to sponsor / set up a booth (right-to-repair activation) | NO DATE | Solarpunk Summit | Open |
| Kyle | Gather a stack of non-repairable things (TVs, monitors, junk) to display | NO DATE | Solarpunk Summit | Open |
| Haven | Ask about inviting the Food Forest people (Allie, founder/co-chair) | NO DATE | Solarpunk Summit | Open |
| Poly | Ask returning yearly volunteers to confirm their things | NO DATE | Solarpunk Summit | Open |
| DJay / Poly | Track status of the 12 installations somewhere visible (currently with Stephanie) | NO DATE | Solarpunk Summit | Open |
| UNASSIGNED | Create digital library (QR code → locally hosted server, ~6,000 books; "information wants to be free"); Dropbox folder fallback with 1,000 books | NO DATE | Solarpunk Summit | Open |
| UNASSIGNED | Decide which installations are big/medium/small (Eco-Architecture room proposed as headliner candidate; infinity-mirror room proposed as biggest-install candidate) | 2026-09-02 (design meeting) [INFERRED] | Solarpunk Summit | Open |
| UNASSIGNED | Get ranger/zen-do trained people; Gambino wants formal ranger training next year (does TN regional now, also Love Burn) | NO DATE | Solarpunk Summit | Open |
## 3. PROJECT LINKS
- **SolLunar Society** — the acting project (card system, brick house, SolLunar programming). New project candidate for `01-PROJECTS` (not yet indexed).
- **Solarpunk Summit 2026** — the event all of this serves. ~700-person event at **Sun's Blue Ranch, San Marcos** (river, camping, glamping, cabins). New project candidate (event, not an org).
- **Lunarpunk Camp / Lunarpunk Lounge** — 4-day educational program Angel wants to start; lounge is one of the 7 workstreams.
- **Lab484** — appears only implicitly here (Stephanie tracks status; Stephanie also on L484 side).
- **Framework (computer company)** — potential sponsor contact for right-to-repair activation.
## 4. KNOWLEDGE
Durable facts worth filing to `05-KNOWLEDGE`:
- **The 12 Solarpunk Summit activation themes** (picked with Angel): 1. TerraPunks (healing the planet: food forests, carbon-negative concrete, algae bioreactors), 2. Energy Independence (community micro-grids, solar roof tiles, solar public transit), 3. Right to Repair + DIY/Maker (open-source 3D-printed parts, compostable packaging, fab-labs, repair cafés, CC-licensed solar schematics), 4. Eco-Arc (green walls, rooftop farms, land trusts), 5. Organic Foods (community food forests, seed saving, urban aquaponics), 6. Sovereign Tech (tech equality, open source), 7. Optionality & Agency (no gatekeeping, permissionless), 8. Decentralization (local, participatory, transparent decision-making), 9. Community: Indigenous & Traditional Knowledge (co-managed forest restoration, cultural burns), 10. Faith (knowledge of self, "divine spark"), 11. Clean Tech (sensors/AI/blockchain at neighborhood level, P2P energy trading), 12. Off-grid Tech (resilient infrastructure). Full list also in a Nextcloud doc (link in source note).
- **Concepts floated per activation:** TerraPunks → hempcrete food-forest beds + meditation garden, plant-together activity; Energy Independence → personal energy-use calculator + supplier referral (museum-pillar-sized small install); Right to Repair → disassembled **Framework laptop** as centerpiece + junk pile of non-repairable items + tool library (Framework: ~$700 used, ~$300 repaired by Poly, upgradeable everything); Eco-Arc → natural-plaster meditation room (10-min experience); Organic Foods → vertical farm pick-your-own + smoothie bar with question-before-drink; Optionality & Agency → two-button box (both buttons same outcome) + hidden third choice + escape room ("true agency comes from within"); Decentralization → nature totem pole + **infinity mirror room** (Haven has materials; mirrored acrylic) as headliner candidate; Community → physical library bookshelf (books openable, not takeable) + QR digital library; Faith → "faith transaction" concept (the $5 burger), high-trust experiment, altar/lighthouse for emotional processing, possible burning ritual with collected notes; Clean/Off-grid Tech → (not fully worked out in meeting).
- **Solarpunk Summit logistics:** Cabanas are hexagonal, two-story, 16 ft diameter. Lounge/activations to be hard-to-find-but-signposted (signage problem is recurring — see 8-31 note). Last year: hologram signage, big TV with rotating ads, Bitcoin poker (took a whole cabana downstairs).
- **Sponsorship model (draft):** activation-level sponsorship ~**$1,000** (name in activation + leads routed to sponsor + on-brand takeaway/reflection + direct next-step lead); Solarpunk Summit-level sponsorship is the top tier (activation is a subset of it). Don't compete with Solarpunk's own sponsors. Sponsors get digital assets they can push to their audience before the event (Haven's point).
- **Peace Support / emergency response:** local-wifi-only (no internet), 4-option triage app; modeled on Burn rangers; addresses known issues (people dosing too hard, children present, missing persons/items). Haven's Zendo experience: 4 shifts, 4 challenging experiences, all emotional; rangers resolved a camp's panic situation (no food/fuel, felt stranded) within an hour.
- **Community/Indigenous framing discussion:** Poly: one board member is a chief; handshake agreements, no contracts; frame as "knowledge and wisdom" with lineage → personal expression rather than singling a culture. Haven's pushback on alignment with Indigenous cultures; Kyle: talk about how the community embodies those principles. DJay: Mongolian nomads-with-laptops image.
- **SolLunar's stated principle for activations:** "even if we totally strike out on money, we'll build them all — worst case 12 posters."
## 5. TROUBLESHOOTING
- **Signage problem (recurring, 2nd time in a row):** last year people didn't know when things were happening; cabanas hard to find. Workaround: hologram fans (spinning LED, any image), big TV with rotating ads, programmable/reusable signage preferred over static (Haven).
- **Volunteer drop-off:** "people say they'd like to help but don't get added to anything" (Haven has seen this before). Mitigation: visible status of the 12 installations (currently tracked with Stephanie); directed steps when people show up; chain-of-command clarity.
- **Budget risk:** $25k total for everything. Mitigation: zero-budget delivery plan (ask community who has what — fabric, chicken wire, etc.), sponsorship offsets, posters as fallback.
- **Pre-production culture:** Haven: historically no pre-production, show up day before and build on site. Tension with a 12-installation scope — art-build nights created as the fix.
## 6. OPEN QUESTIONS
- What does Angel want Lunarpunk Camp to be? (Poly to ask.)
- Who exactly are the team leads per workstream? (Gambino: project = identifying the teams necessary.)
- Which installations are the big/medium/small? (To decide at Wednesday design meeting.)
- Who is doing volunteer coordination at the Summit level? (vs. workshop liaison — see 8-31 note.)
- What's the footprint/constraint per installation? (Kyle asked; cabana = 16 ft hexagon is the known datum.)
- Are security arrangements already in place for the Summit? (Gambino assumes so but unconfirmed.)
## 7. GAPS
- No due dates on most build tasks; the Wednesday design meeting is the only dated milestone.
- Angel (vision holder, decides lounge location, runs marketing team) was **not present** — Gambino explicitly wants her input and the absent team members' gaps.
- "Geogro" (smoothie machine?) has to get money to make 5 at a time — dependency not resolved.
- No budget split among the 12 activations yet.
- Ranger training for the SolLunar/L484 side is aspirational (Gambino "next year"; Haven "would love to").
## 8. MY FOLLOW-UPS (Avi)
- **None assigned to Avi in this note.** No mention of Avi.
- Indirectly relevant if involved in SolLunar tech: the **local-wifi-only app** (4-option peace support), the **QR digital library** (locally hosted server, no internet), and the **card system / Solar Pass** — all explicitly "next week" topics (card system, food system, emergency response).
- Watch item: the Nextcloud account-creation list in the 8-31 note (Jessie, Jeff, Jordan) — access management is a known friction point.
## Summary (for follow-up email)
SolLunar has committed to 7 Solarpunk Summit workstreams under a $25k all-in budget, anchored by 12 activation installations whose themes are set but whose station-level designs are not — a dedicated design meeting is set for Wednesday 6pm, with art-build nights starting week after next (Thursdays) and a portable/modular build philosophy (trailer-based, tourable). The session produced a concrete 5-ingredient recipe for every activation (takeaway, art centerpiece, sponsor, personal reflection, next-step invitation), a draft sponsorship model (~$1k per-activation tier vs. Summit-level tier), and the 4-option local-wifi peace-support app design. Next week covers the card system, food system, and emergency response; Angel's input (absent today) is needed on lounge location and marketing gaps.

View file

@ -0,0 +1,109 @@
---
type: meeting-readout
source: "SolLunar Team Meeting 8-31-26.docx"
meeting-date: 2026-08-31
batch: 7/7
processed: 2026-09-05
---
# SolLunar Team Meeting — 2026-08-31 (Readout)
Lunarpunk Lounge deep-dive (location, structure, programming, access), the full
Tech Day (Saturday) schedule, workshop lineup for Tech Day, and the sponsorship
outreach mechanics (tiers, master list, pitch deck). Attendees: Hakeem, Jessie,
Poly, Haven, Angel, Laura, Allen, Jen, Steph (referenced). No Avi in this note.
## 1. DECISIONS
| Decision | Who | Date |
|---|---|---|
| Lunarpunk Lounge location: slightly more centered, closer to stage than last year — likely cabanas **H and "Above" nearby (like the tech village)**; Angel decides finally | Angel | 2026-08-31 |
| Lounge structure: three cabanas (8, I, H = Lab484, Above Phone, SolLunar Society) combined with tarps/curtains/aircraft cable into one mega-structure; each org keeps its cabana's program | Poly / Angel / Haven | 2026-08-31 |
| Lounge capacity target: ~30 people who can gather; flow in and out; "hard to find" but visible and cool, with **password/scavenger-hunt access** (go to all the activations) | Poly / Hakeem | 2026-08-31 |
| Per-cabana program split: Lab484 cabana = co-working, coffee/tea, couches, food element, upstairs tech showcase; Above cabana = ground floor Above phone, arcade upstairs (Hakeem's preference: arcade on bottom); SolLunar Society cabana = event space, tea pouring, cold plunge, mobile single-person red-light sauna | Poly / Hakeem | 2026-08-31 |
| Lounge vibe: "coffee shop, not Homeostasis lounge" — refuge, not competing with the stage; theme like SolLunar; art on the walls | Poly | 2026-08-31 |
| **Tech Day (Saturday) schedule:** yoga/workshops start 10am; talks 3-5pm (TED-style, 30-45 min each, end by 5pm to let stage get ready); 5-7pm open for workshops/programming off big stage; 7pm day programming ends, music starts; 8pm Solar/Lunar/Cypherpunk DJ set (45 min); other music until late | Poly | 2026-08-31 |
| Tech Day workshops: (1) bootcamp-style overview (10 min per topic, no hands-on), (2) **Sovereign AI workshop** (Jen's idea, Poly), (3) a gentler "sovereign tech options" intro for people who don't know what sovereign means yet (Laura); naming TBD ("Sovereign Tech Options" / "Your Sovereign Tech Life") | Poly / Laura / Jen / Allen | 2026-08-31 |
| Allen will teach a Flow workshop | Allen | 2026-08-31 |
| Sponsorship: build a **master list** (not a pitch deck) with mock-ups for the activations in question; per-activation sponsorship ≈ **$1,000** (name in activation, leads to sponsor, on-brand takeaway/reflection, direct next-step lead); Summit-level sponsorship is the top tier (activation is a subset); don't compete with Solarpunk's own sponsors | Poly / Haven | 2026-08-31 |
| Sponsorship outreach to start in the next couple of days — Haven already has people emailing back interested | Haven / Poly | 2026-08-31 |
| Volunteer process: volunteers book volunteer tickets themselves at solarpunksummit.com ticketing page; Jessie is workshop liaison (NOT volunteer coordinator) | Angel / Jessie | 2026-08-31 |
| Angel reached out to **Framework** about a laptop + Summit participation; they have a sponsorship portal | Angel / Poly | 2026-08-31 |
## 2. ACTION ITEMS
| Owner | Task | Due | Project | Status |
|---|---|---|---|---|
| Poly | Share the lounge activity list into the chat ("cleaning it up really quick") | ASAP | Lunarpunk Lounge | Open |
| Poly | Add all activations with a pre-picked potential sponsor to the sponsorship doc; fill out the rest to find sponsors needed | NO DATE | Solarpunk Summit | Open |
| Poly | Create accounts in the new Nextcloud for **Jessie, Jeff, Jordan** | NO DATE | Solarpunk Summit | Open |
| Haven | Build the master list of items needed; go over generated pictures together to decide what to show/change | next couple of days (for outreach) | Solarpunk Summit | Open |
| Haven | Digital asset for scenic/deco ask, post on FB + IG, touch a few times (annual practice) | NO DATE | Solarpunk Summit | Open |
| Haven | Get sponsorship tiers built out (the "5" levels Poly referenced); list of benefits per tier | NO DATE | Solarpunk Summit | Open |
| Haven / Poly | Set a time to go into details on tier offerings | NO DATE | Solarpunk Summit | Open |
| Jessie | Arcade: Jeremy Champagne working on it (with **Seth Blaustein**); Jessie has a mini-Nintendo with all games | NO DATE | Lunarpunk Lounge | Open |
| Poly | Make a list of programming for the lounge space + items needed for that space | NO DATE | Lunarpunk Lounge | Open |
| UNASSIGNED | Decide the lounge password (Hakeem: "something about the sun and the moon") | NO DATE | Lunarpunk Lounge | Open |
| Poly | Speaker list + topics for Tech Day time slots — "we'll have a list next week" | next week | Solarpunk Summit | Open |
| Poly / Angel | Jennifer to interview Poly, Angel, + maybe someone else on a ~3pm panel (Angel wants this; exact format TBD) | NO DATE | Solarpunk Summit | Open |
| Hakeem | Panel discussion with Poly — deferred, "maybe next Monday" | 2026-09-07 (Mon) [INFERRED] | Solarpunk Summit | Open |
| UNASSIGNED | Who coordinates volunteers at the Summit level? (Unknown — Jessie is only workshop liaison) | NO DATE | Solarpunk Summit | Open |
## 3. PROJECT LINKS
- **SolLunar Society** — new project candidate for `01-PROJECTS`.
- **Lunarpunk Lounge** — the meeting's subject; becomes a 3-cabana combined structure (Lab484 + Above + SolLunar Society).
- **Lab484** — one of the three lounge cabanas; co-working/coffee/tech-showcase program.
- **Above (Phone)** — the third lounge tenant; "Above not really using the cabana at all" per Hakeem (considered in layout).
- **Solarpunk Summit 2026** — parent event (solarpunksummit.com; volunteer ticketing there).
- **Framework** — sponsor outreach in progress.
- **Seth Blaustein** — arcade contact (via Jeremy Champagne); Angel's warning: he "may say yes to whatever… then ghosts."
## 4. KNOWLEDGE
Durable facts for `05-KNOWLEDGE`:
- **Cabana assignments at the Summit:** 8 = Lab484, I = Above Phone, H = SolLunar Society (Poly's mapping); lounge likely centered near stage, "like the tech village." Cabanas are 16x16 two-story hexagons (from 8-24 note); a 20x30 tent fits ~15 people on couches gaming (Haven's photo reference); a 10x20 minimum if tent-based.
- **Tech Day (Saturday) schedule is now fixed** — see decisions above. Talks 3-5pm, 30-45 min each; DJ set 8pm; music until late.
- **Volunteer mechanics:** volunteers self-book via solarpunksummit.com ticketing page; some can get complimentary tickets; different lengths of commitment (Angel, hard to hear). Jessie = workshop liaison.
- **Sponsorship tier model (concrete):** activation-level ≈ $1,000 → name in activation + lead routing + on-brand takeaway/reflection + direct next-step lead + digital assets sponsors can push pre-event; Summit-level = top tier, activation is a subset. "Even if a few sponsors opt in, it should pay for everything" (Poly).
- **Lounge design language:** password access + scavenger hunt across activations; beanbags/totem seats/blow-up chairs (couches don't fit cabanas); games on the wide upstairs railings; hologram signage; mobile cold plunge (wish list) + mobile single-person red-light sauna (owned); "jump in the river" (Laura — the ranch has a river).
- **Zero-budget planning principle (Haven):** plan as if budget is zero; add on as sponsorship lands; "what can we deliver with zero budget requires us to gather and acquire resources" — ask the community who has what.
- **Seth Blaustein caution** (from Angel): he says yes to anything, then ghosts; only worth it if the idea aligns with what he's doing "in this moment."
- **Last-year lessons:** signage complaints (people didn't know when things were happening); Bitcoin poker loved (took a whole cabana downstairs); holograms on cabanas.
## 5. TROUBLESHOOTING
- **Cabana privacy confusion:** Jessie thought cabanas were private and off-limits; Poly clarified the lounge plan uses them — signage will need to handle "restricted but accessible."
- **Volunteer coordination unknown:** no one owns Summit-level volunteers (Jessie explicitly not). Gap to close.
- **Seth Blaustein reliability risk:** known ghoster (Angel's experience). Workaround: only pitch aligned ideas; don't build plans on him.
- **Naming the beginner workshop:** "bootcamp" has negative connotations (Haven); settled on "Sovereign Tech Options" / "Your Sovereign Tech Life" as candidates — still needs final name.
- **Nextcloud onboarding friction:** Haven just got access and wasn't sure whether to upload; Poly must create accounts for Jessie, Jeff, Jordan.
## 6. OPEN QUESTIONS
- What will the lounge password be?
- Exact panel composition for ~3pm (Jennifer interviewing whom)?
- Who are the Tech Day speakers and what are they speaking on? (List promised "next week.")
- Who coordinates volunteers at the Summit level?
- Final workshop name (bootcamp overview tier).
- Will "Above" actually use its cabana? (Hakeem: probably not — affects layout.)
- What's on the lounge activity list Poly is cleaning up?
## 7. GAPS
- Hakeem left mid-meeting (emergency) — panel conversation deferred to ~Monday.
- Angel's ticketing/volunteer answer was partially inaudible ("hard to hear") — details on complimentary tickets and commitment lengths unconfirmed.
- No budget number stated for the lounge itself (the $25k overall from 8-24 is the only figure in play).
- Steph's workshop question ("might not have all the right people here") — workshop ownership mostly unresolved outside the three named sessions.
- No decisions on food service specifics for the lounge ("we definitely want food and drinks" — unowned).
## 8. MY FOLLOW-UPS (Avi)
- **None assigned to Avi in this note.** No mention of Avi.
- Indirectly relevant if involved in SolLunar tech: the **tech showcase upstairs in the Lab484 cabana**, the **arcade** (computer with 500 retro games; Jessie's mini-Nintendo), and the **Nextcloud account provisioning** (Jessie, Jeff, Jordan) — all plausible tech-side touches.
- Watch item: Hakeem's panel deferral to Monday — if Avi is in the SolLunar orbit, the panel/speaker list ("next week") is where names get locked in.
## Summary (for follow-up email)
The Lunarpunk Lounge is now concretely planned: a three-cabana combined structure (Lab484 / Above / SolLunar Society, cabanas 8/I/H) near the stage, ~30-person capacity, password + scavenger-hunt access, with each org running its own program (co-working and tech showcase, phone + arcade, and SolLunar's event space with tea, cold plunge and mobile sauna). Tech Day Saturday is scheduled end-to-end (yoga 10am, talks 3-5pm, music from 7pm, DJ set 8pm) with three workshop concepts (bootcamp overview, sovereign AI, and a beginner "sovereign tech options" session) plus Allen's Flow workshop. Sponsorship mechanics are set: a master list with mock-ups, ~$1k per-activation tier under the Summit-level tier, outreach starting within days — with Framework already engaged and Seth Blaustein flagged as a ghosting risk. Open items: volunteer coordinator, Tech Day speaker list (next week), panel details, and the lounge password.

View file

@ -0,0 +1,34 @@
---
type: project
id: PROD-7
area: Products
done_when: "Syft replaces the previous file manager as Avi's daily driver with keymap, favorites, and packaging settled."
status: open
updated: 2026-10-01
tags:
- hub
- products
---
# PROD-7 Syft
## What this is
TUI/file-manager (Rust, formerly Flea) with GUI mode, favorites, keybind integration.
## Tasks
_See `sources/` — pre-Orion notes preserved verbatim; promote live tasks here as they're worked._
## Open items
_None registered yet (migration)._
## Key files
- Code: `~/Projects/Syft/`
- Sources (pre-Orion notes, preserved): `sources/`
## People
_None yet._

View file

@ -0,0 +1,25 @@
Open Dev Mode
```
bash tests/keymap-gen.sh FLEA_UI=
"
$PWD
/ui"
./target/release/syft --gui
```
e
---
## Hermes notes (2026-09-28)
- Renamed Flea → Syft across tools, packaging, env, state, docs (`b2253ac`); pushed to Forgejo `avi/Syft`.
- App icon added (`506e4c8`, 256px raster `3d814e4`, PKGBUILD install `efed3fc`); app entry added to the applications list; terminal command: `syft`.
- Settings: "Places" section renamed to "Favorites" (`c4ca443`); Sort A-Z action added (`98bd32b`) and ungated from selection (`f303089`) after several on-device rounds — earlier builds had the sort greyed out / clicks landing on files under the settings dialog (overlay input-layer issue).
- Test suite: `./tests/run-all.sh` (7 suites; some need `python-gobject` and a writable `/home/syft-sandbox` — those failures were environment, not code).
- Package built with `makepkg -f` → `pkg.tar.zst`.
- Keybind pattern: `bind=SUPER+ALT+B, exec, uwsm app -- syft` (after unbinding the old SUPER+ALT+B).

0
2. Areas/.gitkeep Normal file
View file

View file

@ -0,0 +1,33 @@
---
type: area
status: standing
id_prefix: BOLT
workstream_counter: 0
parent:
updated: 2026-10-01
tags:
- hub
- boltcard
---
# Boltcard
## What this is
Boltcard — ongoing note per owner (2026-10-01): a standing interest/responsibility, not a finite project.
## Workstreams
_(Projects register here as `BOLT-N` when created.)_
## Open items
_None yet._
## Key files
[[Boltcard/knowledge/_index|knowledge index]]
## People
_None yet._

Some files were not shown because too many files have changed in this diff Show more