Skip to content

Releases: fajarhide/contexere

v0.8.1

Choose a tag to compare

@github-actions github-actions released this 29 Oct 16:32
v0.8.1
fa81450

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

Choose a tag to compare

@github-actions github-actions released this 29 Oct 11:37
v0.8.0
157e5f2

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

Choose a tag to compare

@github-actions github-actions released this 28 Oct 14:43
v0.7.13
ea5c3ec

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

Choose a tag to compare

@github-actions github-actions released this 22 Oct 04:05

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

Choose a tag to compare

@github-actions github-actions released this 14 Oct 05:36

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

Choose a tag to compare

@github-actions github-actions released this 23 Sep 17:35

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

Choose a tag to compare

@github-actions github-actions released this 04 Sep 04:30
9a75ea5

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

Choose a tag to compare

@github-actions github-actions released this 25 Aug 18:15

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

Choose a tag to compare

@github-actions github-actions released this 23 Aug 19:10

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

Full Changelog: v0.7.6...v0.7.7

v0.7.6

Choose a tag to compare

@github-actions github-actions released this 17 Aug 10:12

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