Commit log

dfadd27 refactor: Remove unused handlers file

Amolith created

3c552c7 refactor: Move general tools code from handlers.go to tools.go

Amolith created

e1c3848 refactor: Split tools handlers into separate files

Amolith created

9830322 refactor: Split main.go into cmd/main.go and tools/handlers.go

Amolith created

bdda7df refactor: change task priority to string enum in task update tool

Click to expand commit body
Updates the task priority argument to accept string values ("lowest", "low",
"neutral", "high", "highest") instead of a number range (-2 to 2). This improves
clarity and user experience. The internal representation remains an integer.

Amolith created

e034862 docs: update note

Amolith created

5c6045f docs: correct git command

Amolith created

d3b1408 docs: update collaboration instructions

Click to expand commit body
Improve the explanation of the patch request workflow and add a link to the
pico.sh patch request homepage for further details.

Amolith created

a904ece docs: improve pr section

Amolith created

a8cd388 docs: add collaboration section

Amolith created

d774a29 refactor(mcp): Change priority field to string enum

Click to expand commit body
Update the 'priority' field in the MCP schema from a number between -2 and 2 to
a string enum with values like 'lowest', 'low', and 'highest'. This provides a
more descriptive way to specify task priority.

Translate the string input to the corresponding integer value before processing
the task creation.

Amolith created

96d703c docs(rules): add development guidelines

Click to expand commit body
The new `.rules` file outlines a standardized process for LLMs to follow after
completing requests. This includes checking project diagnostics and running
automated checks to ensure code quality and consistency.

Amolith created

c4cfdd8 refactor(habits): make PerformedOn datetime format explicit

Click to expand commit body
Explicitly set the `PerformedOn` field's datetime validation format
in `TrackHabitActivityRequest` to `2006-01-02T15:04:05Z07:00` (RFC3339).

This change replaces the generic `datetime` validator tag to improve
code clarity and ensure the expected input format is self-documenting.
It assumes the previous default validation behavior was already RFC3339,
so no functional change to validation logic is intended.

Amolith created

c3a86e4 feat(habits)!: enhance habit tracking with consolidated tools

Click to expand commit body
Introduces a more robust mechanism for tracking habits and activities.
This change renames the configuration key for habits and updates the
LLM tools for better interaction and functionality.

The `Config.Habits` field in `config.toml` has been renamed to
`Config.Habit` for consistency and to support these enhancements.

The `list_habits` tool has been removed. It is replaced by the new
`list_habits_and_activities` tool. This tool lists habits and their
IDs, enabling the LLM to better identify entries for tracking or
marking completion via the `track_habit_activity` tool. The description
for `track_habit_activity` has also been updated.

The prompt guidance in `README.md` is updated to leverage these changes,
instructing the LLM to use `list_habits_and_activities` to find
relevant habits when a user indicates completion of a task without
other context.

BREAKING CHANGE:
- The configuration field `Habits` in `config.toml` has been renamed
  to `Habit`. Users must update their configuration files:
  e.g., `Habits = [...]` should become `Habit = [...]`.
- The LLM tool `list_habits` has been removed and is superseded by
  `list_habits_and_activities`. LLM prompts or integrations relying
  on the `list_habits` tool must be updated.

Amolith created

88f65c4 feat(habits)!: add habit tracking and listing capabilities

Click to expand commit body
This commit introduces functionality to track and list habits
via the Lunatask API and new MCP tools.

Key changes include:
- `lunatask.TrackHabitActivity`: New client method and associated types
  for tracking habit completions. Includes request validation.
- `list_habits` MCP tool: Lists configured habits and their IDs.
- `track_habit_activity` MCP tool: Allows tracking of habit activity
  using a habit ID and a timestamp (obtained via `get_timestamp`).
- Configuration: Added `Habits` section to `config.toml` for defining
  habits.

Tooling improvements:
- Renamed `get_task_timestamp` MCP tool to `get_timestamp`.
- Clarified descriptions for parameters in `create_task` and
  `update_task` MCP tools.

BREAKING CHANGE: The MCP tool `get_task_timestamp` has been renamed to
`get_timestamp`. Clients using the old tool name need to reload their
integration.

Amolith created

69bc180 refactor: Move Client and NewClient to client.go

Amolith created

5c18f05 feat(task): implement task deletion capability

Click to expand commit body
This commit introduces the functionality to delete tasks.

It adds a `DeleteTask` method to the Lunatask client, along with
a `DeleteTaskResponse` struct, enabling interaction with the
Lunatask API's task deletion endpoint.

Additionally, a new `delete_task` tool and its corresponding
`handleDeleteTask` handler are integrated into the MCP server,
exposing this new capability.

Amolith created

14daf9a feat: Make task name required for update tool and validation

Amolith created

d93c6da refactor: Remove empty if block in handleUpdateTask

Amolith created

61c437b feat: Add update_task tool and Lunatask client method

Amolith created

c37f3bf refactor(tasks)!: add task DTOs, enforce UUIDs for IDs

Click to expand commit body
Introduces `Task` and `Source` data transfer objects (DTOs) for
representing task-related data, primarily for API responses.

