Adds [tools] section to config with boolean toggles for each MCP tool.
All tools enabled by default; conditionally registered based on config.
Wizard uses multi-select checkbox UI for tool selection during fresh
setup and reconfiguration. Example config and summary updated
accordingly.
Also fixes stale module paths in exhaustruct exclusions and disables
ireturn linter (interface returns are intentional in shared package).
Assisted-by: Claude Opus 4.5 via Crush
Also integrates fang for version handling and fixes build targets
to use root package so ldflags work correctly.
Assisted-by: Claude Opus 4.5 via Crush <crush@charm.land>
Amolith
created
cbb39bc
refactor(cli): restructure with Cobra subcommands
Click to expand commit body
- Add 'serve' subcommand for starting MCP server (stdio/sse/http)
- Add 'config' subcommand for interactive setup wizard
- Move config loading to internal/config with XDG support
- Add internal/ui for styled terminal output
- Add internal/client for Lunatask API wrapper
Assisted-by: Claude Opus 4.5 via Crush <crush@charm.land>
Amolith
created
c4cdbfd
refactor(sdk): migrate to official MCP Go SDK
Click to expand commit body
- Replace mark3labs/mcp-go with modelcontextprotocol/go-sdk
- Add typed Input/Output structs for all tool handlers
- Move validation logic to go-lunatask client (ParsePriority, etc.)
- Update prose to reference "resources" instead of "tools"
Assisted-by: Claude Opus 4.5 via Crush <crush@charm.land>
Update architecture section with expanded tools/ directory tree showing
specific package purposes. Remove placeholder context7 link template and
revise tool creation instructions.
Assisted-by: Claude Opus 4.5 via Crush <crush@charm.land>
Amolith
created
c025767
refactor(tools): split into package-per-tool
Click to expand commit body
Reorganize tools/ from flat files into package-per-tool structure:
- tools/shared/ for interfaces and helpers
- tools/{areas,habits,tasks,timestamp}/ with handler.go and prose.go
Separates schema structure from prose descriptions, fixes lll issues,
and prepares for expanding MCP tools/resources/prompts.
Also extracts cmd/ logic into focused functions and resolves all
remaining golangci-lint warnings with appropriate nolint directives.
Assisted-by: Claude Sonnet 4 via Crush
6bc319d
refactor: use external go-lunatask package
Click to expand commit body
Remove internal lunatask/ package and depend on
git.secluded.site/go-lunatask instead. This allows the Lunatask API
client to be reused across projects.
Assisted-by: Claude Opus 4.5 via Crush
Amolith
created
f81cb6a
fix(lunatask): make Note.NotebookID optional
Click to expand commit body
Aligns response type with CreateNoteRequest now that notebooks are
optional.
Assisted-by: Claude Sonnet 4 via Crush
Amolith
created
e00edfa
feat(lunatask): add builder pattern for requests
Click to expand commit body
Fluent builders for: TaskBuilder, TaskUpdateBuilder, NoteBuilder,
JournalEntryBuilder, PersonBuilder, TimelineNoteBuilder.
Example: task := lunatask.NewTask("Call
mom").InArea(id).WithPriority(1).Build()
Assisted-by: Claude Sonnet 4 via Crush
- GetNote: speculative implementation following existing patterns (API
may support it but undocumented)
- NotebookID: now optional in CreateNoteRequest per actual API behavior
Assisted-by: Claude Sonnet 4 via Crush
Amolith
created
26d3a71
refactor(lunatask): use Date type for PerformedOn
Click to expand commit body
Aligns with ScheduledOn/DateOn pattern used elsewhere in the client.
Assisted-by: Claude Sonnet 4 via Crush
Implements Note types and Client methods:
- ListNotes with optional source/source_id filters
- CreateNote (returns nil on 204 for duplicates)
- UpdateNote
- DeleteNote
Assisted-by: Claude Sonnet 4 via Crush
- doRequest returns status code; 204 is valid success
- Add generic doJSON[T] to reduce boilerplate
- Ping now returns *PingResponse with message
- Add Date type for date-only fields (YYYY-MM-DD)
- Task uses time.Time/Date instead of strings
- Add WithHTTPClient/WithBaseURL functional options
- Make Client fields private for encapsulation
Assisted-by: Claude Sonnet 4 via Crush
Amolith
created
843183a
docs: add API docs reference, remove Contributing
- Move error types, APIError, and doRequest helper to client.go
- Add Ping() method for token verification
- Add ListTasksOptions with source_id filter support
Assisted-by: Claude Sonnet 4 via Crush
Amolith
created
a156f97
refactor(lunatask): genericize task API client
Click to expand commit body
- Add typed errors (ErrNotFound, ErrUnauthorized, etc.) with APIError
wrapper
- Use pointer types for nullable Task fields; add Name/Note for future
E2EE support
- Add source_id to CreateTaskRequest for duplicate detection
- Create separate UpdateTaskRequest with all-optional fields
- Unify response types to return full Task object
- Add ListTasks and GetTask methods
- Move MCP-specific validation (name length, RFC3339, enums) to tools
layer
- Remove validator dependency from client package
Assisted-by: Claude Sonnet 4 via Crush
Amolith
created
635b5e8
chore(gopls): enable gofumpt, analyses, and hints
Click to expand commit body
Assisted-by: Claude Sonnet 4 via Crush
Amolith
created
22cf801
docs(agents): condense and restructure guidelines
Click to expand commit body
Simplify AGENTS.md from 158 to 60 lines while preserving essential
information. Focus on actionable guidance rather than implementation
details. Add SPDX headers for REUSE compliance.
Assisted-by: Claude Opus 4.5 via Crush
Update repository project name from 'lunatask-mcp-server' to
'llm-projects' in the `pr.pico.sh` examples and links.
Removed alternative contribution methods (SourceHut, Radicle) to
simplify the collaboration guidelines, focusing solely on using
`pr.pico.sh` for patch requests.
Added a comprehensive list of all available tools with their parameters
and descriptions to the README.md file.
- Documented get_timestamp tool
- Documented list_areas_and_goals tool
- Documented create_task tool with all parameters
- Documented update_task tool with all parameters
- Documented delete_task tool
- Documented list_habits_and_activities tool
- Documented track_habit_activity tool
This makes it easier for users to understand what tools are available
and how to use them.
Co-Authored-By: Crush <crush@charm.land>
Amolith
and
Crush
created
5889508
feat: allow task updates without area_id change
cdfec83
feat: add Eisenhower Matrix field to task creation and updates
Click to expand commit body
Add support for Eisenhower Matrix quadrant classification in both
create_task and update_task operations. The field accepts human-readable
values that are translated to API integers:
- uncategorised (0) - clears the field
- both urgent and important (1)
- urgent, but not important (2)
- important, but not urgent (3)
- neither urgent nor important (4)
Includes proper validation and helpful error messages following the
existing priority field pattern.
Amolith
created
efdf9eb
fix: resolve validation discrepancies between create_task and update_task
Click to expand commit body
- Standardize estimate max value to 720 minutes (12 hours) across both tools
- Fix incorrect tool name references from get_task_timestamp to get_timestamp
Amolith
created
969cacf
feat: enhance MCP tool descriptions with comprehensive usage guidelines
Click to expand commit body
- Add detailed workflow instructions for all tools with proper sequencing
- Document enum constraints and parameter limits in natural language
- Include system prompt requirements for task creation workflow
- Clarify when to include optional parameters vs when to omit them
- Add speech-to-text interpretation guidance for better user experience
Change gofumpt command in justfile to use '.' instead of './...' to format the
root directory and not only children directories.
Amolith
created
736d411
fix(config): Correct multiple to singular terms in TOML config
Click to expand commit body
The TOML configuration keys `goals` and `areas` were incorrectly pluralized.
This commit renames them to the singular `goal` and `area` respectively to align
with the TOML parser's expectation for arrays of a single type.
Amolith
created
8d481aa
chore: Update justfile to use go modules and build cmd