Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .cursor/environment.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
{
"_comment": "Repositories Cursor's cloud environment checks out beside this one. This file is static JSON consumed by Cursor's cloud environment setup before 'install' runs, so it cannot be generated at environment-init time -- keep it converged by hand when a public repository is added or retired.",
"install": "bash scripts/cloud-workspace-install.sh && bash scripts/cloud-python-deps.sh && bash scripts/cloud-pydevices-examples-dev-env.sh",
"install": "bash scripts/cloud-workspace-install.sh && bash scripts/cloud-python-deps.sh && bash scripts/cloud-gallery-dev-env.sh",
"start": "true",
"repositoryDependencies": [
"github.com/PyDevices/.github",
"github.com/PyDevices/PyDevices.github.io",
"github.com/PyDevices/pydevices",
"github.com/PyDevices/pydevices-examples",
"github.com/PyDevices/gallery",
"github.com/PyDevices/audiodsp",
"github.com/PyDevices/pygraphics",
"github.com/PyDevices/palettes",
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ body:
attributes:
label: Repo / area
description: Which repo (or part of a repo) is this about?
placeholder: e.g. pydevices / displaydev, or pydevices-examples / examples
placeholder: e.g. pydevices / displaydev, or gallery / examples
validations:
required: true

Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/feature.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ body:
Thanks for the suggestion! Check the repo's ROADMAP.md first: it
may already be planned. For open-ended questions or discussion,
consider starting a thread in
[pydevices-examples Discussions](https://github.com/PyDevices/pydevices-examples/discussions)
[PyDevices Discussions](https://github.com/PyDevices/pydevices/discussions)
instead.

- type: input
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ jobs:
- name: Check out generator output targets
run: |
set -euo pipefail
for repo in PyDevices.github.io pydevices pydevices-examples mip; do
for repo in PyDevices.github.io pydevices gallery mip; do
git clone --quiet --depth 1 "https://github.com/PyDevices/${repo}.git" \
"workspace-root/${repo}"
done
Expand All @@ -91,7 +91,7 @@ jobs:
run: |
set -euo pipefail
failed=0
for repo in PyDevices.github.io pydevices pydevices-examples mip; do
for repo in PyDevices.github.io pydevices gallery mip; do
if ! git -C "workspace-root/${repo}" diff --exit-code; then
echo "::error::${repo} is out of date with data/repos_db.json -- edit the database and regenerate"
failed=1
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/cold-eyes-review.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
run: |
Q=$((($(date +%-m)-1)/3+1))
Y=$(date +%Y)
REPOS=(pydevices palettes pdwidgets pygraphics mpftp audiodsp lvgl-bindings lvgl-python displayif workbench pydevices-examples pyscript-template android-template cmods mip micropython-pydevices)
REPOS=(pydevices palettes pdwidgets pygraphics mpftp audiodsp lvgl-bindings lvgl-python displayif workbench gallery pyscript-template android-template cmods mip micropython-pydevices)
N=${#REPOS[@]}
IDX=$(( ( (Y*4 + Q) * 3 ) % N ))
SAMPLE="${REPOS[$IDX]} ${REPOS[$(( (IDX+1)%N ))]} ${REPOS[$(( (IDX+2)%N ))]}"
Expand Down
2 changes: 1 addition & 1 deletion assets/apps/benchmark_deck.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
"""
PyDevices Multi-Interpreter Benchmark (Hero Canvas App for pydevices-examples)
PyDevices Multi-Interpreter Benchmark (Hero Canvas App for gallery)
=============================================================================
Interactive multi-interpreter execution matrix and benchmark meter:
- 5-target performance comparator (MicroPython, CircuitPython, CPython, WASM, Android)
Expand Down
2 changes: 1 addition & 1 deletion assets/apps/signal_gen.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ def _note_name(freq):

# ---------------------------------------------------------------------------
# Signal synthesis -- a single live synthio.Note, played through the same
# audiodev.sample_out.AudioOut contract as pydevices-examples' piano.py
# audiodev.sample_out.AudioOut contract as gallery's piano.py
# (out = board_config.audio_out(); out.play(synth); out.attach(app) -- the
# role is a factory, and calling it is what opens the device). Toggling the note
# on/off goes through synthio's own envelope (short attack/release) rather
Expand Down
4 changes: 2 additions & 2 deletions assets/css/site.css
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* PyDevices — shared org site chrome
*
* Design tokens + layout primitives shared by every PyDevices GitHub Pages
* site (org root, lvgl-bindings, pydevices-examples, and the second-wave module
* site (org root, lvgl-bindings, gallery, and the second-wave module
* pages). Keep this file focused on *chrome*: header/nav, hero, buttons,
* cards, footer, typography. Project-specific / demo-interpreter styles belong
* in a local stylesheet loaded after this one.
Expand Down Expand Up @@ -931,7 +931,7 @@ pre code {
}

/* NOT a colour override -- an unmerged twin kept for its selector weight.
* pydevices-examples' gallery.css loads after this file and restyles
* gallery's gallery.css loads after this file and restyles
* .tag.featured with the same (0,2,0) specificity, so today it wins in the
* dark theme and loses to this heavier light-theme selector. Folding these
* declarations into the rule above would hand the light theme to gallery.css
Expand Down
12 changes: 6 additions & 6 deletions assets/js/site-chrome.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
'/workbench/">Workbench</a>' +
'<a href="' +
ROOT +
'/pydevices-examples/gallery/" class="nav-gallery-link">Gallery</a>' +
'/gallery/gallery/" class="nav-gallery-link">Gallery</a>' +
"</nav>" +
'<button type="button" class="theme-toggle" id="theme-toggle" aria-label="Toggle color theme" title="Toggle color theme">' +
'<svg class="icon-sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4"/></svg>' +
Expand Down Expand Up @@ -120,10 +120,10 @@
icon: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 21v-7M4 10V3M12 21v-9M12 8V3M20 21v-5M20 12V3M1 14h6M9 8h6M17 16h6"/></svg>'
},
{
id: "pydevices-examples",
name: "examples",
path: "/pydevices-examples/",
url: ROOT + "/pydevices-examples/",
id: "gallery",
name: "gallery",
path: "/gallery/",
url: ROOT + "/gallery/",
tag: "Showcase",
desc: "Multi-interpreter demos, benchmarks & PyScript runner",
icon: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="4" y="4" width="16" height="16" rx="2"/><path d="M9 9h6M9 12h6M9 15h4"/><circle cx="17" cy="15" r="1.5"/></svg>'
Expand Down Expand Up @@ -358,7 +358,7 @@

// Footer Links
html += ' <div class="pydevices-nav-footer">';
html += ' <a href="' + ROOT + '/pydevices-examples/gallery/" class="nav-foot-link">Interactive Gallery</a> &middot; ';
html += ' <a href="' + ROOT + '/gallery/gallery/" class="nav-foot-link">Interactive Gallery</a> &middot; ';
html += ' <a href="https://PyDevices.github.io/mip" class="nav-foot-link">MIP Index</a> &middot; ';
html += ' <a href="https://github.com/PyDevices" class="nav-foot-link">GitHub</a>';
html += ' </div>';
Expand Down
30 changes: 15 additions & 15 deletions data/repos_db.json
Original file line number Diff line number Diff line change
Expand Up @@ -504,7 +504,7 @@
},
{
"label": "Gallery",
"href": "https://pydevices.github.io/pydevices-examples/gallery/",
"href": "https://pydevices.github.io/gallery/gallery/",
"tier_color": true
},
{
Expand Down Expand Up @@ -704,13 +704,13 @@
}
]
},
"pydevices-examples": {
"gallery": {
"tier": 1,
"page": "self",
"tier_name": "Core Platform & Board Contract",
"theme_color": "var(--tier-1-amber)",
"eyebrow": "pydevices-examples",
"headline": "pydevices-examples — Showcase, demos & WebAssembly gallery.",
"eyebrow": "gallery",
"headline": "gallery — Showcase, demos & WebAssembly gallery.",
"description": "Comprehensive example code, direct MicroPython WebAssembly demos, board configurations, and multi-interpreter showcase benchmarks.",
"hero_canvas": {
"app": "benchmark_deck",
Expand All @@ -722,12 +722,12 @@
"buttons": [
{
"label": "GitHub Repo",
"href": "https://github.com/PyDevices/pydevices-examples",
"href": "https://github.com/PyDevices/gallery",
"primary": true
},
{
"label": "Gallery",
"href": "https://pydevices.github.io/pydevices-examples/gallery/",
"href": "https://pydevices.github.io/gallery/gallery/",
"tier_color": true
},
{
Expand All @@ -742,31 +742,31 @@
}
]
},
"pydevices-examples-gallery": {
"gallery-gallery": {
"tier": 1,
"tier_name": "Core Platform & Board Contract",
"page": "self-subpath",
"site_repo": "pydevices-examples",
"site_repo": "gallery",
"site_subpath": "gallery",
"portal_grid": false,
"title": "pydevices-examples — WebAssembly Gallery",
"title": "gallery — WebAssembly Gallery",
"theme_color": "var(--tier-1-amber)",
"eyebrow": "PyDevices / pydevices-examples · WebAssembly Gallery",
"eyebrow": "PyDevices / gallery · WebAssembly Gallery",
"headline": "WebAssembly Gallery",
"description": "Direct MicroPython WebAssembly demos that run the same PyDevices examples as MCUs and CPython. Explore drawing, input, widgets, and LVGL without flashing a board first.",
"hero_note": "Click a card to launch the app. The first load may take a few seconds while the interpreter downloads; featured demos stay pinned at the top.",
"buttons": []
},
"pydevices-examples-pyscript": {
"gallery-pyscript": {
"tier": 1,
"tier_name": "Core Platform & Board Contract",
"page": "self-subpath",
"site_repo": "pydevices-examples",
"site_repo": "gallery",
"site_subpath": "pyscript",
"portal_grid": false,
"title": "pydevices-examples — PyScript Gallery",
"title": "gallery — PyScript Gallery",
"theme_color": "var(--tier-1-amber)",
"eyebrow": "PyDevices / pydevices-examples · PyScript Gallery",
"eyebrow": "PyDevices / gallery · PyScript Gallery",
"headline": "PyScript Gallery",
"description": "Pyodide / PyScript demos that run full CPython in the browser — the same PyDevices examples as MCUs and the direct WebAssembly gallery. Explore drawing, input, widgets, and LVGL without flashing a board first.",
"hero_note": "Click a card to launch the app. The first load may take a few seconds while the interpreter downloads; featured demos stay pinned at the top.",
Expand Down Expand Up @@ -801,7 +801,7 @@
},
{
"label": "Gallery",
"href": "https://pydevices.github.io/pydevices-examples/gallery/",
"href": "https://pydevices.github.io/gallery/gallery/",
"tier_color": true
},
{
Expand Down
2 changes: 1 addition & 1 deletion docs-site/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ listed in [Projects](projects/index.md).

## Try it before you install it

The [gallery](https://pydevices.github.io/pydevices-examples/gallery/) runs
The [gallery](https://pydevices.github.io/gallery/gallery/) runs
the same example programs that run on boards, in your browser, and
[Workbench](https://pydevices.github.io/workbench/) is an editor with a
simulated board built in. The main page of each project here also carries a
Expand Down
2 changes: 1 addition & 1 deletion docs-site/install.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ Current releases are on TestPyPI, which is why the command names it first.
:::

:::{tab-item} In the browser
Nothing to install: the [gallery](https://pydevices.github.io/pydevices-examples/gallery/)
Nothing to install: the [gallery](https://pydevices.github.io/gallery/gallery/)
and [Workbench](https://pydevices.github.io/workbench/) run MicroPython as
WebAssembly. To use a library from your own page, load it with micropip in
Pyodide or PyScript; each project's page shows the line.
Expand Down
4 changes: 2 additions & 2 deletions docs-site/newcomers.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@ order most people meet them in.

## 1. Watch it run

Open the [gallery](https://pydevices.github.io/pydevices-examples/gallery/).
Open the [gallery](https://pydevices.github.io/gallery/gallery/).
Every program there is a real PyDevices example running as MicroPython in your
browser, with the same code a board would run. Pick one that draws, one that
reacts to the mouse and one that uses widgets, and read the code beside it.

## 2. Run it on your desktop

[Install](install.md) `pydevices-desktop` and run an example from
[pydevices-examples](https://github.com/PyDevices/pydevices-examples). A window
[gallery](https://github.com/PyDevices/gallery). A window
opens and your program draws into it, which is the quickest way to try an idea.

## 3. Learn the three layers
Expand Down
7 changes: 7 additions & 0 deletions docs-site/projects/gallery.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# gallery

Example programs for every part of PyDevices, the board configurations they run on, and the browser galleries that run the same examples as MicroPython and as Pyodide.

[gallery on GitHub](https://github.com/PyDevices/gallery).

Try them in the [gallery](https://pydevices.github.io/gallery/gallery/).
4 changes: 2 additions & 2 deletions docs-site/projects/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Each project has its own manual. A project listed with its manual here has it on
- [LVGL bindings and ports](lvgl.md)
- [micropython-pydevices and the device modules](micropython-pydevices.md)
- [workbench](workbench.md)
- [pydevices-examples](pydevices-examples.md)
- [gallery](gallery.md)

```{toctree}
:hidden:
Expand All @@ -27,5 +27,5 @@ mpftp
lvgl
micropython-pydevices
workbench
pydevices-examples
gallery
```
7 changes: 0 additions & 7 deletions docs-site/projects/pydevices-examples.md

This file was deleted.

12 changes: 6 additions & 6 deletions docs/github-presence.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@ the answer from scratch.
| Report a bug or request a feature | Issues on the **specific repo** it affects (see [repo map](#repos--pages-sites)); use the Bug report / Feature request templates |
| Find contribution guidelines shared across repos | [PyDevices/.github CONTRIBUTING.md](https://github.com/PyDevices/.github/blob/main/CONTRIBUTING.md) |
| Read the org's public-facing "about us" | [PyDevices/.github profile README](https://github.com/PyDevices/.github/blob/main/profile/README.md) (rendered on [github.com/PyDevices](https://github.com/PyDevices)) |
| Read pydevices-examples documentation | [pydevices-examples/docs](https://github.com/PyDevices/pydevices-examples/tree/main/docs) |
| Read gallery documentation | [gallery/docs](https://github.com/PyDevices/gallery/tree/main/docs) |
| Read pygraphics documentation | [pygraphics.readthedocs.io](https://pygraphics.readthedocs.io) |
| Read palettes / pdwidgets docs | [palettes.readthedocs.io](https://palettes.readthedocs.io), [pdwidgets.readthedocs.io](https://pdwidgets.readthedocs.io) |
| Manage Read the Docs ↔ GitHub (org app) | [Read the Docs Community GitHub App](https://github.com/organizations/PyDevices/settings/installations) (all repos); migrate legacy projects at [RTD migrate-to-github-app](https://app.readthedocs.org/accounts/migrate-to-github-app/) |
| Try the library without installing anything | [PyScript browser demos](https://pydevices.github.io/pydevices-examples/pyscript/) |
| Try the library without installing anything | [PyScript browser demos](https://pydevices.github.io/gallery/pyscript/) |
| Hardware board/driver docs (configs, contract, drivers, matrix) | [pydevices docs/](https://github.com/PyDevices/pydevices/tree/main/docs) (markdown; the [Pages site](https://pydevices.github.io/pydevices/) is a landing page only) |
| Talk to a board from VS Code / Cursor (REPL, files, firmware) | [mpftp](https://github.com/PyDevices/mpftp) ([Pages](https://pydevices.github.io/mpftp/); agent state under `~/.mpftp/`) |

Expand All @@ -38,7 +38,7 @@ the answer from scratch.
[`.github`](https://github.com/PyDevices/.github/tree/main/.github/ISSUE_TEMPLATE)
repo and apply automatically to any repo that doesn't define its own.
- If you're not sure which repo an issue belongs to, open it on
[pydevices-examples](https://github.com/PyDevices/pydevices-examples/issues) — per
[gallery](https://github.com/PyDevices/gallery/issues) — per
CONTRIBUTING.md, that's the routing point.
- **Recipes** ([pydevices Discussions](https://github.com/PyDevices/pydevices/discussions), *Recipes* category once created,
open-ended format, not answerable) is for one-off examples/how-tos that
Expand All @@ -48,7 +48,7 @@ the answer from scratch.
not a permanent home for everything filed into it.
- **Wikis** are disabled org-wide — reference content lives in each repo's
`README.md`/`AGENTS.md`, in
[pydevices-examples documentation](https://github.com/PyDevices/pydevices-examples/tree/main/docs), or on a Pages site,
[gallery documentation](https://github.com/PyDevices/gallery/tree/main/docs), or on a Pages site,
not in a wiki page.
- **Projects** are disabled org-wide (org boards and per-repo Projects). Public
work tracking is Issues + Discussions; there is no org kanban.
Expand Down Expand Up @@ -96,7 +96,7 @@ icons. Header brand stays on the shared org logo.

| Repo | Role | Pages site |
|---|---|---|
| [pydevices-examples](https://github.com/PyDevices/pydevices-examples) | Examples, tutorials, and PyScript showcase for the PyDevices product stack | [pydevices.github.io/pydevices-examples](https://pydevices.github.io/pydevices-examples/) (+ [PyScript demos](https://pydevices.github.io/pydevices-examples/pyscript/)) |
| [gallery](https://github.com/PyDevices/gallery) | Examples, tutorials, and PyScript showcase for the PyDevices product stack | [pydevices.github.io/gallery](https://pydevices.github.io/gallery/) (+ [PyScript demos](https://pydevices.github.io/gallery/pyscript/)) |
| [palettes](https://github.com/PyDevices/palettes) | Color palette toolkit for PyDevices | [pydevices.github.io/palettes](https://pydevices.github.io/palettes/) |
| [pdwidgets](https://github.com/PyDevices/pdwidgets) | Cross-platform widget toolkit for PyDevices | [pydevices.github.io/pdwidgets](https://pydevices.github.io/pdwidgets/) |
| [lvgl-bindings](https://github.com/PyDevices/lvgl-bindings) | LVGL C→binding generator (source of truth for the native bindings consumers) | [pydevices.github.io/lvgl-bindings](https://pydevices.github.io/lvgl-bindings/) |
Expand All @@ -118,7 +118,7 @@ icons. Header brand stays on the shared org logo.

All owned repos are **MIT**, using GitHub's standard single-author template
(so it's correctly detected as MIT rather than `NOASSERTION`/`Other`). A
handful of files in **pydevices-examples** that still carry code from other authors
handful of files in **gallery** that still carry code from other authors
(`src/utils/tft_text.py`, `tft_write.py`, `tft_bitmap.py`, and the
`polygon()` function in `PyDevices/pygraphics`'s `lib/pygraphics/_shapes.py`, tracing back through
Russ Hughes' st7789_mpy driver to Ivan Belokobylskiy's st7789py_mpy) keep
Expand Down
Loading
Loading