Changes in .3139 since .3125
- Otherwise identical to .3125
- Promethium Preview
Core
- E27440: ASP.NET Core/Razor-based Web App compilation error
- E27181: Debugger: possibility to edit value in Water debugger
- E27886: if exists() doesn’t work as a second operand to OR
- E27181: Water/debugger: possibility to edit value in debugger
- E27181: Water/debugger: possibility to edit value in debugger (.NET Core)
- E27181: Water/debugger: possibility to edit value in debugger (Cooper)
- Add .NET Core ESP website and server templates for all Elements languages
- Add Cooper regression tests for Char reference casts and mapped String plus Char behavior
- Correct external method detection for Objective-C output signatures
- Correct rejected exception filter handling by restarting the search through the normal rethrow path and marking the continuation unreachable.
- Debugger: Add CoreCLR redirected console input
- Debugger: Add cross-platform Java console input
- Debugger: Add full-line debugger console input support (wip)
- Debugger: Add iOS Simulator
dyldshared cache support - Debugger: Add Windows ConPTY support for Java console input
- Debugger: GetMembers exception if type is not resolved
- Debugger: Store source files checksum into .pdb? (Classic pdb)
- Delphi Compatibility: $DELPHI ON mode could be missed with earlier fixed code
- Delphi Compatibility: Accept array elements for Move() (takes address of the element; see also prior commits re Move)
- Delphi Compatibility: Accept Pointer as a type in DCM mode without System unit being present (like other basic types; already in Echoes)
- Delphi Compatibility: Add more Delphi hard cast support (Echoes is more limited, eg won't allow TClassType(Pointer))
- Delphi Compatibility: Add new system intrinsics for RTTI info
- Delphi Compatibility: Add support for Initialize and Finalize (living in the Delphi SDK)
- Delphi Compatibility: Allow access casts (descendant used purely to view / get layout access, then cast through it)
- Delphi Compatibility: Allow assigning record methods to a callback (procedural type) that has a Self param
- Delphi Compatibility: Allow Currency (fixed-point type) to implicitly convert to floating point types in DCM mode (Delphi allows this, non-DCM Oxygene requires a cast)
- Delphi Compatibility: Allow Delphi method-pointer typecasts to share TMethod Code/Data storage
- Delphi Compatibility: Allow hard casts between unrelated types: TFoo(bar) where bar is TBar and not related
- Delphi Compatibility: Allow named const sets as the RHS of 'in' (eg GetTypeKind(T) in MyTypes, or a literal set)
- Delphi Compatibility: Allow passing method addresses to Pointer parameters
- Delphi Compatibility: Allow records with Implicit(...): Pointer to convert to typed pointer targets
- Delphi Compatibility: Allow resolution of Create as a non-constructor (static method, or free method) (followup to earlier commit re ancestor Create resolution)
- Delphi Compatibility: Avoid showing "
" in cast diagnostic - Delphi Compatibility: Classes with implicit TObject ancestry (but never explicitly stated) did not get the Delphi object model, when set as default
- Delphi Compatibility: clean up callable overload tests (was too much duplication)
- Delphi Compatibility: Close callable and const-borrow edge cases
- Delphi Compatibility: DCP files can escape method names (eg &op_Equal) so unescape
- Delphi Compatibility: DCP import: interfaced methods (eg Generics.Defaults.IComparer
.Compare) had incorrect Self param. Requires re-importing FX files - Delphi Compatibility: Delphi allows pointers to be assigned to strongly typed object references. Also emit a warning; it is not safe.
- Delphi Compatibility: Delphi defines: fix crash; sometimes some defines already exist
- Delphi Compatibility: Delphi metaclasses did not expose constructors to create instances of the type
- Delphi Compatibility: Derived overloads could hide ancestor members (eg, constructor Create, then in descendant, a Create method): these now resolve
- Delphi Compatibility: E27625, allow TTask to be created with a block (already supported anon methods, closures, lambdas)
- Delphi Compatibility: Expand atomic intrinsics
- Delphi Compatibility: Extend existing support for addr-of inside a typed constant to local consts
- Delphi Compatibility: fix parameterless calls being rejected as method groups
- Delphi Compatibility: Generic type calls identically named non-generic-type's static Create factory method (not constructor): ensure resolved correctly
- Delphi Compatibility: Handle 'array of T' and 'TArray
' as the same thing (one is aliased to the other); bare methods (no brackets) may or may not be called or assigned, match S4D expectations - Delphi Compatibility: Handle Delphi's array Slice(), which treats it as an open array, ptr+high (needs safe handling for Length() etc that cannot use any other array prelude or metadata)
- Delphi Compatibility: If a property and method with the same name exist, allow the method to be called
- Delphi Compatibility: Ignore imported FX defines with value 0 for IFDEFs
- Delphi Compatibility: Implement all Delphi custom operator overloading
- Delphi Compatibility: importing DCPs -> FX adds standard Delphi defines incl version-specific (CONSOLE is defined based on DCP and project settings though). VCL and FMX are defined when vcl and fmx packages are imported, etc
- Delphi Compatibility: In DCM mode, allow Delphi raw Pointer parameters to match typed pointers
- Delphi Compatibility: Inline declared method of object variables were not recognized as using the same code/data storage as normal event handler method pointers
- Delphi Compatibility: Island: make
TypeInfo(T).KindmatchGetTypeKind(T)for local types - Delphi Compatibility: Island: preserve Delphi access-class hard casts
- Delphi Compatibility: Keep DCM
array of constdistinct fromarray of Object - Delphi Compatibility: Keep non-DCM bare method auto-calls when another overload takes a single-method interface
- Delphi Compatibility: Map DCM 'Create...' constructor calls to imported FX 'with...' constructor names (eg in Spring, EConvertError.CreateResFmt())
- Delphi Compatibility: Oxygene: resolve imported constructor names such as withRes
- Delphi Compatibility: Pass const-record fields to untyped const parameters without requiring writable owner storage
- Delphi Compatibility: Procedures can now have a 'Result'-named parameter (previously errored that Result could not be assigned to)
- Delphi Compatibility: Project importer adds default unit prefixes (with Delphi namespace)
- Delphi Compatibility: Regard two identical array types as identical (also, address of an array and address of the first element can be compatible references)
- Delphi Compatibility: Resolve Create ambiguity by constructor first, then static factory (eg TLookup.Create(comparer) vs Create
(...)) - Delphi Compatibility: Resolve identifiers for qualifier-style lookup only with DefaultUsesPrefix before symbols (System.foo is foo in System.pas, before resolving System() global)
- Delphi Compatibility: resolve implicit calls and callbacks per overload in DCM
- Delphi Compatibility: Support
Copy()inbuilt for arrays - Delphi Compatibility: Support casting pointers to fixed arrays (eg, pointer to array[0..5] of Type)
- Delphi Compatibility: Support Delphi array-of-const calls to imported SDK methods, eg Exception.CreateFmt('%s', ['value'] - build TVarRec[] plus hidden High(Args) param
- Delphi Compatibility: Support Delphi GetMem/FreeMem/ReallocMem memory built-ins
- Delphi Compatibility: Support Delphi l-value typecasts like "PHashTable(foo) := p"
- Delphi Compatibility: Support Delphi New/Dispose memory built-ins (eg &New(p) / Dispose(p), with TypeInfo(P^) when needed)
- Delphi Compatibility: Support Delphi variant (union) records (union at any location in the record, managed types not supported inside a union (same as Delphi))
- Delphi Compatibility: Support imported FX reference-to-function anonymous-method types as callable values (eg TFunc
= reference to function: TResult) - Delphi Compatibility: Support PByte(ptr)[offset] when calling Move() (handle typed pointer (array) derefs as addresses passed to untyped, ie ^Void, params)
- Delphi Compatibility: Support untyped const params (seen but not isolated to generic methods, used in Spring Weak
) - Delphi Compatibility: Treat generic procedure-of-object aliases as Delphi method pointers (eg TNotifyEvent
(fInvoke) := Invoke / Result := TNotifyEvent (inherited Invoke)) - Delphi Compatibility: Write-only properties of a method type (foo.OnChanged := EventChanged) did not resolve the type so treated the method name as a method call
- Delphi Compatibility: {ass hard-casts into var/out params (ensures the cast does not create a temporary but uses the original storage)
- Deploy EBuild System.* dependencies
- Fix C# async void exception dispatch and context lifecycle
- Fix Cocoa exception helper binding by separating Island wrappers, resolving the Cocoa exception type, and preserving correct temporary initialization.
- Fix Cooper string concatenation typing and Java value conversions
- Fix Island/Delphi class-variable export handling for direct and storage-record BPL symbols
- Fix Java code generation for Assigned checks on Cooper events
- Fix membership comparisons to honor overloaded equality for reference types & preserve single evaluation and nil handling
- Fuchsia: add zxdb DAP debugging backend
- Harden debugger process shutdown and termination reporting
- Island backend: fix IR model validation (set Void type on method-prefix inline asm (returning void) metadata)
- Island backend: In debug mode, validate IR model before serialization
- Island backend: Map WeakAttribute to Weak, not NoReturn
- Island backend: When an object file write/emit task fails, wait so that the exception is seen
- Island/Delphi: Add manual TInterfacedObject Windows probe
- Island/Delphi: Fix ARM64 DCU namespace parsing and preserve INF address slots
- Island/Delphi: Fix Delphi 13 forward address slot reservation and ARM64 namespace slot accounting, with regression coverage for imported namespaces, aliases, legacy validation, and FMX WebBrowser parsing.
- Island/Delphi: Fix Delphi property TypeInfo emission to use indirect pointers and add a Windows runtime regression test for TypInfo property access.
- Island/Delphi: Fix Delphi TArray pointer FX handling
- Island/Delphi: Fix hidden-result LLVM invalid record regression
- Island/Delphi: Fix Island managed-record and Delphi string ownership across inlining, ARC cleanup, and returns; harden string release semantics and add runtime regression coverage.
- Island/Delphi: import class vars, so the symbol can be found (eg the class property TStopWatch.Frequency used FFrequency, but it was not found)
- Island/Delphi: Preserve Delphi property defaults, storage predicates, indexes, and inherited types as FX metadata with dump support and compatibility regression coverage
- island/Delphi: Resolve Delphi 13 generic method references through validated procedure owners and add regression coverage for direct, invalid, and FMX address mappings
- Map compiler member access values to Island reflection metadata
- Merged cooper.jar
- Merged EBuild
- Merged EUnit
- Merged Everwood5
- Merged InternetPack
- Merged IslandDelphi
- Merged IslandRTL
- Merged libToffee
- Merged RTL2
- Merged RTL2.Web
- Regression: Fix inherited Cocoa extension constructor dispatch to pass the object receiver instead of an objc_super record, with a Darwin regression test for inherited construction.
- Resolve RESX writer dependencies in isolated bootstrap build output
- Stabilize cross-runtime diagnostic tests and isolate runner RTL dependencies
- Stop advertising CPS for ASP.NET Core projects in Visual Studio
- Toogee Global Mangling: Preserve foreign signatures for external global methods
- Use compatibility Darwin SDKs for CI builds to still generate x64; exclude native SDKs from full setups
Fire & Water
- Add built-in documentation knowledge bases
- Add ESP debug mode project setting for web and live-mode targets
- Add ESP Live mode support
- Add full debugger state capture to exception sheets
- Add interactive program input to the debugger console
- Add selectable Xcode developer folders ad IDE (Fire only) and Project setting
- Added Android device screenshot capture
- Added Apple device screenshot capture
- Allow dotted project template names
- Cocoa: Pass store context when resolving provisioning profiles
- Debugger: Handle simulator shutdown signals during debugging
- Debugger: Improve simulator symbol-cache diagnostics
- Debugger: Support for console input in the debugger (wip)
- Debugger: Support running iOS projects on visionOS
- Document EBuild runtime-change recovery
- E27892 Water: JumpBar text and menu arrows have incorrect theme colors
- Earth: Fix GTK tree overlay visibility and simplify workspace navigation chrome
- Earth: Pass configured Docker executable path to build settings
- Earth: Remoting SDK & Data Abstract support
- Editor: support for coordinated linked undo/redo across buffers
- Enable platform capability support for Fuchsia targets
- ESP website templates
- Fire is now arm64-only (still supports developing for x64)
- Fire: Detect and launch Xcode Device Hub or Simulator from the menu
- Guard newly created file selection
- Guard shared project reference updates
- Handle missing skill selections when preparing CodeBot approvals
- Harden account persistence against incomplete loads
- Improve debugger console standard input handling and preserve prompts during output
- Improve Help database packaging and browsing
- Link multi-file FixIt edits into a shared undo operation
- Preserve descendant selection when resolving grouped project nodes
- Preserve edited comparison sections during realignment
- Prevent file package directories from being treated as folder projects during drag and drop
- Preview for .html files
- Propagate scheduled-run skill context
- Refine macOS search field styling and compact file filter layout
- Refresh live website folders from file-system events
- Refresh nested syntax colorers on theme changes
- Refresh Project Settings colors on theme changes
- Remove Ionic.Zip dependency from knowledgebase tests and shared projects
- Render concurrent interactive prompts
- Resolve: Defer Island SDK population to on-demand downloads
- Restart ESP live mode once when the host-pinned runtime changes
- Retain debug canvas during stepping
- Serialize CrossBox project lifecycle operations on a dedicated queue
- Serialize project reference resolution through a per-solution queue
- Show API key verification errors when adding accounts
- Support for using Device Hub for iOS debugging
- Support Fuchsia device monitoring and validate target SDK architectures
- Water: Detect fully vs. partially imported Delphi SDK versions
- Water: HTML/Markdown preview shows above modal dialogs
- Water: layout tweak for busy CodeBot chat field
- Water: Move Delphi SDK import action to the dialog’s primary button area
CodeBot
- Add Claude Opus deep reasoning and Grok voice transcription support
- Add gpt-6.1-sol API pricing and request support
- Add gpt-6.1-sol as preferred coding, review, and reasoning model
- Add Grok voice transcription model support and include selected model in multipart requests
- CodeBot: Add Json validation and workspace folder creation tools (Campfire)
- CodeBot: Truncate long approval text in the middle for display
- Connect CodeBot Avatar asynchronously to avoid blocking setup and prompt submission
- Continue IDE requests in the current CodeBot chat (for now)
- Expose MCP tools for scheduled agent runs
- Expose selectable runtime destinations to CodeBot
- Forward background media progress to the workspace UI
- GPT-6 Astra support: asynchronous tools
- Improve CodeBot question color contrast
- Improve CodeBot run history and transcript handling
- Improve CodeBot skill loading diagnostics
- Improve skill creation guidance and strengthen delivery verification handoffs
- Message fix
- More guidance to use the Elements documentation knowledge base
- Refine CodeBot footer content and omit empty project details
- Require dedicated approval to overwrite (as opposed to create) image files
- Serialize interactive CodeBot prompts (yet again)
- Support custom responses in CodeBot multiple-choice questions
- Update CodeBot model capability routing
- Update CodeBot model strategies for gpt-6 routing and prompt cache preferences
- Update Grok latest strategy to Grok 4.7 and latest image model
- Update Instagram media upload endpoint
- Update OpenAI model-routing expectations
EBuild
- E27440: ASP.NET Core/Razor-based Web App compilation error
- Add isolated Fuchsia debugging deployment with symbol artifacts and private repositories
- Add preserialized .resx support for modern targets
- Allow newer package assemblies to supersede framework references at runtime What the fix does, and why
- Android: Add ADB mDNS wireless device reconnection
- Delphi project import: don't compile .inc files as source units
- ESP: Add Global.asax processing and web application support
- ESP: Add Localization with ~
- ESP: Support static custom error pages in ESP publications
- ESP: Validate and restart ESP publication runtimes
- Improved ESP support with live mode & .aspx parsing improvements
- Island/Delphi: enable Win/arm64 import
- Keep solution failure counts reliable when projects fail in parallel
- Preserve and publish project, host, and unit diagnostics across website builds
- Release .resx input files after successful resource compilation
- Report unresolved .NET SDK before Razor compilation
- Serialize drawing resources in .resx compilation
- Sign embedded dylibs alongside frameworks to preserve nested code signatures and entitlements
- Skip macOS provisioning profile lookup when no profile is configured
Elements RTL
- Add Dictionary.ToList to return key-value pairs from the dictionary sequence
- Add opt-in strict JSON parsing with RFC-compliant validation
- Deprecate legacy endpoint properties and add first/last retrieval methods with default fallbacks
- Fix reflection method invocation to expose return values and invoke non-public methods
- Fixes for Afterhours reports: Fix invariant date parsing and formatting across platforms, standardize UTC calendar component extraction, and improve Toffee locale-aware numeric and percentage formatting.
- Normalize invariant date/time parsing and formatting across platforms
- Optimize broadcast subscription removal with receiver-based indexing and centralized cleanup logic
- Preserve literal T in date-time format patterns on Cocoa
- Toffee: Ensure HTTP response callbacks fire once for successful and failed requests
- Toffee: Handle missing HTTP responses and preserve timeout error behavior
- Use cancellable NSURLSession transport for synchronous HTTP requests, enabling cancellation and timeout handling during response header and body waits.
- Workaround for E27885: LLD bug breaks exception unwind
Internet Pack
- Handle listener shutdowns with a dedicated interrupted-accept exception and preserve socket errors for genuine accept failures.
- Support secure platform WebSockets and robust steering transport
Earth Preview
- Earth: Normalize C.UTF-8 sentinel locales for Mono launches
- Implement a WSLg-safe themed in-window menu
Campfire
- Close image workbench with Cmd-W
- Defer application termination until workspace shutdown completes
- Fix for NRE when generating image w/o suggested path
- Fix welcome message
- Improve media model matching for provider-qualified and workflow master model requests
- Improve media model selection and discovery
- Improved new workspace creation flow
- Invert generated image mask luminance for OpenAI
- Keep saved media models usable during discovery
- More compact ArcFace comparison results
- Route new documents through the workspace document controller and simplify document menu configuration
- Show transparency grids only for transparent images
GitBrowser
- Add conflict summary action to explanation sheets
- GitBroser/Mac: Improve branch toolbar controls for macOS 27
- GitBrowser/Linux: Launch terminal executables on the Flatpak host
- GitBrowser/Linux: remove repository doesn't refresh Commits and Files lists
- GitBrowser/Windows: Add magnifying glass for the Search box
- GitBrowser/Windows: Refresh repository state after external Git updates
- Improve merge conflict actions with explicit options and Commit Merge support
- Open existing pull or merge requests directly
- Optimize syntax state propagation across comparison chunks
- Show conflicted file in suggestion explanations
- Stabilize branch popup refreshes
Island RTL
- Darwin: use DISPATCHTIMEFOREVER for non-repeating timers
- Expand exception filter tests to verify outer propagation, interface mismatches, and exactly-once finally execution
- Fix Darwin locale bridging and add locale formatting tests
- Fix DateTime formatting for 12-hour boundaries, AM/PM markers, year tokens, and percent-prefixed custom formats
- Fix EventWaitHandle timed waits and add comprehensive signal/reset behavior tests
- Fix locale-aware date parsing and expand two-digit year token handling
- Fix native Console.ReadLine buffering to handle UTF-8
Island Delphi Support
- Restore missing Delphi intrinsics in IslandDelphi
RemObjects Infrastructure
- Add GPT-6.1 Sol API pricing and request support
- Add Grok voice transcription model support and include selected model in multipart requests
- Add nested session coverage for deferred tool completion, ancestor resumption, background dispatch, and question event filtering across descendant runs.
- Support ElevenLabs music inpainting storage
- Support GPT-6 prompt caching and Fast pricing
- Support newer ElevenLabs music models
- Update OpenAI model pricing, add flex rates and support for new model variants, and enable Responses API request features for gpt-6.1 models
- Use unit-aware session cookie expiration