# Memory Palace

A hybrid workspace combining Obsidian-style knowledge management with code development.

## 📚 Documentation

**New to this workspace?** 
- Setup: See [SETUP.md](SETUP.md) for installation on a new computer
- Obsidian Guide: See [docs/OBSIDIAN_GUIDE.md](docs/OBSIDIAN_GUIDE.md) for comprehensive guide

## 📁 Structure

### Documentation (`/docs`)

- **daily/** - Daily notes and journal entries
- **projects/** - Project-specific documentation
- **concepts/** - Evergreen notes and core concepts
- **fleeting/** - Quick captures and temporary notes
- **assets/** - Images, diagrams, and attachments
- **reference-material/** - Reference docs and external materials

### Code (`/code`)

- **bookmarklets/** - Browser bookmarklets and utilities
- **junk-drawer/** - Miscellaneous code, scripts, and work-in-progress items
- **scratchpad/** - Experimental code organized by language
  - python/
  - javascript/
  - typescript/
- **templates/** - Reusable code templates
- **utils/** - Build tools and generators (bookmarklet maker, git tools, etc.)

## 🚀 Getting Started

**New to this workspace?** See [SETUP.md](SETUP.md) for complete setup instructions on a new computer.

### Creating Notes

- Press `Cmd+Shift+P` and type "Obsidian: Open Today's Daily Note" for daily notes
- Use `[[wiki-style links]]` to connect notes
- Quick Switcher: "Obsidian: Quick Switcher" to navigate between notes
- Graph View: "Obsidian: Open Graph View" to visualize connections

### Linking Notes

- Type `[[` to search and link to other notes
- Right-click on a note to see backlinks
- Use the graph view to visualize connections

### Writing Code

- Navigate to `/code` folders for development
- Use `Cmd+Shift+P` → "Code Runner: Run Code" to execute scripts
- Bookmarks extension: `Cmd+Alt+K` to toggle bookmarks

## 📚 Key Features

### Documentation Features

- **Wiki-style linking** - Connect ideas with `[[links]]` ("Obsidian: Show Backlinks")
- **Graph visualization** - Visual map of your knowledge ("Obsidian: Open Graph View")
- **Daily notes** - Quick capture with today's note ("Obsidian: Open Today's Daily Note")
- **Quick Switcher** - Fast navigation between notesowledge
- **Daily notes** - Automatic daily note creation

### Code Features

- **Multi-language support** - Python, JavaScript, TypeScript
- **Quick execution** - Run code snippets instantly
- **Code bookmarks** - Mark important code sections
- **Todo tracking** - Track TODOs across all files

## 🎯 Useful Comma   | Shortcut   | Description                         |
| ------------------ | ---------- | ----------------------------------- |
| Daily Note         | -          | Obsidian: Open Today's Daily Note   |
| Quick Switcher     | -          | Obsidian: Quick Switcher            |
| Show Graph         | -          | Obsidian: Open Graph View           |
| Show Backlinks     | -          | Obsidian: Show Backlinks            |
| Run Code           | Ctrl+Alt+N | Execute current file                |
| Toggle Bookmark    | Cmd+Alt+K  | Mark/unmark code location           |
| Show Todos         | -          | Todo Tree: Focus on View            |
| Toggle Bookmark | Cmd+Alt+K  | Mark/unmark code location |
| Show Todos      | -          | Todo Tree: Focus on View  |

## 🔍 Search Tips

- Use `Cmd+P` for quick file navigation
- `Cmd+Shift+F` for workspace-wide search
- Todo Tree automatically finds TODO, FIXME, NOTE, IDEA tags

## 📝 Note-Taking Tips

1. Use descriptive filenames (automatically slugified)
2. Start with fleeting notes, refine into concepts
3. Link liberally - connections create value
4. Review backlinks regularly to discover patterns

## 💡 Bookmarklet Development

1. Write bookmarklets as regular JavaScript in `/code/bookmarklets/`
2. Run `npm run bookmarklet -- code/bookmarklets/your-file.js`
3. Generator removes comments, minifies, and copies to clipboard
4. Paste into browser bookmark URL field

See [code/bookmarklets/README.md](code/bookmarklets/README.md) for detailed instructions.

## 🔧 Customization

Edit `.vscode/settings.json` to customize:

- Daily note location and format
- Todo tags and highlighting
- Code execution behavior
- Search exclusions

## 📦 Module System

This project uses **ES modules** (import/export), not CommonJS (require):

- `package.json` is configured with `"type": "module"`
- Use `import` and `export` statements in all JavaScript files
- See [code/templates/](code/templates/) for examples

## 🔄 Version Control

**Auto-commit enabled via GitDoc:**

- Automatically commits changes 1 second after save
- Auto-pushes after each commit
- Pull on workspace open
- View history with Git Graph (`Cmd+Shift+P` → "Git Graph")
- Rollback using Timeline (right-click file → "Open Timeline")

See [SETUP.md](SETUP.md) for git configuration and rollback instructions.

---

_Start exploring by creating your first note or diving into the code folders!_
