cli + tui to publish to leaflet (wip) & manage tasks, notes & watch/read lists 馃崈
charm
leaflet
readability
golang
1# ROADMAP
2
3Noteleaf is a command-line and TUI tool for managing tasks, notes, media, and articles. This roadmap outlines milestones: current capabilities, planned baseline features (v1), and future directions.
4
5## Core Usability
6
7The foundation across all domains is implemented. Tasks support CRUD operations, projects, tags, contexts, and time tracking. Notes have create, list, read, edit, and remove commands with interactive and static modes. Media queues exist for books, movies, and TV with progress and status management. SQLite persistence is in place with setup, seed, and reset commands. TUIs and colorized output are available.
8
9## RC
10
11### CORE
12
13- [ ] Ensure **all documented subcommands** exist and work:
14 - Tasks: add, list, view, update, edit, delete, projects, tags, contexts, done, start, stop, timesheet
15 - Notes: create, list, read, edit, remove
16 - Books: add, list, reading, finished, remove, progress, update
17 - Movies: add, list, watched, remove
18 - TV: add, list, watching, watched, remove
19 - Articles: add, list, view, read, remove
20- [ ] Confirm all **aliases** work (`todo`, `ls`, `rm`, etc.).
21- [ ] Verify **flags** and argument parsing match man page (priority, project, context, due, tags, etc.).
22- [ ] Implement or finish stubs (e.g. `config management` noted in code).
23
24### Task Management Domain
25
26- [ ] Verify tasks can be created with all attributes (priority, project, context, due date, tags).
27- [ ] Confirm task listing supports interactive and static modes.
28- [ ] Implement status filtering (`pending`, `completed`, etc.).
29- [ ] Validate time tracking (start/stop) writes entries and timesheet summarizes correctly.
30- [ ] Ensure update supports add/remove tags and all fields.
31- [ ] Test interactive editor (`task edit`).
32
33### Notes Domain
34
35- [ ] Implement note creation from:
36 - Inline text
37 - File (`--file`)
38 - Interactive input (`--interactive`)
39- [ ] Verify note list interactive TUI works, static list fallback works.
40- [ ] Confirm filtering by tags and `--archived`.
41- [ ] Ensure notes can be opened, edited in `$EDITOR`, and deleted.
42
43### Media Domains
44
45#### Books
46
47- [ ] Implement search + add (possibly external API).
48- [ ] Verify list supports statuses (`queued`, `reading`, `finished`).
49- [ ] Progress updates (`book progress`) work with percentages.
50- [ ] Status update (`book update`) accepts valid values.
51
52#### Movies
53
54- [ ] Implement search + add.
55- [ ] Verify `list` with status filtering (`all`, `queued`, `watched`).
56- [ ] Confirm `watched`/`remove` commands update correctly.
57
58#### TV
59
60- [ ] Implement search + add.
61- [ ] Verify `list` with multiple statuses (`queued`, `watching`, `watched`).
62- [ ] Ensure `watching`, `watched`, `remove` commands behave correctly.
63
64#### Articles
65
66- [ ] Implement article parser (XPath/domain-specific rules).
67- [ ] Save articles in Markdown + HTML.
68- [ ] Verify metadata is stored in DB.
69- [ ] Confirm list supports query, author filter, limit.
70- [ ] Test article view/read/remove.
71
72### Configuration & Data
73
74- [ ] Implement **config management** (flagged TODO in code).
75- [ ] Define config file format (TOML, YAML, JSON).
76- [ ] Set default config/data paths:
77 - Linux: `~/.config/noteleaf`, `~/.local/share/noteleaf`
78 - macOS: `~/Library/Application Support/noteleaf`
79 - Windows: `%APPDATA%\noteleaf`
80- [ ] Implement overrides with environment variables (`NOTELEAF_CONFIG`, `NOTELEAF_DATA_DIR`).
81- [ ] Ensure consistent DB schema migrations and versioning.
82
83### Documentation
84
85- [ ] Finalize **man page** (plaintext + roff).
86- [ ] Write quickstart guide in `README.md`.
87- [ ] Add examples for each command.
88- [ ] Document config file with defaults and examples.
89- [ ] Provide developer docs for contributing.
90
91### QA
92
93- [ ] Verify **unit tests** for all handlers (TaskHandler, NoteHandler, Media Handlers).
94- [ ] Write **integration tests** covering CLI flows.
95- [ ] Ensure error handling works for:
96 - Invalid IDs
97 - Invalid flags
98 - Schema corruption (already tested in repo)
99- [ ] Test cross-platform behavior (Linux/macOS/Windows).
100
101### Packaging
102
103- [ ] Provide prebuilt binaries (via GoReleaser).
104- [ ] Add installation instructions (Homebrew, AUR, Scoop, etc.).
105- [ ] Version bump to `v1.0.0-rc1`.
106- [ ] Publish man page with release.
107- [ ] Verify `noteleaf --version` returns correct string.
108
109## v1 Features
110
111Planned functionality for a complete baseline release.
112
113### Tasks
114
115- [ ] Model
116 - [ ] Dependencies
117 - [ ] Recurrence (`recur`, `until`, templates)
118 - [ ] Wait/scheduled dates
119 - [ ] Urgency scoring
120- [ ] Operations
121 - [ ] `annotate`
122 - [ ] Bulk edit and undo/history
123 - [ ] `$EDITOR` integration
124- [ ] Reports and Views
125 - [ ] Next actions
126 - [ ] Completed/waiting/blocked reports
127 - [ ] Calendar view
128 - [ ] Sorting and urgency-based views
129- [ ] Queries and Filters
130 - [ ] Rich query language
131 - [ ] Saved filters and aliases
132- [ ] Interoperability
133 - [ ] JSON import/export
134 - [ ] todo.txt compatibility
135
136### Notes
137
138- [ ] Commands
139 - [ ] `note search`
140 - [ ] `note tag`
141 - [ ] `note recent`
142 - [ ] `note templates`
143 - [ ] `note archive`
144 - [ ] `note export`
145- [ ] Features
146 - [ ] Full-text search
147 - [ ] Linking between notes, tasks, and media
148
149### Media
150
151- [ ] Articles/papers/blogs
152 - [ ] Parser with domain-specific rules
153 - [ ] Commands: `add`, `list`, `view`, `remove`
154 - [ ] Metadata validation and storage
155- [ ] Books
156 - [ ] Source tracking and ratings
157 - [ ] Genre/topic tagging
158- [ ] Movies/TV
159 - [ ] Ratings and notes
160 - [ ] Genre/topic tagging
161 - [ ] Episode/season progress for TV
162 - [ ] Platform/source tracking
163
164## Beyond v1
165
166Features that demonstrate Go proficiency and broaden Noteleaf鈥檚 scope.
167
168### Tasks
169
170- [ ] Parallel report generation and background services
171- [ ] Hook system for task lifecycle events
172- [ ] Plugin mechanism
173- [ ] Generics-based filter engine
174- [ ] Functional options for configuration
175- [ ] Error handling with wrapping and sentinel checks
176
177### Notes
178
179- [ ] Templates system for note types
180- [ ] Versioning and history
181- [ ] Export with formatting
182- [ ] Import from other systems
183
184### Media
185
186- [ ] External imports (Goodreads, IMDB, Letterboxd)
187- [ ] Cross-referencing across media types
188- [ ] Analytics: velocity, completion rates
189
190### Articles
191
192- [ ] Enhanced parsing coverage
193- [ ] Export to multiple formats
194- [ ] Linking with tasks and notes
195
196### User Experience
197
198- [ ] Shell completions
199- [ ] Manpages and docs generator
200- [ ] Theming and customizable output
201- [ ] Calendar integration
202
203### Tasks
204
205- [ ] Sub-tasks and hierarchical tasks
206- [ ] Visual dependency mapping
207- [ ] Forecasting and smart suggestions
208- [ ] Habit and streak tracking
209- [ ] Context-aware recommendations
210
211### Notes
212
213- [ ] Graph view of linked notes
214- [ ] Content extraction and summarization
215- [ ] Encryption and privacy controls
216
217### Media
218
219- [ ] Podcast and YouTube management
220- [ ] Multi-format (audiobooks, comics)
221- [ ] Media consumption goals and streaks
222- [ ] Media budget tracking
223- [ ] Seasonal and energy-based filtering
224
225### Articles
226
227- [ ] Content validation
228- [ ] Encryption support
229- [ ] Advanced classification
230
231## Technical Infrastructure
232
233### Completed
234
235SQLite persistence, CI with GitHub Actions and Codecov, TUIs with Charm stack, initial help system.
236
237### Planned
238
239- Prebuilt binaries for releases
240- Installation and usage documentation
241- Contribution guide and developer docs
242- Consistent argument parsing
243- Backup/restore
244- Multiple profiles
245- Optional synchronization
246
247## v1 Feature Matrix
248
249| Domain | Feature | Status |
250|----------|-----------------------|-----------|
251| Tasks | CRUD | Complete |
252| Tasks | Projects/tags | Complete |
253| Tasks | Time tracking | Complete |
254| Tasks | Dependencies | Planned |
255| Tasks | Recurrence | Planned |
256| Tasks | Wait/scheduled | Planned |
257| Tasks | Urgency scoring | Planned |
258| Notes | CRUD | Complete |
259| Notes | Search/tagging | Planned |
260| Media | Books/movies/TV | Complete |
261| Media | Articles | Planned |
262| Media | Source/ratings | Planned |
263| Articles | Parser + storage | Planned |
264| System | SQLite persistence | Complete |
265| System | Synchronization | Future |
266| System | Import/export formats | Future |