Skip to content

Commit 3f633ce

Browse files
authored
Merge pull request #34 from diegosouzapw/release/1.3.0
chore(release): 1.3.0
2 parents 50830a4 + c41e51c commit 3f633ce

3 files changed

Lines changed: 40 additions & 28 deletions

File tree

CHANGELOG.md

Lines changed: 31 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ Format: [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) · semantic ver
44

55
## [Unreleased]
66

7+
## [1.3.0] — 2026-07-12
8+
79
### Added
810

911
- **feat(openai):** compress completed **Responses tool pairs**. The Responses
@@ -30,14 +32,28 @@ Format: [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) · semantic ver
3032
upstream: 2.6% refusals on reminder-imaged requests vs 0% uncompressed).
3133
(thanks @adrade2)
3234
- **feat(grok):** opt-in support for xAI **Grok** on the OpenAI-compatible wire.
33-
Grok renders at an effective 9×12 cell (denser than the 5×8 default) with the
34-
verbatim fact-sheet, is priced by a measured ~1000 tokens/megapixel model and
35-
xAI cache/output rates, and stays **fail-closed**: even in `OMNIGLYPH_MODELS`
36-
it is text-only until an operator explicitly acks the risk via
37-
`OMNIGLYPH_UNVERIFIED_MODELS=grok-4.5` — pending OmniGlyph's own reading
38-
receipt. The OpenAI-wire profile resolver is now provider-neutral and accepts
39-
the `OMNIGLYPH_MODEL_PROFILES` env (legacy `OMNIGLYPH_GPT_PROFILES` still
40-
works).
35+
Grok renders at **stock Spleen 5×8 on white AA** — no grid, 152-col strip
36+
(768px short-side floor), short 512px pages — with an in-image **IDS block**
37+
beside the verbatim fact-sheet (the dense 9×12 cell confabulated exact IDs in
38+
measurement; white 5×8 + IDS is the stable exact-recall recipe). Grok is
39+
priced by a measured ~1000 tokens/megapixel model and xAI cache/output rates,
40+
and stays **fail-closed**: even in `OMNIGLYPH_MODELS` it is text-only until an
41+
operator explicitly acks the risk via `OMNIGLYPH_UNVERIFIED_MODELS=grok-4.5`
42+
pending OmniGlyph's own reading receipt in `eval/grok-density`. The OpenAI-wire
43+
profile resolver is now provider-neutral and accepts the
44+
`OMNIGLYPH_MODEL_PROFILES` env (legacy `OMNIGLYPH_GPT_PROFILES` still works),
45+
with retunable-per-model render knobs (`inkDilate`/`inkDilateAxis`, `invert`,
46+
`colorByClass`, `classTick`, `paperGray`) that stay off in production.
47+
- **feat(render):** the in-image **IDS block** (`appendIdsBlock`:
48+
hex/uuid/camel/path/port tokens, one per rendered row, max 16, deterministic)
49+
now rides inside **every** imaged path — the Anthropic slab, tool results,
50+
collapsed history, and both OpenAI-wire slab and history legs — as defense in
51+
depth beside the text fact-sheet. The fact-sheet budget grows 64 → 96 tokens
52+
and `factSheetText` pages past the 262 KiB scan bound so late identifiers
53+
still surface. The OpenAI-wire profitability gate now bills the **last page at
54+
its residual height** (not a full strip) and uses the real **o200k** count as
55+
its default text baseline (`grok-billing.test.ts` renders real PNGs and
56+
matches the gate token for token).
4157
- **feat(node):** the Node proxy's OpenAI leg falls back to the **Codex ChatGPT
4258
login** (`~/.codex/auth.json`, override with `OMNIGLYPH_CODEX_AUTH_FILE`) when
4359
`OPENAI_API_KEY` is unset. An explicit `OPENAI_API_KEY` still wins; only the
@@ -62,25 +78,6 @@ Format: [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) · semantic ver
6278

6379
### Changed
6480

