Watch
0
0
Fork
You've already forked hyperhive
0

hyperhive-the-movie: date-only clock, milestone captions, less elasticity, AV1 webm, --help

The clock shows the date without the time of day. Elasticity drops from 0.3 to 0.1 so the tree sways less through large refactors. Captions come from the git tags and a tracked milestones file with a milestone per component and service at the commit that introduced it, plus growth markers (commit counts, 50k-line steps, issue and PR id doublings). --record writes gource-hyperhive.webm, AV1 in WebM through SVT-AV1, instead of a near-lossless H.264 file. --help (or -h) lists the flags; an unknown argument prints it on stderr and exits 2.
This commit is contained in:
damocles 2026-11-11 22:17:55 +01:00 • committed by mara
commit 1c3551b030
2 changed files with 124 additions and 5 deletions

View file

@ -0,0 +1,70 @@
# Milestones shown as captions in `nix run .#hyperhive-the-movie`, one per line:
# YYYY-MM-DD|caption
# Lines starting with # and blank lines are ignored. Git tags are shown too
# (tag name, at the tagged commit's date), so `git tag <name> <commit>` marks a
# milestone without editing this file. Dates are where a component first
# appears in the history; edit freely. Growth markers: commit counts doubling
# from 512, every 50k lines overall, issue or PR ids doubling from 256, and
# the first issue on the in-hive forge.
2026-05-14|first commit
2026-05-14|per-container web UI and dashboard
2026-05-16|private forge in a container
2026-05-20|first issue on the in-hive forge
2026-05-20|512 commits
2026-05-22|issue or PR 256
2026-05-22|agents work through the forge
2026-05-25|the hive-forge CLI
2026-05-27|issue or PR 512
2026-05-29|matrix chat
2026-05-29|50k lines
2026-05-30|hive-gateway in front of everything
2026-05-31|1024 commits
2026-05-31|CI runner on the forge
2026-06-01|issue or PR 1024
2026-06-02|hive-c0re drops root
2026-06-03|hive-wide knowledge repo and matrix space
2026-06-03|WireGuard mesh between hives
2026-06-05|PRs without forks (agit)
2026-06-13|audit trail of privileged actions
2026-06-15|agents with accounts on other matrix homeservers
2026-06-22|2048 commits
2026-06-22|internal forge mandatory, federation between hives
2026-06-27|issue or PR 2048
2026-07-04|100k lines
2026-07-06|job DAG queue
2026-07-11|GitHub accounts for agents
2026-07-14|accounts on external forges
2026-07-20|GUI agents (screen MCP)
2026-07-26|forge notifications
2026-07-31|GitHub notifications for agents
2026-08-05|swarm controller
2026-08-05|Authelia, the swarm's identity provider
2026-08-11|swarm UI
2026-08-14|NATS messaging in the swarm
2026-08-16|150k lines
2026-08-16|swarm metrics in Grafana
2026-08-16|VictoriaMetrics metrics store
2026-08-18|OpenTelemetry collector for the swarm
2026-08-24|swarm-wide log store
2026-08-30|the swarm's secret store
2026-08-31|4096 commits
2026-09-08|issue or PR 4096
2026-09-09|subagent daemon
2026-09-11|OIDC client secrets published to the secret store
2026-09-13|200k lines
2026-09-20|swarm matrix starts replacing our own broker
2026-09-29|ACP backends
2026-10-11|250k lines
2026-10-12|swarm builder and review classifier
2026-10-14|claude login from the swarm UI
2026-10-16|CI run metrics on a Grafana board
2026-10-17|archetypes
2026-10-17|300k lines
2026-10-22|notification router
2026-10-27|Attic binary cache as a swarm service
2026-10-27|Squid egress proxy on every hive host
2026-10-28|350k lines
2026-10-29|egress allow list per agent
2026-11-06|operator handbook
2026-11-08|400k lines
2026-11-10|restic backups of every agent's state

View file

