fix(auth): compare session expiry against UTC now
created_at is stored in UTC, but expiry was checked against naive
local datetime.now(). On UTC+8 servers (Singapore, Shanghai) users
were logged out ~8 hours early.
Closes #214
The diff doesn't show any import changes, so check two things before you commit:
session.pyneedstimezoneimported fromdatetime.- The test file needs
timeandtimezoneimported.
created_at also has to be timezone-aware. If it's ever stored as a naive datetime, comparing it with datetime.now(timezone.utc) will raise a TypeError.
Real run recorded with claude-code / claude-opus-5-5. Output is shown verbatim, unmodified.
What it does
Writes a commit message for your change in Conventional Commits format: <type>(<scope>): <imperative summary>, ideally 50 characters or fewer, never more than 72.
How it works
- Triggers on "write a commit", "commit message", /commit or /caveman-commit.
- Adds a body only when the reason is not obvious, and always for breaking changes, security fixes, data migrations and reverts.
- Leaves out "this commit does…", emoji and AI attribution lines, unless your own rules require an attribution trailer.
Good for
Keeping git history short, consistent and useful to the next person debugging.
Worth knowing
It outputs the message as a code block and stops. It does not stage files, commit or amend.
Pure instruction file: no scripts, no network access and no file writes. The package also contains the README, LICENSE and NOTICE from the original repository. It never runs git commands.