Repository navigation
Releases: Tejas242/ember
Releases · Tejas242/ember
Release list
Ember v1.3.0
Claude as a counter
- The pill shows Ember, the session you aren't watching, a bead per session (never orange: light, blue for asks, green
for an unseen finish, red for a stop, a ring for idle), the agents as a number and the time. - A new ask grows the island to two lines for five seconds with the question, then settles to jobwatch asks. A
finish stays until you focus that terminal (or 20 minutes), then lives in the card as done 14m ago; the "while you
were away" note is gone. Sessions in the card are 24 px rows that go to their terminal. ember go(bind it to Mod+G): the oldest ask, else the newest unseen finish, else the newest working session.- Limits: at 80% the card ends with Claude · 5h 84% · resets 4:10 PM, and Claude's back shows when a limit you
hit resets. Ember readslimits.jsonfrom your status line (one shell line, inember doctorand docs/CONFIG.md)
or fromember limits. It never edits your files.
Ember stops holding Claude
- The permission and question hooks no longer wait on the island. Every hook is async and returns at once, so the
terminal asks immediately (before, a request could sit on the island for up to 85 s). Ember still learns what is
asked, and says so: jobwatch · Wants to run go test ./…. - Hooks: 15 down to 11.
PreToolUse *,PreCompact,PostCompactandPostToolUseFailureare gone;
PostToolUsestays (it clears an ask answered in the terminal, and feeds Ember's per-tool gulp).ember install
takes the retired entries out of~/.claude/settings.json;ember uninstallstill removes every Ember entry, old or new. - Gone: the on-island permission and question cards,
ember allow | deny | always | terminal | answer, the step
timeline, agent rows, recaps and summaries, and the day card. - Config:
[claude] answerandwait_s,[card] stepsandothers,[moments] done_s,[look]opacity and
colours,[ember] flourishesandcelebrate(now part ofmotion = "calm") and[privacy] discreet(always on
while the screen is shared) are retired. An old config still loads;ember doctorsays which lines do nothing.
Ember v1.2.0
Volume and brightness, everywhere
- A key pressed while the card, a dashboard, a Claude request or the vibe stage is open drops its meter in as a strip
along the top, where the pill's would sit; nothing below it moves. - Over a fullscreen window Ember folds away and idles (it wakes about once a minute instead of 24–60 times a second).
A volume or brightness key brings just the meter up over the window, then it folds back. - News that arrives while you press (Claude finishing, say) waits until the meter is done instead of replacing it.
- The microphone's level and a player's own volume (scroll the music row) get their meters too.
For plugins
- Cards can carry up to six small choice chips under the body, besides their buttons; a chip sends its key.
- List and agenda rows with a
keyare pressable: a quiet chevron at rest, lit under the pointer, sent like a button. - Bars can show an interval band (
lo/hi) behind the value; rows-layout bars follow theirmoodand draw the
target as a notch; with a target or a band they scale to 0–1. - Card bodies keep their paragraphs. Keys may be 128 characters long.
- A post that changes nothing on screen (an identical line, a dashboard nobody has open) no longer redraws the island.
- An
edgemessage on the socket is answered{"ok":true|false}, so its sender knows whether the plugin got it; an
oversized message is logged once and refused instead of vanishing.
The edge plugin
- Its clock is focused work time: it runs while you're on the problem and freezes when you aren't, instead of
counting the hours since you pressed Start. - Give up and Skip are always on the dashboard; owed upsolves stay listed with an Upsolve button each; a button that
can't do anything says why in a short moment; verdicts show live ("judging · test 9", "WA on test 3"). - The dashboard is built only while it's open, and follows edge's push, reading the stats file only when the push is
a ping. - Room for edge's trials: tonight's rep and its cue, an interview countdown, a 28-day chain and readiness bars with
their uncertainty.
Fixes
- The plugin, bad-hook and stage tests pass when run more than once in a row.
Ember v1.1.0
Lighter
- The service no longer caps Go's memory at 16 MiB. The runtime needs about half of that for itself, so the garbage
collector ran back to back and Ember's CPU crept from a few percent to a quarter of a core or more the longer it
ran. It now stays around 4%. Runember install(ormake install) to rewrite the unit. - A dance and its face ride their 24 fps instead of asking for 60; the island sends the compositor only the
rectangles that changed (an open card: 13 times fewer pixels a second); a frame no longer allocates for arcs,
shaded fills or the session order.
Ember, more natural
- It dances on the beat: its knees bend into each beat (it used to land about 80 ms late), its weight steps from foot
to foot, the first beat of a bar lands hardest, and its flame tip and headphones trail its head. It picks a sway,
a groove, a head-bob or a bounce from how hard this part of the song goes, and blends between them. - Its face moves like a face: a change of expression happens behind a blink, the eyes jump and hold, blinks land on
beats and new lines, and each phrase of a song gets its own face (lost in it, grooving, beaming, now and then a
wink). - On the stage it sings the words. Ember listens for the singer in the middle of the stereo picture, finds where each
syllable starts, and shapes its mouth for it: lips closing on m, b and p, teeth on f and v, the tongue on l and th,
wide on "ah", round on "oh" and "oo", flowing from one to the next and holding a held note. It reads English,
Hindi in Devanagari and in Latin letters, and has a go at Arabic and Japanese kana. - Words from a browser player whose playhead only counts whole seconds no longer run up to a second late.
- Its idle breath no longer jumps when its mood changes.
Vibe
- Click Ember in the card while a song plays (or the headphones in the music row, or
ember dash vibe) and the card
becomes a stage: Ember dances big on a floor of the cover's light, on its own beat, and sings along with the song's
words, lit as they're sung. Claude's session stays in the top line; a request replaces the stage at once; when
Claude finishes, the stage folds itself at the end of the song; paused two minutes, it closes. - Every case has its look: a break in the words, a very long line, words without times, no words, an instrumental, a
new song, a talk, an ad, paused, Claude done or stopped, the screen shared, calm motion, late at night. - The words come from an
.lrcbeside the file, a cache in~/.cache/ember/lyrics, or LRCLIB, asked only while the
stage is open;[vibe] lyrics = falsekeeps it offline. Scroll over the words to move them a quarter second. - It's a plugin (
plugins/vibe, built in asember plugin vibe);ember installwrites it and grants itmedia
andentry. - Words in scripts that join, reorder or run right to left (Hindi and other Indic scripts, Arabic, Hebrew) are shaped
in their own script's font; right-to-left lines sit right and light up from the right, a mixed line in reading order. - A player whose playhead never moves (some browsers) is noticed after four seconds: its words page by how long the
song has played, and say so, until the playhead moves again.
Plugin protocol (backward compatible)
- Stages: the
stage,timed_text,media,sessions,audioandcountdownwidgets. - Pages may be
size: "card",sticky, and say when theyends; adashclose says why (reason). mediaevents (themediagrant): the song playing, only while the plugin's page is open.[opens] ember = "music" | "idle"in a manifest (theentrygrant): a click on Ember in the card opens its page.- Ember's hello says the plugin's grants; the Go SDK has
Plugin.Grantedand the harnessMediaandDashClosed.
Ember v1.0.2
- Ember's springs step in pieces no longer than a 60th of a second. At the card's 24 fps tick the old step was
unstable: a pixel of error rang up until Ember flew off the island (or the island panicked), and the instability
drove it into bursts of 60 fps frames. - A missing glyph's fallback font tries fontconfig's candidates until one parses and has it, so Chinese, Japanese
and Korean text no longer draws as boxes where the first candidate is a .ttc Ember can't read.
Ember v1.0.1
Built with Go 1.27.3: 1.0.0's binaries were built with Go 1.27.1, whose standard library has known vulnerabilities in
net/http (HTTP/2) and crypto/x509 that Ember's album-art download could reach. Nothing else changes.
staticcheck moves to v0.8.2, which reads the newer toolchain.
Ember v1.0.0
The first release: everything Ember does today, in one static binary for Linux on amd64 and arm64.
Claude Code
- 15 hooks installed into
~/.claude/settings.json(the file as it was kept once assettings.json.pre-ember;
other tools' hooks left alone), recognised under any binary name so a reinstall replaces stale ones. - The pill names the session at work and how long it has been at it; several sessions show the one you can't see,
and the rest as+N. A session gone quiet turns amber; one silent for half an hour settles to idle. - The card: the hero session's task, its facts and a live timeline hanging from Ember, with failed steps and
subagents on a branch; every other session as one line; click one to make it the hero. - Permission requests and questions answered on the island (Deny, Always, Allow, numbered options) or with
ember allow | deny | always | answer. The whole command is shown, and what Always would allow. A request goes
back to the terminal after[claude] wait_s(85 s), at once if Ember isn't running. - Done and Stopped in words, quoting Claude's most informative sentence; outcomes you missed wait by the clock, and
a line sums up what happened while you were away.
Music and the desktop
- Any MPRIS player: the cover in a ring in the pill, now playing on a haze of the cover's colours, controls, a
scrubber you can drag, and an equaliser that listens to the output (8 kHz, nothing stored). - Moments: volume, microphone and brightness, charging and battery low, Bluetooth headphones with their battery,
screenshots with a preview, a dot while the screen is shared (niri). - niri is first-class (focus, terminal titles, screencasts); Hyprland and Sway can focus a session's terminal.
Noctalia's bar height and wallpaper palette are followed;[look]covers other bars and your own colours.
Ember, the flame
- A character with a pixel face, a physical body, acts for every moment, an energy and mood over the day, sleep,
presence, habits, a dance that keeps the song's beat, and a gate on its flourishes.
Plugins
- Protocol v1 (JSON lines,
docs/PLUGINS.mdand its JSON Schema), a host with limits, coalescing, backoff and
suspension, grants for the powers that reach past a plugin's own line, the Go SDK and test harness in
pkg/plugin, and two examples: pomodoro (Go) and notify-build (shell). ember noteandember statusfor scripts;ember pluginsandember dash.
Tools
ember install(a systemd user service, the hooks, a default config),ember doctor(the service, protocols,
watchers, hooks, config lines, plugins, and whether the running island is this binary),ember demo(a Claude
session played on the island),ember uninstall [--purge].- A config that applies within ten seconds and never stops Ember over a bad line; every key in
docs/CONFIG.md. - About 9 MB of memory and ≈1% of a core while Claude works, drawn in software with damage tracking; nothing polls.