Background¶
The short version of why condash is shaped this way. The longer treatments — full pitch, full non-goals list, internals — are linked under each section.
Why Markdown-first¶
Every project tracker answers a few questions: what am I working on, what's its status, what did I decide and why? condash exists because no off-the-shelf tracker gives you all three of these at once:
- The files are yours. Editable in the editor you already use, diffable in git, grep-able from a shell.
- The dashboard is a view, not a second database. Close it and the files don't move; delete it and the files don't move.
- Writing is cheap. No form, no required fields, no schema migration. You type Markdown.
A README looks like this:
---
date: 2026-04-10
kind: project
status: now
apps:
- notes.vcoeur.com
branch: feat/session-cookie-auth
---
# Migrate auth to session-cookie hybrid
## Goal
Drop the JWT dependency without breaking existing sessions.
## Steps
- [x] Audit session-cookie usage
- [~] Implement hybrid read path
- [ ] Migration script for existing tokens
Legacy bold-prose headers (**Date**: 2026-04-10, etc.) are still accepted — see README format.
Every piece earns its keep. The YAML frontmatter parses straight into the metadata block; ## Steps checkboxes work in any Markdown tool. git diff shows exactly what changed when you flip a step. rg "session cookie" finds it in 30 ms.
→ Full pitch with four good-fit scenarios: Why Markdown-first.
What condash deliberately doesn't do¶
- No real-time multi-user collaboration. Local-only; collaboration happens through git — each collaborator on their own checkout of one shared remote.
- No web UI / HTTP server. End-to-end IPC.
- No code editing. Source files open in your IDE via configurable launcher slots.
- No telemetry. Nothing leaves your machine, period.
- No general-purpose terminal. The xterm pane is a log view + project-scoped shell, not a Konsole / iTerm replacement.
- No log search index. The Markdown is indexed in RAM, so a query never re-walks the tree. Terminal transcripts are not — they're the bulk of the bytes and rarely searched, so they stay scanned on disk and only when you pick the Logs filter.
→ Full list with rationale per item: Non-goals.
How the pieces fit¶
condash is an Electron app: a main process (Node.js — filesystem, IPC, watcher) and a renderer (Solid.js — dashboard UI). They talk over a single typed CondashApi IPC contract. Markdown reads on every refresh; mutations rewrite specific lines in your README files. A chokidar watcher fires on every file change so the UI is live without polling.
The window is one shell: an activity rail down the left edge switching four left-hand views (Projects, Tasks, Deliverables, Performance) and five mutually-exclusive right-hand surfaces (Code, Knowledge, Resources, Skills, Logs), with a bottom band shared by the Terminal and the Dashboard. Search is a global modal, not a pane.
→ Process layout, IPC contract, write queue: Internals.
→ Design principles every change should serve: Values.
→ Clone, build, run, ship: Contributing.