Title: `done` command crashes on an empty list When I run `python cli.py done 0` right after a fresh checkout — before adding any tasks — it throws an IndexError and dumps a stack trace instead of a friendly message. Every other command handles the empty-list case fine, so this one feels like an oversight. Steps to reproduce: 1. Delete tasks.json (or clone fresh). 2. Run `python cli.py done 0`. 3. See the traceback. Expected: a clear message like "no task at index 0", exit non-zero, no traceback. Environment: Python 3.12, macOS.