chore(v1.0.1): opus review findings — docstring confirmation patterns, pyproject.urls, gitignore fix, logging

**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>
This commit is contained in:
2026-04-17 17:28:22 +02:00
parent bdf9e3c59e
commit 3e021bf01a
7 changed files with 87 additions and 12 deletions
+9 -3
View File
@@ -510,8 +510,9 @@ def get_categories(list_id: str, locale: str = "de") -> str:
"""Return the task categories available for a list as JSON.
Only shopping lists (taskListType=SHOPPING_LIST) have categories. TODO
lists return an empty list. Categories are filtered by locale so only
the language-appropriate names are returned (default: German).
lists return an empty list. System categories are filtered by locale so only
the language-appropriate names are returned (default: German). Custom categories
have no locale field and are always displayed regardless of the locale parameter.
Use the returned ``id`` values as the ``category_id`` parameter in
``create_task`` and ``update_task``.
@@ -1003,6 +1004,8 @@ def update_task(
def toggle_task(task_id: str, complete: bool) -> str:
"""Mark a task as complete or incomplete.
IMPORTANT: Ask the user for confirmation before calling this tool.
Args:
task_id: Task metaId from get_tasks.
complete: ``True`` to mark done, ``False`` to reopen.
@@ -1110,8 +1113,9 @@ def clear_list(list_id: str, only_open: bool = False) -> str:
try:
client.call("metadelete", {"id": meta_id})
deleted_ids.append(meta_id)
except Exception:
except Exception as e:
failed_ids.append(meta_id)
logger.warning(f"Failed to delete {meta_id}: {e}")
client.logout()
except FamilyWallError as exc:
@@ -1782,6 +1786,8 @@ def delete_circle(circle_id: str) -> str:
def like_post(post_id: str, like: bool = True) -> str:
"""Like a wall post/activity with a STAR mood.
IMPORTANT: Ask the user for confirmation before calling this tool.
Note: Unlike (like=False) is not yet supported. The Family Wall API offers
no discoverable endpoint or parameter to remove a like. Passing like=False
returns an error without making any API call.