- let UIApplication create, manage, render, and destroy multiple native windows
- add scoped scene and GL window-context switching
- route input events to the scene belonging to each native window
- share application fonts, themes, icons, styles, and graphics resources safely
- add NewInApplicationWindow factories for UIWindow, UIFileDialog, and UIMessageBox
- support native parent relationships, modality, minimum sizes, and optional positioning
- close child windows when the primary application window closes
- defer native context destruction until the end of the application tick
- fall back to in-scene windows for Emscripten and terminal rendering
- reapply renderer state caches when switching OpenGL contexts
- fix SDL2/SDL3 display bounds and multi-window lifecycle handling
- add a native file-dialog and message-box multi-window example
- add integration coverage for context switching, input, resources, modality, and closing
Build:
- Link eterm with CoreFoundation and CoreServices on macOS
- Satisfy the framework dependencies required by efsw's FSEvents backend
Applications:
- Move eterm settings operations into a dedicated SettingsActions class
- Centralize settings window lifecycle and font configuration actions
- Route settings panel font-size updates through SettingsActions
- persist keybindings in keybindings.cfg with configurable primary and secondary modifiers
- hot-reload bindings and merge newly introduced defaults
- open keybindings.cfg in a terminal-font-sized code editor tab
- indicate unsaved keybinding changes using the modified-tab marker
- share tab and split commands between terminals and the keybindings editor
- add bindings for terminal actions, tab navigation, numbered tabs, splits, renaming, and tab movement
- expose keybindings through terminal and tab context menus
- add tab split and move-left/right context menu actions
- add --with-lto support to Premake 4 and 5 release builds
- use ThinLTO with Clang, automatic LTO with GCC, and LTCG with MSVC
- exclude Emscripten builds from LTO configuration
- retry SDL2 clipboard writes on Windows when the clipboard is temporarily unavailable
- make the UIMergeView copy regression test independent of the system clipboard
Mirror UIMenuBar hierarchies into AppKit while keeping eepp menus as the
source of truth.
Add semantic item activation and menu lifecycle hooks so native actions,
lazy menus, checkboxes, radio buttons, visibility, enabled state, and
submenus preserve existing eepp behavior. Support shortcuts and standard
About, Preferences, Quit, Window, Help, and Services menu integration.
Keep the platform adapter private to the UI implementation and support
safe installation, synchronization, and removal of the native menu.
Migrate ecode away from its hand-written Cocoa menu, assign semantic menu
roles, and populate the UI Language submenu synchronously so it is ready
on its first opening.
Add unit tests covering activation, menu lifecycle, roles, and submenu
preparation.
Refs: SpartanJ/ecode#823
Introduce observable and computed values, typed widget bindings, validation groups, UI properties, commands, and UI-thread delivery.
Add observable vector and list model support for incrementally updated collections, with filtering and source-row mapping.
Modernize the Flight Booker and CRUD examples and add focused data handling and collection examples demonstrating the new APIs.
Organize the UI binding headers under ui/databinding, expand test coverage for notification and lifetime semantics, and document API selection, validation, ownership, threading, and performance behavior.
SDL2 prevents the default action for Ctrl/Cmd key events on Emscripten,
which stops browsers from emitting the native paste event.
Intercept Ctrl/Cmd+V before SDL2 consumes it, allow the browser paste
event to update the internal clipboard, and replay the keydown so the
application executes its normal paste command.
Also refresh the clipboard through the asynchronous Clipboard API when
opening a context menu, enabling paste actions triggered without a
keyboard shortcut.
Export Emscripten's ccall runtime method so the browser clipboard helper
can reliably invoke its C++ callbacks in optimized builds, and disable
clang-format for the header containing embedded JavaScript.
- MSVC:
- Removed lambda-based eeNew expansion in favor of typed MemoryManager::trackNew().
- Added macro expansion indirection.
- Enabled MSVC’s conforming preprocessor with /Zc:preprocessor across Premake 4/5 static libraries, shared libraries, and executables.
- Verified generated VS2022 projects contain the flag, including eterm-static and eepp-maps-static.
- Added explicit standard-library includes to memorymanagerglobal.cpp.
- Linux/macOS release tests:
- MemoryManager.tracesPlainNew is now compiled only with EE_MEMORY_MANAGER, since global tracing is intentionally debug-only.
Added new plan to improve PropertyIdSet.
- intercept global new/delete operations in debug memory-manager builds
- distinguish anonymous global allocations from source-tracked leaks
- modernize eeNew to support constructor-expression syntax
- improve memory reports with tabulated leaks and separate largest allocations
- cache autocomplete shortcuts instead of hashing string keys on key events
- reuse UIStyle property sets across state changes
- reuse Text shadow colors and avoid temporary outline-color copies
- use inline storage for temporary linear-gradient rendering data
- make unit tests resolve assets from the executable directory
- add memory-manager and PropertyIdSet regression coverage
Fix:
- User fallback now uses "user-fallback-font".
- Built-in CJK and custom fallback fonts remain registered together.
- Added and passed a regression test verifying both fallback resources remain in the chain.
Fixes in premake5.lua:
- Removed obsolete PRECISE_F32=1; Wasm already provides precise float behavior.
- Moved ENVIRONMENT=worker,web to final application link options.
Fixed MarkdownView not getting the correct CSS style from the base theme.
Implement LSP snippet parsing and editing sessions with tab stops, linked placeholders, choices, variables, transforms, visual feedback, and multi-cursor insertion.
This adds snippet support for LSP completion items. User-defined snippets will be implemented separately.
Refs SpartanJ/ecode#111
Allow to disable GLEW dependency, it will now be disabled by default so we can test. The idea is to remove the dependency completely once this is confirmed to work.
As for the MingW build I'll check if `--cc=gcc` works in the CI environments, since premake5-beta8 deprecated `--cc=mingw` which was an alias of `gcc`.
Added HTML folding-ranges.
Fixed HTMLFormatter::HTMLtoXML.
Added `TextDocument::toString` and `TextDocument::toUtf8String`.
Fixed incorrect check for emojis in Text.
Fixed potential crash due to CSS parsing issues in StyleSheetSpecification.
Fix demangling in stack-trace for mingw builds.
Fix all stat calls in windows mingw builds that fail to detect files / dirs when the path ends with a path separator (this is an old bug, as old as I can remember, I thought it was fixed on mingw side but it seems only works for the cross compiled build, windows mingw build was failing catastrophically and never saw it).
There was also a very old minor bug in Sys::getProcessPath.
Redesigned UIDropDownList to inherit from UIDropDown which is a base class to handle different types of drop-downs. Added UIDropDownModelList which is the same as UIDropDownList but uses a UIListView by default so it's a model/view based DropDown.
Fix crash when changing states of the buttons in the build panel.
Increased the default animations speed.