One Thing per Folder
The codebase follows one rule: one thing per folder, file matches folder name.Top-Level Layout
Folder Convention
Every folder contains exactly one thing. The primary file matches the folder name:index.ts files. Imports always use the explicit file path via aliases:
Provider/Hook Split Pattern
When a file has both a React component and a hook, split them into separate files. This is required for React Fast Refresh to work correctly.The Runtime Folder
{ workspaceRoot, corpus, ... }. Modules never import each other — they communicate through corpus events.
Data Location
~/.wolffish/ is the ENTIRE footprint. The app stores nothing elsewhere. Uninstall is rm -rf ~/.wolffish/ plus removing the app itself.Workspace Initialization
Thedefaults/workspace/ directory in the source tree is the template. On first launch:
- Wolffish checks if
~/.wolffish/workspace/exists - If it doesn’t, copies
defaults/workspace/into~/.wolffish/workspace/ - If it does, nothing happens — user data is never overwritten
Development Setup
Get the dev environment running.
Adding Brain Modules
Add a new module to the runtime pipeline.