Repository navigation
Releases: fajarhide/contexere
Release list
v0.8.1
v0.8.1 contexere calls itself contexere everywhere now:
contexere --version prints contexere, and the omni link still prints omni
brew install fajarhide/tap/contexere installs the same formula as fajarhide/tap/omni
the brew caveats, share card and dashboard say Contexere
AGENTS.md and CONTRIBUTING.md tell contributors and their agents which old names stay, and why
Full Changelog: v0.8.0...v0.8.1
v0.8.0
v0.8.0 omni is now contexere, and nothing you installed breaks:
the binary is contexere, and omni keeps working as the same program, hooks and mcp entries untouched
contexere doctor runs each agent's hooks with a canary credential and shows which ones fire and redact
contexere init replaces an old omni hook instead of adding a second one
a database url without a password and a python key=lambda come through unredacted
a new readme, logo and manual under the contexere name
Full Changelog: v0.7.13...v0.8.0
v0.7.13
v0.7.13 omni gives every subagent the whole file it asked for:
a subagent's first read of a file comes back whole, even when its siblings read it first
a worktree-isolated claude code agent can run git again
a credential set after export or a shell operator is hidden too
omni.db is less than half its old size, 615 MB to 262 MB on a 30-day store
eight fewer crates in the build, and rust 1.99.1 is the pinned toolchain
Full Changelog: v0.7.12...v0.7.13
v0.7.12
v0.7.12 omni tells you which project and which model the money went to:
omni stats --view bill prices every request at api list price, split by model, project and session
sqlite3, psql and mysql rows reach your agent as printed, and a successful query is never called an error
a failing bun test keeps its file:line and the expected and received lines
a token inside yaml or other structured output is hidden where it stands
a comparison like token === "py" is no longer redacted as if it were a secret
rustls and webpki move past six security advisories
Full Changelog: v0.7.11...v0.7.12
v0.7.11
v0.7.11 omni shows you what your agent was billed, and keeps more keys out of the context:
omni stats --view bill reads claude code's own transcripts: billed tokens, where the context went, which tools filled it
az ssh output reaches the model whole instead of as two ssh warnings
a provider key printed on its own, like a bare sk-ant- or ghp_ token, is redacted
redaction keeps the command after a hidden token, and finds a token behind another assignment on the same line
in a paired run on claude code the bill was 11% lower with omni on, and scripts/ab_cache.py reruns it
Full Changelog: v0.7.10...v0.7.11
v0.7.10
v0.7.10 what omni hands back is what the tool printed:
a unified diff arrives whole, so git apply takes it and the @@ counts are true
a gh listing keeps every row instead of ten and advice to raise a limit you already set
printenv, set and export no longer deliver a password omni had already redacted
a grep reply folds whole or not at all, so nine of eleven matches never read as two
output your host truncated is no longer booked as shown, so a later tail cannot fold what never arrived
omni retrieve takes the word every marker prints, and omni stats --view folds says which folds were spent
a second benchmark corpus, built from SWE-bench Verified, that anyone can rebuild and check
What's Changed
- feat(ledger): record which marker shape a fold rendered, and its handle by @fajarhide in #771
- fix(init): --hook installs hooks, and an absent MCP server is not a fault by @fajarhide in #772
- fix(store): record which agent a decline was made for by @fajarhide in #774
- fix(hooks): a folded reply carries no second accounting of itself by @fajarhide in #777
- fix(hooks): a fold does not make the signal partial by @fajarhide in #780
- fix(ledger): a fold names the command that printed the lines by @fajarhide in #781
- fix(hooks): a cut too small to announce is not delivered under a fold by @fajarhide in #782
- fix(redact): a value that names a credential is not destroyed like one by @fajarhide in #784
- docs(changelog): add the missing 783 fragment by @fajarhide in #785
- chore(deps): bump taiki-e/install-action from 2.87.1 to 2.87.6 by @dependabot[bot] in #790
- chore(deps-dev): bump @types/node from 26.2.0 to 26.4.1 in /plugins/openclaw by @dependabot[bot] in #791
- chore(deps-dev): bump @earendil-works/pi-coding-agent from 0.84.4 to 0.85.1 in /plugins/pi by @dependabot[bot] in #792
- chore(ci): unblock the gates, rustls advisory and the openclaw node floor by @fajarhide in #811
- chore(deps): bump taiki-e/install-action from 2.87.6 to 2.87.12 by @dependabot[bot] in #801
- chore(deps-dev): bump @types/node from 26.4.1 to 26.5.1 in /plugins/openclaw by @dependabot[bot] in #802
- chore(deps-dev): bump @types/node from 26.4.0 to 26.5.1 in /plugins/pi by @dependabot[bot] in #803
- chore(deps): bump rmcp from 1.7.0 to 2.0.0 in the cargo group across 1 directory by @dependabot[bot] in #806
- fix(hooks): a window, a diff, base64 and a redaction all reach the reader by @fajarhide in #809
- docs(markers): document truncation, redaction and re-injection markers by @fajarhide in #810
- chore(deps-dev): bump openclaw from 2026.8.2 to 2026.9.4 in /plugins/openclaw by @dependabot[bot] in #804
- fix(hooks): the host's cut lands one byte short of the cap by @fajarhide in #813
- fix(registry): a git global flag no longer hides the subcommand by @fajarhide in #812
- fix(ledger): a grep reply folds whole or not at all by @fajarhide in #815
- feat(stats): a view for what the folds claimed and what came back by @fajarhide in #817
- fix(hooks): compaction forgets the subagent scopes of that session by @fajarhide in #820
- fix(semantic): a panic is critical whatever printed it by @fajarhide in #821
- feat(ledger): a fold records the tool behind the reply by @fajarhide in #823
- fix(ledger): a project fold needs a sighting from the last six hours by @fajarhide in #825
- feat(bench): sample the corpus into the blocks the pipeline scores by @fajarhide in #824
- fix(mcp): the retrieve tool takes the word the marker prints by @fajarhide in #834
- fix(format): a unified diff is a payload something parses by @fajarhide in #835
- chore(deps): rmcp 2.0 to 2.1 for GHSA-9g45-5xwm-f3wc by @fajarhide in #837
- feat(bench): a second corpus, and one anyone can rebuild by @fajarhide in #841
- fix(registry): a gh listing is delivered whole by @fajarhide in #839
Full Changelog: v0.7.9...v0.7.10
v0.7.9
v0.7.9 the lines you asked for stay on screen:
tail -5, sed -n 60,200p and a cd on the line before them all keep their lines now
re-running a command tells you the output is unchanged instead of hiding it behind a handle
a fold never replaces a whole reply, so there is always something left to read around
switching branch or landing a commit does not reset what omni knows you have already seen
omni context --tokens counts every payload omni handed back, so a turn is never reported lighter than it was
omni never claims you have seen bytes your host capped before they reached you
What's Changed
- fix(hooks): decline an over-cap payload in every shape normalize reads by @fajarhide in #727
- fix(ledger): the project scope may fold part of a reply, never the whole of it by @fajarhide in #728
- fix(distillers): an empty default is not a credential, and a redacted line keeps its comma by @fajarhide in #729
- fix(stats): key a command class on what wrote the output, not on its cd by @fajarhide in #731
- test(bench): resolve headroom from the command, and fail when a named arm is silent by @fajarhide in #730
- fix(bench): run the head to head every bench, and publish the result that does not favour us by @fajarhide in #732
- fix(bench): a competitor that changed nothing is a broken binary, not a loss by @fajarhide in #734
- fix(ledger): a command that named its line budget keeps its lines by @fajarhide in #737
- fix(ledger): read the line budget in command position, and read sed ranges by @fajarhide in #742
- fix(ledger): read the line budget per command, not per reply by @fajarhide in #752
- chore(deps-dev): bump @types/node from 26.2.0 to 26.4.0 in /plugins/pi by @dependabot[bot] in #748
- chore(deps): bump taiki-e/install-action from 2.86.5 to 2.87.1 by @dependabot[bot] in #745
- chore(deps-dev): bump @types/node from 26.2.0 to 26.4.0 in /plugins/openclaw by @dependabot[bot] in #747
- chore(deps): bump softprops/action-gh-release from 3.0.2 to 3.0.3 by @dependabot[bot] in #746
- test(ledger): a project fold outlives a branch switch and a new commit by @fajarhide in #754
- docs(manual): say the MCP server is a cache trade on Claude Code by @fajarhide in #756
- fix(hooks): count a declined payload's bytes in the context breakdown by @fajarhide in #758
- chore(deps-dev): bump @earendil-works/pi-coding-agent from 0.84.2 to 0.84.4 in /plugins/pi by @dependabot[bot] in #749
- chore(deps): bump the npm_and_yarn group across 1 directory with 5 updates by @dependabot[bot] in #753
- fix(ledger): tell a re-run its lines are unchanged, not that they were shown by @fajarhide in #759
- fix(bench): tell the replay's ledger which command produced the payload by @fajarhide in #765
- release: 0.7.9, and the first benchmark that can see the ledger's guards by @fajarhide in #770
Full Changelog: v0.7.8...v0.7.9
v0.7.8
v0.7.8 omni tells you where your tokens went, and every stats view finally looks like the same tool:
omni context --tokens breaks your context down by class, from data omni already records
every omni stats view draws one frame now, and the two blocks in the default view line up
--limit reaches projects and rerun, not just detail, and a cut table says how many rows it hid
--share and --card honour --since and name the window they are showing
omni_run folds across turns on mcp-only hosts, the one tier where nothing else can
make bench replays a corpus that cannot drift, and reports how much of the available repetition omni caught
Full Changelog: v0.7.7...v0.7.8
v0.7.7
What's Changed
- Publish the corpus the manual publishes, in all seven READMEs by @fajarhide in #600
- fix: the three now-lane defects, and the two things their tests found by @fajarhide in #604
- docs: lead with the win, and stop selling OMNI short by @fajarhide in #606
- docs: an average over one mix is not a floor under yours by @fajarhide in #607
- chore(deps): bump taiki-e/install-action from 2.85.10 to 2.86.1 by @dependabot[bot] in #614
- chore(deps): bump actions/setup-node from 4 to 7 by @dependabot[bot] in #613
- chore(deps-dev): bump @earendil-works/pi-coding-agent from 0.84.1 to 0.84.2 in /plugins/pi by @dependabot[bot] in #615
- fix: a diffstat that counts the diff, and a release gate that builds what it tests by @fajarhide in #618
- fix: byte-index cuts that panic on non-ASCII text, and the deny that was switched off by @fajarhide in #620
- perf(mcp): 23% off the tool surface by dropping two schema keys nothing reads by @fajarhide in #623
- fix(ledger): make the fold route auditable, and say whose bytes it replaced by @fajarhide in #625
- chore(lint): restore the string_slice deny in six files, and fix the one cut it was hiding by @fajarhide in #626
- docs: fix the broken star history chart by @Dessalines39394 in #624
- fix(cloud): stop counting terraform resources out of error prose by @fajarhide in #634
- fix(retrieve): say when a handle holds one block of a larger output by @fajarhide in #636
- fix(paths): create OMNI's own directory and database owner-only by @fajarhide in #637
- fix(hermes): install a plugin that parses, and register the hooks that replace a result by @fajarhide in #638
- fix(openclaw): register the plugin the host will actually load, on the bus that can replace a result by @fajarhide in #642
- fix(ledger): hold a sub-1 KB fold to three quarters, not four fifths by @fajarhide in #644
- fix(hooks,cli): stop announcing an empty stderr, and let every host be reset by name by @fajarhide in #645
- fix(ci,docs): pin every action to a SHA, attest the release, and stop asking for public disclosure by @fajarhide in #647
- fix(cli): make --flag=value mean what it says, in every command by @fajarhide in #648
- test(hooks,ledger): guard the two properties that make OMNI cache-safe by @fajarhide in #649
- fix(semantic): rank a compiler frame's own marker above the context around it by @fajarhide in #652
- fix(repo): stop the blanket *.py ignore swallowing shipped tooling by @fajarhide in #653
- perf(mcp): drop omni_context from the advertised surface, keep it as a CLI command by @fajarhide in #654
- fix(semantic): read a log's severity level, not just a colon after the word by @fajarhide in #656
- fix(ledger): stop booking a Read fold the pipeline then refuses by @fajarhide in #659
- docs(semantic): record the false positives states_a_severity is known to have by @fajarhide in #661
- fix(ledger): fold a split Read down to its first survivor instead of nothing by @fajarhide in #662
- fix(stats,mcp): stop reporting an estimate as an actual count by @fajarhide in #666
- feat(stats): report both engines, each against its own base by @fajarhide in #668
- feat(stats): five flags instead of twelve, and the formats stop pretending to be views by @fajarhide in #671
- fix(stats): keep --project ahead of --all-commands, as the old chain had it by @fajarhide in #674
- fix(store): prune the passthrough log and key it by session by @fajarhide in #675
- feat(ledger): keep the line count, so a fold may sit in the middle of a Read by @fajarhide in #676
- docs(benchmarks): publish the current run beside the one whose corpus is gone by @fajarhide in #680
- fix(producer): a label is the program, not a fragment of the command line by @fajarhide in #679
- fix(producer): the first assignment that ran is the producer, not the last one seen by @fajarhide in #681
- fix(producer): a quoted $( is text, and a substitution body ends at its paren by @fajarhide in #682
- perf(mcp): advertise the two tools that pay for the prefix, not the eight called once by @fajarhide in #683
- style(doctor): one shape for the host list, three columns, and the hint said once by @fajarhide in #689
- fix(pi): read the key OMNI writes, and check that every plugin does by @fajarhide in #690
- fix(hooks): the plugin scan reads the whole JS and TS family by @fajarhide in #692
- fix(init): name the tier when reporting a successful install by @fajarhide in #693
- fix(agents): declare the tier the post-hook already earns by @fajarhide in #694
- test(init): the tier check reads the success arm, not everything after it by @fajarhide in #695
- feat(mcp): offer omni_run on the one tier that cannot hook a shell by @fajarhide in #696
New Contributors
- @Dessalines39394 made their first contribution in #624
Full Changelog: v0.7.6...v0.7.7
v0.7.6
What's Changed
- docs(manual): document the two ledger floors, and guard all three numbers by @fajarhide in #556
- feat(ledger): record whether a fold covered the whole output by @fajarhide in #560
- The mark's ink is the terminal blue by @fajarhide in #561
- Drop the benchmark image from the six translated READMEs by @fajarhide in #563
- fix(cloud): keep every row of a kubectl pod table, and add a caveman bench arm by @fajarhide in #564
- fix(hooks): stop booking a saving when the reply is never sent by @fajarhide in #568
- fix(security): a bare pass is a counter, and passwd was never redacted by @fajarhide in #570
- fix(ledger): stop a Read fold from renumbering the lines below it by @fajarhide in #571
- feat(ledger): fold a repeated head again, and move the host's start line with it by @fajarhide in #572
- feat(ledger): fold both ends of a Read, and keep the middle numbered right by @fajarhide in #574
- fix(ledger): say the lines were not shown here, and give the skill a checkable install by @fajarhide in #575
- perf(store): index the column every hook run sorts on by @fajarhide in #576
- docs(skill): drop the installer URL both skills.sh scanners read as the install by @fajarhide in #579
- feat(mcp): advertise only the tools the host can use by @fajarhide in #580
- Update benchmark savings percentages in documentation by @fajarhide in #582
- docs(skill): drop the install code block the scanners read as a download by @fajarhide in #587
- fix(ledger): reserve one handle for worked examples so a real marker can be told apart by @fajarhide in #588
- fix(ledger): scope the session ledger to the reader, not the session id by @fajarhide in #590
- fix(stats): report the bytes OMNI counted, not bytes over a GPT constant by @fajarhide in #592
- docs(readme): say that the measured percentages are bytes per command, not a bill by @fajarhide in #591
- fix(ledger): answer a pull before folding the bytes it asked for by @fajarhide in #593
- fix(stats): report counted bytes, and document the payload shape the hook page asks for by @fajarhide in #594
- fix(stats): count the context breakdown instead of quartering it by @fajarhide in #595
- docs(site): lead with the measured payoff, and make five pages match 0.7.6 by @fajarhide in #596
Full Changelog: v0.7.5...v0.7.6