For #88: get files on and off the SD card from a phone's browser, with nothing to install.
**Using it**
- `w` in the Storage App opens a "Share" screen: the address as a QR code and in letters, and a six-digit code.
- In a browser on the same network: scan or type the address, type the code. List, download, upload (several files), new folder, delete.
- Back stops it. It also stops on leaving the Storage App.
**What it is**
- ESP-IDF's HTTP server (already in the framework) and one 5.4 KB page served from flash.
- The code is new each time; five wrong ones close it for a minute. A browser that got it right holds a cookie.
- Uploads go to `<name>.part` and are renamed when whole. A file that exists is replaced only after the page asked.
- The Storage App's rules apply: the firmware's own folders can't be deleted.
- Every access to the card goes through the storage task, 8 KB at a time.
**Known limits**
- **Not encrypted.** The screen says so.
- **One request at a time:** a second request during a long download waits for it.
- About 200 KB a second. A folder must be empty to be deleted from the page.
**Checked**
- 533 host tests pass (5 new: paths a browser may name, the code and its lockout, the JSON).
- From a PC with curl: every request and every refusal; a 2.6 MB file up and down, compared byte for byte.
- In Chromium at a phone's width: logging in from the scanned address, uploading, downloading, a new folder, deleting, replacing, a refusal shown.
- Back: the server is gone and the memory is back.
- On a real phone: the QR code, scanned with the camera, opens the page and logs in.
**Not checked:** Safari, a card pulled mid-transfer, sharing with IRC connected, Home or the screen turning off while sharing.
Costs 57 KB of flash, and 13 KB of memory while sharing.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01EhqxQ49eCju4CzKYNjZzwT
`w` in the Storage App starts a small HTTP server and shows its address,
as a QR code and in letters, with a six-digit code. A browser on the same
network that has typed the code can list, download, upload, make folders
and delete, under the Storage App's rules. The server runs only while that
screen is open. Nothing is encrypted, and the screen says so.
Uploads are streamed to the card under a temporary name and renamed when
whole. Every access to the card is handed to the storage task, 8 KB at a
time, from the server's own task.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EhqxQ49eCju4CzKYNjZzwT
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
For #88: get files on and off the SD card from a phone's browser, with nothing to install.
Using it
win the Storage App opens a "Share" screen: the address as a QR code and in letters, and a six-digit code.What it is
<name>.partand are renamed when whole. A file that exists is replaced only after the page asked.Known limits
Checked
533 host tests pass (5 new: paths a browser may name, the code and its lockout, the JSON).
From a PC with curl: every request and every refusal; a 2.6 MB file up and down, compared byte for byte.
In Chromium at a phone's width: logging in from the scanned address, uploading, downloading, a new folder, deleting, replacing, a refusal shown.
Back: the server is gone and the memory is back.
On a real phone: the QR code, scanned with the camera, opens the page and logs in.
Not checked: Safari, a card pulled mid-transfer, sharing with IRC connected, Home or the screen turning off while sharing.
Costs 57 KB of flash, and 13 KB of memory while sharing.
🤖 Generated with Claude Code
https://claude.ai/code/session_01EhqxQ49eCju4CzKYNjZzwT