Stop tracking workspace/; bundled-demos/ is the canonical demo source
`workspace/` is runtime state (per-user folders, no-auth dev's `code/`) and shouldn't be in git. The same files were previously committed under both `workspace/code/` and `src/static/bundled-demos/`, which forced a Docker `diff -q` sync check and leaked user-scoped paths into version control. - /workspace/ added to .gitignore; all previously tracked files removed via `git rm --cached`. - src/static/bundled-demos/ becomes the single source of truth: panel16 demos, led_tutorial, led_patterns, neopixel demos, and main.py move here alongside the existing canonical demos. - New BUNDLED_DEMOS_DIR config; user_workspace seeders read from it. - main.py lifespan seeds WORKSPACE_ROOT/code/ on startup so a fresh clone running `pipenv run dev` still gets the full sample set (existing files never overwritten — user edits survive restarts). - Dockerfile drops `COPY workspace` and the diff sanity check. - README/LED_TUTORIAL repointed at the new canonical paths. - test_led_patterns loads led_patterns.py from bundled-demos. - test_api uses mkdir(exist_ok=True) for `code/` (startup pre-creates). Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
24
README.md
24
README.md
@@ -110,7 +110,7 @@ The browser runtime ships MicroPython-style stubs in repo `lib/` (they appear as
|
||||
- `utime` — `ticks_ms`, `ticks_diff`, `ticks_add`, `sleep_ms`, `sleep_us`, `sleep`
|
||||
- `micropython.const` — no-op helper for ported constant declarations
|
||||
|
||||
Use them from scripts in `workspace/code` like typical ESP32 / MicroPython examples:
|
||||
Use them from scripts in `code/` (your editor workspace, populated on first run from `src/static/bundled-demos/`) like typical ESP32 / MicroPython examples:
|
||||
|
||||
```python
|
||||
from machine import Pin
|
||||
@@ -132,18 +132,20 @@ Simulator modes:
|
||||
- rows zig-zag left/right.
|
||||
- The 16x16 popup closes automatically on **Stop** or when script execution finishes.
|
||||
|
||||
Tutorial files:
|
||||
Tutorial files (canonical source — committed under `src/static/bundled-demos/`; copies appear in your editor's `code/` folder on first run):
|
||||
|
||||
- `LED_TUTORIAL.md` - step-by-step NeoPixel tutorial
|
||||
- `workspace/code/led_tutorial.py` - runnable guided LED example
|
||||
- `workspace/code/led_patterns.py` - shared pattern helpers (used by automated tests); each `pattern_*_demo.py` duplicates what it needs and uses only Python stdlib + `machine` / `neopixel` / `time`
|
||||
- `workspace/code/pattern_rainbow_demo.py` - rainbow animation (self-contained)
|
||||
- `workspace/code/pattern_chase_demo.py` - Knight Rider–style bouncing scanner (self-contained)
|
||||
- `workspace/code/pattern_twinkle_demo.py` - twinkle animation (self-contained)
|
||||
- `workspace/code/panel16_utils.py` - helpers for 16x16 serpentine mapping
|
||||
- `workspace/code/panel16_rainbow_wave.py` - 16x16 rainbow wave
|
||||
- `workspace/code/panel16_bounce.py` - 16x16 bouncing pixel with trail
|
||||
- `workspace/code/panel16_matrix_rain.py` - 16x16 matrix rain effect
|
||||
- `led_tutorial.py` - runnable guided LED example
|
||||
- `led_patterns.py` - shared pattern helpers (used by automated tests); each `pattern_*_demo.py` duplicates what it needs and uses only Python stdlib + `machine` / `neopixel` / `time`
|
||||
- `pattern_rainbow_demo.py` - rainbow animation (self-contained)
|
||||
- `pattern_chase_demo.py` - Knight Rider–style bouncing scanner (self-contained)
|
||||
- `pattern_twinkle_demo.py` - twinkle animation (self-contained)
|
||||
- `panel16_utils.py` - helpers for 16x16 serpentine mapping
|
||||
- `panel16_rainbow_wave.py` - 16x16 rainbow wave
|
||||
- `panel16_bounce.py` - 16x16 bouncing pixel with trail
|
||||
- `panel16_matrix_rain.py` - 16x16 matrix rain effect
|
||||
|
||||
> `workspace/` is gitignored runtime state. To edit the **shipped** demo source, edit `src/static/bundled-demos/<file>.py` and re-run "Reset demos" in the editor (or restart the dev server with an empty `workspace/code/`).
|
||||
|
||||
## Dev auto-reload hook
|
||||
|
||||
|
||||
Reference in New Issue
Block a user