Request summary and priority
All twelve upstream requests in one table, with priority, estimated effort, blast radius, and the host workaround that each fix removes.
Six of these fixes live in two translation units in Base/Os/Emscripten, plus
Base/Rtl/Path.cpp and the File::Open mode table. Together they bring back
template save, list, rename, and delete — and screenshots and chat logs with
them. One engineer can do all six in a session, and one test covers them. The
rest of the list is smaller wins, one runtime investigation, and two proposals.
Every row links to a page with the evidence, repro steps, and acceptance criteria.
All requests
| ID | Request | Priority | Effort | Blast radius |
|---|---|---|---|---|
UR-01 | Implement directory creation | 1 | Low | Small |
UR-02 | Implement directory enumeration | 1 | Medium | Small |
UR-03 | Implement relative entry-name derivation | 1 | Low | Medium |
UR-04 | Implement file deletion | 1 | Low | Small |
UR-05 | Correct the Path::RemoveExtension off-by-one | 1 | Low | Medium |
UR-06 | Remove O_CREAT from File::Open mode 1 | 1 | Low | Medium |
UR-07 | Marshal MouseEvent.detail into the input record | 1 | Low | Small |
UR-08 | Correct the printable-key label off-by-one | 2 | Low | Small |
UR-09 | Re-test the pointer after a mode change | 2 | Low | Small |
UR-10 | Profile heap ownership and raise the wasm32 maximum | 2 | Medium | Medium |
UR-11 | Publish build identity and a symbol map | 2 | Low | None |
UR-12 | Add a small platform-host interface | 3 | High | Medium |
Priority 1: a player loses a feature today. Priority 2: a player sees wrong information, hits a small defect, or loses progress in a way they can work around. Priority 3: nothing is lost today, but the platform improves.
UR-10 moved from 3 to 2 on 2026-08-04. We first saw it as a limit only very
long sessions reached; another report then reached the same cap in about half
an hour of instanced content, which costs the player that run. Newer
instrumentation proves the compiled ceiling and identifies several large
allocation owners, but does not yet distinguish cache retention,
fragmentation, or legitimate referenced working set. Raising the maximum buys
time; the ownership profile is the corrective work.
The effort and blast-radius estimates are ours, made from outside the codebase. Read them as a rough size, not a commitment.
What each fix changes
| ID | Player result | Host result |
|---|---|---|
UR-01 … UR-04 | Templates, screenshots, and chat logs work | We delete the whole template bridge |
UR-05 | Template names stay complete | We delete one name correction |
UR-06 | Rename works, and no empty files appear | We delete one probe forwarder |
UR-07 | Double-click works, with no extra clicks | We delete one module transform |
UR-08 | The Controls panel names the correct key | Nothing. We ship no workaround |
UR-09 | The cursor changes at once | We delete one pointer replay |
UR-10 | Memory use is bounded; a larger maximum adds headroom | We delete the experimental transform and retire emergency reload guidance |
UR-11 | No direct result | Our update work drops by hours per build |
UR-12 | No direct result | We delete our cursor memory addresses |
Requests by area
UR-01 to UR-06UR-07 to UR-09UR-10UR-11 and UR-12The one-byte fix
UR-07 deserves a special mention. The client already carries a double-click
flag from its input record to FrMouse, and every stage after that byte works.
But the Emscripten glue never reads MouseEvent.detail, so the flag stays zero
— which is why no Mac or browser player can double-click. Our host currently
patches this with a module transform; one marshalled field in the glue makes
that transform unnecessary.
What we're not asking for
No plugin interface, no modding system, no access to game logic, packets, or accounts — and we don't need ArenaNet to support our project. The requests are bug fixes, plus two optional interfaces that only carry presentation data.