3e021bf01a
**Critical:** - Add IMPORTANT confirmation lines to toggle_task and like_post docstrings - Add [project.urls] section with Gitea repository link to pyproject.toml **Medium:** - Fix .gitignore: test_*.py recursive pattern (remove leading slash) - Add exception logging to clear_list() for failed deletions - Update get_categories() docstring: clarify custom vs system category locale behavior - Add Versioning Policy section to CHANGELOG.md **Minor:** - Fix CLI help text (remove "(read-only)" qualifier) - Add language note to CLAUDE.md (German file, English code) - Create tests/README.md with integration test documentation - Update version to 1.0.1 in pyproject.toml Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
204 lines
5.2 KiB
Markdown
204 lines
5.2 KiB
Markdown
# Changelog
|
||
|
||
All notable changes to this project will be documented in this file.
|
||
|
||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||
|
||
## Versioning Policy
|
||
|
||
This project follows Semantic Versioning (SemVer).
|
||
Breaking changes (removed tools, changed parameters) increment the major version.
|
||
|
||
## [1.0.1] – 2026-04-17
|
||
|
||
### Added
|
||
- IMPORTANT confirmation notes in docstrings for write operations (`toggle_task`, `like_post`)
|
||
- `[project.urls]` section in `pyproject.toml` with Gitea repository link
|
||
- Language note in CLAUDE.md explaining German/English split
|
||
- `tests/README.md` documentation for running integration tests
|
||
|
||
### Changed
|
||
- `.gitignore` patterns now recursive (test_*.py without leading slash)
|
||
- CLI help text updated (removed "(read-only)" qualifier)
|
||
- `clear_list()` now logs exception reasons for failed deletions
|
||
- `get_categories()` docstring clarifies custom vs. system category locale behavior
|
||
|
||
### Fixed
|
||
- Exception handling in `clear_list()` with detailed logging
|
||
|
||
---
|
||
|
||
## [1.0.0] – 2026-04-17
|
||
|
||
### Added
|
||
- `tests/` directory with integration tests (moved from root)
|
||
- `LICENSE` (MIT, Marcus van Elst)
|
||
- Date validation (ISO `YYYY-MM-DD`) for all meal-plan tools
|
||
- `_err()` helper — all tools now return `{"error": "..."}` JSON on failure
|
||
|
||
### Changed
|
||
- Version is now a single source of truth in `pyproject.toml`;
|
||
`__init__.py` reads it via `importlib.metadata`
|
||
- `create_server()` exported via `__all__` in `__init__.py`
|
||
- `clear_list` reports partial failures:
|
||
`{"deleted_count": N, "failed_count": M, "failed_ids": [...]}`
|
||
- All tool functions have explicit `-> str` return-type annotations
|
||
- Unified error format: every tool returns `{"error": "message"}` JSON
|
||
|
||
### Removed
|
||
- ~50 debug/probe artefact files (`probe_*.py`, `debug_*.py`, `*.txt` outputs)
|
||
|
||
---
|
||
|
||
## [0.11.x] – Meal Planner write access
|
||
|
||
### [0.11.8]
|
||
- Documented `isRecipe` flag behaviour in `get_recipe_box`
|
||
|
||
### [0.11.7]
|
||
- `get_recipe_box` — returns only real recipes (`isRecipe=true`)
|
||
- Parser fix: `ingredients_parsed` built from free-text, not the API list
|
||
|
||
### [0.11.6]
|
||
- `clear_list` — bulk-delete all tasks in a list within one session
|
||
|
||
### [0.11.5]
|
||
- `add_meal_note` — add note + serving count to a meal plan slot
|
||
|
||
### [0.11.4]
|
||
- `delete_meal_plan_entry` — delete `dish/` and `meal/` entries
|
||
|
||
### [0.11.3]
|
||
- `add_meal_to_meal_plan` — structured output (fixed `a00.r.r` array shape)
|
||
|
||
### [0.11.2]
|
||
- `add_meal_to_meal_plan` — add free-text meal entry
|
||
|
||
### [0.11.1]
|
||
- `add_recipe_to_meal_plan` — structured output after response verified
|
||
|
||
### [0.11.0]
|
||
- `add_recipe_to_meal_plan` — add recipe from recipe box to meal plan
|
||
|
||
---
|
||
|
||
## [0.10.x] – Meal Planner read access
|
||
|
||
### [0.10.3]
|
||
- `get_meal_plan` — `is_from_recipe_box` field via `recipeList[].isRecipe`
|
||
|
||
### [0.10.2]
|
||
- `get_meal_plan` — merges `mealList[]` (free-text notes + servings)
|
||
|
||
### [0.10.1]
|
||
- `get_meal_plan` — structured output after `mplistinterval` response verified
|
||
|
||
### [0.10.0]
|
||
- `get_meal_plan` — read-only, raw JSON (Premium feature)
|
||
|
||
---
|
||
|
||
## [0.9.x] – Task recurrency + reminders
|
||
|
||
### [0.9.1]
|
||
- Fix `reminder` mapping (`reminderUnit`/`reminderValue`; `value=0` is valid)
|
||
|
||
### [0.9.0]
|
||
- `get_tasks` returns `recurrency`, `recurrency_interval`, `rrule`, `reminder`
|
||
|
||
---
|
||
|
||
## [0.8.x] – Recipe categories + misc fixes
|
||
|
||
### [0.8.3]
|
||
- `OTHER` list type documented and supported; `FW_DEBUG=1` logs unknown task fields
|
||
|
||
### [0.8.2]
|
||
- `get_lists()` without scope returns all circles
|
||
|
||
### [0.8.1]
|
||
- Fix recipe category handling
|
||
|
||
### [0.8.0]
|
||
- `get_recipe_categories` — list available recipe categories
|
||
- `create_recipe` / `update_recipe` accept `category_ids`
|
||
|
||
---
|
||
|
||
## [0.7.x] – Circle management
|
||
|
||
### [0.7.5]
|
||
- Primary-circle guard in `update_circle` (`isFirstFamily` check)
|
||
|
||
### [0.7.4]
|
||
- `update_circle` — rename a circle
|
||
|
||
### [0.7.3]
|
||
- `update_list` — rename, change emoji/colour
|
||
|
||
### [0.7.2]
|
||
- `delete_circle`
|
||
|
||
### [0.7.1]
|
||
- `get_lists` scope fix; `create_list` with `circle_id`; `delete_list` scope
|
||
|
||
### [0.7.0]
|
||
- `create_circle`, `add_member_to_circle`
|
||
|
||
---
|
||
|
||
## [0.6.x] – Recipe box
|
||
|
||
### [0.6.1]
|
||
- `update_recipe` + fix newline handling in `create_recipe`
|
||
|
||
### [0.6.0]
|
||
- `get_recipes`, `get_recipe`, `create_recipe`, `delete_recipe`
|
||
|
||
---
|
||
|
||
## [0.5.x] – List management
|
||
|
||
### [0.5.3]
|
||
- Category auto-assign hint in `create_task` docstring
|
||
|
||
### [0.5.2]
|
||
- Quantity convention documented in `create_task` docstring
|
||
|
||
### [0.5.1]
|
||
- `emoji` + `color` in `get_lists` / `create_list`
|
||
|
||
### [0.5.0]
|
||
- `create_list`, `delete_list`
|
||
|
||
---
|
||
|
||
## [0.4.x] – Category management + task fields
|
||
|
||
- `create_category`, `delete_category`
|
||
- `create_task` / `update_task` support `due_date`, `assignee`, `list_id`
|
||
|
||
---
|
||
|
||
## [0.3.x] – Task write access
|
||
|
||
- `create_task`, `update_task`, `toggle_task`, `delete_task`
|
||
|
||
---
|
||
|
||
## [0.2.x] – Activity feed
|
||
|
||
- `get_activities`, `like_post`
|
||
|
||
---
|
||
|
||
## [0.1.0] – Initial release
|
||
|
||
- `get_circles`, `get_members`, `get_lists`, `get_tasks`, `get_categories`
|
||
- Session strategy: login → API calls → logout per tool invocation
|
||
- OS keyring credential storage
|
||
- MCP server via FastMCP
|
||
|
||
[1.0.0]: https://gitea.gecheckt.de/marcus/mcp-familywall/compare/v0.11.8...v1.0.0
|