Skip to content

Releases: dreasgrech/ACEUIAppLoader

ACE UI App Loader v0.27.0

Choose a tag to compare

@dreasgrech dreasgrech released this 25 Sep 17:04
5eae5de

Changes since 0.26.0

20DC2E~1

Right-click for options

  • Right-click an app to open its options window beside it; right-click the app or the window again to close it.
  • The window opens beside the app each time, kept on screen; after Escape/resume it comes back where it was.
  • Drag the window somewhere and it opens there from then on.
  • A window spot saved by an earlier version no longer pins the window: the next right-click places it beside the app.
  • A window growing past the edge of the screen (a section unfolded) moves back inside, and back where it was when the section folds again.
  • A window keeps its share of the screen when the game window is resized.
  • Hiding the UI in the middle of a drag no longer moves the panel or window.
  • Drawer option "Right-click an app for its options" (on by default) turns it off for every app. While it is on, the drawer's own options close on a right-click too.
  • DOOM before 0.6.1 also opens its options on a right-click on its screen: update DOOM with the loader.
  • The middle and right buttons no longer drag, or end a drag of, panels, windows, scrollbars or order rows, nor open the drawer during a drag.
  • "Click at edge" opens the drawer on a left click only.
  • A click that moves a window by a pixel or two no longer counts as a drag; it goes back where it was.

For app authors

  • define(app, specs, { rightClick: false }) turns it off for the app; { rightClickCloses: false } keeps the window open on its own right-click.
  • A later define layout that leaves those two out keeps them.
  • me.panel(root, onFrame, { rightClick: false }) keeps one panel out of it.
  • data-noright on an element (or the panel root) keeps its right-clicks, and preventDefault in a listener inside the panel keeps its right press.
  • New in settings: open(app, near), rightClick, rightClickable, rightClickWindow, besideSpot, stored, BESIDE_GAP_REM, WINDOW_WIDTH.
  • New in window: options right, bottom, onRightClick, placed; container(), BORDER_PX. Windows show once laid out.
  • New in panel: options onRightClick (returns true when it acted), placed, settle; NO_RIGHT_ATTR, DRAG_SLOP_PX, leftHeld(), guardClicks(root).
  • Panel: a position stored after a drag is marked dragged (savePosition(panel, dragged), which stores nothing and returns null while the UI is hidden); moveTo returns the { x, y } it wrote.
  • New in core: otherButton(e), RIGHT_BUTTON, HUD_PAGE. New in drawer: rightClickOn().
  • Stored settings and folded sections are read from both stores key by key, so a setting newer than an app's HUD record keeps its value.
  • A damaged settings or folds record is ignored, and one app's cannot keep another's from being adopted.
  • persist.writeHud returns false when the HUD store's write throws, logged once per record; save and the loader's own writers keep the change in localStorage.
  • The click after a middle or right press on a panel or the drawer presses nothing (only data-noright exempts a part).
  • errorText and safely no longer throw on an error that cannot be printed.
  • A browser's own drag and drop does not start inside a panel (except in a data-nodrag part), nor anywhere while one is being dragged.
  • Off the HUD page a window no longer waits for a HUD store before it shows.
  • A redefine while the app's window is open redraws it: new controls, width and title.
  • 279 library browser cases.

UI Capabilities Probe 0.6.0

  • New "right button" row: what right presses and releases report, whether a click or contextmenu follows, and a WARN if a right click comes too late; the mouse-buttons row also shows the last release's e.buttons.

ACE UI App Loader v0.26.0

Choose a tag to compare

@dreasgrech dreasgrech released this 24 Sep 15:04
4dc217f

Changes since 0.24.0

20CD94~1

App drawer

  • Opens when the mouse comes near the edge instead of on a 10px strip. The zone scales with the screen (2rem: 32px at 1080p, 43px at 1440p) and is adjustable up to 10rem.
  • Zone can be limited to the top, middle or bottom third of the edge, with an optional dwell.
  • Three ways to open: hover, "Click at edge" or "Hotkey only".
  • Hotkey to toggle the drawer (unbound by default, Delete unbinds).
  • "Close after" sets how long it waits before closing.
  • "Always open" pins the drawer; PIN button in the header does the same.
  • Can sit on the left edge.
  • Width, top/bottom insets, scale and opacity are settings.
  • Motion: slide, fade or none.
  • Red edge line lights up when the mouse gets near; shown for 4 s after every HUD load. Can be set to always or off.
  • The zone is drawn as a red box while the drawer options are open, and the drawer stays open meanwhile.
  • Mouse leaving the game window to another monitor no longer opens the drawer.
  • Triple screen (experimental) and Edge offset settings.
  • App list scrolls when it is longer than the panel.
  • Hidden HUD closes the drawer; dragging a panel to the edge does not open it; clicking outside closes it unless it is pinned.
  • The hotkey closes a pinned drawer and unpins it.
  • Opened with the hotkey, it waits for the mouse to reach it before closing by itself.
  • All settings clamped on apply; Reset to defaults in the pane, ACEUIAppLoader.drawer.resetSettings() from the dev console.
  • New README troubleshooting entry: "The drawer is there but I can't open it".
  • Logs [drawer] built: right, zone 2rem (43px), 1rem = 21.33px, viewport 2560x1440, trigger hover once per load.

