From 44f8ce0318436677dbf55cbc02770e4a5e57bb85 Mon Sep 17 00:00:00 2001 From: stellarshenson Date: Tue, 20 Jan 2026 10:02:35 +0100 Subject: [PATCH] docs: update journal with server.last_activity fix and checkpoint command --- .claude/JOURNAL.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.claude/JOURNAL.md b/.claude/JOURNAL.md index 936cd70..f56a920 100644 --- a/.claude/JOURNAL.md +++ b/.claude/JOURNAL.md @@ -180,3 +180,6 @@ This journal tracks substantive work on documents, diagrams, and documentation c 59. **Task - Session extension truncation and cumulative logic**: Fixed extension behavior to be cumulative and truncate excess requests
**Result**: Changed extension logic from resetting timer to cumulative additions (extensions ADD to remaining time), fixed datetime timezone mismatch (use offset-naive datetime.utcnow() to match JupyterHub internal format), implemented truncation when requested hours exceed available (truncates to max available instead of rejecting), added `truncated` flag in API response with detailed message, UI shows warning alert (yellow) when truncated with 4-second display vs 2-second for normal success, fixed extend button re-enable after successful extension, added detailed logging showing base timeout, extension calculations, and remaining time, kept extend button enabled when max reached (backend handles rejection with error message) + +60. **Task - Fix activity tracking to use server not user**: Changed session timer to use server.last_activity instead of user.last_activity
+ **Result**: Discovered user.last_activity updates on any Hub page access (causing timer reset on refresh), while server.last_activity only updates on actual JupyterLab activity - which matches what jupyterhub-idle-culler uses for culling decisions. Updated SessionInfoHandler and ExtendSessionHandler to use spawner.server.last_activity, added /checkpoint command for creating milestone tags before major changes