惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
B
Blog RSS Feed
Microsoft Security Blog
Microsoft Security Blog
Y
Y Combinator Blog
N
Netflix TechBlog - Medium
M
MIT News - Artificial intelligence
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
B
Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
C
Check Point Blog
The GitHub Blog
The GitHub Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
P
Proofpoint News Feed
Martin Fowler
Martin Fowler
大猫的无限游戏
大猫的无限游戏
GbyAI
GbyAI
博客园_首页
A
About on SuperTechFans
Blog — PlanetScale
Blog — PlanetScale
人人都是产品经理
人人都是产品经理
T
Tailwind CSS Blog
aimingoo的专栏
aimingoo的专栏
T
The Blog of Author Tim Ferriss
The Cloudflare Blog

Hacker News: Show HN

PurrrrrFocus: Pomodoro Timer App - App Store Workflow Engine — Multi-Step Orchestration for Bun RapidPhoto: Pro Photo Editor App - App Store GitHub - DheerG/swarms: Achieve extraordinary results with claude code across a variety of tasks SPICE simulation → oscilloscope → verification with Claude Code — Lucas Gerads Show HN: VCoding – A 5 MB native Windows IDE with no dynamic dependencies Show HN: LLMs don't hallucinate because they're bad at math, it's the format GitHub - Agent-FM/agentfm-core: AgentFM is a peer-to-peer network that turns everyday computers into a decentralized AI supercomputer. AgentFM lets you run massive AI workloads directly across a global mesh of idle CPUs and GPUs. Show HN: Tracking Top US Science Olympiad Alumni over Last 25 Years GitHub - Potarix/agent-hub: One place to talk to all your agents Show HN: Runtime security for AI agents(injection,tool abuse, data exfiltration) GitHub - dubeyKartikay/lazyspotify: Terminal Spotify client for macOS and Linux GitHub - the-banana-tool/king-louie: Easy to use GUI Personal AI Assistant. Win/Linux/Mac. Show HN I made my vacation rental bookable by AI agents–no Airbnb, 0% commission GitHub - basteez/jsf-autoreload: maven plugin to enable hot reload on jsf projects uvm32/hosts/host-gdbstub at main · ringtailsoftware/uvm32 GitHub - labsai/EDDI: Config-driven engine that turns JSON into production-grade AI agents. Multi-agent orchestration, 12+ LLM providers, MCP/A2A protocols, RAG, persistent memory, and enterprise compliance (EU AI Act, GDPR, HIPAA). Built on Quarkus. GitHub - glitchnsec/fortyone-oss: AI Executive Assistant Platform Quickstart | Alien GitHub - muxshed/shed: One stream in, or many. Every destination, simultaneously. No cloud middleman, no per-channel fees, no limits. GitHub - ocrbase-hq/ocrbase: 📄 PDF/IMG ->.MD/JSON Document OCR API for PaddleOCR and GLMOCR. Self-hostable. GitHub - impactjo/home-memory: MCP server that lets your AI assistant remember everything about your home. GitHub - Sets88/dbcls: DbCls is a powerful terminal database client that supports various databases GitHub - neptun2000/heor-agent-mcp GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh RollQuation: Math Puzzles - Apps on Google Play GitHub - dropbox/witchcraft Show HN: Agent-cache – Multi-tier LLM/tool/session caching for Valkey and Redis GitHub - opentalon/opentalon: OpenTalon is an open-source platform built from the ground up in Go as a robust alternative to OpenClaw LinkedIn™ 职位抓取工具 - Chrome 应用商店
GitHub - aselimov/-hugo-unified-git-activity: Mirror of h...
aselimov3 · 2026-05-18 · via Hacker News: Show HN

Example heatmap generated

Maintain bathroom tile developer status when working in multiple git hubs.

This repo provides:

  1. A Go command (at ./get_history) that fetches git activity from Github, Gitlab, and Forgejo
  2. A Hugo partial and shortcode that generates a git styled heatmap from it

Dependencies

  • Go
  • Hugo

User Guide

Running activity collection

To run the go script to get activity history you can just do

go run forge.alexselimov.com/aselimov/hugo-unified-git-activity/get_history@latest -o /path/to/hugo/static

This requires the following environment variables to be defined:

GH_API_KEY=
FJ_API_KEY=
FJ_USER=
FJ_URL= //Optional: defaults to codeberg.org
GL_API_KEY= //Optional: default to gitlab.com
GL_USER=
GL_URL=

Environment variables can be placed in a .env script wherever you are running the go command from. If you don't define environment variables, it will just skip that hub. Example, if any FJ_* variable is undefined then the forgejo portion will be skipped.

Hugo shortcode

First add this module to your hugo.toml

# edit hugo.toml
[module]
[[module.imports]]
path = 'forge.alexselimov.com/aselimov/hugo-unified-git-activity'

Then run hugo mod get -u to pull the latest version. You should now be able to add the heatmap to your site using either a shortcode in the markdown, e.g.

or as a partial to your html templates:

{{ partial "git-heatmap.html" . }}

You can configure the colors and captions, see the example from my site's configuration below:

[params.heatmap]
caption = "This is my unified git heatmap from my <a href='https://forge.alexselimov.com/aselimov'>Forgejo</a> and <a href='https://github.com/aselimov'>Github</a>"
color_empty_light = "#e8e4dc"
color_empty_dark = "#2a2a2a"
color_max = "#7a5010"
color_high = "#C47E1A"
color_mid = "#EF9F27"
color_low = "#F7C46A"
swap_colors = true # Optional, defaults to true

The colors swap, color_low <--> color_max, color_mid <--> color_high based on a @media (prefers-color-scheme: dark/light) query. Set swap_colors = false to keep the same low-to-max color order regardless.

Keeping activity in-sync

I host my site (and some other self-hosted stuff) on a Vultr vps. To keep my activity in sync, I just set up a cron job that does:

*/30 * * * * go run forge.alexselimov.com/aselimov/hugo-unified-git-activity/get_history@latest -o /var/www/alexselimov.com/activity.json

If you aren't on a VPS and using actions to deploy your site (that's how I deploy my personal blog), you can just add an action to update your static/activity.json and deploy however often you want.

Important Notes

  • I originally wrote it in Typescript but thought go would be better to distribute to Hugo users (since you probably already have go installed) so the go version is a completely vibed port. I didn't look at the code, but it's probably fine?
  • Private repo contributions are tracked, but they are anonymized in the activity.json. It shows up as "private": "<count>".
  • I added Gitlab functionality but, I don't use Gitlab so it may have issues. I set up a test account and did a quick test to make sure a new commit showed up, but good likelihood of edge cases.
  • The activity script will deduplicate based on repo name. Example: You have a repo named cool-project on with 1 Github contribution, 8 Forgejo contributions, and 1 Gitlab contribution. This code will grab the daily activity for that project across all providers and pick the highest value for the day, 8.