We have released RumiCar Simulator v8.3.0. The release notes below are also available on GitHub.
v8.3.0
Fixed the “press it and nothing happens / it breaks silently” failures around submitting and placement (Stage AZ; driving physics untouched). It started with a real user report: pressing “🌐 Share on GitHub” for a self-made course opened nothing. The investigation turned up two independent defects. ① You could not submit. The share buttons put the entire course/program text into the URL query, but GitHub accepts only about 6,600 characters. The user’s actual course (366 walls) came to 80,391 characters — 12–38× over — and 18 of the 23 bundled programs were over the limit too. So we abandoned the idea of carrying data in the URL: now it is two steps — ① write the submission out as a file, ② open GitHub’s upload page. The destination URL is fixed at 72 characters (the same with 8 walls or 10,000) and does not depend on the size of what you submit. The file is always written first and independently, so even if the new tab is blocked you still have the submission on disk (and we tell you in one line instead of staying silent). Official race entries, event hosting (event.json) and car sharing carried the same defect and now use the same method. An entry bakes in the full program source and the car definition, reaching 42,317 characters — and it always said “opened” even when nothing had opened. ② A submitted course looked broken. Opening that same course (18.36×18.71 m frame, a 0.300 m corridor at the start) at full scale spawned all six cars inside walls. The guard that auto-corrects the regime and car scale was judging by a proxy quantity — a quarter of the outer dimension — and concluded “it fits” when in fact not even one car fits. So the decision now follows reality: the cheap proxy stays as a first sieve, but the final call is made by the real placement oracle. We compared where every configuration settles, before and after, across all 1,188 combinations (66 shipped courses × 3 regimes × 6 car-scale steps) and confirmed zero changes other than rescues. We also followed every path that had been silently rounding “cannot place a single car” up to one car: a race now stops before it starts and tells you why (previously it set off with zero cars and reported everyone as retired). And when we reduce the field to make it fit, we always say so (previously silent). What you will notice: ① The automatic car-scale reduction now bottoms out at 0.5× (the slider’s minimum). It used to go down to 0.4×, so the slider position, the displayed label and the actual size disagreed (the settling point changes in 52 of the 1,188 combinations). ② “Car scale reduced” is now a single log line (it used to print the intermediate steps — 175 combinations; the final value is unchanged). ③ When the view falls back from full/mid scale to tabletop, the car scale is restored to what you set. It used not to be, so on the same course slider 0.8 and slider 2 ended up with car lengths differing by 5×. ④ Even a single-car field now tells you when the car cannot get moving (checked right before ▶/🏁; nothing is paid when you merely browse courses, so browsing stays fast). ⑤ The placement notice no longer disappears when you press ▶ — it used to be cleared right after being printed, while 🏁 kept it, so the same notice appeared or vanished depending on the route. In addition, we registered a submitted course into courses/community/ on the author’s behalf (keeping the name they chose; it appears as “🌐 富士スピードウェイ”). The physics notes gained an explanation of whether a slope holds the car or rolls it away while coasting (§13.9, and the in-app Q&A), and 13 static tooltip strings that are visible with JavaScript disabled were brought back in line with the catalogue and locked down by a permanent gate (one of them still carried a statement that v8.0.0 had already corrected).
Verifying this release yourself
git clone https://github.com/RumiCar-group/RumiCar-Simulator.git
cd RumiCar-Simulator
node wf_run_all.mjs # the full assertion-gate suiteThe suite runs from a fresh clone with no dependencies beyond Node.js.
The real-browser checks under browser/ additionally need npm install and a display.
