diff --git a/apps/x/packages/core/src/config/config.ts b/apps/x/packages/core/src/config/config.ts index 23046d42..caefad82 100644 --- a/apps/x/packages/core/src/config/config.ts +++ b/apps/x/packages/core/src/config/config.ts @@ -29,16 +29,63 @@ function ensureDefaultConfigs() { } } +// Welcome content inlined to work with bundled builds (esbuild changes __dirname) +const WELCOME_CONTENT = `# Welcome to Rowboat + +This vault is your work memory. + +Rowboat extracts context from your emails and meetings and turns it into long-lived, editable Markdown notes. The goal is not to store everything, but to preserve the context that stays useful over time. + +--- + +## How it works + +**Entity-based notes** +Notes represent people, projects, organizations, or topics that matter to your work. + +**Auto-updating context** +As new emails and meetings come in, Rowboat adds decisions, commitments, and relevant context to the appropriate notes. + +**Living notes** +These are not static summaries. Context accumulates over time, and notes evolve as your work evolves. + +--- + +## Your AI coworker + +Rowboat uses this shared memory to help with everyday work, such as: + +- Drafting emails +- Preparing for meetings +- Summarizing the current state of a project +- Taking local actions when appropriate + +The AI works with deep context, but you stay in control. All notes are visible, editable, and yours. + +--- + +## Design principles + +**Reduce noise** +Rowboat focuses on recurring contacts and active projects instead of trying to capture everything. + +**Local and inspectable** +All data is stored locally as plain Markdown. You can read, edit, or delete any file at any time. + +**Built to improve over time** +As you keep using Rowboat, context accumulates across notes instead of being reconstructed from scratch. + +--- + +If something feels confusing or limiting, we'd love to hear about it. +Rowboat is still evolving, and your workflow matters. +`; + function ensureWelcomeFile() { - // Copy welcome.md to knowledge directory if it doesn't exist + // Create Welcome.md in knowledge directory if it doesn't exist const welcomeDest = path.join(WorkDir, "knowledge", "Welcome.md"); if (!fs.existsSync(welcomeDest)) { - // Look for welcome.md in the dist/knowledge directory (bundled with the package) - // __dirname is dist/config, so we need to go up one level to find dist/knowledge - const welcomeSrc = path.join(__dirname, "..", "knowledge", "welcome.md"); - if (fs.existsSync(welcomeSrc)) { - fs.copyFileSync(welcomeSrc, welcomeDest); - } + fs.writeFileSync(welcomeDest, WELCOME_CONTENT); } }