65-
- **feat(grok):** repack the opt-in Grok render profile from the dense
66-
effective 9×12 cell to **stock Spleen 5×8 on white AA** — no grid, 152-col
67-
strip (768px short-side floor), short 512px pages. Upstream re-measured
68-
pure-image on grok-4.5: the dense cell confabulates exact IDs, while white
69-
5×8 + an in-image **IDS block** is the stable exact-recall recipe. That IDS
70-
block (`appendIdsBlock`: hex/uuid/camel/path/port tokens, one per rendered
71-
row, max 16, deterministic) now rides inside **every** imaged path — the
72-
Anthropic slab, tool results, collapsed history, and both OpenAI-wire slab
73-
and history legs — as defense in depth beside the text fact-sheet. The
74-
fact-sheet budget grows 64 → 96 tokens and `factSheetText` pages past the
75-
262 KiB scan bound so late identifiers still surface. The OpenAI-wire
76-
profitability gate now bills the **last page at its residual height** (not a
77-
full strip) and uses the real **o200k** count as its default text baseline
78-
(`grok-billing.test.ts` renders real PNGs and matches the gate token for
79-
token). New render knobs (`inkDilate`/`inkDilateAxis`, `invert`,
80-
`colorByClass`, `classTick`, `paperGray`) stay off in production and are
81-
retunable per model via `OMNIGLYPH_MODEL_PROFILES`. Grok itself remains
82-
**fail-closed** (`OMNIGLYPH_UNVERIFIED_MODELS` ack still required) pending
83-
OmniGlyph's own reading receipt in `eval/grok-density`.
8481
- **test:** pin `OMNIGLYPH_MODELS` to the built-in default scope in the
8582
savings-math e2e so the file is deterministic regardless of a developer's
8683
ambient shell. The GPT cases drive `gpt-5.6`; a shell that exports a narrowed
@@ -190,6 +187,13 @@ Format: [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) · semantic ver
190187
translations) covering Claude Code CLI on macOS/Linux, the **Windows
191188
PowerShell** variant (`$env:ANTHROPIC_BASE_URL`), and **Claude Desktop** setup.
192189
(thanks @ousamabenyounes)
190+
- **eval:** two `$0` measurement harnesses (score through the Claude Code CLI).
191+
`eval/grok-density` validates that the shipped Grok profile reads exact tokens
192+
back before the fail-closed gate is flipped; `eval/ab/guards-3arm` isolates the
193+
in-image IDS block's read value against the text fact-sheet (three arms:
194+
IDS+sheet / sheet-only / neither). Generated corpora and per-run logs are
195+
git-ignored so a run never poses as a receipt; neither changes shipped
196+
behavior.
193197

194198
## [1.2.0] — 2026-07-08
195199

README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,14 @@ bulky request block ──► profitability gate ──► reflow + render (1-bi
184184
- **What converts**: the static system prompt + tool docs, old collapsed history, large tool outputs.
185185
- **What never converts**: your messages, recent turns, the model's output, sparse prose, byte-exact values (hashes/IDs ride alongside as text), and any model that failed the reading benchmark.
186186

187+
### Opt-in flags
188+
189+
All off by default — the compression path above is unchanged unless you set them. `omniglyph --help` lists every flag.
190+
191+
- `OMNIGLYPH_GUARD_SECRETS=text|redact` — keep API keys, tokens, and other credentials out of rendered images: `text` never images a block that holds one, `redact` masks it in place. Never alters what the upstream API receives.
192+
- `OMNIGLYPH_KEEP_SYSTEM_TEXT=1` — never image the session config (system prompt, tool docs, reminders); tool outputs and old history still convert. Guards against Anthropic's refusal classifier on system-shaped images.
193+
- `OMNIGLYPH_MODELS` — comma-separated model bases to image (default `claude-fable-5,gpt-5.6`; `off` disables). **Grok** is supported opt-in on the OpenAI-compatible wire but stays fail-closed: text-only until acked via `OMNIGLYPH_UNVERIFIED_MODELS=grok-4.5`, pending its own reading receipt.
194+
187195
# 📚 Library use (no proxy)
188196

189197
Everything the proxy does per request is also a documented, importable API:

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "omniglyph",
3-
"version": "1.2.0",
3+
"version": "1.3.0",
44
"description": "Context-as-image compression proxy for LLMs: renders bulky context (system prompt, tool docs, history) as dense PNG pages with exact per-provider billing math (Anthropic/OpenAI/Gemini). Node and Cloudflare Workers. Part of the OmniRoute family.",
55
"type": "module",
66
"bin": {

0 commit comments

Comments
 (0)