Windows

  • Windows left open through Escape/resume or a restart come back, on the page they were opened on.
  • A window closed by hand stays closed.
  • Each page keeps its own list, so a window used on a menu page no longer wipes the HUD's.

Settings windows

  • Panes can be wider, use 2 or 3 columns, show choices as pills, toggles as chips, hints in a footer, and hide rows that don't apply. Opt-in; old panes unchanged.
  • Range settings can show a unit ("2 rem", "350 ms").
  • Key settings can be unbound.

UI Capabilities Probe 0.5.0

  • New "Pointer & screen" category.
  • Model recorder: logs what the HUD telemetry models do over a session (rec: lines). Keeps going through Escape/resume and game restarts until switched off.

Fixes

  • An app whose start-up threw stayed marked as running and could not be started or stopped again.
  • A toggle setting with a non-boolean stored value read as on.
  • Settings panes wrote "Trying to set display property to invalid value!" to the game log every time they opened.
  • Log check: a preset-list retry that succeeds is a note; the give-up line on the HUD is a failure; each HUD load is checked on its own; app names listed once.
  • A panel with no parent element no longer throws.
  • A drawer switch flipped right after a game start no longer wipes the other saved switches.
  • The headless test runner can no longer hang after a timeout and leave a browser running.

For app authors

  • settings.define(app, specs, layout): width, hints: "footer", title. Sections: columns: 2|3, flow: "chips". Choice: segmented, labels. Range: unit. Key: empty. Any spec: when(app). See docs/ui.md.
  • window.reopen(id, fn), discard(id), discardAll().
  • Drawer API: setPinned, isPinned, resetSettings, metrics, inZone, inPanel, applyLook.
  • An app's attach should be all or nothing: if it throws, the drawer can start the app again.
  • App kit rejects display: inline-flex and inline-block (not supported by the engine).
  • MIN_CASES counts all of an app's harnesses together.
  • The test doubles' near() fails on NaN (a transform never written used to pass).
  • release_app.py says so when given a folder that is not an app.
  • New library tests for reloads after Escape/resume and after a restart. 135 browser cases.

ACE UI App Loader v0.24.0

Choose a tag to compare

@dreasgrech dreasgrech released this 20 Sep 19:10
3bf4ab3

Assetto Corsa EVO UI App Loader

Support for custom UI Apps in Assetto Corsa EVO.

The game while driving, with the app drawer open on the right and apps on the HUD

Assetto Corsa EVO builds its interface out of web pages. The ACE UI App Loader lets custom ui apps live in there alongside the game's own screens, and gives you one place to switch them on and off.


Why this exists

AC EVO currently has no mod support for its UI, so the only way in is to replace one of its files — and only one mod can hold a file. Two mods that both want the HUD overwrite each other, and installing the second one silently breaks the first.

This UI App Loader is that one mod. It does the replacing once and then loads apps on top, so apps are added alongside each other instead of fighting over the same file.

full_cmp_E_880_10s_96


Installing ACE UI App Loader

1

Download the ACEUIAppLoader-….zip from the latest release and open it.

Inside is one folder, mods. (The release also has an …-alternate.zip. Ignore it unless the help section below sends you to it.)

2

Press Win + R, paste this in, press Enter:

%USERPROFILE%\Saved Games\ACE

image

3

Drag the mods folder out of the zip into that window. If Windows asks, choose to
merge with the mods folder already there. No installer, nothing to run.

You end up with mods\ACEUIAppLoader.kspkg and an empty mods\uiresources\ACEUIAppLoader
folder, which is where apps will go. Every app is installed the same way: extract its zip
into Saved Games\ACE, merge.

image

Why there are two zips (normal and alternate)

Every release has ACEUIAppLoader-….zip and ACEUIAppLoader-…-alternate.zip. Almost everyone wants the first. Here is what the second is for, in plain terms.

