Skip to content

v1.3.141

Choose a tag to compare

@topcheer topcheer released this 09 Jul 17:40
· 3523 commits to main since this release

v1.3.141 — July 10, 2026

Major Features

Lanchat Agent Rate Limiting (Anti-Storm Protection)

  • Broadcast cooldown: Agent-originated broadcasts (broadcast/broadcast_all/send_team) are rate-limited to once per 20 minutes per sender. All broadcast types share one cooldown slot.
  • DM cooldown: Agent-originated direct messages use a per sender→recipient pair 5-minute cooldown. Both parties are explicitly recorded.
  • Actionable error messages guide the LLM: "retry in 18m 30s" or "wait for them to complete their task (3m 15s remaining)"
  • Human-originated messages are never rate-limited
  • Prevents LLM message cascades that cause avalanches across all agents on the LAN

Agent Cancellation Propagation

  • When a user cancels an agent run, all post-run actions that could trigger un-cancellable LLM calls are now skipped
  • maybeReflect (reflection callback + ratchet rule LLM calls) is skipped on context.Canceled
  • asyncVerify (background build/test) is skipped on cancellation
  • Session persistence and todo cleanup still run correctly on cancellation

Bug Fixes

Desktop

  • Session management: Resume latest session on startup instead of creating blank one
  • Session switching: Skip session reload when clicking already-active session (prevents message clearing)
  • Message deduplication: Deduplicate session history loading to prevent message clearing
  • Markdown rendering: All user messages now render as markdown (including cron/IM/mobile-triggered)
  • Streaming UI: Activate streaming UI state for cron/IM/mobile-triggered runs
  • Persistence: Use append-only persistence matching TUI behavior, not full rewrite
  • Auto-scroll: Complete rewrite to eliminate jitter and CPU usage during streaming
    • Removed ResizeObserver that caused infinite scroll loop
    • Use double-rAF and suppress window for stable auto-scroll
    • Use scrollIntoView instead of scrollTop for reliable bottom scroll
    • Eliminate scroll jitter with memoized segments and paddingBottom
  • Performance: Memoize MessageContent and MessageCard to fix massive input lag
    • Limit initial message load to last 50 to prevent UI freeze
    • Cap rendered messages at 500 (increased from 200)
  • Scrollbar: Remove scrollbar-gutter:stable causing right-side blank strip
  • Theming: Implement working light/dark theme with CSS variable override, persist theme preference, auto-detect OS dark mode
  • Title bar: Use CSS variables for title bar background and border
  • Session search: Add Esc-to-clear and aria-label

TUI

  • Slash command: Add /cron command with list, get, pause, resume, pauseall, resumeall

Agent

  • Memory injection: Change injected memory messages from system to user role (provider merges all system messages)
  • Test fix: Update stale project memory assertion to be role-agnostic

IM

  • Image downloads: Add explicit timeout for image downloads in Matrix, Mattermost, WhatsApp
  • Reconnect: Add jitter to Telegram and Slack reconnect backoff

CI

  • Frontend tests: Add Vitest tests to verify-ci.sh