Skip to content

Commit 9fc04ba

Browse files
authored
feat: introduce quick note functionality and migrate existing (#55)
1 parent 53c8d85 commit 9fc04ba

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+2646
-232
lines changed

README.md

Lines changed: 93 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
## ✨ Features
2626

2727
- 🧠 **Simplified Daily Reflections**: Single free-form text entry to capture your thoughts
28+
- 📝 **Quick Capture**: Save notes instantly without AI processing for raw thoughts and meeting notes
2829
- 🎤 **Voice Entry**: Record audio notes with local-first speech-to-text transcription
2930
- 📊 **Weekly Reviews**: AI-generated summaries of your week with themes and patterns
3031
- 🔍 **Searchable Archive**: Full-text search across all your memories (including voice transcripts)
@@ -80,46 +81,105 @@ Perfect for sensitive work, offline environments, or privacy-conscious users.
8081
8182
## 📋 Command Reference
8283
84+
### note Command
85+
86+
Capture quick notes without AI processing. Perfect for raw thoughts, meeting notes, or anything you want to save immediately without LLM summarization.
87+
88+
```
89+
tom note [content] [options]
90+
91+
Arguments:
92+
content Note content (optional). If omitted, opens interactive editor.
93+
94+
Options:
95+
--voice Record voice note (wav) with automatic speech-to-text transcription
96+
--stt <engine> STT engine: auto (default), local, or openai (only used with --voice)
97+
--no-edit Skip interactive editor, use content from command line
98+
--output-json Output results in JSON format
99+
100+
Examples:
101+
tom note # Interactive mode (opens editor)
102+
tom note --voice # Voice note with auto STT
103+
tom note --voice --stt local # Voice note with local whisper.cpp
104+
tom note --voice --stt openai # Voice note with OpenAI Whisper API
105+
tom note "Quick thought" --no-edit # Quick capture mode
106+
```
107+
108+
**Storage**: Notes are saved to `<memory-dir>/note/` directory with filename `MM-DD-YYYY_N.md` where N is an incremental counter for that day.
109+
110+
**Use Cases**:
111+
- Quick capture without waiting for AI processing
112+
- Meeting notes that don't need summarization
113+
- Raw thoughts you want to preserve exactly as written
114+
- Voice notes with transcription (no AI summary)
115+
116+
**Difference from `/today`**: The `/note` command saves your input immediately without AI processing, while `/today` also generates an AI-powered summary using prompt templates.
117+
83118
### today Command
84119

120+
Capture daily reflections with AI-powered summarization. Opens an interactive editor, then processes your input using a prompt template to generate structured summaries.
121+
85122
```
86123
tom today [notes] [options]
87124
88125
Arguments:
89126
notes Notes for today (optional). If omitted, opens interactive editor.
90127
91128
Options:
129+
--voice Record voice note (wav) with automatic speech-to-text transcription
130+
--stt <engine> STT engine: auto (default), local, or openai (only used with --voice)
92131
--no-edit Skip interactive editor, use notes from command line
93132
--use-default-template Automatically use default template (no prompt)
94133
--template <name> Use specific template by name (without .md)
95134
--provider <provider> Override LLM provider (OpenAI or Anthropic)
96135
--output-json Output results in JSON format
97136
98137
Examples:
99-
tom today # Interactive mode (opens editor)
100-
tom today "Quick note" --no-edit # Quick entry mode
101-
tom today "Note" --no-edit --use-default-template # Fastest mode (< 3 seconds)
138+
tom today # Interactive mode with AI processing
139+
tom today --voice # Voice entry with auto STT + AI summary
140+
tom today --voice --stt local # Voice with local whisper.cpp + AI summary
141+
tom today "Quick note" --no-edit # Quick entry with AI summary
142+
tom today "Note" --no-edit --use-default-template # Fastest AI mode (< 3 seconds)
102143
tom today "Note" --no-edit --template "standup" # Use specific template
103144
```
104145

105-
### Voice Entry (NEW)
146+
**Storage**: Creates two files in `<memory-dir>/note/`:
147+
- `MM-DD-YYYY_N.md` - Your raw input (same format as `/note` command)
148+
- `MM-DD-YYYY_N_generated.md` - AI-generated summary using selected template
106149

107-
Capture daily reflections using voice instead of typing:
150+
**Available Templates**:
151+
- `daily-summary` - Retrospective reflection (Key Events, Themes, To-Do Items)
152+
- `daily-standup` - Forward-looking planning (Priorities, Blockers, Success Criteria)
153+
- `journal` - Emotional reflection and insights
154+
- `organize` - Task extraction and action items
155+
- `weekly-review` - Weekly retrospective
156+
- `business-meeting` - Meeting summaries
108157

109-
```
110-
tom today --voice [options]
158+
### Voice Entry
111159

112-
Options:
113-
--voice Record audio and transcribe to text
114-
--stt <engine> STT engine: auto (default), local, or openai
115-
--output-json Output results in JSON format
160+
Both `/note` and `/today` commands support voice recording with automatic speech-to-text transcription:
116161

117-
Examples:
118-
tom today --voice # Record voice note (auto STT)
119-
tom today --voice --stt local # Force local whisper.cpp
120-
tom today --voice --stt openai # Force OpenAI Whisper API
162+
```bash
163+
# Voice note (no AI processing)
164+
tom note --voice # Auto STT selection
165+
tom note --voice --stt local # Force local whisper.cpp
166+
tom note --voice --stt openai # Force OpenAI Whisper API
167+
168+
# Voice + AI summary
169+
tom today --voice # Auto STT + AI processing
170+
tom today --voice --stt local # Force local + AI summary
171+
tom today --voice --stt openai # Force OpenAI + AI summary
121172
```
122173

174+
**STT Engine Selection:**
175+
- `auto` (default): Tries local whisper.cpp first, falls back to OpenAI if enabled
176+
- `local`: Forces local whisper.cpp (privacy-focused, no API calls)
177+
- `openai`: Forces OpenAI Whisper API (cloud-based, higher accuracy)
178+
179+
**Key Difference:**
180+
- `/note --voice`: Saves transcript directly (no LLM processing)
181+
- `/today --voice`: Transcript + AI-generated summary
182+
123183
**Prerequisites:**
124184
- **FFmpeg** for audio recording ([Download](https://ffmpeg.org/))
125185
- **whisper.cpp** for local transcription ([Download](https://github.com/ggerganov/whisper.cpp)) OR **OpenAI API key** for cloud transcription
@@ -473,7 +533,7 @@ Ten Second Tom supports **multiple storage providers** to fit your workflow. Cho
473533

474534
**Default File System** (Recommended for new users)
475535
- TST-native hierarchical structure optimized for organization
476-
- Stores entries in: `today/`, `thisweek/`, `templates/`, `config/`
536+
- Stores entries in: `note/`, `thisweek/`, `templates/`, `config/`
477537
- Perfect for standalone use
478538

479539
**Obsidian Vault Integration**
@@ -524,7 +584,7 @@ By default, memories and configuration are stored in `~/ten-second-tom/` in your
524584
├── config/
525585
│ └── config.json # Your configuration (from setup wizard)
526586
├── templates/ # Prompt templates
527-
├── today/ # Daily entries (Default provider)
587+
├── note/ # Quick notes and daily entries (Default provider)
528588
├── thisweek/ # Weekly reviews (Default provider)
529589
└── recording/ # Voice recordings
530590
```
@@ -638,7 +698,7 @@ $ tom today
638698
- [ ] Finalize architecture design
639699
- [ ] Start implementation tomorrow
640700
641-
✅ Daily entry saved: ~/ten-second-tom/today/10-03-2025_1.md
701+
✅ Daily entry saved: ~/ten-second-tom/note/10-03-2025_1_generated.md
642702
```
643703
644704
### Quick Entry Mode
@@ -756,7 +816,8 @@ All commands in shell mode use a slash prefix:
756816
757817
| Command | Description | Example |
758818
|---------|-------------|---------|
759-
| `/today` | Capture today's reflection (single prompt) | `/today` |
819+
| `/note` | Capture quick note without AI processing | `/note` |
820+
| `/today` | Capture today's reflection with AI summary | `/today` |
760821
| `/thisweek` | Generate weekly review | `/thisweek` |
761822
| `/search` | Search memory entries | `/search meeting` |
762823
| `/login` | Authenticate with SSH key | `/login` |
@@ -817,18 +878,20 @@ Your memories are stored as plain markdown files in your configured memory direc
817878
│ ├── daily-summary.md # Default daily template
818879
│ ├── weekly-review.md # Default weekly template
819880
│ └── my-custom.md # Your custom templates
820-
├── today/
821-
│ ├── 10-01-2025_1.md
822-
│ ├── 10-01-2025_2.md # Multiple entries per day supported
823-
│ ├── 10-02-2025_1.md
824-
│ └── 10-03-2025_1.md
881+
├── note/
882+
│ ├── 10-01-2025_1.md # Quick note (no AI processing)
883+
│ ├── 10-01-2025_2.md # Raw input from /today command
884+
│ ├── 10-01-2025_2_generated.md # AI-processed from /today command
885+
│ ├── 10-02-2025_1.md # Quick note
886+
│ └── 10-03-2025_1_generated.md # AI-processed daily entry
825887
├── thisweek/
826-
│ ├── 2025-40-Mon-1.md # Week 40 of 2025, Monday, entry 1
827-
│ └── 2025-41-Fri-1.md # Week 41 of 2025, Friday, entry 1
828-
└── recording/ # Voice recordings (if using --voice or record)
829-
├── 10-21-2025_1.wav # Audio file
830-
├── 10-21-2025_1.txt # Transcription with metadata
831-
└── 10-21-2025_2.wav # Multiple recordings per day supported
888+
│ ├── 2025-40-Mon-1.md # Week 40 of 2025, Monday, entry 1
889+
│ └── 2025-41-Fri-1.md # Week 41 of 2025, Friday, entry 1
890+
└── recording/ # Voice recordings (if using --voice or record)
891+
├── 10-21-2025_1.wav # Audio file
892+
├── 10-21-2025_1.txt # Transcription with metadata
893+
├── 10-21-2025_1_generated.md # AI-processed from /generate command
894+
└── 10-21-2025_2.wav # Multiple recordings per day supported
832895
```
833896
834897
**File Format:**

src/Features/Audio/ConfigureAudio.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@
44
using Microsoft.Extensions.Logging;
55
using TenSecondTom.Infrastructure.Configuration;
66
using TenSecondTom.Shared.Abstractions.UI;
7+
using TenSecondTom.Shared.Constants;
78
using TenSecondTom.Shared.Options;
89
using TenSecondTom.Shared.Results;
910
using TenSecondTom.Features.Audio.Models;
10-
using static TenSecondTom.Features.Audio.Constants.SttProviders;
11+
using static TenSecondTom.Shared.Constants.SttProviders;
1112

1213
namespace TenSecondTom.Features.Audio;
1314

src/Features/Audio/GetSttProviderInfo.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
using MediatR;
2-
using TenSecondTom.Features.Audio.Constants;
2+
using TenSecondTom.Shared.Constants;
33
using TenSecondTom.Shared.Models;
44
using TenSecondTom.Shared.Results;
55

src/Features/Audio/RecordCommandBuilder.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
1-
using TenSecondTom.Features.Audio.Constants;
2-
using TenSecondTom.Features.Audio.Models;
31
using System.CommandLine;
42
using MediatR;
53
using Microsoft.Extensions.DependencyInjection;
64
using Spectre.Console;
7-
using TenSecondTom.Shared.Options;
5+
using TenSecondTom.Features.Audio.Models;
86
using TenSecondTom.Infrastructure.Auth;
97
using TenSecondTom.Infrastructure.Cli;
108
using TenSecondTom.Infrastructure.Configuration;
119
using TenSecondTom.Shared.Constants;
10+
using TenSecondTom.Shared.Options;
1211

1312
namespace TenSecondTom.Features.Audio;
1413

src/Features/Audio/Services/AudioConfigurationValidator.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
using TenSecondTom.Features.Audio.Constants;
21
using TenSecondTom.Shared.Constants;
32
using TenSecondTom.Shared.Options;
43

src/Features/Audio/Services/OpenAiSttProvider.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
using TenSecondTom.Features.Audio.Constants;
21
using System.Diagnostics;
32
using Microsoft.Extensions.Logging;
43
using Microsoft.Extensions.Options;

src/Features/Audio/Services/SttProviderFactory.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
using Microsoft.Extensions.Logging;
2-
using TenSecondTom.Features.Audio.Constants;
3-
using TenSecondTom.Shared.Options;
42
using TenSecondTom.Shared.Constants;
53
using TenSecondTom.Shared.Models;
4+
using TenSecondTom.Shared.Options;
65

76
namespace TenSecondTom.Features.Audio.Services;
87

0 commit comments

Comments
 (0)