Validation for `CreateTaskRequest` has been updated:
- `AreaID` validation now enforces `uuid4` format if the field is present.
- `GoalID` validation now enforces `uuid4` format if the field is present.

BREAKING CHANGE: The `AreaID` and `GoalID` fields in the `CreateTaskRequest`
must now be valid UUIDv4 strings if provided. Previously, these fields
might have accepted non-UUID strings or had less strict validation.
Clients sending requests to create tasks must ensure these IDs conform to
the UUIDv4 format to avoid validation errors.

Amolith created

97fdaf5 refactor(lunatask): introduce client for task creation

Amolith created

59860b6 chore: bump deps

Amolith created

cc3952c feat: Start new lunatask package

Amolith created

928c6b1 chore(docs): correct typo

Amolith created

67ac19e docs: expand user-provided instructions, more strongly encourage adherence

Amolith created

ed6422d docs: update system prompt

Click to expand commit body
- Don't correct yourself with confirmation
- Mention priority options (it was thinking "top" = 10 even though tool desc
  says -2 - 2).
- Explicitly tell it to intuit intent a bit
- Add user_provided_content block

Amolith created

b969e9e chore(justfile): revise versioning logic

Amolith created

83f99b3 chore(justfile): remove brute pack option, reduce pack verbosity

Amolith created

2e8656e docs: mention `just build pack`

Amolith created

35943c1 feat: add task priority, motivation, and status fields

Click to expand commit body
Add new fields for task priority, motivation, and status to the MCP server
configuration. Include validation for each field to ensure correct values are
provided.

- Priority: integer between -2 and 2 (inclusive).
- Motivation: string, must be one of 'must', 'should', or 'want'. Unknown is
  allowed, but I don't see a reason to include that yet.
- Status: string, must be one of 'later', 'next', 'started', 'waiting', or
  'completed'.
- Include further validation details for the LLM.

Amolith created

dcd1e79 style: use switch instead of if-else for arg parsing

Amolith created

6bb0b69 docs: mention just and upx in readme

Amolith created

a92c068 feat(justfile): add run and pack recipes

Click to expand commit body
pack recipe requires upx

Amolith created

e9f577d feat: print version

Click to expand commit body
Only works if you build with (a command similar to) the command in the build
task of the justfile.

Amolith created

f027ad7 feat: support cross-compilation in justfile

Amolith created

0fd03f8 chore: resolve various linter reports

Click to expand commit body
- Return lowercase error messages
- Add helper functions to handle closing HTTP response bodies and files instead
  of just deferring and not handling errors.

Amolith created

a381c89 feat: add justfile

Amolith created

2999e98 chore: bump deps

Amolith created

bed2d08 feat: support specifying timezone

Click to expand commit body
Add timezone configuration and validation to ensure the configured timezone is
valid on startup and during task creation. This includes adding a new `Timezone`
field to the `Config` struct and implementing a `loadLocation` function to
validate the timezone.

This change also updates the `handleCreateTask` function to use the configured
timezone when parsing natural language dates. Additionally, the default
configuration file creation has been updated to include the `Timezone` field
with a default value of "UTC".

BREAKING CHANGE: The `Timezone` field must be set in the configuration file. If
not set, the application will fail to start.

Amolith created

ea9ebb3 chore: add licensing

Amolith created

c87eb8e chore: ignore binary

Amolith created

a6b6fb6 docs: add readme

Amolith created

8ad1b06 chore: improve error handling and config file creation in main.go

Click to expand commit body
Improve error handling in handleCreateTask function by logging the API response
body when an error occurs. Update the success message to include the task ID.
Modify the createDefaultConfigFile function to use os.OpenFile instead of
os.Create for better file handling.

Amolith created

3926843 feat: add goals to areas and update task creation

Click to expand commit body
add goals to areas and update task creation logic to include goal validation

- remove unused list_areas and list_goals tools
- update create_task tool to validate goal_id against area
- update get_date_for_task tool to get_task_timestamp
- add list_areas_and_goals tool to list areas and goals

Amolith created

7a957fa chore: add config.toml to .gitignore

Amolith created

ed5c9b0 feat: add new tools for listing areas and goals

Click to expand commit body
Add new tools to the MCP server for listing areas and their IDs, and listing
goals and their IDs. Update the LunataskCreateTaskRequest struct to include
validation rules and default values for the AreaID field.

- Adds a new tool "list_areas" to the MCP server.
- Adds a new tool "list_goals" to the MCP server.
- Updates the LunataskCreateTaskRequest struct to include validation rules and
  default values for the AreaID field.

Amolith created

245f27b chore(gitignore): add one

Amolith created

f8fe125 refactor(main): enhance task creation and configuration

Click to expand commit body
- added support for goals in task creation
- introduced server configuration in config
- improved validation and error handling
- added default config generation on startup if config is missing
- updated task creation tool to include more parameters
- refactored task creation logic for better structure and readability

Amolith created

8dcbbbf refactor: update Config to use Area struct and validate areas

Amolith created