From 74bf58335d3542d88b32d447b47342a76f5e5449 Mon Sep 17 00:00:00 2001 From: Peter Stone Date: Wed, 2 Sep 2026 23:14:40 +0000 Subject: Extend session lifetime and idle timeout from 7 days / 24h to 1 year Single-user personal server -- there's no one else's session at risk from staying logged in, so the short expiry was just friction. The 24h idle timeout was the more disruptive of the two in practice: a day of not opening the dashboard is a normal gap, not "abandoned," and was forcing a re-login well before the 7-day Lifetime ever mattered. Setting IdleTimeout = SessionLifetime rather than a separate shorter value collapses this to one real limit instead of two overlapping ones that could reproduce the same complaint later (e.g. a few weeks away). Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_018AwnALZL6bD4VBtATDVv3B --- cmd/dashboard/main.go | 5 ++++- internal/config/constants.go | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/cmd/dashboard/main.go b/cmd/dashboard/main.go index c9e1078..2c75313 100644 --- a/cmd/dashboard/main.go +++ b/cmd/dashboard/main.go @@ -61,7 +61,10 @@ func main() { sessionManager := scs.New() sessionManager.Store = sqlite3store.New(db.DB()) sessionManager.Lifetime = config.SessionLifetime - sessionManager.IdleTimeout = 24 * time.Hour // Extend session on activity + // Matches SessionLifetime rather than the previous 24h -- a day of not opening + // the dashboard (a normal gap, not "abandoned") was logging out a single user + // on their own device well before the 1-year Lifetime ever came into play. + sessionManager.IdleTimeout = config.SessionLifetime sessionManager.Cookie.Persist = true sessionManager.Cookie.Secure = !cfg.Debug sessionManager.Cookie.SameSite = http.SameSiteLaxMode diff --git a/internal/config/constants.go b/internal/config/constants.go index 1311302..98c7a60 100644 --- a/internal/config/constants.go +++ b/internal/config/constants.go @@ -45,7 +45,10 @@ const ( // Session settings const ( - SessionLifetime = 7 * 24 * time.Hour // 7 days for mobile convenience + // Single-user personal server -- there's no one else's session to protect by + // forcing frequent re-logins, so this is set for "don't make me log in again," + // not for a shared/multi-tenant threat model. + SessionLifetime = 365 * 24 * time.Hour ) // Rate limiting -- cgit v1.2.3