Local package client
Cloud scripts opens the website script catalog: Refresh/Cached browsing,
Download latest, Open installed and Local scripts. One current release per script;
archive selection and Rollback are absent. Downloads keep previous script IDs and
refresh the collection to latest published releases. Network and file
validation run off the UI thread. Open installed reviews a verified snapshot;
Download does not execute scripts. Load script uses declared GET/WT capabilities;
PID access and mutating permissions remain explicit. Installed sources are
read-only, and a changed active snapshot must be explicitly reopened. No
PowerShell runtime is required. See REPOSITORY_RU.md for trust/offline limits.
Settings → Read through driver is an explicit, off-by-default choice for the
selected PID. The device field accepts a custom installed Easy READ ABI driver;
see CUSTOM_PROVIDERS_RU.md. Existing process read consent/manifest permissions still apply;
PID/package changes reset it. A missing/incompatible READ-capable driver fails
before callbacks. Native WDK build exists; live kernel read is not yet verified.
Declared input is enabled when loading a script with a selected PID grant;
without that grant it stays disabled. The extra Control active window button
has been removed. PID access is frozen during sessions. INPUT_RU.md describes foreground and SendInput
limits. Modal removal/save/process-picker interactions hide and disable background
controls, suppress hints and restore prior control visibility/enabled state.
SDK 0.3 retains this client. External scalar telemetry uses a separate provider
PID field/Choose provider in Settings. Selecting its PID enables reading on
script launch; provider writes keep a separate explicit consent control. See EXTERNAL_SOURCE_RU.md.
Process and telemetry grants are separate.
SDK 0.2 adds Allow process writes (0.2) beside storage consent only for
packages declaring process.write with API 0.2. It starts off, requires the
selected PID grant first, freezes during a running session and resets when
PID or package fingerprint changes. It does not overlap the source editor.
Process.scan and process.handles_threads use the selected PID consent but
do not enable writes. Full contracts: PROCESS_API_RU.md. Standalone Add .as
imports still use API 0.1/read-only permissions; prepare a package.json with
API 0.2 and the necessary explicit permissions for toolkit scripts.
Overlay selected window is an opt-in conventional layered window for the
explicitly selected PID. It follows the target client rectangle, hides when
minimized/background and ends when the target window is destroyed. It is
click-through and nonactivating: script UI controls are not interactive there.
Stop/Reload are managed from the client. No injection, hijacking or protection
bypass. Exclusive fullscreen is not supported/guaranteed by this path.
sdk/cs2-esp-test.as is an experimental read-only CS2 example using the
2026-10-01 workspace offsets: projected enemy boxes and HP text, approximate
standing height, not a bone-accurate model. Import it, select the CS2 PID,
grant read access, choose overlay if desired, then Load script. Offset changes
or denied access must be handled by the script author. Offline compilation and
projection tests do not confirm current live-game compatibility. Test with
authorized local training data; no account safety/undetected claims are made.
Select a package and use Remove script to archive it after confirmation.
Removal is disabled while a session is running. The package folder moves intoremoved-scripts beside the catalog; restore it by moving that folder back
into the catalog and pressing Refresh. No recursive permanent deletion is
performed. Source files originally selected for Add .as and stored config data
are unaffected. Unsaved source has the existing Save/Discard/Cancel guard.
Add .as copies a standalone UTF-8 source file into a unique local package.
The original is unchanged; no code executes during import. Review Source and
press Load script. Process and storage grants reset on import and must be
enabled separately. RC20 memory-map packages declare process.memory_map explicitly;
the PID consent button shows Map selected PID or Read + map selected PID according
to the package. Importing a standalone .as does not automatically add this permission.
The generated manifest declares render, demo, process_read
and storage; it does not import adjacent assets or grant OS permissions.sdk/process-inspector.as demonstrates real authorized read access, not ESP.
Launch EasyUniversal.exe client <catalog-folder>. Without arguments the
executable creates/opens the empty user scripts catalog, resolved relative to itself.
Double-click EasyUniversal.exe for the GUI. The same executable hosts the
runtime and hidden workers; it allocates no console. Administrator launch targets
this executable. Automated tests use a local test-only stdio bridge that is not shipped.
The client owns its dark title controls, resize hit-testing, vertical scrollbar
tracks/thumbs and Save/Discard/Cancel confirmation. Native edit semantics remain;
long source lines scroll horizontally with keyboard caret navigation, without
a native horizontal scrollbar. Windows UAC/error dialogs are not restyled.
The resizable Win32 client lists immediate child folders and their metadata,
permissions, fingerprint and validation errors. Native controls support Tab
navigation. The compact dark client uses crisp non-antialiased text, a raster
brand title, thin borders and owner-drawn buttons/list rows. The source editor
retains its readable code font; vertical scrollbars use the client's dark style.
Select a valid package and press Launch. There is one session at a time; output
uses the existing own preview window, not another application's overlay.
The complete catalog is checked again before launch. Changed fingerprints,
invalid entries and duplicate IDs block launch until reviewed after Refresh.
Refresh never starts a script. Inspection is not script compilation or trust.
Saving settings is unchecked by default and must be explicitly allowed before
launch. It is still gated by the package's declared storage permission. The
checkbox is locked during a session; other permissions cannot be silently
granted by reload. Session grants are not persisted between client launches.
Stop requests normal worker unload and config save. Reload uses the same
validated protocol as preview F5. Frame/reload counters and session failures
are displayed. Failed-session diagnostics are also placed in the details panel.
Closing either preview or client stops the session; client close waits for the
supervisor, which owns the kill-on-close worker job and watchdog. Restart only
becomes available after the old supervisor has finished. Abrupt process kill
does not promise configuration save. No frame stream is printed by client mode,
avoiding a blocking stdout consumer on its normal rendering path.
The native client stays on the main UI thread; the supervisor/preview runs on a
dedicated thread. Atomic control flags request stop/reload; script callbacks
remain in the isolated worker. The final report is read after thread completion.
Graphics initialization spans the client's lifetime, including session restarts.
The subscriber and administrator delivery uses a personal site loader and runtime
access checks; see ADMIN_DELIVERY_RU.md. Documentation is public. The development distribution remains
separate. The explicit Cloud scripts catalog is described in REPOSITORY_RU.md.
Script autostart and general game compatibility are not included.
Repository format 2 verifies registered author keys and current revocation policy.
WT own-vehicle telemetry and the
synthetic Adapter SDK example are separate, explicitly limited adapters.
Run only packages you trust; a registered author signature does not establish script safety.
File substitution races, multi-hour endurance, high-DPI visual polish and
modal preview-resize delays remain limitations. External is not modified.
Settings contains a session-only accent palette (orange/green/blue), optional
frame/reload counters and target framerate (30/60/90/120/144/165/240).
Click or use Space on the value buttons to cycle the available choices.
The target sets the interval from the previous snapshot request, including
live changes. Worker/render time is subtracted from the remaining wait. Overruns
start the next frame immediately without catch-up bursts. Waitable timers keep
the preview message pump responsive. Actual FPS depends on work and Windows
scheduling; see FRAME_TIMING_RU.md. CLI stream/preview accepts --fps 30..240.
Settings are not persisted. No nonfunctional Cloud/anti-capture/priority controls
are exposed. Storage consent remains off by default and locked during a session.
Source editor
Select beside PID opens a bounded process snapshot with name/PID filtering,
keyboard navigation, double-click/Select and Cancel/Esc. It does not open memory
or grant access. Changing PID clears read/overlay consent. A running session
locks selection; terminated targets are never automatically reattached.
Source includes case-sensitive find-next with wrap (Ctrl+F, F3, Enter), line
navigation (Ctrl+L, Enter), live line/column display and F4 diagnostic navigation.
Failed sessions display file, line, column and message in Details. Search and
navigation do not modify or execute source. The beginner guide is QUICKSTART_RU.md.
Source opens the selected package's manifest entrypoint in the same client.
The RichEdit source view keeps native editing, undo and scrolling; Details switches
back to metadata without discarding the buffer. The file picker in Source also
opens .as modules declared by that package. Manifest and resources remain
read-only. The line gutter follows scrolling. AngelScript comments, strings,
numbers, keywords and registered API names receive distinct colors. Hovering a
known API name for two seconds shows its declaration from the registeredAPI_SCHEMA; this is a lexical hint, not semantic completion or a code executor.
Save (Ctrl+S) writes UTF-8 but does not execute or compile the script. Save + Reload
(Ctrl+Shift+S) is available only for the running package's source; it saves first,
then requests the existing supervised reload. Reopen rereads source after the
unsaved-changes prompt. Go to error opens the matching declared .as file and
selects the diagnostic line; unrecognized file names are not opened.
Unsaved buffers block Launch. Switching files or packages, Refresh, Reopen and closing
prompt Save / Discard / Cancel. Cancel retains the buffer and running session.
Ordinary Reload/F5 still runs saved files, not the editor buffer.
Before saving, the document verifies that source bytes and manifest match those
opened. A disk conflict refuses overwrite and retains edits: copy your changes
before Reopen. Writes use an exclusively-created adjacent temporary file, flush,
repeat the conflict check, then ReplaceFileW; ordinary temp cleanup is automatic.
There is no historical backup/merge or protection against a malicious concurrent
local file-substitution race. A replacement I/O failure is reported, not retried
with a less restrictive write method.
Source must be UTF-8, without NUL, and at most 128 KiB after encoding/newline
normalization. The editor normalizes line endings for RichEdit selection and saves
CRLF if the original contained it, otherwise LF. Invalid UTF-16 and larger UTF-8
output are rejected.
Saving successfully does not promise successful compilation or safe code.
RC12 adds an unchecked-by-default HTTP: listed origins consent control.
It is enabled only for packages declaring http, disabled during a session,
and resets when the selected package fingerprint changes. Details displays every
declared origin; the frozen grant cannot expand on Reload. See HTTP_RU.md.
RC13 mouse wheel and help
Editor indentation update
Source handles Tab as spaces to the next four-column stop. A selection indents
each intersected line; Shift+Tab removes one leading tab or up to four spaces.
A selection ending at the next line's start does not change that next line.
Enter keeps the whitespace prefix preceding the caret (no syntax-aware braces).
Edits use native undo and mark the document dirty; Save retains UTF-8/quota and
disk-conflict checks. Ctrl/Alt shortcuts and other fields retain normal routing.
F4 / Go to error navigates to matching declared .as diagnostics. Module
selection and the line gutter are available; lexical syntax colors andAPI_SCHEMA declaration hints are available. Ctrl+Space adds scope/type-based
completion, F12 navigates an unambiguous source declaration, and F7 checks types
without execution. See EDITOR_SEMANTICS_RU.md for supported contexts and limits.
Hover Source, Details or the local script list and use the mouse wheel to scroll,
including when another control has focus. Partial wheel deltas accumulate and
Windows' line/page scroll preference is respected. Text and selection do not change.
Hover a setting or action for two seconds to see a small dark explanatory popup.
The popup does not activate or capture input. Leaving the control, interacting,
resizing, losing focus or opening a modal hides it. Storage consent permits only
the existing package settings store, not arbitrary filesystem access.
Provider status in Settings (0.3.5)
Settings shows the selected telemetry source ID/PID, waiting/ready/unavailable,
effective snapshot/update capabilities and the last connection error. Hover for
two seconds to see the full ID and update result. Connection begins only when
Load script starts a consented session. Update requires both provider support
and separate consent. Stopped sessions no longer advertise live capabilities.
The UI consumes validated metadata from the worker; it neither connects to the
pipe nor copies provider values. Compact settings rows fit the minimum client
size without overlapping session actions.
Background catalog checks (0.3.6)
Startup, Refresh and checks after Save/Add/Remove scan and hash packages in a
background thread. The existing rows remain visible while checking; package
editing/loading actions are temporarily disabled. Client settings, window
controls and Stop remain responsive. There is only one pending catalog check.
Successful refresh preserves selection by folder, even if sorted indices change.
On failure the old list remains and controls become available again.
Closing requests cancellation between packages and directory entries, then
waits for the owned scan and session to finish. An individual filesystem call
is not interruptible through this mechanism. Import, opening and saving bounded
source files now run in a separate file worker for the ordinary GUI. File actions
are disabled while one operation is pending. The deterministic self-test uses
synchronous transitions. A successful Save prompt can require repeating the
original action after saving finishes.
Package code is not executed during a catalog scan. Launch still independently
revalidates the selected fingerprint before running it. Dynamic hover text is
refreshed when the underlying source status changes.
Base driver diagnostic — 0.3.7
In Settings, Check base driver explicitly opens the installed EasyUniversalBase
device in a hidden child process and validates GET_INFO and a nonce PING. No
automatic startup probing or script permission is added. The button shows checking,
ready ABI 1 / Ping OK, or unavailable / Retry; the main status and delayed hover
explain absent device, administrator access denial, protocol mismatch or timeout.
The child is owned by a kill-on-close job, inherits no handles, and is terminated
after 30 seconds or on client close. The GUI polls without waiting for device I/O.
For the protected build this interval includes child license verification.
The SYS source still requires WDK compilation, signing and VM load/unload,
Driver Verifier and HVCI checks. This diagnostic verifies an already loaded
device's fixed GET_INFO/PING protocol; it does not install a driver or provide
driver Process API access. A successful check is a point-in-time result, not a
continuous connection. Retry performs a fresh check with a newly opened handle.