bug: Todoist access tokens never refreshed — silent failure after expiration #74
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
integration_tokenstable hasrefresh_tokenandexpires_atcolumns, but no refresh logic exists anywhere. The OAuth exchange inintegrations.ts:82stores only theaccess_token— norefresh_tokenis captured (Todoist may not provide one, but expiration is still unhandled).After the token expires,
fetchTodoistTasks()gets a 401, returns cached/empty tasks, and the user silently gets no tips.Fix
expires_atbefore each Todoist API callsignals.integration.token_expiredevent for observability