You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -19,7 +19,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
19
19
### Fixed
20
20
-**Project Switcher Logic**: Resolved an issue where newly created projects or projects without tasks were hidden from the selection list.
21
21
-**Task Note Editing**: Fixed a UI bug in the result editor that prevented proper task identification in detail view mode.
22
-
-**List Order Alignment**: Fixed misalignment in the task overview when customizing `[list.order]`— columns with no content now render a fixed-width placeholder, preserving alignment across rows regardless of column order.
22
+
-**List Order Alignment**: Fixed misalignment in the task overview when customizing `[list.order]`- columns with no content now render a fixed-width placeholder, preserving alignment across rows regardless of column order.
23
23
-**Sub-task Status Toggle**: Fixed a bug where pressing `z` on a sub-task would apply the status change and outcome note to a different task. The result editor now correctly targets the originally selected task.
24
24
25
25
## [1.7.1] (2026-06-04)
@@ -33,14 +33,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
33
33
-**Task Result / Completion Report**: New `result` field for documenting task outcomes. Press `z` on a completed task to open the result editor dialog; results are visible in the detail view and included in exports.
34
34
-**Open Issue ID System**: Every task now receives a human-friendly ID (`OI000001`, `OI000002`…) in addition to the internal hash ID. Displayed in the detail view and configurable as a list column via `open_issue_id` in `[list.order] right`.
35
35
-**Responsible Person Assignment**: New `responsible` text field in the task editor for tracking task ownership. Visible in the detail view and included in exports.
36
-
-**Project-Scoped Export**: The export dialog now offers a scope selection — export all projects or limit to the current project.
36
+
-**Project-Scoped Export**: The export dialog now offers a scope selection - export all projects or limit to the current project.
37
37
-**Parent Project Inheritance**: Child tasks automatically inherit the project from their parent task when no project is explicitly assigned.
38
38
39
39
### Changed
40
40
-**Config**: Added `open_issue_id` to the default right-side column order and allowed field list.
-**Code Cleanup**: Removed redundant comments, dead stub code, and developer notes across the codebase.
43
-
-**UI Layout Engine**: Complete redesign of task list row layout — title width is now computed dynamically from actual rendered content widths instead of hardcoded magic number (`-40`).
43
+
-**UI Layout Engine**: Complete redesign of task list row layout - title width is now computed dynamically from actual rendered content widths instead of hardcoded magic number (`-40`).
44
44
-**Detail View**: Metadata labels now use computed widths based on actual label content instead of hardcoded 10-character padding, ensuring alignment is maintained regardless of field name lengths.
45
45
-**Modal Overlays**: Result editor and tag filter modals now use responsive widths (`min(60, width-4)`) instead of fixed 60 characters.
46
46
-**FillViewport**: Removed `width+1` off-by-one guard hack and extra bottom padding line. Background filling now uses exact terminal dimensions.
**The terminal task manager for developers who live in their editor.**
8
8
9
-
A premium, minimalist task manager designed for focus. Kairo strips away the noise, relying on structured whitespace and refined typography to keep you in your flow.
9
+
Kairo is a keyboard-first task manager for the terminal. It keeps tasks, projects, recurring work, and notes local, fast, and easy to automate.
go install github.com/programmersd21/kairo/cmd/kairo@latest
62
66
```
63
67
64
-
Then just run:
68
+
Then run:
69
+
65
70
```bash
66
71
kairo
67
72
```
68
73
69
-
Press `n` to create your first task. `ctrl+s` to save. That's it.
74
+
Press `n` to create your first task. Press `ctrl+s` to open settings.
70
75
71
-
> Works best on Alacritty. Some terminals may have rendering quirks — see [#16](https://github.com/programmersd21/kairo/issues/16).
76
+
> Works best on Alacritty. Some terminals may have rendering quirks - see [#16](https://github.com/programmersd21/kairo/issues/16).
72
77
73
78
---
74
79
75
80
## Features
76
81
77
82

78
83
79
-
### ⚡ Genuinely Fast
80
-
Sub-millisecond fuzzy search. Vim bindings (`j/k/gg/G`). Natural language deadlines like `tomorrow 10am` or `next friday`. Full keyboard control — you never touch the mouse.
84
+
### Genuinely Fast
85
+
86
+
Sub-millisecond fuzzy search, Vim bindings (`j/k/gg/G`), and full keyboard control.
87
+
88
+
### Project Sidebar & Hierarchy
89
+
90
+
Organize work into projects and nested task trees. Toggle the sidebar with `ctrl+e` and switch projects with arrow keys.
91
+
92
+
### Recurring Tasks & Results
93
+
94
+
Create weekly or monthly schedules, and attach completion notes when marking work as done.
95
+
96
+
### Your Data, Locally
81
97
82
-
### 🗂 Project Sidebar & Hierarchy
83
-
Organize work into deep hierarchies and separate projects. Toggle the **Project Sidebar** with `ctrl+e` for quick navigation, fuzzy find projects by name, and switch between projects using arrow keys. Project ordering is customizable via `config.toml` (e.g., `[projects] order = "alphabetical"|"recent"`). Nest tasks via the **Parent** field in the editor, and select projects from an interactive list by pressing `Enter` on the **Project** field.
98
+
SQLite with WAL mode. Fully offline. Optional Git-backed sync. Export to JSON, CSV, Markdown, or plain text.
84
99
85
-
### 🔁 Recurring Tasks & Results
86
-
Tasks reappear automatically on a schedule. Weekly (`mon,wed,fri`) or monthly (`15`). When completed, Kairo generates the next instance immediately with a smart due-date preview.
100
+
### Interactive Stats Dashboard & Focus Engine
87
101
88
-
**Task Results**: Document the outcome of your work with completion notes (countermeasures). Press `z` on a task to open the interactive status selection popup — choose from `todo`, `doing`, or `done`. Selecting `done` prompts you for a completion note, ensuring you capture important insights and review your productivity.
102
+
Press `s`to open statistics and `f` to launch the built-in Pomodoro timer.
89
103
90
-
### 🔒 Your Data, Locally
91
-
SQLite with WAL mode. Fully offline. Optional Git-backed sync — no backend, no account, no lock-in. Export to JSON, CSV, Markdown, or plain text on demand. Project organization is preserved in your database.
104
+
### Optional AI
92
105
93
-
### 🧭 Interactive Stats Dashboard & Focus Engine
94
-
Press `s` to open a next-gen "Command Center". Visualize your **Productivity DNA**, track real-time momentum, and get behavioral insights.
106
+
Gemini integration is available for natural-language task creation and management. Toggle it with `ctrl+a`.
95
107
96
-
**Focus Engine**: Press `f` to launch the native Pomodoro timer. Track deep work sessions directly against your active tasks. When a session is active, Kairo displays a "DEEP WORK" pulse in the footer.
108
+
### Beautiful by Default
97
109
98
-
### 🤖 AI — Optional, Never Intrusive
99
-
Gemini integration (`gemini-3.1-flash-lite-preview` / `gemini-2.5-flash-lite` / `gemini-2.0-flash-lite`). Toggle with `ctrl+a`. Create and manage complex recurring tasks with natural language, including assigning to specific projects. Invisible until you need it.
110
+
32 built-in themes, live switching, Markdown preview, and configurable UI behavior.
100
111
101
-
### 🎨 Beautiful by Default
102
-
32 built-in themes with edge-to-edge background coverage. Live switching with `t`. Bento-style layout. Real-time Markdown preview (`ctrl+p`), with configurable default state in `config.toml` under `[edit]`. Cinematic create/complete/delete animations — or disable them entirely in `config.toml`.
112
+
### Extensible to the Core
103
113
104
-
### 🧩 Extensible to the Core
105
-
A Lua plugin system hooks into task events. A headless CLI API enables full scripting. An MCP server opens Kairo to AI agents — with complete support for recurring schedules and nested hierarchies.
114
+
Lua plugins, a headless CLI API, and an MCP server for agent workflows.
106
115
107
-
### ↩️ Undo & Redo
108
-
Kairo now tracks your every move with a local history engine. Instantly reverse mistakes with `ctrl+z` or re-apply undone actions with `ctrl+y`. Supports task creation, deletion (including bulk), editing, and status changes. Everything is synchronized live with the database.
116
+
### Undo & Redo
109
117
110
-
### 🎨 Tag Highlighting
111
-
Color-code your tags directly in `config.toml`. Supports hex codes or theme-aware aliases (e.g., `accent`).
118
+
Track task creation, editing, deletion, and status changes with local history.
119
+
120
+
### Tag Highlighting
121
+
122
+
Color-code tags directly in `config.toml`.
112
123
113
124
```toml
114
125
[tags.highlight]
@@ -121,28 +132,28 @@ diy = "bg=accent"
121
132
122
133
## Keyboard Shortcuts
123
134
124
-
| Key | Action |
125
-
|---|---|
126
-
|`n`| New task |
127
-
|`D`| Duplicate task |
128
-
|`e`| Edit task |
129
-
|`z`| Complete task |
130
-
|`ctrl+d`| Duplicate task |
131
-
|`Space`| Select task / Collapse subtasks |
132
-
|`s`| Stats dashboard |
133
-
|`f`| Focus engine |
134
-
|`ctrl+f`| Filter by tag |
135
-
|`ctrl+e`| Switch project |
136
-
|`p`| Manage plugins |
137
-
|`t`| Switch theme |
135
+
| Key | Action|
136
+
|-------- |---------------------------------- |
137
+
|`n`| New task|
138
+
|`D`| Duplicate task|
139
+
|`e`| Edit task|
140
+
|`z`| Complete task|
141
+
|`ctrl+d`| Duplicate task |
142
+
|`Space`| Select task / Collapse subtasks|
143
+
|`s`| Stats dashboard|
144
+
|`f`| Focus engine|
145
+
|`ctrl+f`| Filter by tag |
146
+
|`ctrl+e`| Switch project |
147
+
|`p`| Manage plugins|
148
+
|`t`| Switch theme|
138
149
|`ctrl+p`| Command palette / Markdown preview |
139
-
|`ctrl+a`| AI panel |
140
-
|`ctrl+s`| Settings |
141
-
|`x`| Import / Export |
142
-
|`?`| Help |
143
-
|`ctrl+z`| Undo last action |
144
-
|`ctrl+y`| Redo last undone |
145
-
|`ctrl+w`| Welcome tour |
150
+
|`ctrl+a`| AI panel |
151
+
|`ctrl+s`| Settings |
152
+
|`x`| Import / Export|
153
+
|`?`| Help|
154
+
|`ctrl+z`| Undo last action |
155
+
|`ctrl+y`| Redo last undone |
156
+
|`ctrl+w`| Welcome tour |
146
157
147
158
<divalign="center">
148
159
<imgsrc="screenshots/new_task.png"width="30%" />
@@ -160,7 +171,7 @@ diy = "bg=accent"
160
171
161
172
## CLI Automation
162
173
163
-
Kairo exposes a full CLI API for scripting and CI pipelines, with complete support for `parent_id` and `collapsed` state:
174
+
Kairo exposes a full CLI API for scripting and CI pipelines, with support for `parent_id` and `collapsed` state:
Kairo can be configured via `config.toml` in your application data directory.
238
249
239
250
### Task List
251
+
240
252
You can customize the fields shown on the right side of the task list:
241
253
242
254
```toml
@@ -247,41 +259,45 @@ right = ["tags", "due", "priority"]
247
259
Valid values for `right` are: `tags`, `due`, `priority`.
248
260
249
261
### Task Fields
250
-
***Minimal Due Mode**: Abbreviate "overdue" to "OD" and use a fixed-width column for consistent task list alignment. Enabled by default.
251
-
```toml
252
-
[list.fields.due]
253
-
minimal = true
254
-
```
255
-
* **wait_until**: Hide a task from the task list until the specified datetime. If the task is recurring, new instances are not generated/shown until `wait_until` has passed. Format: `yyyy-MM-dd HH:mm`.
256
-
* **until**: Stop generating new recurring instances after the specified datetime. Existing instances may remain visible. Format: `yyyy-MM-dd HH:mm`.
262
+
263
+
**Minimal Due Mode**: Abbreviate overdue states and use a fixed-width column for consistent alignment.
264
+
265
+
```toml
266
+
[list.fields.due]
267
+
minimal = true
268
+
```
269
+
270
+
**wait_until**: Hide a task from the task list until the specified datetime.
271
+
272
+
**until**: Stop generating new recurring instances after the specified datetime.
Prefer not to edit files? `ctrl+s` opens the in-app settings menu.
274
290
275
291
---
276
292
277
293
## Roadmap
278
294
279
-
- Encrypted multi-workspace support
280
-
- Event-sourced sync engine
281
-
- Sandboxed plugin environment
282
-
- Smart task suggestions
283
-
- Plugin marketplace
284
-
- Streaming performance optimizations
295
+
* Encrypted multi-workspace support
296
+
* Event-sourced sync engine
297
+
* Sandboxed plugin environment
298
+
* Smart task suggestions
299
+
* Plugin marketplace
300
+
* Streaming performance optimizations
285
301
286
302
---
287
303
@@ -299,7 +315,7 @@ Prefer not to edit files? `ctrl+s` opens the in-app settings menu.
299
315
300
316
## Contributing
301
317
302
-
PRs are welcome — especially for themes, plugins, performance, and docs. If something bugs you, fix it.
318
+
PRs are welcome - especially for themes, plugins, performance, and docs. If something bugs you, fix it.
303
319
304
320
Huge thanks to [@Tornado300](https://github.com/Tornado300), [@riodelphino](https://github.com/riodelphino) and [@FuryRacer](https://github.com/FuryRacer) for key bug fixes and improvements that made Kairo better for everyone.
0 commit comments