Repository navigation
SoftN v0.0.28
SoftN v0.0.28
What's new
- Upgrading from v0.0.27: the engine is still ZIPP v0.0.32, so a FormLogic that installs this release rebuilds nothing. What a FormLogic notices is in the entries marked FormLogic below: a native app's
softn.net.fetchis answered by the frame for every language, with nothing added to the app's source; a call waits 35 seconds for its answer, where it waited 20; saves go in a lane of their own only whereinitsaysstorageLane: true; an error carriesphase(loadorruntime); and the frame'sconnect-srcnamesdata:beside the runtime directory, which a FormLogic that checks it must allow. FormLogic v0.1.15 does all of this. FormLogic v0.1.12 to v0.1.14 run this frame as they ran v0.0.27's, save that their ownconnect-srccheck refusesdata:; a FormLogic older than v0.1.12 refuses the archive, which no longer carries the engine copies it asks for (21 MB less). - The Rust backend host reads bundles with
zip9.1.3 (it was 2.4.2), which fixes a critical advisory: an archive whose central directory and local headers disagree could be read one way when checked and another when unpacked.rustlsis 0.23.46 in the Rust host, the desktop loader and the XDB crate (one moderate and three low advisories). The openwasmtimeadvisory concerns Cranelift on aarch64, for which softn-runner is not built; its fix is in wasmtime 48, a later major release than the runner's 45. - FormLogic: the runtime archive is 21 MB smaller. It no longer adds the engine at
assets/core-runtime/zipp_wasm_bg.wasmin the hosted runtime and each editor, three copies of the 7 MB engine that nothing read, kept only because FormLogic's installer asked for them; FormLogic stopped asking in v0.1.12. A FormLogic older than v0.1.12 refuses this archive. - A bundle's seed records are written to the app's database together, one save of each collection, where they were saved a record at a time: a seed of a few dozen records made a few dozen saves of an ever larger collection, on every host, and in FormLogic, whose saves are acknowledged one at a time and 32 at most, the rest were refused.
- FormLogic: an app FormLogic hosts opens with the records it ships with. The FormLogic frame never added the
.xdbfilesmanifest.files.xdbnames, so a hosted app's directory, a game's levels or a demo's sample rows were missing there and nowhere else; it now adds them before the app first draws, with core's reader and seeder, as SoftN Web, the standalone runtime and the desktop loader do (once per record, never over the person's own, a removed seed stays removed). A file that is missing, unreadable or too large for the app's storage is named in the console and skipped. - FormLogic: the frame serves every kind of media SoftN's other hosts show, where it served pictures, sound and two font formats: video (MP4, WebM), more sound (Opus, AAC, FLAC, M4A), more pictures (AVIF, ICO, BMP, HDR, EXR), TrueType and OpenType fonts, 3D models (glTF, GLB and its
.bin, OBJ, STL, FBX), and WGSL shaders, text and Markdown, each under the type core's asset classification gives it. Nothing that runs (HTML, JavaScript) is served. The frame'sconnect-srcnow namesdata:as well as the runtime directory, so an app canfetchits own assets as a model loader or a compute shader does; it still reaches no network. A FormLogic that holdsconnect-srcto the runtime directory alone in its own checks must allowdata:. - FormLogic: a native app's helper logic reaches its backend.
softn.net.fetchwas given to a JavaScript app by a<logic>fragment prepended to its entry file, and the entry's logic runs after the filesmanifest.files.logicnames and the pages it imports, so a helper that fetched as it loaded, or keptsoftn.net.fetchto call later, had the browser's own fetch, which a native app is never permitted. The frame now answers the call itself, for every language, as it already did for Python, and adds nothing to the app's source. A method is sent upper-cased, as a browser'sfetchsends it:{method: 'post'}was refused. - FormLogic: a call waits thirty-five seconds for its answer, where it waited twenty. FormLogic lets a native app's request run for twenty-five, so a write that was made in the last five seconds reached the app as a failure, and an app that tried again made it twice.
- FormLogic: a parent that sends
storageLane: trueininithas the app's saves sent in a lane of their own. In the one lane, a screen whose own calls filled the four slots and the thirty-two places behind them had a save refused as busy, and that failed save held the app's imports and restores until it was opened again. Without the flag (a FormLogic before v0.1.15, which counts saves against its four) saves go with the calls, as before. - FormLogic: an error says whether the app failed to open or failed while running (
phase: 'load'or'runtime', after its first page was drawn). FormLogic put "The app could not load" over an app that was still on screen and running, for an error inside one of its components or a script that stopped, and left it there.
Downloads
| Download | What it is | Pick it when |
|---|---|---|
softn-website-v0.0.28-zipp-v0.0.32.zip |
The complete softn.com website. The whole softn.com in one folder: the landing page, the app directory, the web runtime, Builder, Studio, the documentation and the directory API. | You want to run your own SoftN site: a directory people can publish apps to and play them from. |
softn-app-static-v0.0.28.zip |
One app on a page (static). The smallest way to host one SoftN app: a plain page with a loading spinner, a permission bar and your app, with no SoftN branding and no server code. | You have a .softn app and a web host, and you want the app on a page of your own site. |
softn-app-static-with-backend-linux-x64-v0.0.28.zip |
One app on a page, with an optional PHP server backend. The static single-app page above, plus a backend/ folder that lets the app run its own private server logic and SQLite database on an Apache/PHP host, with no service to keep running. |
Your app has a private server part (server/ logic, SQL migrations, routes) and your host is Apache with PHP on Linux x86-64. |
softn-app-private-v0.0.28.zip |
One app served privately by PHP. The single-app page again, but PHP renders it and hands the app's files to the browser piece by piece behind a viewer cookie, so the .softn file itself is never at a URL. |
You do not want visitors (or crawlers) to be able to download your app as one file. |
softn-app-private-with-backend-linux-x64-v0.0.28.zip |
One app served privately by PHP, with an optional server backend. The privately served page above together with the PHP server backend: three folders, webroot/, private/ and backend/. The app works at once without the backend; you enable the backend when the app needs it. |
You want the .softn file kept off every URL and the app has a private server part. |
softn-formlogic-runtime-v0.0.28.zip |
The SoftN runtime for FormLogic. Everything FormLogic embeds from SoftN, already built: the sandboxed frame FormLogic runs an app in, Builder and Studio as editors inside FormLogic, the server-side runtime for native apps, and the starter adapter. FormLogic’s build downloads this from the latest SoftN release instead of building SoftN from source. | You run FormLogic and its build cannot reach GitHub; download this and point SOFTN_RELEASE_ARCHIVE at it. |
Each archive unzips with a README.md at the top that explains it; RELEASE-GUIDE.md below compares them all.
The backend download targets Linux x86-64 with Apache/PHP and process execution enabled. It is a generic, unconfigured distribution: install your own public and private app bundles and preserve existing configuration, keys and databases when upgrading. Native XDB synchronization remains a Rust-host feature.
The complete website archive's name carries the tag of the zipp engine inside it. It ships no
example apps: the directory starts empty, and .softn files dropped on any
page of the site publish into it — one, or a folder at once, with the admin
key from data/config.json lifting the hourly limit for the site owner. The
example apps are published as .softn downloads with every
softn-Examples release.
The desktop loader and builder are not attached to releases; they build from
this tag's manifests with npm run tauri build in their apps. RELEASE-GUIDE.md
below compares every download and says which one to take.
The single-app archive includes a small counter example; replace it with your own bundle. It has no app download controls, but browser-delivered app bytes remain extractable. Required license notices are included in all archives.
Built with ZIPP v0.0.32 (its javascript-python-base engine, javascript engine and torch package; the release SHA256SUMS has sha256 2f54dcc6d32729814483d4d7967aa16dd2d80a37f6aa9fee6af2f4f278469876).