diff --git a/docs/history.md b/docs/history.md index afc1aae..2b74582 100644 --- a/docs/history.md +++ b/docs/history.md @@ -1,6 +1,6 @@ # PyDevices Organization History -*Written 2026-09-06 from GitHub's repository records and the repositories' own histories; every creation date in the chronology was re-checked against GitHub the same day. Update the chronology when a repository is created, transferred, renamed or published.* +*Written 2026-09-06 and brought up to date through 2026-10-22 from GitHub's repository records, releases and merged pull requests, and the repositories' own histories; every creation date in the chronology was re-checked against GitHub on the day of each update. Update the chronology when a repository is created, transferred, renamed, archived or published.* ## Concise history @@ -12,6 +12,10 @@ The organization assumed its current shape during June–August 2026. The large Late August and early September broadened the project substantially: Android and PyScript application paths, a browser/mobile Workbench, the CircuitPython-compatible audio stack, VST3 hosting, a versioned MicroPython overlay, native USB host/device support, and MIPI-CSI cameras. The audio component split shipped on 2026-09-03; `usbif` and `cameraif` were published on 2026-09-04. +September was a month of consolidation around the audio and timing layers. `mpvst` shipped its first installable release on 2026-09-11 and took that name the same day. On 2026-09-21 the audio core was renamed `audiodsp`, and the name it left, `audioif`, went to the audio hardware layer that sits under the audio pump, published that day. On 2026-09-23 `cmods` was archived: `micropython-pydevices`, created on 2026-08-29, had taken over the presets, variants and patch series that firmware builds needed. `pydevices` added Bluetooth Low Energy support on 2026-09-25 and, on 2026-09-26 in 0.6.0, the redesigned `multimer` timing layer, one timer and dispatcher per host across MicroPython, CircuitPython and CPython. `mpftp` learned to reach boards over Wi-Fi and Bluetooth on 2026-09-24 and 2026-09-25, and examples for casting a board's display and sound to a computer or a Roku TV followed on 2026-09-28. + +October moved the native code and the packaging. On 2026-10-05 `micropython-pydevices` gained one build command, `build_mp.py`, that builds firmware by module name, and on 2026-10-08 it began building CircuitPython-compatible firmware as well as MicroPython. The media modules `jpegio`, `h264enc`, `tsmux`, `ppa` and `pngio` landed there between 2026-10-06 and 2026-10-07, along with HLS casting in `castif`. In `audiocomponents`, the rebuilt effects shipped in v0.4.0 on 2026-10-15, and v0.4.1 on 2026-10-22 added SoundFont instruments, drum kits that answer pad keys 36 to 51, and a MIDI dispatcher. On 2026-10-19 the four interface repositories were folded in and archived: the C modules of `usbif`, `audioif`, `cameraif` and `displayif` moved into `micropython-pydevices` under `modules/`, and the Python parts of `usbif` moved into `pydevices` as the `usb-*` packages. The same day `pydevices` 0.7.6 was released as a final, with MIDI ports on `adafruit_midi`, Bluetooth MIDI and HID on `adafruit_midi` and `adafruit_hid`, USB on `usb.core`, the camera under `espcamera`, and I2S capture. On 2026-10-20 `palettes` and `pdwidgets` moved into `pydevices` and were archived, and a package-library builder (`tools/libbuild.py`) was merged there; the `lib` repository began serving its output as a `mip` index on 2026-10-21, and board configurations and drivers became installable packages of that library in the same days. On 2026-10-22 `micropython-pydevices` gained dev-container configurations for building firmware in a codespace, and `pydevices` 0.7.7, the first final to attach desktop and WebAssembly interpreters, was released. + The 2014 history in `mip`, the 2018 history in `lvgl-micropython`, and the 2024 history in `workbench` are inherited upstream histories—not evidence that PyDevices itself existed at those dates. ## Repository chronology @@ -20,34 +24,38 @@ Dates are UTC calendar dates. “Created” is GitHub’s repository-object date | Repository | Created | Public / first verifiable public | Major milestones | |---|---:|---:|---| -| [pydevices-examples](https://github.com/PyDevices/pydevices-examples) | 2023-11-10 | 2023-11-10* | Original monorepo; rebranded PyDevices 2024-09-02; transferred as `PyDevices/pydisplay` 2024-11-19; packages extracted through 2026; renamed/refocused as examples and PyScript gallery 2026-08-11. | -| [lvgl-micropython](https://github.com/PyDevices/lvgl-micropython) | 2024-11-17 | 2024-11-17* | Imported LVGL binding history reaching back to 2018; split into MicroPython-only glue in June 2026; adopted current name 2026-08-11. | -| [mip](https://github.com/PyDevices/mip) | 2024-11-22 | 2024-11-22* | Fork with inherited `micropython-lib` history from 2014; became PyDevices’ generated package mirror and MIP index; renamed from `micropython-lib` 2026-08-14. | -| [cmods](https://github.com/PyDevices/cmods) | 2024-12-03 | 2024-12-03* | Evolved into the optional build/integration workspace for MicroPython, CircuitPython, native modules, LVGL, USB, and JPEG support. | -| [displayif](https://github.com/PyDevices/displayif) | 2026-06-01 | ≤2026-06-25† | Native display-interface extraction, initially associated with `pydisplay_cmods`; standardized the DotClock/display API in July; added portable JPEG decoding in September. | -| [lvgl-bindings](https://github.com/PyDevices/lvgl-bindings) | 2026-06-18 | 2026-06-18* | Shared header-to-C generator; CPython target added 2026-06-19; automated LVGL 9.x release chain reached v9.5.22 by 2026-08-29. | -| [lvgl-circuitpython](https://github.com/PyDevices/lvgl-circuitpython) | 2026-06-18 | 2026-06-18* | CircuitPython LVGL integration and build glue; portable build and display-driver work; renamed from `lv_circuitpython_mod` 2026-08-11. | -| [lvgl-python](https://github.com/PyDevices/lvgl-python) | 2026-06-19 | 2026-06-19* | Native CPython extension, later covering Android and WebAssembly; first release 2026-06-30; reached v9.5.44 by 2026-08-29. | -| [pygraphics](https://github.com/PyDevices/pygraphics) | 2026-07-05 | 2026-07-05* | Unified native and pure-Python graphics across MP/CP/CPython; package renamed to `pygraphics` 2026-07-26; v0.0.38 on 2026-08-29. | -| [android-template](https://github.com/PyDevices/android-template) | 2026-07-06 | 2026-07-06* | Imported Android demo and python-for-android recipes from `usdl2`; produced the Launcher APK path; became the reusable application template. | -| [.github](https://github.com/PyDevices/.github) | 2026-07-12 | 2026-07-12* | Organization profile and community-health files; centralized releases in August; reusable publishing contract advanced from `publishing-v1` to `publishing-v9`. | -| [PyDevices.github.io](https://github.com/PyDevices/PyDevices.github.io) | 2026-07-12 | 2026-07-12* | Organization portal; consolidated project pages; introduced direct MicroPython WebAssembly/PyScript apps in August and the `pydevices.com` landing page in September. | -| [pdwidgets](https://github.com/PyDevices/pdwidgets) | 2026-07-14 | 2026-07-14* | Widget toolkit extracted from the monorepo; first release 2026-07-15; reached v0.0.23 on 2026-08-29. | -| [palettes](https://github.com/PyDevices/palettes) | 2026-07-15 | 2026-07-15* | Palette library extracted from `pydisplay` add-ons; first release immediately after extraction; v0.0.13 by 2026-08-29. | -| [mpftp](https://github.com/PyDevices/mpftp) | 2026-07-17 | 2026-07-17* | VS Code/Cursor MicroPython tooling for REPL, transfer, packages, and firmware; v0.0.1 on 2026-07-26 and v0.0.4 on 2026-08-29. | -| [pydevices](https://github.com/PyDevices/pydevices) | 2026-07-25 | 2026-07-25* | Began as the hardware/board-driver extraction from `pydisplay`; became the flagship portable package family in August; reached v0.3.8 on 2026-08-29. | -| [pyscript-template](https://github.com/PyDevices/pyscript-template) | 2026-08-12 | 2026-08-12* | Installable offline PWA template for browser-hosted PyDevices applications; repaired and standardized deployment contract on 2026-08-29. | -| [android-runner](https://github.com/PyDevices/android-runner) | 2026-08-17 | 2026-08-17* | Reproducible Android CPython runtime build engine; first Runner APK release, v0.1.0, on 2026-08-29. | -| [audiodsp](https://github.com/PyDevices/audiodsp) | 2026-08-25 | 2026-08-25* | CircuitPython audio APIs ported to MicroPython and CPython; cross-platform parity gates; v0.2.0 core-only split shipped with 21 wheels on 2026-09-03. | -| [workbench](https://github.com/PyDevices/workbench) | 2026-08-25 | 2026-08-25* | Public ViperIDE fork retaining history from 2024; rebranded with PyDevices WASM simulator and examples; v0.7.0 released 2026-08-29. | -| [mpvst](https://github.com/PyDevices/mpvst) | 2026-08-27 | 2026-08-27* | Dedicated MicroPython VST3 instrument/effect engine; Windows and Linux byte-identical PCM, scripted synths, MIDI control, and REAPER validation. | -| [micropython-pydevices](https://github.com/PyDevices/micropython-pydevices) | 2026-08-29 | 2026-08-29* | Versioned MicroPython patch queue, runtime profiles, provenance, WebAssembly pieces, and restricted VST3-engine profile. | -| [usbif](https://github.com/PyDevices/usbif) | 2026-08-30 | 2026-09-04 | Developed privately, audited, and history-cleaned before publication; proved USB audio, MIDI, CDC, HID, storage, hub, UAC, and UVC paths in host/device roles. | -| [audiocomponents](https://github.com/PyDevices/audiocomponents) | 2026-09-01 | 2026-09-03 | Seeded from the audio work begun 2026-08-24; separated 53 instruments and effects from `audiodsp`; public v0.2.0 split shipped 2026-09-03. | -| [cameraif](https://github.com/PyDevices/cameraif) | 2026-09-04 | 2026-09-04 | Same-day bring-up and publication: board-agnostic camera API, MIPI-CSI capture, hardware JPEG, zero-copy frames, scaling, examples, and an upstream OV5647 report. | +| [pydevices-examples](https://github.com/PyDevices/pydevices-examples) | 2023-11-10 | 2023-11-10* | Original monorepo; rebranded PyDevices 2024-09-02; transferred as `PyDevices/pydisplay` 2024-11-19; packages extracted through 2026; renamed/refocused as examples and PyScript gallery 2026-08-11; added casting, audio-rig, spectrum-meter and Google Photos examples and an “Open in Workbench” button on gallery pages in September–October. | +| [lvgl-micropython](https://github.com/PyDevices/lvgl-micropython) | 2024-11-17 | 2024-11-17* | Imported LVGL binding history reaching back to 2018; split into MicroPython-only glue in June 2026; adopted current name 2026-08-11; `display_driver` moved to `pydevices` 2026-10-07; Windows builds with LVGL fixed 2026-10-19. | +| [mip](https://github.com/PyDevices/mip) | 2024-11-22 | 2024-11-22* | Fork with inherited `micropython-lib` history from 2014; became PyDevices’ generated package mirror and MIP index; renamed from `micropython-lib` 2026-08-14; lists `midiports` and the `usb-*` packages from `pydevices` 0.7.6 (2026-10-19). | +| [cmods](https://github.com/PyDevices/cmods) | 2024-12-03 | 2024-12-03* | Evolved into the optional build/integration workspace for MicroPython, CircuitPython, native modules, LVGL, USB, and JPEG support; retired and archived 2026-09-23 (‡), once `micropython-pydevices` and each repository's own build glue had taken over, with a README that says where things went. | +| [displayif](https://github.com/PyDevices/displayif) | 2026-06-01 | ≤2026-06-25† | Native display-interface extraction, initially associated with `pydisplay_cmods`; standardized the DotClock/display API in July; added portable JPEG decoding in September; `jpegio` moved to `micropython-pydevices` 2026-10-06; archived 2026-10-19 (‡) when its C modules moved to `micropython-pydevices` under `modules/displayif`. | +| [lvgl-bindings](https://github.com/PyDevices/lvgl-bindings) | 2026-06-18 | 2026-06-18* | Shared header-to-C generator; CPython target added 2026-06-19; automated LVGL 9.x release chain reached v9.5.22 by 2026-08-29 and v9.5.23 by 2026-10-09; CPython bindings declared GIL-free for free-threaded builds 2026-10-15. | +| [lvgl-circuitpython](https://github.com/PyDevices/lvgl-circuitpython) | 2026-06-18 | 2026-06-18* | CircuitPython LVGL integration and build glue; portable build and display-driver work; renamed from `lv_circuitpython_mod` 2026-08-11; builds as a CircuitPython 11 user C module from 2026-10-08. | +| [lvgl-python](https://github.com/PyDevices/lvgl-python) | 2026-06-19 | 2026-06-19* | Native CPython extension, later covering Android and WebAssembly; first release 2026-06-30; reached v9.5.44 by 2026-08-29 and v9.5.52 on 2026-10-15; wheels for CPython 3.15 and free-threaded 3.15t added 2026-10-15. | +| [pygraphics](https://github.com/PyDevices/pygraphics) | 2026-07-05 | 2026-07-05* | Unified native and pure-Python graphics across MP/CP/CPython; package renamed to `pygraphics` 2026-07-26; v0.0.38 on 2026-08-29, v0.1.0 on 2026-10-08 and v0.1.1 on 2026-10-22; builds as a CircuitPython user C module from 2026-10-08. | +| [android-template](https://github.com/PyDevices/android-template) | 2026-07-06 | 2026-07-06* | Imported Android demo and python-for-android recipes from `usdl2`; produced the Launcher APK path; became the reusable application template; its recipes carry `pydevices` 0.7.6 as of 2026-10-20. | +| [.github](https://github.com/PyDevices/.github) | 2026-07-12 | 2026-07-12* | Organization profile and community-health files; centralized releases in August; reusable publishing contract advanced from `publishing-v1` to `publishing-v9`, reaching `publishing-v10` on 2026-09-22 and `publishing-v17` on 2026-10-22. | +| [PyDevices.github.io](https://github.com/PyDevices/PyDevices.github.io) | 2026-07-12 | 2026-07-12* | Organization portal; consolidated project pages; introduced direct MicroPython WebAssembly/PyScript apps in August and the `pydevices.com` landing page in September; added a firmware page and a one-line build installer in October; pages for the archived interface repositories point to their new homes (2026-10-19). | +| [pdwidgets](https://github.com/PyDevices/pdwidgets) | 2026-07-14 | 2026-07-14* | Widget toolkit extracted from the monorepo; first release 2026-07-15; reached v0.0.23 on 2026-08-29 and v0.0.24 on 2026-09-24; moved into the `pydevices` repository, in `pdwidgets/`, on 2026-10-20, with v0.0.25 released there on 2026-10-22; archived 2026-10-20 (‡). | +| [palettes](https://github.com/PyDevices/palettes) | 2026-07-15 | 2026-07-15* | Palette library extracted from `pydisplay` add-ons; first release immediately after extraction; v0.0.13 by 2026-08-29 and v0.0.14 on 2026-09-24; moved into the `pydevices` repository, in `palettes/`, on 2026-10-20, with v0.0.15 released there on 2026-10-22; archived 2026-10-20 (‡). | +| [mpftp](https://github.com/PyDevices/mpftp) | 2026-07-17 | 2026-07-17* | VS Code/Cursor MicroPython tooling for REPL, transfer, packages, and firmware; v0.0.1 on 2026-07-26 and v0.0.4 on 2026-08-29; reached boards over Wi-Fi (2026-09-24) and Bluetooth (2026-09-25); v0.1.0 on 2026-10-08 added a browser interface and a bundled `mpremote`; v0.1.3 on 2026-10-22. | +| [pydevices](https://github.com/PyDevices/pydevices) | 2026-07-25 | 2026-07-25* | Began as the hardware/board-driver extraction from `pydisplay`; became the flagship portable package family in August; reached v0.3.8 on 2026-08-29; added `bledev` (2026-09-25), the redesigned `multimer` timing layer (0.6.0, 2026-09-26) and many board configurations and drivers; `midiports` and the `usb-*` packages on the upstream `adafruit_midi`, `adafruit_hid` and `usb.core` APIs in 0.7.6, a final released 2026-10-19; `palettes`, `pdwidgets` and the package-library builder merged 2026-10-20; v0.7.7 on 2026-10-22 was the first final to attach desktop and WebAssembly interpreters. | +| [pyscript-template](https://github.com/PyDevices/pyscript-template) | 2026-08-12 | 2026-08-12* | Installable offline PWA template for browser-hosted PyDevices applications; repaired and standardized deployment contract on 2026-08-29; works offline after the first visit (2026-09-24) and gained a Web Workers kit (2026-10-15). | +| [android-runner](https://github.com/PyDevices/android-runner) | 2026-08-17 | 2026-08-17* | Reproducible Android CPython runtime build engine; first Runner APK release, v0.1.0, on 2026-08-29; reached v0.2.8 on 2026-10-22, carrying `pydevices` 0.7.6 since 2026-10-20. | +| [audiodsp](https://github.com/PyDevices/audiodsp) | 2026-08-25 | 2026-08-25* | CircuitPython audio APIs ported to MicroPython and CPython; cross-platform parity gates; v0.2.0 core-only split shipped with 21 wheels on 2026-09-03; renamed from `audioif` on 2026-09-21, its first published release under the new name being v0.5.1 on 2026-09-22; added Ogg Vorbis playback (2026-10-12), wheels for CPython 3.15 (2026-10-15) and the `audiograph` runner (2026-10-21); v0.6.10 on 2026-10-22. | +| [workbench](https://github.com/PyDevices/workbench) | 2026-08-25 | 2026-08-25* | Public ViperIDE fork retaining history from 2024; rebranded with PyDevices WASM simulator and examples; v0.7.0 released 2026-08-29; boots the simulator with the PyDevices stack frozen into its WebAssembly runtime (2026-10-05); opens gallery examples by link (2026-10-11); v0.7.4 on 2026-10-22. | +| [mpvst](https://github.com/PyDevices/mpvst) | 2026-08-27 | 2026-08-27* | Dedicated MicroPython VST3 instrument/effect engine; Windows and Linux byte-identical PCM, scripted synths, MIDI control, and REAPER validation; renamed from `micropython-vst3` and first released, as v0.1.0 with Windows and Linux installers, on 2026-09-11; v0.3.3 on 2026-10-22. | +| [micropython-pydevices](https://github.com/PyDevices/micropython-pydevices) | 2026-08-29 | 2026-08-29* | Versioned MicroPython patch queue, runtime profiles, provenance, WebAssembly pieces, and restricted VST3-engine profile; added `build_mp.py` (2026-10-05), CircuitPython-compatible builds (2026-10-08), `castif` (2026-09-28), the media modules `jpegio`, `h264enc`, `tsmux`, `ppa` and `pngio` (2026-10-06 to 2026-10-07), the C modules of `usbif`, `audioif`, `cameraif` and `displayif` (2026-10-19), and dev-container configurations for building in a codespace (2026-10-22). | +| [usbif](https://github.com/PyDevices/usbif) | 2026-08-30 | 2026-09-04 | Developed privately, audited, and history-cleaned before publication; proved USB audio, MIDI, CDC, HID, storage, hub, UAC, and UVC paths in host/device roles; archived 2026-10-19 (‡). Its Python packages moved to `pydevices` as `usb-core` and the `usb-host-*` and `usb-device-*` packages; its C module became `usbhost` in `micropython-pydevices`. | +| [audiocomponents](https://github.com/PyDevices/audiocomponents) | 2026-09-01 | 2026-09-03 | Seeded from the audio work begun 2026-08-24; separated 53 instruments and effects from `audiodsp`; public v0.2.0 split shipped 2026-09-03; v0.3.0 on 2026-09-23; v0.4.0 on 2026-10-15 shipped the rebuilt effects; v0.4.1 on 2026-10-22 added SoundFont instruments, drum kits that answer pad keys 36 to 51 and a MIDI dispatcher. | +| [cameraif](https://github.com/PyDevices/cameraif) | 2026-09-04 | 2026-09-04 | Same-day bring-up and publication: board-agnostic camera API, MIPI-CSI capture, hardware JPEG, zero-copy frames, scaling, examples, and an upstream OV5647 report; added an IMX219 driver and auto-exposure; archived 2026-10-19 (‡) when it moved to `micropython-pydevices` under `modules/cameraif`, where it answers to `espcamera`. | +| [audioif](https://github.com/PyDevices/audioif) | 2026-09-18 | 2026-09-21 | Developed privately as the audio pump's platform drivers (ESP32 I2S and task, unix, Windows) and a CircuitPython-shaped `audiobusio.I2SOut`; published with v0.1.0 on 2026-09-21 under the name the audio core had just given up; v0.1.2 on 2026-10-10; archived 2026-10-19 (‡) when it moved to `micropython-pydevices` under `modules/audioif`. | +| [lib](https://github.com/PyDevices/lib) | 2026-10-21 | 2026-10-21* | The `mip` package index served from GitHub Pages: each package is built from a release of the repository it lives in, and board configurations and drivers are published from their merge. | \* Best-supported conclusion is that the repository was public from creation; GitHub exposes creation and current visibility but not a general historical “public since” field. I found no contrary visibility transition in the available history. † `displayif` was definitely public under its earlier naming by 2026-06-25; the precise visibility-change instant between its 2026-06-01 creation and that public activity is unavailable. The organization audit-log endpoint that could settle this was inaccessible. +‡ GitHub exposes whether a repository is archived but not when. The archive date given is the day of the repository's final commit, the notice that it had moved or was retired, which is also the day of its last update on GitHub; where the README gives a date, it matches. + No files, branches, indexes, or repository configuration were changed while researching this history.