Core
- E27181: Debugger: possibility to edit value in Water debugger
- 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: GetMembers exception if type is not resolved
- 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: 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: 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: 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)
- Fix Cocoa exception helper binding by separating Island wrappers, resolving the Cocoa exception type, and preserving correct temporary initialization.
- Fix membership comparisons to honor overloaded equality for reference types & preserve single evaluation and nil handling
- 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 Delphi TArray pointer FX handling
- Island/Delphi: Fix hidden-result LLVM invalid record regression
- Map compiler member access values to Island reflection metadata
- 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.
- Toogee Global Mangling: Preserve foreign signatures for external global methods
- Merged EUnit
- Merged Everwood5
- Merged IslandDelphi
- Merged IslandRTL
- Merged RTL2
Fire & Water
- Add built-in documentation knowledge bases
- Allow dotted project template names
- Fire is now arm64-only (still supports developing for x64)
- Guard newly created file selection
- Guard shared project reference updates
- Handle missing skill selections when preparing CodeBot approvals
- Harden account persistence against incomplete loads
- Propagate scheduled-run skill context
- Remove Ionic.Zip dependency from knowledgebase tests and shared projects
- Render concurrent interactive prompts
- Retain debug canvas during stepping
- Show API key verification errors when adding accounts
- Water: layout tweak for busy CodeBot chat field
Earth Preview
- Earth: Normalize C.UTF-8 sentinel locales for Mono launches
- Implement a WSLg-safe themed in-window menu
CodeBot
- 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 skill loading diagnostics
- Message fix
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
Elements RTL
- Add Dictionary.ToList to return key-value pairs from the dictionary sequence
- 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.
- Optimize broadcast subscription removal with receiver-based indexing and centralized cleanup logic
- Use cancellable NSURLSession transport for synchronous HTTP requests, enabling cancellation and timeout handling during response header and body waits.
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 EventWaitHandle timed waits and add comprehensive signal/reset behavior tests
- Fix locale-aware date parsing and expand two-digit year token handling
Island Delphi Support
- Restore missing Delphi intrinsics in IslandDelphi