The loader works by giving the game a replacement for two of its own HUD files. When the game starts it gathers the files of every mod in mods into one list, and where two mods offer the same file, the order of that list decides which one is used. With only the loader installed, ours always comes first. With several other mods installed, once in a few thousand combinations the game's own file lands ahead of ours instead, and the loader silently does nothing: no drawer, no apps, and no ACEUIAppLoader lines in the game's log. Which combinations do this cannot be told from outside; it depends on the exact set of mod files on your machine.

The alternate zip contains the same loader, packed a different way, so that it sorts differently in that list. In testing over eight housand mod folders, the two zips never both lost in the same folder. So the rule is simple:

  1. Install the normal zip.
  2. If the drawer never appears and the newest log in Saved Games\ACE\Logs has no ACEUIAppLoader lines, delete mods\ACEUIAppLoader.kspkg` and install the alternate zip the same way.
  3. If the drawer disappears again after you install another mod, swap back.

The loader's first log line tells you which one you have: loader 0.24.0 on /hud.html (64 records) is the normal zip, (32 records) the alternate. Nothing else differs; apps, settings and everything on this page work the same with either.


The app drawer

The mouse reaches the right edge, the drawer slides in, and an app is switched on

Move your mouse to the right edge of the screen and the drawer slides in. Every ui app you have installed is listed there with its own switch — flick one on and it appears straight away, flick it off and it's gone.


Apps using the ACE UI App Loader

pedalgraph_cmp_R_96_50fps_400px doom_cmp_Q_486_8s_96
Pedal Graph
Inputs represented as a graph
DOOM
DOOM running natively inside EVO's HUD

If something isn't right

Important

Each release is built for one version of the game — this one for 0.9.1+release.6.
After the game updates, come back here for the matching release.

The game updated and the HUD is blank, missing, or the menus misbehave

The file carries two of the game's own pages from the version it was built for. After an
update those are the old game's, and if they still get used the HUD can come up empty or
wrong. The loader tells you when this has happened: a red strip across the top of the HUD
reading ACE UI App Loader was built for game … but this is ….

Delete ACEUIAppLoader.kspkg from the mods folder, start the game once to confirm it
is back to normal, then install the release built for the new version. Whenever the game
misbehaves right after an update, removing this file is the first thing to try.

The drawer doesn't appear

First, open the newest file in %USERPROFILE%\Saved Games\ACE\Logs and search it for
ACEUIAppLoader. Lines found means the loader ran and the problem is with an app: see the
next section. No lines at all means the game never used the file, for one of these reasons:

  1. The game updated. By far the most common cause. See above.
  2. The file is in the wrong place. It must be exactly Saved Games\ACE\mods\ACEUIAppLoader.kspkg,
    with that name. The usual way this goes wrong is Windows' Extract All, which puts
    everything in a folder named after the zip (ACE\ACEUIAppLoader-0.24.0-…\mods\…); drag the
    mods folder itself into Saved Games\ACE instead.
  3. Two copies. Exactly one ACEUIAppLoader…kspkg in mods — an older copy left beside
    the new one (ACEUIAppLoader (1).kspkg, say) can win instead of it.
  4. Your other mods. With several other .kspkg mods installed, the game very occasionally
    picks its own file over ours; which folders that happens in is a coin toss we cannot see
    from outside. That is what the …-alternate.zip on the release page is for: it is the
    same loader packed so that the toss lands differently. Delete ACEUIAppLoader.kspkg and
    install the alternate zip the same way. If installing another mod later brings the problem
    back, swap again.
An app isn't in the drawer

Check that app's own instructions. Most are two pieces — a folder and a small marker file —
and it's easy to install one and miss the other. The marker file must be completely
empty
(0 bytes): the game tries to read every file in that folder as a preset, and one
it cannot read stops the whole list from arriving.

Anything else

Open an issue and say what you saw. If you can, attach the newest file from
%USERPROFILE%\Saved Games\ACE\Logs — it records what loaded and usually answers the
question on its own.


Uninstalling

Delete ACEUIAppLoader.kspkg. That's the whole procedure — nothing runs, nothing to undo.
The only trace left is a few small settings records (which apps were switched on, where you put them) inside the game's own UI settings file, which the game ignores.


Is it safe?

Nothing runs No executable, no installer, nothing in the background. It's a data file the game reads.
Your game folder is untouched Everything lives in Saved Games, where your settings and setups already are.
It doesn't go online No account, no telemetry, no update check.
Works in multiplayer Everything is done client-side so nothing is related to the server.
Not anti-cheat evasion It changes the interface you look at — nothing about how the car drives.
You can read all of it Every line is in this repository.