Releases: abe238/hotinai
Release list
v0.9.15
Fixes a 0.9.13 regression: import hotin.board failed on any Python without the IANA timezone database (CI images, slim containers, Windows), because the Pacific lookup moved to module scope. hotin declares zero dependencies, so Pacific is now resolved lazily with a fallback that computes the US daylight-saving rule directly.
Also in 0.9.13-0.9.15: the fresh badge now means 'created inside its policy window' rather than 'a source re-saw it recently'; every board row carries date_iso, age_days and section_id; the export carries schema_version, policy_version, policy and generated_at; insider rows are judged by the star event rather than the repo's creation date; new hotin fresh subcommand.
v0.9.13
Freshness policy: the 'fresh' badge is now judged by creation date within a per-kind window (repos/models/papers 7d, news 2d), not the engine's re-seen flag that kept year-old repos 'fresh' after any re-star. Rising rows are no longer assumed fresh. Every row carries section_id, date_iso, age_days; latest.json carries schema_version, policy_version, policy, generated_at. New hotin fresh subcommand prints the policy.
v0.9.12
Repos tab: the star receipt is now '+N in 7d' (trailing 7 complete UTC days from GitHub's star-history endpoint) instead of the observation store's lifetime slope; a spike that cooled (this week under a quarter of a 50+ star previous week) loses its trending badge and shows 'cooling'.
v0.9.11
Honest star velocity. hotin rising now ranks by stars gained in the trailing 7 complete UTC days (GitHub's new stargazers/history endpoint) instead of lifetime stars per day; lead receipt is '+N in 7d'; a 'cooling' badge marks a spike that died; the observation store is seeded with the trailing 14 days so first-seen repos get real rising/viral velocity; the web board rows carry a 30-day sparkline.
v0.9.10
New repo source: diggactivity (Digg Top GitHub Activity board, https://digg.com/tech/github/activity). One corroboration per repo with more than 11 stars; meta carries digg_rank/actions/push/pr/issues/devs/stars/digg_developer. Parses the Next.js RSC flight chunks; a page-shape change degrades to an error status, never bad rows. Roster tests now pin their clock (fixtures had aged out of the window).
v0.9.9
GraphQL roster batches default back to serial: from the CI runner, 4 workers drew 403 secondary limits (448s), 2 workers 660s; serial ~400s. Concurrency stays behind HOTIN_INSIDERS_GQL_WORKERS. Every poll now logs one trace line: outcomes, seconds, workers, batch statuses, total Retry-After waited.
v0.9.8
Insider roster GraphQL batches now run HOTIN_INSIDERS_WORKERS (default 4) at a time. Measured on the 802-handle roster: 399s serial -> 144s, identical outcomes. The L4 points floor is re-checked between chunks; secondary-limit handling unchanged. Rollback: HOTIN_INSIDERS_WORKERS=1.
hotin v0.9.7
AI Native Foundation daily digest is now ingested from the digest pages (the feed carries no ids). Curated papers get a 'curated' badge and an 'ANF #n' receipt, curation counts as one extra corroborating source in the papers score, and latest.json gains entities.papers_curated (the newest digest in digest order).
hotin v0.9.6
hotin export reuses the insider roster poll that hotin refresh just made (persisted next to the store, 2h TTL, keyed by roster hash, token fingerprint and window). Saves one full 802-handle poll per bake. --no-insiders-cache forces a fresh poll.
hotin v0.9.5
Insider roster polling runs on 4 workers behind a locked throttle (same request budget, same results, roughly 4x faster). hotin export and refresh print a per-phase timing table to stderr.