silverwind
d6be18e870
Load heatmap data asynchronously ( #36622 )
...
Fixes: https://github.com/go-gitea/gitea/issues/21045
- Move heatmap data loading from synchronous server-side rendering to
async client-side fetch via dedicated JSON endpoints
- Dashboard and user profile pages no longer block on the expensive
heatmap DB query during HTML generation
- Use compact `[[timestamp,count]]` JSON format instead of
`[{"timestamp":N,"contributions":N}]` to reduce payload size
- Public API (`/api/v1/users/{username}/heatmap`) remains unchanged
- Heatmap rendering is unchanged, still shows a spinner as before, which
will now spin a litte bit longer.
Signed-off-by: silverwind <me@silverwind.io >
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com >
2026-02-17 14:03:55 +00:00
..
2026-01-24 11:30:47 +00:00
2026-02-08 14:39:09 +08:00
2026-02-02 01:00:34 +08:00
2026-02-02 01:00:34 +08:00
2025-12-03 02:13:16 +00:00
2024-07-07 15:32:30 +00:00
2026-02-12 18:39:24 +00:00
2025-12-03 02:13:16 +00:00
2025-07-14 15:20:17 -07:00
2026-02-17 09:06:27 +01:00
2025-12-03 02:13:16 +00:00
2026-02-08 14:39:09 +08:00
2026-01-24 11:30:47 +00:00
2026-01-24 11:30:47 +00:00
2025-12-03 02:13:16 +00:00
2026-02-17 09:06:27 +01:00
2024-12-12 19:02:54 +00:00
2025-12-03 02:13:16 +00:00
2025-01-16 04:26:17 +08:00
2025-12-25 12:33:34 +02:00
2025-07-01 21:44:05 +08:00
2026-02-02 01:00:34 +08:00
2025-04-15 22:35:22 +08:00
2025-12-03 02:13:16 +00:00
2026-02-17 14:03:55 +00:00
2025-12-12 09:39:02 +02:00
2025-12-03 02:13:16 +00:00
2025-01-17 08:55:02 +00:00
2026-01-15 11:01:23 +00:00
2025-12-03 02:13:16 +00:00
2025-09-11 01:50:17 +02:00
2025-12-25 12:33:34 +02:00
2024-07-07 15:32:30 +00:00
2025-05-05 21:53:17 -07:00
2025-12-03 02:13:16 +00:00
2025-12-03 02:13:16 +00:00
2025-12-03 02:13:16 +00:00
2025-03-24 20:26:58 -07:00
2026-01-26 14:19:47 +00:00
2025-12-03 02:13:16 +00:00
2024-07-07 15:32:30 +00:00
2025-02-28 00:58:25 +00:00
2026-02-10 01:20:20 +00:00
2025-12-03 02:13:16 +00:00
2024-07-07 15:32:30 +00:00
2025-11-30 11:58:15 +08:00
2025-12-03 02:13:16 +00:00
2025-12-03 02:13:16 +00:00
2025-12-03 02:13:16 +00:00
2026-02-16 00:49:03 +00:00
2026-02-02 01:00:34 +08:00
2025-12-03 02:13:16 +00:00
2025-12-03 02:13:16 +00:00
2026-02-08 21:00:18 +00:00
2025-12-03 02:13:16 +00:00
2026-02-08 14:39:09 +08:00
2025-12-03 02:13:16 +00:00
2025-12-03 02:13:16 +00:00
2025-12-03 02:13:16 +00:00
2025-12-03 02:13:16 +00:00
2025-12-03 02:13:16 +00:00
2026-02-02 01:00:34 +08:00
2025-12-17 02:01:19 +00:00
2025-12-17 02:01:19 +00:00
2025-12-03 02:13:16 +00:00
2026-02-02 01:00:34 +08:00
2026-02-02 01:00:34 +08:00
2025-12-25 12:33:34 +02:00
2025-12-03 02:13:16 +00:00
2025-12-03 02:13:16 +00:00
2025-12-03 02:13:16 +00:00
2025-12-03 02:13:16 +00:00
2026-01-15 11:01:23 +00:00
2025-12-03 02:13:16 +00:00
2026-02-10 05:09:56 +00:00
2025-12-21 18:24:41 +00:00
2025-12-03 02:13:16 +00:00
2025-12-03 02:13:16 +00:00