Changes in .3093 since .3081
Core
- E27624: (DCM) could not pass int to Delphi SDK method with Int8-backed range parameter
- E27695: Allow DCM-mode hard cast to a generic type (eg, 'T(Value)')
- E27688: Bad reformat for C# attributes
- E27688: Bad reformat for top-level attributes
- E27681: C# String interpolation loses whitespace
- E27715: C#/Echoes: Initializer-less local in a goto-target block is re-defaulted, clobbering a value assigned before the goto
- E27601: Cannot return value from local method inside return-less closure
- E27652: Cocoa:
typeOf()doesnt honor mapped type - E27692: Cocoa: Two errors (one IE) accessing char member -- part 1: do not NRE when checking operators and coming from a wrong expression
- E27692: Cocoa: Two errors (one IE) accessing char member -- part 2: Check if value is boxed and use real one instead
- E27474: Debugger: CLR: bad reference exception when evaluating sometimes
- E27641: Enum parameter is passed as the wrong default parameter
- E27679: Keep Java file-scoped classes in their original package
- E27489: PEverify: Oxygene: Invalid IL
- E27594: PEverify: Stack depth differs depending on path error: do not emit jump after raise in case expressions
- E27694: RTL2 Char extensions don't work on .NET
- E27716: Toffee/Oxygene: block destroy helper omits captured block/object slot when nested callback block captures method context plus byref callback holder
- E27664: Toffee: Compiler allowed using any (valid) .NET namespace w/o. error
- E27649: Toffee: generic tuple returns nil
- E27686: VS was missing Project Setting Picker for Delphi SDK
- E27665: VS: Form Designer generated InitializeComponent as static
- E27547: Water/Debugger: support delegate variables
- E27547: Water/Debugger: support delegate variables (Mono)
- E27546: Water/Debugger: support for LINQ Where (CLR)
- E27546: Water/Debugger: support for LINQ Where (Mono)
- DCMl Allow Oxygene lambda params with inferred types
- Debugger: DebugHost parsing error on function bp with ":" in name
- Debugger: Support delegate variables (Cooper)
- Echoes: proper error when Xaml cannot be processed because IComponentConnector cannot be found
- Fix: ensure untyped var/out parameters are rejected outside DCM (found building non-DCM DelphiRTL);
- Merged EBuild
- Merged InternetPack
- Merged IslandRTL
- Merged libToffee
- Merged RTL2
- Ship lld/Mac for Windows, to use via CrossBox
- Spring4D: move compatibility tests into EUnit CI
Fire & Water
- Add assembly reference diagnostics option for Echoes (fixes)
- Added new assembly reference diagnostics feature for Echoes
- Allow “a” to filter messages list for Analysis
- Breakpoints Manager: Auto-layout fix for Fire
- Breakpoints Manager: Could not delete first breakpoint in list
- CodeBot Avatar: A standalone macOS companion character for Fire, Campfire, CodeBot CLI and GitBrowser, with animated UI, status bubbles, approval prompts and more
- CodeBot: Add AI model strategy options to CodeBot preferences
- CodeBot: Add an explicit deep reasoning profile
- CodeBot: Add Beads backlog tool support
- CodeBot: Add Claude Fable as the latest default strategy and introduce a separate Claude V4 profile
- CodeBot: Add Gemini model strategy with image & video generation support
- CodeBot: Add Grok latest model strategy with image & video generation support
- CodeBot: Add Kling account and image/video generation support
- CodeBot: Add mixed OpenAI+Grok/Gemini model strategies
- CodeBot: Add new ComfyUI account type
- CodeBot: Add new LM Studio account type (replacing hardcoded option)
- CodeBot: Add new Ollama account type
- CodeBot: Add prompt send-lock controls
- CodeBot: Added cross-platform power management support and keep CodeBot runs awake while active, updating sleep exceptions as run state changes and on completion.
- CodeBot: Added two Ollama model strategies
- CodeBot: Allow delaying a scheduled prompt just before it happens
- CodeBot: Allow multi-modal prompt attachments (files and images)
- CodeBot: Allow optional memory timestamps and include them in prompts when present
- CodeBot: Allow skill ccess in Proactive planner
- CodeBot: Allow switching to different providers for mixed model strategies
- CodeBot: Cleaner options for configurable CodeBot image and video model/provider overrides
- CodeBot: debugger profile and tools for interactive debugging
- CodeBot: Direct media slash command support, /image and /video
- CodeBot: Enable more in-depth orchestration logic not active in last week’s build
- CodeBot: Faster chunked transcript persistence and restore
- CodeBot: Fix for footer not updating when model changes
- CodeBot: Fixed Gemini account creation
- CodeBot: History compaction
- CodeBot: Image Generation
- CodeBot: Improve/streamline CodeBot cache persistence speed and behavior
- CodeBot: Improved cache flushing and session save reliability
- CodeBot: Improved media-generation profile guidance and routing, persist generated image metadata/cache paths, and update UI handling for partial media previews
- CodeBot: Improves media generation follow-up handling
- CodeBot: limit auto-loaded skill injection to supported agent profiles, don’t auto-load local skills
- CodeBot: Manager Sheet: Simplify the memories view
- CodeBot: MCP Client: UI for connecting endpoints, OAuth
- CodeBot: MCP Server: Deny, dont Approve for non-interactive clients that do not support elicitation
- CodeBot: MCP Server: Handle elicitation better, and support for local approvals
- CodeBot: Model Strateges review
- CodeBot: Model strategies
- CodeBot: Model Stratgies: Update Claude latest strategy to use Sonnet 4.6 by default and route review/deep reasoning to Opus 4.8
- CodeBot: Model Stratgies: Use "gpt-5.4-mini" as simple-task model in default OpenAI strategy
- CodeBot: More cache reload guarding
- CodeBot: More fluid UX when updating progress
- CodeBot: Multi-modal token usage in footer summaries
- CodeBot: New and improved prompt action controls (send, queue, steer, cancel) in Fire
- CodeBot: Per-solution usage tracking and HTML Report
- CodeBot: Process manager for long-running tasks, show active processes in Info
- CodeBot: prompt tightening
- CodeBot: Refine CodeBot routing and message analysis profile behavior
- CodeBot: Refresh chat typography and layout for cleaner look
- CodeBot: Render prompt attachments in CodeBot transcript
- CodeBot: Scheduled prompt attention sounds
- CodeBot: Scheduled prompts
- CodeBot: Segmented CodeBot cache migration and older transcript loading
- CodeBot: Show activity indicator while streaming long tool calls
- CodeBot: Show last-run agents in footer info and include injected skills
- CodeBot: Show media tool request details in tool-call UI (wip)
- CodeBot: solution-file:// links for unknown files should not bubble outside of the app.
- CodeBot: Support for adding analysis messages from the security review workflow
- CodeBot: Support for proactive model requests (for now, Campfire-only)
- CodeBot: Support for prompt queuing
- CodeBot: Support for prompt steering
- CodeBot: Time and location awareness (wip, Campfire-only)
- CodeBot: Tweaks to question buttons UI
- CodeBot: Update agent model mappings: enable Claude Sonnet for coding/reasoning, bump Opus review/deep reasoning to 4.8, and add grok-build as a high-priority coding/review option
- CodeBot: Update AI usage and workspace menu items
- CodeBot: Update OpenAI capability mappings to use chat-latest instead of gpt-5.5-instant for lightweight and general workloads
- CodeBot: Use new GPT-5.5 Instant capability mappings and expand GPT-5.5 strategy
- CodeBot: white scrollbars in the dark theme, in Water
- Debugging: Add a button to open the Add Breakpoint Sheet
- Editor: Add build message action menus and richer fix-it labels (tweaks)
- Editor: Add build message action menus, for CodeBot and Fix-Its
- Editor: Blame gutter did not show when files end with a trailing empty line
- Editor: Cycle stacked build messages from count badges via click
- Editor: Show message counts in line-below alongside the message, if cursor is on current line
- Editor: Tweak how cut off code is rendered on lines w/ build messages
- Fire/Water: Unify debug toolbar icons through shared image names and icon definitions
- Fire: editor and debug console views didn’t all/always update to new colors fully, when theme changed
- Fire: Hopefully final/good fix for Navigation Pane sometimes going wild after a debug session
- Fire: Improve file watch change detection with snapshots and ignore .git events
- Fire: jump bar labels didn’t honor dark theme
- Fixed colors for XAML preview dark path in dark themes
- GitBrowser: add CodeBot Avatar support (only if running)
- GitBrowser: add Git operation timeout support
- GitBrowser: add repository tree worktree nodes
- GitBrowser: add worktree selection and cleanup actions
- GitBrowser: build fix
- GitBrowser: detect worktree inventory changes and refresh worktree icons for popup updates
- GitBrowser: Expand worktree context actions and cross-worktree analysis
- GitBrowser: Fix macOS bundle identifier capitalization
- GitBrowser: GitNavigationPanelViewController should be the ITreeControllerDelegate
- GitBrowser: Guard against null repository during branch popup loading and author highlighting
- GitBrowser: Improve worktree tree selection and labels
- GitBrowser: make remote branch popup selection more robust
- GitBrowser: Preserve the actual folder when dispatching Git operations asynchronously
- GitBrowser: Refresh status by directly updating the repository instead of triggering the status changed handler
- GitBrowser: repository folder dragging from tree
- GitBrowser: route worktree comparison action through a reusable comparison handler
- GitBrowser: Use the actual worktree path for context menu actions, script discovery, solution scanning, and shell execution to correctly target active worktree folders instead of the repository root.
- GitBrowser: Windows: drop unneccessary settings
- GitBrowser: Windows: Enable and refresh repository menu actions based on repository
- GitBrowser: Windows: Improve menu labels for repository groups and IDE-specific solution opening
- GitBrowser: Windows: Prefix commit tags with pin markers
- GitBrowser: Windows: use navigation panel controller
- Initialize source control asynchronously to avoid rare lockup in Fire on solution load
- Internal: Rename question event enum cases in status mapping
- Keep fix-its in sync with text edits
- Limit theme updates to theme-change notifications only
- New menu command to only copy all build error messages
- NRE proofing
- Preserve analysis messages during (re)builds
- Rare race condition building statistics when the project was reloaded
- Refresh CodeBot models when account settings change
- Return social post create results with completed status and published ID side effect
- Reverted "Water: workaround for Account loading on .NET Core"
- Sort provider model choices case-insensitively for consistent UI ordering
- Type in Accountmanager created wrong account type for Perplexity
- Unnecessary Project reload could be caused if the project file had trailing whitespace or incompatible CR/LF line endings
- Unternal: default uses clause fix?
- Update video generation model mapping to grok-imagine-video-1.5
- Water: add posibillity to delete recent and favorite projects from main menu and welcome window
- Water: Dark fonts in the dark theme in Xaml preview
- Water: don't show popup menu for recent list
- Water: Don’t show CodeBot menu on Welcome screen
- Water: Dropdown and popup menus scroll with buttons top and bottom, and the mouse wheel or trackpad
- Water: Fixed window icon for maximized state
- Water: image tweaks for codebot tab and in-editor actions
- Water: missing background in dark themes for the corner between vertical and horizontal scrollbars
- Water: Opening Options closes CodeBot pane
- Water: SearchTreeView main node sometimes fails to update
- Water: The selection border should overlay the checkmark's container
- Water: workaround for Account loading on .NET Core
EBuild
- .NET Core didn’t always codesign macOS stubs due to wrong platform check
- Add remote/local LLD path support for Toffee builds
- Always run lld locally for Toffee builds instead of dispatching through CrossBox (wip)
- Island/Linux: fallback for resolving arm64—>aarch64
Elements RTL
- Account decoding issue
- Add Cancel support to HTTP requests
- Add Echoes.Core target and rename classic Echoes.Full configuration
- Add HTTP upload/download progress callbacks (Cocoa)
- Add proxy support
- Add proxy support (none, system, custom)
- Build fixes for Isalnd & ToffeV2
- Build fixes for Island & ToffeV2
- Cocoa: Prevent async
Processcompletion from sometimes hanging by signaling output handlers reliably and closing stalled output pipes after a timeout before invoking the finished callback. - Consolidate platform-specific RTL projects into a unified cross-platform build and add a separate legacy solution preserving the previous split project layout.
- DateTime.ToUnixDate
- Don’t recycle json value nices when making a unique copy, for somw reason we started getting overrelease issues
- Echoes: HTTP: unwrap to show original, and do not crash on an unexpected exception type
- Echoes: Use UTF-8 encoding for redirected process stdout and stderr
- Expse Pid on
Process - Expse Pid on Process (Echoes and Cocoa)
- Expse Pid on Process (Island)
- Forgot= Island WebAssembly target configuration 🙂
- Harden HTTP response streaming and Cocoa callback error handling
- Http: Harden HTTP response streaming and Cocoa callback error handling
- Http: unwrap to show original, and do not crash on an unexpected exception type
- Implemented DateTime.ToUnixDate
- Improved Convert.MillisecondsToTimeString to handle days and intermediate zeros
- Improved Convert.MillisecondsToTimeString to handle says too
- Json: Allow
nilfilename for .TryFromFile - Json: Allow nil filename for .TryFromFile
- Json: Don’t reuse Json value nices when making a unique copy (for ARC prrofing on Cocoa)
- Json: Parse Json integers directly to Int64 with overflow fallback to floats, and replace locale-based Toffee Int64 parsing with strict digit validation to avoid misclassifying numeric tokens.
- Json: Reuse Json string escaping for property names
- Locking fix
- Make process output handling nullable-safe and guard event signaling
- Parse JSON integers directly to Int64 with overflow fallback to floats, and replace locale-based Toffee Int64 parsing with strict digit validation to avoid misclassifying numeric tokens.
- Potential Cocoa thread safety issue for Convert with Current/Invariant formatter
- Potential Cocoa thread safety issue for Locale.Current/Invariant
- Potential thread safety issue for Locale.Current/Invariant
- Process: Guard process output parsing against nil UTF-8 string conversion results
- Process: more thouroigh quoiting and unquoting of command line parameters for all platforms
- Process: more thourough quoting and unquoting of command line parameters for all platforms
- Process: Prevent async process completion from hanging by signaling output handlers reliably and closing stalled output pipes after a timeout before invoking the finished callback.
- Read stdout and stderr asynchronously during process execution to prevent blocking and ensure both streams are fully captured before converting and closing the handles.
- Request cancelation: locking not required (according to docs); solves compile error locking on Darwin
- Reuse JSON string escaping for property names by adding a shared render helper and applying it during serialization, ensuring names are quoted and escaped consistently with string values.
- Serialization: Allow registering decoder types explicitly and fall back to the registry when the lookup misses
- Simplify configuration-specific build settings for Debug and Release
- String.Split(array of char)
- String.Split(array of char) [disdabled because it fails to link]
- Tests for CollapseSpace
Internet Pack
- Add security-safe-critical attributes to server entry points
- Add security-safe-critical attributes to server entry points to fix HTTP Server on .NET Classic
- Add WebSocket client support
- NRE fix for inner exception
- Remove AllowPartiallyTrustedCallers assembly attribute from non-Compact Framework builds
- Send each SSE object in one write (one chunk)
- Use Instantiate() for worker creation on Toffee to adjust to RTL2 Reflection fix in compiler
RemObjects Infrastructure
- Add fallback single-model strategy selection when configured strategy is missing
- Add Kling AI client for image and video generation with task polling, model support, and JWT bearer auth via access/secret keys, plus configuration support for new credentials.
- Add runtime tests ensuring tool-result success checks allow non-tool method mentions and suggested action examples without blocking completed assistant responses.
- Add steering-message support (wip)
- Add tests for child side-effect success and stale lease recovery
- Adopt Codable-based agent event and approval JSON serialization
- Bad model type filters for Gemini client
- Clamp model output tokens and stop exposing server ISE details
- Clarify run recovery behavior after interruptions and model requests
- ComfyUI: Adjust fallback queue progress to report queued state
- Delay remote tool dispatch until run is waiting
- Expose usage tracking helper as public
- Honor background routing for child runs and skip conversation history on isolated background threads
- Log agent prompt size breakdowns
- Normalize provider-prefixed media model names for resolved clients by stripping matching provider prefixes before creating model references and assigning the client model.
- NRE and cast fix
- Prefer structured progress callbacks over byte progress when available (also mitigatibg possible AV)
- Record notice events for unverified tool-backed success claims instead of failing runs
- Refactor runtime initialization to lazily ensure and reuse the agent runtime during settings updates, reset runtime/worker when starting a new chat, and guard model strategy access when no runtime is active.
- Remove unused session-memory overview summaries
- Remove useless cjustom JSON conversion helpers
- Restored missing Memory classes
- Revert bad rename for question event types to asked/response across AI session handling
- Subagent titles have much better descriptions of what child tasks do and why
- Support media model aliases when resolving AI clients by falling back from suffixed model names to their base model before lookup.
- Track tool side-effect metadata in function results and events, and use completed side effects to verify tool-backed success claims with more precise final-response detection.
- Track usage request lifecycle events
- Use typed side-effect status enums with wire-format conversion and validation, replacing raw string handling in serialization and runtime checks.
Island RTL
- Windows: Registry.SetValue should use the DeleteExistingValue method that ignores ERRORFILENOT_FOUND error
RemObjects Infrastructure AI
- Add generated media cost tracking
- Add image generation request tracking with metadata persistence
- Add more general image generation support (and implement Grok & Gemini)
- Add proactive scheduling support
- Add Scheduling support
- Add video generation support, including Gemini and grok
- Allow optional timestamp on memory
- Allow tool, annotation, and progress events from child events on foreground threads
- Don’t prevent skills from non-private stores from being auto-loaded
- Return "N/A" for missing usage costs instead of defaulting to $0.00