Commit Graph
24 Commits
Author SHA1 Message Date
Martín Lucas Golini b62612475f Add native macOS accessibility backend
- expose eepp windows and widgets through Cocoa NSAccessibility
  - add lazy, stable native wrappers with safe lifecycle invalidation
  - support hierarchy, focus, geometry, actions, values, and UTF-16 text APIs
  - deliver coalesced native notifications for UI and model changes
  - preserve surviving secondary windows when the primary closes
  - add macOS semantic, notification, lifecycle, and performance harnesses
  - add native unit coverage and accessibility example scenarios
  - keep dormant accessibility overhead negligible
2026-09-13 01:38:48 -03:00
Martín Lucas Golini 5b2085616f Move accessibility initialization off the main thread
Add optional ThreadPool support to UISceneNode and UIApplication settings,
sharing the configured pool with secondary application windows.

Initialize the Linux AT-SPI transport asynchronously when a pool is
available, keeping D-Bus connection, registration, and I/O setup away
from the UI thread. Publish the initialized backend safely and retain
synchronous initialization as the compatibility fallback.

Defer accessibility manager creation to root scenes and make nested
UISceneNodes delegate accessibility state and manager access to their
host scene.

Cache active-client state on UISceneNode to make inactive widget
notifications a minimal fast-path check.

Exercise asynchronous initialization in the accessibility example and
verify thread-pool propagation and nested-scene delegation in tests.

Keep hidden AT-SPI benchmarks focused on timing, and validate component
hit-testing separately through the visible semantic test.
2026-09-11 19:25:29 -03:00
Martín Lucas Golini c921f332db Test fix. 2026-09-11 18:14:31 -03:00
Martín Lucas Golini d6d52032b0 Add accessibility performance regression coverage
- Add inactive and active accessibility benchmarks to protect against startup, notification, and AT-SPI scaling regressions.

  - Extend the AT-SPI benchmark with text, focus, action, value, geometry, hit-testing, and model-update operations. Run both benchmarks in Linux CI and preserve their JSON results as artifacts.

  - Add an explicit null accessibility backend for baseline measurements and optional accessibility disabling.

  - Harden the Windows UIA backend by caching client availability per update, validating root providers, and preventing recursive window procedure forwarding.
2026-09-11 14:57:16 -03:00
Martín Lucas Golini 3751e05df6 Improve native accessibility reliability and performance
Harden the AT-SPI protocol implementation, application discovery, multi-window routing, request handling, and model invalidation. Keep inactive accessibility effectively tax-free and update UIA structure notifications.

Add hidden AT-SPI performance and integration benchmarks, expand the accessibility example, and cover model replacement and multi-window behavior with regression tests.
2026-09-11 11:25:15 -03:00
Martín Lucas Golini a0de38a758 ui: improve native accessibility performance and event handling
- lazily activate AT-SPI work only when a real accessibility client connects
  - eliminate unused accessibility overhead during widget construction and startup
  - wake the SDL event loop for D-Bus traffic without blocking the UI thread
  - implement AT-SPI cache, structural events, and text/editable-text interfaces
  - improve UI Automation events, properties, runtime IDs, and window procedure safety
  - centralize widget semantics in the accessibility resolver
  - preserve accessible identity across model and widget lifecycle changes
  - optimize widget class storage with SmallVector
  - expand accessibility unit tests and add deterministic AT-SPI integration coverage
