Skip to content

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:

  1. The files are yours. Editable in the editor you already use, diffable in git, grep-able from a shell.
  2. 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.
  3. 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.