Skip to content

v0.9.99

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 08 Sep 04:40
· 495 commits to main since this release
24e3f88

Highlights

The module view is now INPA itself. Every ECU screen is drawn by executing BMW's own .IPO script live in the browser (screens/ipo-runtime.js), the same bytecode INPA runs. inpainit identifies the module and names the root menu, each F-key runs its own script body, each screen sends its own jobs on INPA's own cycle. The derived "IR" renderer, its heuristics and the offline browsing mode are gone: what you see is what INPA would show, key for key.

Live .IPO runtime

  • Menus, screens, key legends, title bars and Shift rows exactly as the script prints them. INPA layout mode is the bare text grid; modern mode groups the same cells into rows, tiles, lamps and zoned bars (scale, min/max marks, live value).
  • Fault memory: numbered result sets (short list, detail, freeze frames), logical LINE bands, Select / Deselect line filters, Print screen.
  • Activations and guided procedures: %STATE machines run live (setstate, timers, polls), togglelist component pickers (single and multi-select), quit-mode message boxes, INPA's inputint / inputhex / inputdigital prompts and the OK/Cancel confirm box. Verified on a real E46: ZKE5 and SHD46 activations, LSZ selection, IHKA status, MS45 rough running and switch lamps.
  • Scriptchange chains are followed (KLIMA_5B hands an IHKA46_3 to IHKA46.IPO), by-reference parameters, unary minus, longtoreal, numeric inttolong / bytetoint, bound-aware numconvert, per-run step budgets, keypresses queued while a job is on the wire.
  • Opening a module never prompts. Only actions the user takes ask for confirmation, once per action.
  • No cable: the script's first job fails and the view says "No adapter connected" with a Back key. A silent module shows the script's own "Program will be stopped" plus the group probe's verdict.

Translations: exact dictionaries only

  • The deGerman word-rule table is deleted. Captions translate through per-ECU dictionaries (data/inpa-i18n/<ECU>.json) and a generated shared table of INPA chrome; runtime SGBD text (*_TEXT, fault locations, P-codes, freeze-frame labels and enum values) through the fault and environment dictionaries. Anything without an entry shows exactly as BMW wrote it.
  • Key legends keep their key and translate the caption; padded captions keep their column. tools/decompile/ipo_i18n.js --gaps lists what is still untranslated.
  • The IR corpus was regenerated with the current decoder.

Vehicle identity

  • The EWS stored odometer (KD block 0) is read and shown beside the cluster odometer.
  • Fix: the EWS odometer job is matched by name, so it is found on every EWS variant.

Remote diagnostics

  • The host approves each user action once, not every job it sends; approvals expire after 15 minutes.
  • The helper sees a full-screen "Waiting for the host to accept your request" card; a refusal reads "The host rejected your request".
  • Helper and host must run the same version to connect.
  • Fix: a backgrounded host tab throttled every bus wait to one second, so remote reads took 5 to 8 seconds. All bus timing now runs on a worker-backed timer and is unaffected by tab focus.
  • The host's own module screens pause while a helper drives, so the helper's reads are not queued behind them.

Removed

  • Demo mode.
  • The WiFi / THOR transport option (K+DCAN over Web Serial only).
  • The auto-connect setting (the cable always reconnects).
  • The derived IR renderer (screens/ir.js 4614 lines to about 210), ?ir=1, the liveIpo setting and the four tests that pinned it.

Verification

  • New test_ir_i18n.js (exact-dictionary captions) and a 41-check test_ipo_runtime.js (fake wire, exact job sequences, painted cells, scriptchange hop) run in CI before every deploy.
  • Real-car verified on an E46 325i over K+DCAN: MS45 fault lists and freeze frames, lamps and bars, SHD46 and ZKE5 activations, LSZ multi-select, IHKA status, the remote helper flow end to end.

What's Changed

  • Live .IPO runtime as the module view; EWS odometer; exact-only i18n (0.9.99) by @dader34 in #117
  • Pages: replace the deleted renderer tests in the verify step by @dader34 in #118

Full Changelog: v0.9.98...v0.9.99

Complete offline build (6.2G)

Everything above plus the ETK parts catalogue for every chassis, too large for a GitHub release asset:

bmweb-0.9.99-offline-complete.zip