Skip to content

Commit 623b93e

Browse files
feat: implement core architecture, plugin system, AI integration, and UI help components
1 parent c1ad4ec commit 623b93e

27 files changed

Lines changed: 2414 additions & 230 deletions

File tree

β€ŽCHANGELOG.mdβ€Ž

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,32 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [1.3.0]
9+
10+
### Added
11+
12+
* **Import/Export Menu**: Introduced a dedicated menu (accessible via `x`) to easily import and export tasks in multiple formats directly from the TUI.
13+
* **CSV and Text Support**: Added support for `.csv` and `.txt` formats to both the TUI and the CLI API, expanding data portability beyond JSON and Markdown.
14+
* **API-Bound Transitions**: The new menu binds directly to the Kairo API, ensuring consistent data handling and validation between the TUI and headless automation.
15+
* **Dynamic File Path Input**: Users can now specify custom file paths for both imports and exports with real-time feedback and default filename suggestions.
16+
* **Bulk Deletion UI**: Added a quick 'Delete All' action (`a`) to the delete confirmation dialog for rapid workspace clearing.
17+
* **Lua Plugin Themes**: The Lua plugin system now supports curating custom themes. Plugins can return a `themes` table with full control over colors and appearance, which persist across sessions.
18+
* **AI Assistant Panel**: Integrated Gemini (3.1 Flash Lite, 2.5 Flash, 2.0 Flash) (`ctrl+a`) for natural language task management. Create, list, and update tasks using conversational prompts with total tool-calling app control.
19+
* **Live UI Syncing**: AI operations via the assistant panel now trigger live asynchronous UI refreshes (zero restart needed).
20+
* **AI Model Selection**: Users can seamlessly switch between Gemini models live via the Settings TUI (using `left`/`right` arrow keys) or in `config.toml`.
21+
* **Google Search Agent**: Running Kairo with `gemini-2.5-flash-lite` automatically unlocks native Google Search grounding capabilities for web-aware automation.
22+
* **Integrated MCP Server**: Built-in Model Context Protocol server (`kairo mcp`) that exposes your entire task database (including deep metadata like `deadline`, `status`, `tags`, and `priority`) to other AI agents.
23+
* **Settings Reset**: Quickly reset all app configurations back to default inside the settings menu by pressing `r`.
24+
* **API & MCP Theme Control**: Change the entire TUI theme via the headless API (`kairo api set_theme`) or MCP tools (`kairo_set_theme`).
25+
* **API & MCP Plugin Control**: Full management of Lua plugins (list, get, write, delete) through the CLI API and MCP server, enabling AI agents to extend Kairo's functionality.
26+
* **Status Indicators**: The footer now displays a real-time "MCP" pill when the built-in server is active.
27+
28+
### Changed
29+
30+
* **CLI Enhancements**: Updated `kairo import` and `kairo export` commands to support the new `--format [csv|txt]` options.
31+
* **Command Palette**: Added "Import/Export" to the global command palette for quick access.
32+
33+
834
## [1.2.4]
935

1036
### Added

β€ŽREADME.mdβ€Ž

