STUdio 0.4.3-fork.1
Pre-releaseAbout this pre-release
This is an independent fork of STUdio by @marian-m12l, whose reverse-engineering work everything here is built on. It is not an official STUdio release, and it is not endorsed by upstream.
This is the fork's first public pre-release. Its purpose is robustness rather than new features: making the device detect reliably, making failures report honestly, and making the code refuse and diagnose rather than guess when it cannot establish something.
It is published to widen validation beyond the two devices used during development. It is work in progress, not a finished product — please read Known limitations before deciding whether it fits your use, and keep backups.
Highlights
Writing to the device
- The index is written to a temporary file, synchronised, and installed with a single atomic move where the filesystem supports it. If it does not, the operation fails rather than falling back to the previous in-place rewrite.
- The free-space check now counts what a transfer is actually known to add, in full precision.
- A malformed index is rejected instead of being turned into a fabricated pack identifier, and an index entry whose content is missing no longer makes the whole device unreadable.
- An upload creates its content folder exclusively. A folder already present under that name is refused — never written into, never emptied, since nothing can tell whether it is a leftover, another tool's, or yours.
- The driver can list content folders the index does not reference. It reports only; it never acts on them.
Library and conversions
- The library re-reads a pack file when it has changed, instead of trusting a stale parse.
- A converted file is no longer sent to the device merely because it is the most recent one present.
- New conversions record what they were made from. Before one is reused, STUdio re-reads both the source and the converted file and compares them with what it recorded — only a proven match is reused without asking. A difference, or anything it cannot establish, asks you.
- Conversions made before this existed carry no such record and are never assumed to match.
Library paths
- A library operation may only reach a direct child of the library folder. Traversals, absolute paths, and symbolic links or junctions inside the library are refused rather than repaired.
Device and transport
- The partition search waits for the operating system to mount the device instead of giving up after ten seconds, and an unplug cancels a search in flight.
- A dropped monitoring channel is no longer reported as a failed transfer.
- The libusb context has a single owner, and detection survives transient failures instead of dying silently.
- File handles are released on every path out, not only when everything goes well.
Validation
- Automated tests run on Linux and Windows in CI.
- Three documented sessions of real device operations, on two devices.
Known limitations
Please read these as the actual boundary of what has been established.
- Real-device validation is narrow: firmware
3.3, two devices, one Windows host. Nothing here generalises to other firmware revisions, other hardware revisions, other SD cards or other hosts. - macOS is untested. A launcher script is included, inherited from upstream, but it has never been exercised here.
- No power-loss or forced-disconnection scenario has been tested. No crash-safety is claimed or proven. An atomic move is atomic with respect to the filesystem only, and asking the operating system to flush a file is not evidence that the bytes reached the card. FAT32 has no journal.
- A failed content removal can leave an unreferenced folder. Deleting a pack rewrites the index before removing the content, so if the removal fails the content stays behind, de-indexed and occupying space. Nothing surfaces it, and the pack cannot simply be deleted again.
- A partial upload can leave an unreferenced content folder, and later uploads of that pack are then deliberately refused rather than merged into it. That refusal is the safe behaviour, but there is no supported way to resolve the state it leaves.
/downloadmay answer HTTP 500 for some refused paths. The refusal itself works and the path confinement is not affected; only the status code is wrong.- This is a local application with no authentication, and it listens on all interfaces. Do not expose it to a network you do not control.
- The release check and the in-app announce still read upstream's repository. They are inherited and unchanged in this pre-release.
One point of accuracy, because it matters: a FAT corruption incident recorded during development is documented as a forensic hypothesis, not a demonstrated cause. Nothing in this repository establishes what caused it, and it should not be read as a demonstrated consequence of STUdio.
Tested scope
| Firmware | 3.3 |
| Devices | 2 |
| Hosts | 1 Windows machine |
| CI | Linux and Windows |
| Java tests | 282 |
| JavaScript tests | 57 |
TESTING.md describes what is covered and what is deliberately not; FIELD-VALIDATION.md records the field sessions and their limits.
Installation
- Download
studio-web-ui-0.4.3-fork.1-dist.zipfrom this release — not from upstream's releases, which do not contain any of the above. - Unzip it.
- Run the launcher for your platform:
studio-linux.sh,studio-macos.shorstudio-windows.bat. You may need to make the shell scripts executable first. - If a browser does not open by itself, go to
http://localhost:8080.
Requirements, unchanged from upstream and documented in the README:
- Java JDK 11+
- On Windows, the libusb driver, most easily obtained by having the official Luniistore software installed — but not running at the same time.
Avoid running the launcher as administrator or root; it tends to create permission problems.
Feedback
Please report anything you find with this pre-release at https://github.com/antoinevalentinHA/studio/issues — this fork's tracker, not upstream's.
Field reports are especially welcome for firmware revisions, devices and hosts other than the ones listed above, since that is exactly what this pre-release is meant to widen.
SHA-256
b77fc28ea0429627113734046e4ef38011a7ceaf602f87056347b77a0d9ab5d7 studio-web-ui-0.4.3-fork.1-dist.zip
Licensed under the Mozilla Public License 2.0, as upstream. Lunii is a registered trademark of Lunii SAS; this work is in no way affiliated with Lunii SAS. Use at your own risk — it comes with no warranty and may brick your device.