Epo v3.1.0
Immutable
release. Only release title and notes can be modified.
macOS (Apple silicon · Intel)
Windows 10 / 11
open source (MIT)
local-first
- Background and overnight runs no longer freeze: every Instagram-facing
operation now has a deadline, a watchdog revives a stalled tab (after
sleep, a renderer crash, or a dropped automation session), and quitting
never hangs behind a wedged loop. - Failures wait instead of killing the run: repeated failed actions take
up to three long, jittered backoffs (roughly one to two hours each)
before Epo concludes something is genuinely wrong; a soft-blocked
action is parked, never hammered; and records burned during an
incident are re-queued once it resolves. - Every quiet state explains itself: overnight rests, daily-cap parks,
and recovery holds show a reason with a live countdown, settings saves
confirm or surface their failure, and growth numbers stay honest —
your chart no longer collapses to zero after the first scan. - The Chain tab is now Targets, useful from the first session: a live
per-target funnel, an honest pool-and-coverage readout with a
days-to-next-target runway, a follow-back conversion verdict that
waits for real data — and the growth chart compares actuals to plan
over 14-day to all-time windows. - Timing never lands on a clock grid: daily wakes, sweeps, backoffs, and
scroll pacing all draw jittered intervals, and adaptive session pacing
is now the default for new installs.
Every commit since v3.0.3
- release: v3.1.0 — end-to-end QOL: freeze-proof engine, recovery ladder, honest surfaces (
974be9f) - feat(ui): long-horizon growth surface — actuals vs plan, honest momentum (
c8a705c) - feat(engine): requeue-healer — systemic failure windows give abandoned records back (
4f5d2f0) - feat(ui): Chain tab rebuilt as the Targets console — useful from the first session (
91160bf) - fix(engine): exhaustion needs positive evidence — and is reversible within 48h (
e2235db) - feat(settings): adaptive-session pacing is reachable and the default; knobs stop lying (
04dc181) - feat(timing): noisification layer — no IG-facing wait fires on a predictable instant (
8165479) - feat(adapter): tab health events + sleep/resume observation feed the recovery path (
a5c3651) - fix(rim): shape drift ends walks as a verdict — never a verified-complete empty census (
c929ee1) - feat(engine): classified recovery ladder replaces terminal halts and blocked hammering (
225506a) - fix(prune): census tiles tell one truth — durable last-complete census, honest bar (
868ce98) - feat(engine): parks and holds are first-class visible states, not dashes (
29cf4cd) - fix(ui): chain projection rides the mutation push — target stats tick during walks (
7ce4039) - fix(store): first census no longer erases weeks of charted follower growth (
1cc1a3e) - fix(settings): saves are visible and honest — chip, error toast, no silent revert (
9281c3a) - fix(adapter): bound every tab-facing await; step watchdog recovers a wedged loop (
26f9cde) - ci(repo-health): check our own raw URLs now that the repo is public (
7d31de8) - fix(ci): silence actionlint's SC2016 info; one-click release downloads (
78cedfc)
One click downloads the right package. First launch: macOS blocks
un-notarized apps — dismiss the dialog, then System Settings → Privacy &
Security → Open Anyway (needed once). Windows SmartScreen may warn —
More info → Run anyway. A no-install Windows build,
Epo-3.1.0-portable.exe, is in the assets below.
Already running Epo? Windows installs update themselves in the
background; macOS shows the new version in Settings → Updates and brings
you here.
- Your database, settings, and Instagram session carry over — updating is a
drop-in replacement. - Every other asset below (
.zip,.blockmap,latest*.yml) is the
self-updater's feed — apps update themselves from these files. - Epo acts on your Instagram account; use it at your own risk (see the
README).
Full changelog: v3.0.3...v3.1.0