Oversized tool results and arguments are now truncated to keep archives
conversation-dense, and tool output is rendered in dim gray ink on image frames
to visually de-emphasize noise.
All truncation budgets and dimming behavior are configurable.
- Switched render outputs from byte arrays to base64 strings across native and TypeScript surfaces.
- Updated `RenderedFrame` and FFI declarations so `data` is a base64 string and `chars` are exposed.
- Added `SnapcompactSerializeOptions` with truncation, head/tail ratio and tool/arg/call limits.
- Tracked dim-marker state in rendering, reopening spans across chunk boundaries and stripping markers.
- The `snapcompact-summary.md` prompt was removed from `packages/agent` to further centralize `snapcompact`-related concerns within the dedicated `@oh-my-pi/snapcompact` package.
- Introduced `isSnapcompactShape` for runtime validation of `SnapcompactShape` overrides, enhancing data integrity when loading configuration from dynamic sources.
- Updated README and native module comments to reflect the standalone `snapcompact` package structure.
- Added a new @oh-my-pi/snapcompact package and redirected compaction call sites to it.
- Added provider-aware snapcompact shape resolution for model-specific mixed-frame behavior.
- Added optional image detail support by extending ImageContent and passing hints through OpenAI providers.
- Added native snapcompact render options, including 5x8/8x8 font loading and palette/geometry controls.