98 Commits
Author SHA1 Message Date
Martín Lucas Golini 379dbd26ba Fix macOS build. 2026-10-16 10:42:54 -03:00
Martín Lucas Golini 6e38945211 Add native file dragging on X11 and Windows
- Introduce DragAndDrop with capability queries, copy-only file offers,
  image previews, cancellation, and completion callbacks.
- Implement XDND and OLE sources with safe input recovery and window teardown.
- Keep SDL2 and SDL3 presentation and input handling in their own backends.
- Load X11 dynamically without adding a link dependency.
- Reuse Image, URI, and timing APIs; fix Image::fillWithColor().
- Add a manual playground, integration tests, and consumer documentation.
- Migrate SDK builds and packaging to SDL3 and fix bundled runtime lookup.
2026-10-14 17:24:56 -03:00
Martín Lucas Golini 850f33c336 Polish app icon sizing and bump eepp and ecode versions
Generate size-aware macOS icons and separate runtime Dock PNGs for ee,
ecode, eterm, eeiv, and eproc. Keep shared PNGs sized for small Linux
icons, and package ecode's macOS runtime icon.

Bump eepp to 5.0.0 (Kittima-attā) and ecode to 0.9.0 (Yanta-lekhā).
2026-09-29 01:02:07 -03:00
Martín Lucas Golini fd5a3718d4 Renamed UIStackLayout to UIFlowLayout throughout the engine and its usages, including the header and source files, XML tag, runtime type, widget factory, docs, and typed lookups. The layout behavior is unchanged. Separate UIStackWidget and debugger stack views retain their names. 2026-09-28 15:25:56 -03:00
Martín Lucas Golini 4ffba20d07 feat(ui): add runtime inspector and fix HTML layout regressions
Add an opt-in TCP/NDJSON inspector for running eepp applications. It
provides authenticated, UI-thread-safe access to windows, scenes, and
widgets, including nested WebView documents. The v1 protocol supports
queries, trees, properties, focus, input actions, watches, screenshots,
and composed batches with result references and deferred execution.

Add a standard-library Python CLI, protocol documentation, build
entries, and integration tests. The listener remains disabled unless
explicitly enabled.

Fix HTML compatibility issues found while debugging NewsBlur:
- Let explicit flex minimums, including min-width: 0, replace the
  automatic content minimum.
- Measure flex lines against the container content box when padding
  and explicit dimensions are present.
- Keep promoted positioned descendants of hidden ancestors out of
  the paint list.
2026-09-28 01:15:39 -03:00
Martín Lucas Golini de040ef17e Add eproc settings and macOS/FreeBSD per-core CPU metrics
- Add persistent eproc settings for refresh interval, appearance, fonts,
    and renderer options, with a settings button in the main window.
  - Collect per-core CPU usage on macOS and FreeBSD for Performance charts.
  - Keep the settings search focused in eproc and eterm, and wrap long
    setting names.
  - Share macOS theme-colored titlebar handling across ecode, eproc,
    and eterm.
  - Stabilize fixed-size UI tests on Retina displays and prevent macOS
    build scripts from starting unlimited jobs when sysctl fails.
2026-09-26 01:44:10 -03:00
Martín Lucas Golini 6ff677ff2b Rename macosmenubar.m to .mm to avoid getting compiled as Objective-C and not Objective-C++. 2026-08-24 10:15:28 -03:00
Martín Lucas Golini 9752be89ad Add native macOS global menu bar integration
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
2026-08-24 02:38:36 -03:00
Martín Lucas Golini 36e54fe2a3 Add reactive UI data binding and observable collections
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.
2026-08-22 01:00:04 -03:00
Martín Lucas Golini 6b277e508b migrate fonts to scoped resource ownership
- replace FontManager with per-ResourceScope FontService instances
  - publish font factories into explicit or default resource scopes
  - import default resources into UI scene scopes unless explicitly disabled
  - keep related font faces strongly owned without hot-path weak_ptr locking
  - add cached glyph advance queries without creating texture pages
  - fix font picker preview ownership, cleanup, and rapid switching
  - selectively evict TextLayout cache entries when referenced fonts unload
  - document FontService, ResourceCatalog, and cache invalidation semantics
  - migrate examples, tools, benchmarks, and tests to the scoped font API
  - expand coverage for font ownership, texture release, and layout caching