@ -1,6 +1,9 @@
# `nix run .#hyperhive-the-movie` — gource visualisation of the git # `nix run .#hyperhive-the-movie` — gource visualisation of the git
# history of the repo it is run from. `-- --record` renders # history of the repo it is run from. `-- --record` renders
# gource-hyperhive.mp4 in the cwd instead of opening a window. # gource-hyperhive.webm in the cwd instead of opening a window: AV1 in WebM,
# which plays in current Firefox and Chrome and compresses this flat,
# dark picture far better than H.264. Milestones show as captions, from the git
# tags of the repo and from `hyperhive-the-movie-milestones.txt`.
{ {
lib, lib,
writeShellApplication, writeShellApplication,
@ -27,8 +30,39 @@ writeShellApplication {
gnugrep gnugrep
]; ];
text = '' text = ''
usage() {
cat <<'USAGE'
hyperhive-the-movie - gource visualisation of this repo's git history
Usage: nix run .#hyperhive-the-movie -- [--record | --help]
(no flag) open a gource window and play the history
--record render gource-hyperhive.webm in the current directory
instead (1280x720, 30 fps, AV1 in WebM; plays in recent
Firefox and Chrome). Needs no display.
-h, --help show this text
Run it from inside the repo. Captions come from two places: the git tags
(shown at the tagged commit's date) and the milestones file,
nix/packages/hyperhive-the-movie-milestones.txt, one "YYYY-MM-DD|caption"
per line. Edit that file, or tag a commit with `git tag NAME COMMIT`.
USAGE
}
record=false record=false
[[ "''${1:-}" == "--record" ]] && record=true case "''${1:-}" in
"") ;;
--record) record=true ;;
-h | --help)
usage
exit 0
;;
*)
echo "hyperhive-the-movie: unknown argument '$1'" >&2
usage >&2
exit 2
;;
esac
cd "$(git rev-parse --show-toplevel)" cd "$(git rev-parse --show-toplevel)"
@ -50,13 +84,28 @@ writeShellApplication {
fi fi
done < <(git log --format='%an' | sort -u) done < <(git log --format='%an' | sort -u)
# Milestone captions, `unix time|text`, sorted by time: the tracked
# milestones file (`YYYY-MM-DD|text`) and the repo's git tags.
captions="$(mktemp)"
trap 'rm -f "$captions"' EXIT
{
while IFS='|' read -r day text; do
[[ -z "$day" || "$day" == \#* ]] && continue
echo "$(date -d "$day" +%s)|$text"
done < ${./hyperhive-the-movie-milestones.txt}
git for-each-ref --format='%(creatordate:unix)|%(refname:short)' refs/tags
} | sort -n > "$captions"
# Catppuccin Mocha, as in frontend/packages/shared/src/colors.css. # Catppuccin Mocha, as in frontend/packages/shared/src/colors.css.
args=( args=(
-s 1 -1280x720 --auto-skip-seconds 1 --multi-sampling --stop-at-end -s 1 -1280x720 --auto-skip-seconds 1 --multi-sampling --stop-at-end
--date-format "%Y-%m-%d"
--caption-file "$captions" --caption-size 28 --caption-duration 4
--caption-colour f9e2af
--background-colour 1e1e2e --font-colour cdd6f4 --background-colour 1e1e2e --font-colour cdd6f4
--highlight-colour f9e2af --highlight-users --highlight-dirs --highlight-colour f9e2af --highlight-users --highlight-dirs
--filename-colour 585b70 --dir-colour 89b4fa --filename-colour 585b70 --dir-colour 89b4fa
--bloom-multiplier 1.5 --bloom-intensity 0.75 --elasticity 0.3 --bloom-multiplier 1.5 --bloom-intensity 0.75 --elasticity 0.1
--title hyperhive --title hyperhive
--logo ${logo} --logo-offset 20x20 --logo ${logo} --logo-offset 20x20
--user-image-dir "$avatar_dir" --user-image-dir "$avatar_dir"
@ -68,8 +117,8 @@ writeShellApplication {
gource "''${args[@]}" --output-ppm-stream - --output-framerate 30 \ gource "''${args[@]}" --output-ppm-stream - --output-framerate 30 \
| ffmpeg -y -r 30 -f image2pipe -vcodec ppm -i - \ | ffmpeg -y -r 30 -f image2pipe -vcodec ppm -i - \
-vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" \ -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" \
-vcodec libx264 -preset ultrafast -pix_fmt yuv420p -crf 1 -threads 0 -bf 0 \ -c:v libsvtav1 -preset 6 -crf 34 -g 300 -pix_fmt yuv420p \
gource-hyperhive.mp4 gource-hyperhive.webm
else else
gource "''${args[@]}" gource "''${args[@]}"
fi fi