B1nh M1nh
f260a1817b
feat: Ollama Cloud quota tracker + proactive background OAuth refresh
...
Ollama: replace informational stub with real quota tracker hitting ollama.com/api/usage (session 5h + weekly 7d, 0..1 ratio) and /api/me plan label; bind handler to apiKey + add features.usageApikey so apikey connections work.
Token refresh: add backgroundTokenRefresh scheduler that refreshes OAuth connections within max(provider lead, 30min) of expiry, independent of inbound traffic (10s after boot, then every 5min, unref'd timers, DISABLE_BACKGROUND_TOKEN_REFRESH kill-switch, fail-open per tick/connection). Registered from custom-server.js (listening) and initializeApp.js. checkAndRefreshToken gains opt-in {force} for the scheduler; request path unchanged.
2026-08-02 09:34:27 +07:00
..
2026-07-19 16:29:55 +07:00
2026-06-29 15:29:49 +07:00
2026-07-19 16:29:55 +07:00
2026-07-16 16:15:24 +07:00
2026-07-23 16:34:24 +07:00
2026-07-29 18:10:09 +07:00
2026-06-14 18:49:38 +07:00
2026-06-15 11:38:43 +07:00
2026-06-14 18:49:38 +07:00
2026-07-29 18:10:09 +07:00
2026-07-29 18:10:09 +07:00
2026-06-14 18:49:38 +07:00
2026-06-26 12:03:58 +07:00
2026-07-29 18:10:09 +07:00
2026-06-15 11:38:43 +07:00
2026-06-15 11:38:43 +07:00
2026-06-15 11:38:43 +07:00
2026-06-14 18:49:38 +07:00
2026-06-14 18:49:38 +07:00
2026-07-25 17:30:02 +07:00
2026-06-15 11:38:43 +07:00
2026-07-03 10:53:41 +07:00
2026-06-15 18:18:04 +07:00
2026-06-21 16:12:20 +07:00
2026-07-29 21:05:23 +07:00
2026-07-10 13:08:58 +07:00
2026-06-14 18:49:38 +07:00
2026-06-14 18:49:38 +07:00
2026-06-14 18:49:38 +07:00
2026-06-15 11:38:43 +07:00
2026-07-20 15:39:55 +07:00
2026-06-14 18:49:38 +07:00
2026-07-29 18:09:35 +07:00
2026-07-30 09:43:55 +07:00
2026-06-15 11:38:43 +07:00
2026-06-15 11:38:43 +07:00
2026-06-15 11:38:43 +07:00
2026-06-14 18:49:38 +07:00
2026-07-10 11:29:48 +07:00
2026-06-15 11:38:43 +07:00
2026-06-14 18:49:38 +07:00
2026-06-16 23:32:28 +07:00
2026-07-29 20:21:27 +07:00
2026-07-15 17:34:08 +07:00
2026-06-15 11:38:43 +07:00
2026-06-16 23:32:28 +07:00
2026-06-20 10:09:50 +07:00
2026-06-15 11:38:43 +07:00
2026-06-15 11:38:43 +07:00
2026-07-16 15:33:19 +07:00
2026-06-14 18:49:38 +07:00
2026-06-14 18:49:38 +07:00
2026-06-14 18:49:38 +07:00
2026-06-14 18:49:38 +07:00
2026-06-15 18:18:04 +07:00
2026-07-30 09:43:55 +07:00
2026-06-15 11:38:43 +07:00
2026-06-15 11:38:43 +07:00
2026-06-15 11:38:43 +07:00
2026-07-29 18:10:09 +07:00
2026-06-29 15:12:18 +07:00
2026-07-29 18:10:09 +07:00
2026-07-29 18:09:35 +07:00
2026-07-29 19:34:14 +07:00
2026-06-15 11:38:43 +07:00
2026-07-29 18:10:09 +07:00
2026-06-15 11:38:43 +07:00
2026-07-29 18:10:09 +07:00
2026-06-20 10:09:50 +07:00
2026-06-20 10:09:50 +07:00
2026-06-14 18:49:38 +07:00
2026-06-15 11:38:43 +07:00
2026-07-29 18:10:09 +07:00
2026-06-15 11:38:43 +07:00
2026-06-14 18:49:38 +07:00
2026-07-29 20:21:27 +07:00
2026-06-14 18:49:38 +07:00
2026-08-02 09:34:27 +07:00
2026-06-14 18:49:38 +07:00
2026-06-20 15:09:11 +07:00
2026-06-15 11:38:43 +07:00
2026-07-29 20:21:27 +07:00
2026-07-10 11:57:15 +07:00
2026-06-14 18:49:38 +07:00
2026-06-14 18:49:38 +07:00
2026-06-15 11:38:43 +07:00
2026-07-30 09:43:55 +07:00
2026-07-29 18:09:57 +07:00
2026-06-15 11:38:43 +07:00
2026-06-14 18:49:38 +07:00
2026-06-14 18:49:38 +07:00
2026-07-29 18:10:09 +07:00
2026-06-14 18:49:38 +07:00
2026-06-15 11:38:43 +07:00
2026-07-10 11:29:06 +07:00
2026-06-15 11:38:43 +07:00
2026-06-15 18:18:04 +07:00
2026-06-14 18:49:38 +07:00
2026-06-15 11:38:43 +07:00
2026-07-29 18:10:09 +07:00
2026-06-14 18:49:38 +07:00
2026-06-15 11:38:43 +07:00
2026-06-15 11:38:43 +07:00
2026-07-25 17:25:19 +07:00
2026-06-26 11:37:44 +07:00
2026-06-15 18:18:04 +07:00
2026-06-14 18:49:38 +07:00
2026-06-15 11:38:43 +07:00
2026-06-14 18:49:38 +07:00
2026-06-14 18:49:38 +07:00
2026-07-25 17:25:19 +07:00
2026-07-16 15:29:52 +07:00
2026-06-20 10:09:50 +07:00
2026-07-03 11:03:18 +07:00
2026-06-15 11:38:43 +07:00
2026-07-29 21:05:23 +07:00