From 2b76458de183b147e7bb3fe30e21bec81777b6d3 Mon Sep 17 00:00:00 2001 From: Bendt Date: Sat, 20 Dec 2025 16:30:39 -0500 Subject: [PATCH] wip --- .coverage | Bin 69632 -> 69632 bytes PROJECT_PLAN.md | 10 ++++++++++ src/calendar/app.py | 2 ++ 3 files changed, 12 insertions(+) diff --git a/.coverage b/.coverage index 5077f06c4be0c8a7bbb260144ff01d93c93cac57..467dd7dded96b2fe7d285e13fd2ba70b0420549f 100644 GIT binary patch delta 5637 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 G`}jM(v@iz% literal 69632 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 diff --git a/PROJECT_PLAN.md b/PROJECT_PLAN.md index f8fe93d..a6e96c1 100644 --- a/PROJECT_PLAN.md +++ b/PROJECT_PLAN.md @@ -519,6 +519,16 @@ class IPCClient: - IPC should gracefully handle missing socket (apps work standalone) - Search should be responsive and not block UI +--- + +## Polish for release and Auth + +- Authentication isn't working if the user is in a different directory than expected. Store the auth token in a ~/.local directory so it's consistently availabe in every dir. +- Setup scripts, look at popular modern python CLI or TUI projects and create an install or first run script that works for most scenarios, using `uv` or `pip` to install globally for users, or maybe get a homebrew installation to work? Get users to set up himalaya and khal and dstask but ask them for their choice once we have other backends available. +- Documentation files in the repo, and documentation site to publish. + + + --- ## Library Updates & Python Version Review diff --git a/src/calendar/app.py b/src/calendar/app.py index 03bbd4e..1ac1182 100644 --- a/src/calendar/app.py +++ b/src/calendar/app.py @@ -304,6 +304,8 @@ class CalendarApp(App): try: panel = self.query_one("#sidebar-invites", InvitesPanel) panel.set_invites(self._invites) + if self._invites: + self.notify(f"Loaded {len(self._invites)} pending invite(s)") except Exception: pass