Piles
Part of the piles repository.
Claim
Chronological inbox lists force users to mine every message for signal. Piles replaces the flat list with a desk-like canvas of message previews — stacked by sender, decorated with sentiment borders and urgency glow — plus a vertical tab tray that never autoloads the next message.
Visual language
| Signal | Encoding | Values |
|---|---|---|
Sentiment |
Border color + label |
Good (green), Mostly Good (blue), Neutral (grey), Mostly Bad (yellow), Bad (red) |
Urgency |
Glow behind card |
Independent of sentiment |
Importance |
Striped border |
Tone-mapped “needs you now” vs platform noise |
Freshness |
Opacity on landing canvas |
Full → greyed (sorted) → removed (~10h) |
Architecture
Follow Prototype strategy:
-
Core — message IR, piles, sentiment types (TypeScript + D JSON interop)
-
Controller — lifecycle timers, tray, canvas drag, layout mode, search
-
Renderers — vanilla DOM, Avalonia controls, Gmail-chrome mock for screenshots
The pattern lives here. The mail client (IMAP, SQLite cache, installable Avalonia/Electron) lives in Desktop-Tooling/piles. See Division of labor.
Related
-
Fundamental contexts — linear list vs zoomable canvas
-
Literature seed: cursor-seed-2026-08-19.md