Lines changed: 74 additions & 107 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,10 @@ Built with [Bubble Tea](https://github.com/charmbracelet/bubbletea) (TUI framewo
5454
| **Responsive Auto-Resize**| Strict grid enforcement with dynamic title truncation preventing layout drifts |
5555
| **Offline Storage** | SQLite with WAL for reliability and concurrent access |
5656
| **Git Sync** | Optional repository-backed sync with per-task JSON files |
57-
| **Import/Export** | JSON and Markdown support for data portability |
57+
| **Import/Export** | JSON, Markdown, CSV, and Text support for data portability |
58+
| **AI Assistant** | Integrated Gemini (3.1/2.5/2.0) with total app control, Google Search, & live UI refreshes |
59+
| **MCP Server** | Built-in Model Context Protocol server exposing entire task schema, themes, and plugins |
60+
| **Custom Themes**| Curate and share custom themes via Lua plugins or API |
5861

5962
---
6063

@@ -138,6 +141,18 @@ kairo api delete all
138141

139142
# Advanced JSON interface
140143
kairo api --json '{"action": "create", "payload": {"title": "API Task", "tags": ["bot"]}}'
144+
145+
# AI Configuration
146+
kairo api configure-ai set "YOUR_GEMINI_API_KEY"
147+
kairo api configure-ai reset
148+
149+
# Set TUI Theme
150+
kairo api set_theme --theme catppuccin
151+
152+
# Plugin Management (list, get, write, delete)
153+
kairo api plugin_list
154+
kairo api plugin_get --name auto-cleanup.lua
155+
kairo api plugin_delete --name sample.lua
141156
```
142157

143158
### Other CLI Commands
@@ -150,7 +165,8 @@ kairo version
150165
kairo update
151166

152167
# Export tasks
153-
kairo export --format json --out tasks.json
168+
kairo export --format csv --out tasks.csv
169+
kairo export --format txt --out tasks.txt
154170
kairo export --format markdown --out tasks.md
155171

156172
# Import tasks
@@ -171,6 +187,9 @@ kairo help export
171187

172188
# Sync with Git (if configured)
173189
kairo sync
190+
191+
# Start MCP Server (stdio)
192+
kairo mcp
174193
```
175194

176195
---
@@ -200,6 +219,24 @@ plugin.commands = {
200219
{ id = "hello", title = "Say Hello", run = function() kairo.notify("Hello!") end }
201220
}
202221

222+
223+
-- Register custom themes
224+
plugin.themes = {
225+
{
226+
name = "midnight_neon",
227+
is_light = false,
228+
bg = "#000000",
229+
fg = "#ffffff",
230+
muted = "#444444",
231+
border = "#222222",
232+
accent = "#00ff00",
233+
good = "#00ff00",
234+
warn = "#ffff00",
235+
bad = "#ff0000",
236+
overlay = "#111111",
237+
}
238+
}
239+
203240
return plugin
204241
```
205242

@@ -257,6 +294,15 @@ Kairo features a **minimalist design system** optimized for clarity and focus.
257294
| `?` | ❓ Show help menu |
258295
| `q` | ❌ Quit |
259296

297+
### AI Assistant Shortcuts
298+
299+
| Shortcut | Action |
300+
|----------|--------|
301+
| `ctrl+a` | πŸ€– Toggle AI Assistant Panel |
302+
| `ctrl+l` | 🧹 Clear AI Chat History |
303+
| `enter` | ↡ Submit Prompt |
304+
| `esc` | ❌ Close AI Panel |
305+
260306
### Plugin Menu Shortcuts
261307

262308
| Shortcut | Action |
@@ -326,10 +372,12 @@ Then edit the file or use the built-in Settings menu (`ctrl+s` in Kairo) to cust
326372
- **Premium Dark:** `catppuccin` (Default), `midnight`, `aurora`, `cyberpunk`, `dracula`, `nord`, `obsidian_bloom`, `neon_reef`, `carbon_sunset`, `vanta_aurora`, `plasma_grape`, `midnight_jade`, `synthwave_minimal`, `graphite_matcha`
327373
- **Premium Light:** `vanilla`, `solarized`, `rose`, `matcha`, `cloud`, `sepia`, `cloud_dancer`, `sakura_sand`, `olive_mist`, `terracotta_air`, `vanilla_sky`, `peach_fuzz_neo`, `coastal_drift`, `matcha_latte`
328374
- **Hybrid/Specialized:** `digital_lavender`, `neo_mint_system`, `sunset_gradient_pro`, `forest_sanctuary`
375+
- **AI Model Selection** β€” Switch between `gemini-3.1-flash-lite-preview`, `gemini-2.5-flash-lite`, and `gemini-2.0-flash-lite` live using ←/β†’ arrows
329376
- **Keybindings** β€” Rebind any keyboard shortcut
330377
- **View ordering** β€” Customize your task view tabs
331378
- **Sync settings** β€” Configure Git repository sync
332379
- **Plugins** β€” Toggle and manage your Lua plugins
380+
- **Reset to Defaults** β€” Press `r` inside the Settings menu to restore all factory settings
333381

334382
---
335383

@@ -395,111 +443,30 @@ UI Re-render β†’ Instant User Feedback
395443

396444
```
397445
kairo/
398-
β”œβ”€β”€ CHANGELOG.md
399-
β”œβ”€β”€ cmd
400-
β”‚ └── kairo
401-
β”‚ └── main.go
402-
β”œβ”€β”€ CODE_OF_CONDUCT.md
403-
β”œβ”€β”€ configs
404-
β”‚ └── kairo.example.toml
405-
β”œβ”€β”€ CONTRIBUTING.md
406-
β”œβ”€β”€ go.mod
407-
β”œβ”€β”€ go.sum
408-
β”œβ”€β”€ internal
409-
β”‚ β”œβ”€β”€ api
410-
β”‚ β”‚ └── api.go
411-
β”‚ β”œβ”€β”€ app
412-
β”‚ β”‚ β”œβ”€β”€ model.go
413-
β”‚ β”‚ └── msg.go
414-
β”‚ β”œβ”€β”€ buildinfo
415-
β”‚ β”‚ └── buildinfo.go
416-
β”‚ β”œβ”€β”€ completion
417-
β”‚ β”‚ └── completion.go
418-
β”‚ β”œβ”€β”€ config
419-
β”‚ β”‚ β”œβ”€β”€ config.go
420-
β”‚ β”‚ └── config_test.go
421-
β”‚ β”œβ”€β”€ core
422-
β”‚ β”‚ β”œβ”€β”€ codec
423-
β”‚ β”‚ β”‚ β”œβ”€β”€ json.go
424-
β”‚ β”‚ β”‚ └── markdown.go
425-
β”‚ β”‚ β”œβ”€β”€ core_test.go
426-
β”‚ β”‚ β”œβ”€β”€ ids.go
427-
β”‚ β”‚ β”œβ”€β”€ nlp
428-
β”‚ β”‚ β”‚ └── deadline.go
429-
β”‚ β”‚ β”œβ”€β”€ task.go
430-
β”‚ β”‚ └── view.go
431-
β”‚ β”œβ”€β”€ hooks
432-
β”‚ β”‚ └── hooks.go
433-
β”‚ β”œβ”€β”€ lua
434-
β”‚ β”‚ └── engine.go
435-
β”‚ β”œβ”€β”€ plugins
436-
β”‚ β”‚ └── host.go
437-
β”‚ β”œβ”€β”€ search
438-
β”‚ β”‚ β”œβ”€β”€ fuzzy.go
439-
β”‚ β”‚ β”œβ”€β”€ fuzzy_test.go
440-
β”‚ β”‚ └── index.go
441-
β”‚ β”œβ”€β”€ service
442-
β”‚ β”‚ └── service.go
443-
β”‚ β”œβ”€β”€ storage
444-
β”‚ β”‚ β”œβ”€β”€ migrations.go
445-
β”‚ β”‚ β”œβ”€β”€ repo.go
446-
β”‚ β”‚ └── repo_test.go
447-
β”‚ β”œβ”€β”€ sync
448-
β”‚ β”‚ └── engine.go
449-
β”‚ β”œβ”€β”€ ui
450-
β”‚ β”‚ β”œβ”€β”€ detail
451-
β”‚ β”‚ β”‚ └── model.go
452-
β”‚ β”‚ β”œβ”€β”€ editor
453-
β”‚ β”‚ β”‚ └── model.go
454-
β”‚ β”‚ β”œβ”€β”€ help
455-
β”‚ β”‚ β”‚ └── model.go
456-
β”‚ β”‚ β”œβ”€β”€ keymap
457-
β”‚ β”‚ β”‚ β”œβ”€β”€ keymap.go
458-
β”‚ β”‚ β”‚ β”œβ”€β”€ keymap_test.go
459-
β”‚ β”‚ β”‚ β”œβ”€β”€ normalize.go
460-
β”‚ β”‚ β”‚ └── normalize_test.go
461-
β”‚ β”‚ β”œβ”€β”€ palette
462-
β”‚ β”‚ β”‚ └── model.go
463-
β”‚ β”‚ β”œβ”€β”€ plugin_menu
464-
β”‚ β”‚ β”‚ └── model.go
465-
β”‚ β”‚ β”œβ”€β”€ render
466-
β”‚ β”‚ β”‚ β”œβ”€β”€ easing.go
467-
β”‚ β”‚ β”‚ └── render.go
468-
β”‚ β”‚ β”œβ”€β”€ settings
469-
β”‚ β”‚ β”‚ └── model.go
470-
β”‚ β”‚ β”œβ”€β”€ styles
471-
β”‚ β”‚ β”‚ └── styles.go
472-
β”‚ β”‚ β”œβ”€β”€ tasklist
473-
β”‚ β”‚ β”‚ └── model.go
474-
β”‚ β”‚ β”œβ”€β”€ theme
475-
β”‚ β”‚ β”‚ └── theme.go
476-
β”‚ β”‚ └── theme_menu
477-
β”‚ β”‚ └── model.go
478-
β”‚ β”œβ”€β”€ updater
479-
β”‚ β”‚ β”œβ”€β”€ checksums.go
480-
β”‚ β”‚ β”œβ”€β”€ download.go
481-
β”‚ β”‚ β”œβ”€β”€ extract.go
482-
β”‚ β”‚ β”œβ”€β”€ github.go
483-
β”‚ β”‚ β”œβ”€β”€ updater.go
484-
β”‚ β”‚ └── windows_helper.go
485-
β”‚ └── util
486-
β”‚ β”œβ”€β”€ paths.go
487-
β”‚ └── util_test.go
488-
β”œβ”€β”€ LICENSE
489-
β”œβ”€β”€ Makefile
490-
β”œβ”€β”€ plugins
491-
β”‚ β”œβ”€β”€ auto-cleanup.lua
492-
β”‚ β”œβ”€β”€ auto-tagger.lua
493-
β”‚ β”œβ”€β”€ sample.lua
494-
β”‚ └── task-logger.lua
495-
β”œβ”€β”€ README.md
496-
β”œβ”€β”€ screenshots
497-
β”‚ └── demo.gif
498-
β”œβ”€β”€ scripts
499-
β”‚ β”œβ”€β”€ install.ps1
500-
β”‚ └── install.sh
501-
β”œβ”€β”€ SECURITY.md
502-
└── VERSION.txt
446+
β”œβ”€β”€ cmd/
447+
β”‚ └── kairo/
448+
β”‚ └── main.go # Entry point for TUI & CLI
449+
β”œβ”€β”€ configs/
450+
β”‚ └── kairo.example.toml # Template configuration
451+
β”œβ”€β”€ internal/
452+
β”‚ β”œβ”€β”€ ai/ # Gemini API & Tool-calling engine
453+
β”‚ β”œβ”€β”€ api/ # Headless JSON API & Plugin control
454+
β”‚ β”œβ”€β”€ app/ # Root TUI state & message bus
455+
β”‚ β”œβ”€β”€ core/ # Task models & NLP logic
456+
β”‚ β”‚ └── codec/ # CSV, JSON, Markdown, Text support
457+
β”‚ β”œβ”€β”€ mcp/ # Model Context Protocol server
458+
β”‚ β”œβ”€β”€ plugins/ # Lua plugin host (host.go)
459+
β”‚ β”œβ”€β”€ storage/ # SQLite & Migration engine
460+
β”‚ β”œβ”€β”€ sync/ # Optional Git-backed sync logic
461+
β”‚ β”œβ”€β”€ ui/ # Componentized TUI (Bubble Tea)
462+
β”‚ β”‚ β”œβ”€β”€ ai_panel/ # Integrated AI assistant
463+
β”‚ β”‚ β”œβ”€β”€ import_export_menu/# Format-aware I/O interface
464+
β”‚ β”‚ β”œβ”€β”€ settings/ # Live configuration & model switching
465+
β”‚ β”‚ └── ...
466+
β”‚ └── util/ # Cross-platform path helpers
467+
β”œβ”€β”€ plugins/ # User-extensible Lua scripts
468+
β”œβ”€β”€ screenshots/ # Demo assets
469+
└── scripts/ # Platform-specific installers
503470
```
504471

505472
---

β€ŽVERSION.txtβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.2.4
1+
1.3.0

0 commit comments

Comments
Β (0)