v13.9.2

snarktank/ralphv13.9.2Jul 1, 2026by thedotmack

AI Summary

This release fixes a critical bug in the OpenAI provider layer where hardcoded context limits were incorrectly truncating conversation history. The provider now sends the full conversation history to the provider layer for management.

Key Highlights

  • Removed client-side context truncation logic
  • Fixed silent message dropping due to hardcoded caps
  • Full conversation history is now sent to the provider

Breaking Changes

  • Removed OpenAICompatibleProvider.truncateHistory() method
  • Removed requireNonEmptyToTruncate flag
  • Removed CLAUDE_MEM_MAX_CONTEXT_MESSAGES and _MAX_TOKENS settings
  • Removed truncateHistoryForOpenRouter and truncateHistoryForGemini wrappers

New Features

  • Full conversation history support

Full Release Notes

## Bug Fix

**Removed client-side context truncation from the provider layer.**

The `OpenAICompatibleProvider` applied a sliding-window truncation to conversation history — a hardcoded 20-message cap and a 100k-token "safety" limit layered on top of the model's own context window. In practice it fired on message count alone, dropping conversation messages at ~12k tokens (nowhere near the token limit) and silently corrupting history, mislabeled as "runaway cost" prevention. This broke setups whose real model context window bore no relation to those hardcoded assumptions.

The full conversation history is now sent to the provider, which owns its own context window.

### Removed
- `OpenAICompatibleProvider.truncateHistory()` and the `requireNonEmptyToTruncate` flag
- `truncateHistoryForOpenRouter` / `truncateHistoryForGemini` wrappers and their message/token constants
- `CLAUDE_MEM_{GEMINI,OPENROUTER}_MAX_CONTEXT_MESSAGES` / `_MAX_TOKENS` settings, defaults, and validation
- Related tests, docs, and installer references

Merged in #3096. Verified: `tsc` clean, 2248 tests passing, build-and-sync clean.