Files

Release workbench

The Eclipse Theia 1.75 application uses a native virtualized TreeWidget Explorer, dockable views, and Theia's EditorManager and resource resolver for read-only C, assembly, text, hex previews and differences. Assets open as editor tabs. The former single-widget web application is no longer registered.

Choose a working tree such as Pokémon · LE / 0.85.0 in Explorer. The selector and native status bar identify releases, never intermediate snapshots. Files, decoded media and completed code exports resolve from retained processing history. Snapshot IDs and extraction details remain in Properties and Processing.

Explorer keeps Browse assets and Compare beside the working-tree selector. The activity bar provides Code browser (code), Function signatures (method), Import release (cloud download), Jobs (task list), and Catalog & storage (database) icons. Tool shortcuts open their existing main or bottom panels and support keyboard activation and accessible names.

Compare releases selects an older release of the same game. Added, Removed, Changed and Unchanged filters apply to both the asset viewer and Explorer; removed assets open from the older release. File and container paths are compared after removing the common package wrapper. Media uses retained original asset hashes, not preview hashes. Decoder revision/schema/settings mismatches appear as Coverage differs. Structural record numbers are not semantic identifiers; moved records may appear added/removed. Unsupported or unextracted content is outside the decoded-asset comparison.

Code browser opens decompiled C and disassembly in separate native editors, with syntax highlighting and an outgoing-reference panel. Branch references within the current function reveal their instruction; exported function targets open that function. Back/Forward retraces function navigation. Code comparison reads existing exports and opens native difference editors. Exact body matching remains conservative: unmatched functions are not claimed as publisher additions/removals. This is a saved-analysis browser; it does not implement an interactive debugger or control-flow graph. General file previews are bounded to 64 KiB; Properties downloads complete originals.

Import release accepts server files/folders under allowed import roots, direct URLs, or an Internet Archive item with selectable downloads. The import options control extraction, previews and code analysis. Code analysis selects every supported game executable, with the largest as the default, or the largest supported executable if none is named game. Explicit imports work while the older automatic queue is paused. Browsing, comparison and code navigation do not submit jobs.

The code browser's program selector includes binaries without saved analysis and offers Analyze selected or Analyze game programs. Function signatures lists saved observations and reuse across distinct executable contents, with IDA FLIRT .pat/.sig import/export. Re-analysis does not inflate reuse counts.

Sync all binaries scans recognized ELF/PE executables in every current working tree, repairs missing indexes from completed exports, and reuses analysis by exact archived content identity across releases. It includes versioned shared libraries and PE libraries. With Analyze binaries without saved signatures selected, a durable plan submits one missing binary at a time to the explicit analysis queue, respecting work already queued or running and keeping successful results when another binary fails. The plan survives page navigation and server restarts; interrupted jobs owned by the sync resume. Stop sync cancels only work created by that plan. Another sync retries gaps and includes newly imported binaries. Clear the checkbox to inventory and compare saved work without starting analysis. Coverage lists distinct binaries, copies, failures, and unextracted releases; contents still inside unextracted containers require extraction first. Exact matches update as exports finish; Seen elsewhere filters them, and function details check FLIRT candidates without renaming functions.

The native View dropdown controls thumbnails/details and DMD orange tint. Tint applies only to images labeled Approximate bitmap. Pagination accepts a typed page number followed by Enter or Go.

Catalog & storage lists releases and all cataloged files. Measure storage shows exact-file and shared-chunk savings, compression, and per-release shared/exclusive usage. Delete version and the game filter's Delete all versions show a review before removing references. Garbage collect separately reclaims unreferenced objects while preserving shared data. Maintenance requires queued/running work to finish or be canceled. Original server files are retained.

Build and run

Use the optimized Rust build for real firmware. Node 22+, npm, and Theia's Linux native dependencies are required.

cargo build --release
npm --prefix workbench/stern-catalog run build
npm --prefix workbench run build:browser

The deployment units in ../deploy/ serve Theia on LAN port 3000 and Rust on loopback port 8080. The same-origin /api proxy connects to VERSTACK_API_PORT (default 8080). For a separate local UI preview:

VERSTACK_API_PORT=8080 node workbench/browser-app/lib/backend/main.js --hostname 127.0.0.1 --port 3001

Use npm --prefix workbench/stern-catalog test for type checking. tests/ui-native-workbench.mjs is a read-only real-archive browser regression; it asserts zero API writes. tests/workspace.rs covers release aggregation, comparison filters, removed-file readback, nested wrapper normalization, incompatible decoder profiles, inherited scratch locations and processing pause. The earlier ui-workbench.mjs targets the retired UI and is retained as historical evidence.

Pokémon LE 0.81.0 is imported. Browse assets includes a Scripts tab with all 52 recovered Godot scripts, original folder names, read-only syntax highlighting, full source preview up to 8 MiB, filtering, and downloads. The source recovery report records per-script provenance and validation. Existing media-decoding limitations still apply; see docs/redesign-status.md.

Import releases from the Import release activity bar icon. Browse server roots or paste a direct URL/Internet Archive item link; select source files, name the release, and choose extraction, previews, and optional code analysis. Jobs shows active imports and processing history with measured or indeterminate progress, cancel/retry controls, and Open release. Starting an explicit import or signature sync does not resume the older paused processing queue.

Emulator in the activity bar opens independent per-client test sessions with screen/audio streaming and the supplied Pokémon table controls. Start Stream & switch diagnostic to test the transport and broker; real LE SD-runtime targets are experimental. See emulator testing and setup.