2026-07-24 01:54:51 -03:00
Martín Lucas Golini 574b6b9014 move nine-patches into scoped catalogs
Return shared handles from NinePatch creation and remove the process-wide
  NinePatchManager singleton.

  Extend ResourceCatalog with typed drawable-source ownership and expose
  drawable publication, lookup, and removal through ResourceScope. Preserve
  separate texture and drawable namespaces for direct typed lookup.

  Give each UITheme its own resource catalog and have scene-owned theme
  managers explicitly import and remove theme catalogs. Handle registered
  themes and default-only themes without leaking stale resource visibility
  between scenes.

  Update theme loading, Engine teardown, platform source manifests, and
  resource ownership tests for the catalog-based model.

  Document that remaining singleton resource managers must migrate to
  naturally owned catalogs and explicit scope imports instead of becoming
  new process-global semantic namespaces.
2026-07-22 22:07:00 -03:00
Martín Lucas Golini 2d8693295c add shared WebView resource cache:
Introduce WebResourceCache with partitioned sharing, per-document sessions,
navigation generations, leases, and canonical request keys.

Coalesce concurrent document, stylesheet, font, and image requests while
discarding stale navigation subscribers independently. Retain completed
resources with TTL/LRU and byte-budget policies, and periodically prune
expired unleased entries from UIWebView.

Route UISceneNode, UIWebView, UIImage, CSS background images, and remote
drawable resolution through the shared cache. Preserve ResourceScope entries
as explicit overrides and allow multiple WebViews to share a cache partition.

Keep image decode and texture replacement on the guarded graphics-thread
completion path. Exclude volatile Cookie and Referer values from cache
identity while preserving partition isolation and content-affecting variants.

Start TTL retention when the final document lease is released so Back/Forward
navigation can reuse resources regardless of how long the previous page was
open.

Avoid unstable pointers and iterators into unordered_dense storage when
tracking leases and pruning entries. Add ASan regression coverage for dense
map growth, navigation, eviction, partition isolation, request coalescing,
retry behavior, and cache retention.

Fully document cache partitions, sessions, generations, request identity,
ownership, threading, and maintenance behavior.
2026-07-22 02:22:38 -03:00
Martín Lucas Golini f7dba042df Replace DrawableSearcher with scoped drawable resolution:
Add a scene-owned UI::DrawableResolver for resolving file, data, HTTP, and
named drawable references through each UISceneNode's current resource scope.

Move generic texture, atlas region, nine-patch, and sprite lookup into
Graphics::ResourceScope, preserving drawable resolution for pure Graphics
consumers without introducing a UI dependency.

Migrate UI images, sprites, menus, CSS parsing, and tests to the new resolver.
Resolve CSS icons through the requesting node's scene instead of the global
scene, preserving embedded-scene isolation.

