ZettelFlow Home
Open ZettelFlow, not Obsidian. Home is the single front door to your knowledge system — an IDE-style dashboard for your mind. It reads live from the model and the development journal and tells you, in one narrative surface, where your thinking is and what to work on next.
Opening it
Run "Show home" from the command palette, or click Open next to Home in Settings → ZettelFlow → Zettelkasten toolkit. It updates automatically (debounced) as the vault changes. (Auto-opening Home on Obsidian launch is a planned follow-up.)
What it shows
- Greeting + "you've been thinking for N days" — the count of distinct days you developed an idea, from the private development journal (#162).
- Next session (the headline) — the single most valuable note to continue, from the
nextSessionheuristic below. "Continue Spring Events". - New ideas — notes created in the last 7 days, newest first.
- Main concepts — your best-connected notes (
degreedescending). - Deserves a review — the weekly review's stale-important section: hubs
(
degree ≥ 5) untouched for 30+ days. (Genuinely stale hubs are rare — this is empty on a young vault, by design.) -
Suggested connections — the top morning discoveries (#163): unlinked notes that share context.
-
What to do next (#273) — the top ~5
KnowledgeRecommendations by priority (resolve a contradiction,add a source,connect this idea, …), each derived purely from the model. A row with a target note is click-to-navigate (opens that note); a vault-wide suggestion (add examples / ask questions) is an insight line with no click; when there's nothing actionable it shows "you're all caught up". This is navigation, not execution — clicking never writes; running a recommendation's command from Home is a deferred follow-up.
Every note is one click from opening. Home writes nothing and is fully offline.
The "next session" heuristic
nextSession(model) picks the highest-leverage note: one that is well-connected but
under-developed, where a working session pays off most.
score(note) = degree × (1 − STATE_FACTOR[state])
The note with the maximum score wins (ties broken by path); a vault with no connected, under-developed note (empty / all-isolated / all-evergreen) yields no next session. It is pure and deterministic — unit-tested with exact fixtures (that's AC-2).
Architecture
nextSession(model) (pure, Obsidian-free, unit-tested)
→ { path, reason: "develop-hub" } | null argmax of degree·(1−STATE_FACTOR), path tie-break
buildHome(model, { thinkingDays, now }) (pure, Obsidian-free, unit-tested)
→ { thinkingDays, newIdeas, mainConcepts, reviewDue, suggestedConnections, nextSession }
composes computeWeeklyReview (#160), findDiscoveries (#163), hubs/created, nextSession
ZettelFlowHomeView (ItemView) + HomeComponent (show-home command, no hotkey)
reads DevelopmentJournal.dailyCounts() → thinkingDays, then buildHome(model, {thinkingDays, now})
renders the widgets; note rows open via workspace.openLinkText; writes nothing