2026-09-06 18:10:40 -03:00
Martín Lucas Golini 7f0633afb6 Auto publish eepp sdk builds in nightlys and tagged releases (not tested beyond Linux, let's see...). 2026-08-22 17:44:26 -03:00
Martín Lucas Golini d8fa49be37 Fix xvfb-run-eepp, update unit-tests.md. 2026-06-07 22:12:28 -03:00
Martín Lucas Golini 972be7c12f Fix run_gdb_tests.sh 2026-05-31 13:51:52 -03:00
Martín Lucas Golini c2b1a91d90 Added the pending flex support tests.
Added xvfb-run-eepp with better defaults than xvfb-run, updated documentation.
2026-05-31 13:14:30 -03:00
Martín Lucas Golini dea87f345e Disable ASAN leak detection when run unit-tests with xvfb-run (because the tool leaks all X11 windows). 2026-04-24 12:00:45 -03:00
Martín Lucas Golini e1f64d3d51 Tests should pass with these changes. 2026-03-29 01:04:50 -03:00
Martín Lucas Golini 5429b15e04 More ACP client WIP, finishing the protocol implementation. 2026-03-23 14:25:44 -03:00
Martín Lucas Golini 9c966ac427 ACP Improvements phase 2 ready. 2026-03-23 13:22:17 -03:00
Martín Lucas Golini 9409a82092 Added syntax highlighting for WebAssembly Text Format (SpartanJ/ecode#842) and WebAssembly Interface Types (SpartanJ/ecode#844).
Improvements in SyntaxTokenizer TextMate compatability.
Fixed debugging types definition scripts.
2026-03-16 01:11:23 -03:00
Martín Lucas Golini a1bc99d619 Added amalgamate.py to generate an eepp.hpp single header include (issue #172).
Added `find_missing_includes.py` that checks if all the header files of each module in the "general" module includes are included.
With this I udpated the pending includes in the modules.
2026-03-14 17:55:26 -03:00
Martín Lucas Golini 4718a52423 Migrated from robin_hood to unordered_dense (for UnorderedMap and UnorederedSet).
Added support for SmallVector using svector (and we are already using it in a couple of places).
Added debug symbol inspector script for the new SmallVector in project/scripts/debug.
Added tilde support for files and folders passed as parameters from the CLI in ecode (and added FileSystem::expandTilde).
Fixed a bug in "light-dark" parsing.
2026-03-14 15:13:41 -03:00
Martín Lucas Golini 7632e63f46 Should fix patch_commit_number.ps1 call (shallow clone cannot find a proper commit number for the nightly release). 2025-12-14 12:22:22 -03:00
blueberryscone238 bd86dd50d5 Update ecode-nightly.yml (#155)
* Update ecode-nightly.yml

* Create patch_commit_number.ps1

* Update ecode-nightly.yml

* Create copy_ecode_assets.ps1

* Update ecode-nightly.yml

For consistency, all use backward slashes now.

* Update ecode-nightly.yml

* Update ecode-nightly.yml

* Create build.app.ps1

* Update build.app.ps1

* Update ecode-nightly.yml

* Update build.app.ps1

* Update build_sdl2.sh

* Update ecode-nightly.yml

* Update patch_commit_number.ps1

* Update build.app.ps1

* Update patch_commit_number.ps1

* Update copy_ecode_assets.ps1

* Update copy_ecode_assets.ps1

* Update build.app.ps1

* Update ecode-nightly.yml

* Update ecode-nightly.yml
2025-12-13 13:50:27 -03:00
Martín Lucas Golini c69740d886 Added a copy_ecode_assets.sh script to simplify ecode build scripts across platforms.
Modified find_most_recent_sdl2.sh script to search for an specific CPU architecture version of the SDL2 library.
2025-12-12 01:25:24 -03:00
Curculigo 662cf33baa Update patch_commit_number.sh (#150)
Fix an edge case when `OSTYPE` is in mixed case.
2025-12-06 11:01:08 -03:00
Curculigo d50bbfde2f Update patch_commit_number.sh (#148)
* Update patch_commit_number.sh

FreeBSD does not include Perl in the base system. Since the workflow installs gsed, why not use it instead? To use Perl, you would need to install perl5 anyway.

* Update patch_commit_number.sh

* Update patch_commit_number.sh

* OpenBSD

* OpenBSD

* OpenBSD

* Update build.app.sh

* Update build.app.sh

* Update build.app.sh

* Delete projects/openbsd directory

* Update build.app.sh

* Update build.app.sh
2025-12-05 22:47:15 -03:00
Martín Lucas Golini 71a38e81be Fix patch commit number replacement in macOS and FreeBSD. 2024-11-01 11:13:34 -03:00
Martín Lucas Golini b9667b75a3 Identify and flag nightly builds. If a new version is released as stable they will be able to recognize that there's a new version available. 2024-10-19 17:29:18 -03:00