Remove the obsolete DrawableSearcher API and update platform project manifests,
tests, and the shared-resource architecture plan.
2026-07-21 23:50:58 -03:00
Martín Lucas Golini d939766355 Disable glew by default (entering deprecation). 2026-06-23 22:54:44 -03:00
Martín Lucas Golini 461965f73d Fix SpartanJ/ecode#868. 2026-04-03 13:24:08 -03:00
Martín Lucas Golini caebfc4d81 premake projects now enable text shaping by default. 2026-01-08 19:23:22 -03:00
Martín Lucas Golini fa95500ab0 Use the copy_ecode_assets.sh script for building ecode in macOS too.
Fix incorrect check in `build_sdl2.sh`.
2025-12-13 11:51:07 -03:00
Martín Lucas Golini 9f55bee3e5 Fix macOS cross build. 2025-11-02 18:10:08 -03:00
Martín Lucas Golini 521631decf Fix ARGB images save when using WebP.
Upload artifacts.
2025-10-25 02:52:21 -03:00
Martín Lucas Golini 460eecdaa9 Update sign.sh script. 2025-10-14 20:25:01 -03:00
Martín Lucas Golini 4e8f93077d Do not notarize ecode.app... 2025-10-09 01:51:38 -03:00
Martín Lucas Golini 7139b7155c FML 2025-10-09 01:06:52 -03:00
Martín Lucas Golini 12f7fc9730 Try again? 2025-10-09 00:31:18 -03:00
Martín Lucas Golini 0ad52ad625 Notarize ecode.app. 2025-10-08 23:54:54 -03:00
Martín Lucas Golini 29dca584b5 Should fix notarization in macOS build. 2025-10-08 22:48:02 -03:00
Martín Lucas Golini 2d700f9e36 Use Resources path when building ecode.app. Should fix signing. 2025-10-08 22:21:59 -03:00
Martín Lucas Golini 97d6665d3b Implement macOS code-signing (not tested, let's see if CI works, very unlikely). 2025-10-08 21:39:44 -03:00
Martín Lucas Golini 2611af5a04 Fix crash in macOS. 2025-09-14 02:12:37 -03:00
Clemens Schmid e5bd1dc3e1 added curry language definition for syntax highlighting (#138)
* added curry language definition for syntax highlighting

* fixed comment syntax definition for Haskell, Elm, and Curry
2025-08-06 14:19:58 -03:00
Martín Lucas Golini cec4fa6e72 Add webp image format support (load and save).
Fix bug introduced in the last commit for UIDataBind initialization.
Change gmake2 in favor of gmake when using premake5 since it has been depreated in premake5-beta6 (hopefully I did not miss anything).
2025-06-04 21:02:38 -03:00
Martín Lucas Golini 1368ed30d3 Enable text-shaper in nightly builds. 2025-03-29 11:59:18 -03:00
Martín Lucas Golini 88b1b4df86 Fix clearing breakpoints. 2025-03-19 00:30:26 -03:00
Martín Lucas Golini 5d35302f87 Remove unused line in make scripts for macOS (closes #90). 2025-03-04 19:37:23 -03:00
Martín Lucas Golini d73f1ea1ed debugger fixes and improvements for macOS. 2025-01-05 11:31:52 -03:00
Martín Lucas Golini 60784d79a6 Window size fixes on macOS.
Changes for SpartanJ/ecode/#373
2024-12-22 14:40:02 -03:00
Martín Lucas Golini 9c8a831ff3 Try again. 2024-11-01 01:30:53 -03:00
Martín Lucas Golini ee11f236a8 This should fix the macOS CI version. 2024-11-01 01:21:07 -03:00
Martín Lucas Golini d174b351e7 Check if forcing codesig-ing the app for macOS works for CI produced apps. 2024-11-01 00:46:18 -03:00
Martín Lucas Golini 3bdf32d3ec Nit in script. 2024-10-17 01:57:01 -03:00
Martín Lucas Golini c6b08dec6d Fix SDL2.framework path. 2024-10-05 00:41:39 -03:00
Martín Lucas Golini dba66e9e07 macOS dmg nightly is broken, trying to understand why... 2024-10-05 00:30:02 -03:00
Martín Lucas Golini 13a78c7491 Typo fix. 2024-10-03 20:20:10 -03:00
Martín Lucas Golini 13097468c6 Fix premake5 macOS build for nightly. 2024-10-03 18:09:06 -03:00
Martín Lucas Golini 2d3c0e88af This should localize SDL2 locally. 2024-10-01 18:51:04 -03:00
Martín Lucas Golini 0d880b8ac7 Try luck. 2024-10-01 18:14:14 -03:00
Martín Lucas Golini 06a2c605c8 Wrong script 🤦 2024-10-01 18:06:58 -03:00
Martín Lucas Golini 84cdfd2617 Try more verbosity to understand the problem. 2024-10-01 17:51:25 -03:00
Martín Lucas Golini 9d3e8f894c Disable cross build. 2024-10-01 14:40:35 -03:00
Martín Lucas Golini 32c87cc362 Fix typo. 2024-10-01 12:10:45 -03:00
Martín Lucas Golini 30b3478873 macOS nightly more WIP. 2024-10-01 12:00:43 -03:00