From e744fd1b9bf9aa0296059fc8534d546851cfb6ac Mon Sep 17 00:00:00 2001 From: Patrick Totzke Date: Sun, 25 Oct 2026 11:42:15 +0000 Subject: [PATCH 1/3] tag release 1.1.0 Co-Authored-By: Claude Opus 5.5 --- urwidtrees/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/urwidtrees/version.py b/urwidtrees/version.py index 858de17..1a72d32 100644 --- a/urwidtrees/version.py +++ b/urwidtrees/version.py @@ -1 +1 @@ -__version__ = '1.0.5' +__version__ = '1.1.0' From 7607c982b3019adf5bea0edc09e7a5cd8f95e362 Mon Sep 17 00:00:00 2001 From: Patrick Totzke Date: Sun, 25 Oct 2026 11:42:20 +0000 Subject: [PATCH 2/3] Update CLAUDE.md for the removed lru_cache module and master branch Co-Authored-By: Claude Opus 5.5 --- CLAUDE.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 4cc9804..e1bd2e5 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -26,13 +26,12 @@ The design is MVC with local operations on node *positions* (opaque, hashable ha - `decoration.py`: `DecoratedTree` wraps another `Tree`, delegating navigation and overriding `__getitem__` via `get_decorated`/`decorate`. Behaviour is layered by wrapping: `CollapseMixin` (hides children by overriding first/last child positions; collapse state is a callable or set via `set_position_collapsed`), `CollapseIconMixin` (adds icons), `CollapsibleTree`, `IndentedTree`, `ArrowTree` and combinations. Collapsing is treated as decoration, not part of the data tree. - `nested.py`: `NestedTree` embeds trees as nodes of other trees, so positions become nested tuples and navigation has to recurse into sub-trees (`outmost_only` and `interpret_covered` flags affect this). - `widgets.py`: `TreeListWalker` adapts a `Tree` to an `urwid.ListWalker` (with a cache cleared by `clear_cache`); `TreeBox` is the `WidgetWrap` around `urwid.ListBox` that handles key bindings (collapse, expand, focus parent/child/sibling). -- `lru_cache.py`: backport of `functools.lru_cache` for old Pythons. When adding a tree feature, implement it as a `DecoratedTree` subclass or mixin and compose it, rather than editing `Tree` or `SimpleTree`. Check that `NestedTree` still behaves, since it re-implements navigation instead of inheriting it. ## Change policy -- `main` is the branch for AI-assisted work; `master` is the old human-only line (last release 1.0.5) and stays untouched. One concern per branch off `main`, one PR each into `main`. Ask before pushing. +- `main` is the only branch; the tag 1.0.5 marks the last release before AI-assisted work. One concern per branch off `main`, one PR each into `main`. Ask before pushing. - Small is beautiful: the smallest clean diff that solves the problem. Prefer deletion, stdlib and existing helpers; no speculative parameters, layers or abstractions. - Bug fixes come with a regression test that fails without the fix. - Keep the public API (everything exported from `urwidtrees/__init__.py`, constructor keyword arguments, `TreeBox` key bindings) backwards compatible unless the change says otherwise. From 6f293cbaf3a7061ae13440eb333c1931e1ea7462 Mon Sep 17 00:00:00 2001 From: Patrick Totzke Date: Sun, 25 Oct 2026 11:48:01 +0000 Subject: [PATCH 3/3] Show the README docs badge through shields.io Read the Docs answers GitHub's image proxy with HTTP 429, so its own badge shows as a broken image on GitHub; the shields.io badge reports the same build status and loads. The docs link moves to readthedocs.io. Co-Authored-By: Claude Opus 5.5 --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9523c5b..5a53d0d 100644 --- a/README.md +++ b/README.md @@ -20,5 +20,5 @@ See the `docs/` subdirectory for autogenetated API docs. [](docs/examples/example3.collapse.py) [](docs/examples/example5.nested.py) -[rtfd-img]: https://readthedocs.org/projects/urwidtrees/badge/ -[rtfd]: https://urwidtrees.readthedocs.org/en/latest/ +[rtfd-img]: https://img.shields.io/readthedocs/urwidtrees/latest +[rtfd]: https://urwidtrees.readthedocs.io/en/latest/