feat(status): surface APEX notifications (NOTS) in an Alerts panel#72
Open
Zillatron27 wants to merge 1 commit into
Open
feat(status): surface APEX notifications (NOTS) in an Alerts panel#72Zillatron27 wants to merge 1 commit into
Zillatron27 wants to merge 1 commit into
Conversation
The NOTS buffer's data already travels the WebSocket as first-class entities (ALERTS_ALERTS login snapshot, ALERTS_ALERT deltas, ALERTS_ALERTS_DELETED removals) but APXM dropped them as unknown message types. New alerts entity store + handlers (cleared on reconnect like the rest), and an AlertsPanel on the Status tab — collapsible, reorderable, unread-marked (dot + brightness, not colour alone), capped at 50 with an honest "+N older" line. Alerts carry no display text on the wire — just a type enum and key/value data — so lib/format-alert.ts composes the strings APXM shows (rPrun reads the game-rendered DOM instead, which APXM never displays). High-frequency types get explicit templates; the rest fall back to a humanized type name. Alert type shapes from refined-prun's alerts.types.d.ts (MIT, (c) 2025 Dan Pavlides). Read state is server-driven and display-only: marking read would mean sending a WS message, which APXM never does. reconcileOrder() appends the new panel id to persisted orders, so no migration. Part of the passthrough wave; references #30 (fork candidate list). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ❌ Deployment failed View logs |
apxm | 9c44a97 | Jul 06 2026, 11:06 AM |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Second PR of the action-passthrough wave: APEX's notifications surfaced into APXM so you see them without switching — the "NOTS passthrough" from the #30 candidate list, done as pure WebSocket data (no DOM, no buffer driving).
ALERTS_ALERTS(login snapshot),ALERTS_ALERT(deltas), andALERTS_ALERTS_DELETED(removals) reached APXM and were dropped as unknown message types. Newstores/entities/alerts.ts+ three handlers; cleared on reconnect with the other entity stores (stale notifications are worse than none).lib/format-alert.ts— alerts carry no text on the wire (type enum + key/value data; the game composes strings client-side, and rPrun reads the game's rendered DOM — not an option for APXM). Explicit templates for the high-frequency types (CX fills/trades, production finished, ship arrivals, workforce supplies, the contract family, LM ads, warehouse locks); humanized fallback for the rest. Alert type shapes from refined-prun'salerts.types.d.ts(MIT, © 2025 Dan Pavlides).AlertsPanel— new reorderable Status panel (collapsible, default collapsed, "N unread" summary). Unread rows get a dot marker + brightness (not colour alone); rows show category, text, and relative time; capped at 50 with an honest "+N older — see NOTS in APEX" line.read/seenflags). Marking read would require sending a WS message — APXM never does.reconcileOrder()already appends new panel ids to persisted orders; that upgrade path is now pinned by a test.Testing
formatAlerttemplates + fallback + hostile-input case,reconcileOrderupgrade path.npx tsc --noEmitclean; Chrome + Firefox builds green.🤖 Generated with Claude Code