Skip to content

Commit 14139e9

Browse files
committed
[green] align all public website guidance with firmware v0.6.1
Signed-off-by: Viwat Vchirawongkwin <viwat.v@chula.ac.th>
1 parent 02c88eb commit 14139e9

19 files changed

Lines changed: 363 additions & 64 deletions
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<!-- SPDX-License-Identifier: MIT -->
2+
<!-- Part of PyBLE (https://pyble.dev) — see /LICENSE. -->
3+
4+
# Whole-site v0.6.1 consistency — 2026-09-11
5+
6+
## Reason and scope
7+
8+
Earlier route-only deployments updated Flash and Features but preserved an old
9+
homepage, support page, and tutorial baseline. A coherent full static build
10+
now uses the same exact owner-confirmed v0.6.1 selector on every release-aware
11+
route. Source is maintained in the primary PyBLE checkout.
12+
13+
Home, support and target cards recognize the owner-confirmed release as
14+
available on all five exact profiles. Tutorial guidance references v0.6.1 and
15+
explains fresh RUN globals, LFS2 migration and non-destructive mount refusal.
16+
The example snapshot's original v0.6.0 baseline and screenshot version labels
17+
remain historical facts, explicitly distinguished from current guidance.
18+
The Flash artifact verifier, consent, manifests and firmware bytes are unchanged.
19+
20+
The primary checkout also incorporates the already-deployed patched website
21+
dependencies and exact owner-confirmed release policy, without changing App
22+
or firmware sources. Its previous dependency installation is retained in the
23+
ignored local work directory, not deleted.
24+
25+
## Social image provenance
26+
27+
The existing PyBLE-authored social SVG is reused with new title/description
28+
and badge wording: “FIRMWARE v0.6.1 AVAILABLE”. Original App and logo source
29+
image bytes, placement and clipping are unchanged. No hardware rendering or
30+
retouched App screen was created. The App beta status is separate from the
31+
firmware version. Historical card assets remain available.
32+
33+
- SVG: `/social/pyble-v061-og-d3bab0c0-1200x630.svg`;
34+
SHA-256 `d3bab0c05e2c07783b6f7006a7cd8152b4b0a8798f4ade55e31d28076cb9bb1f`.
35+
- PNG: `/social/pyble-v061-og-297b270f-1200x630.png`;
36+
SHA-256 `297b270fd4ec7637752ff954416cf4ca69570992b28d48b4530982db07c03af9`.
37+
- Dimensions: 1200 × 630.
38+
- Rasterization: existing pinned Sharp package; exact same-origin image
39+
references embedded in memory for rendering, without changing source pixels.
40+
The first local render lacked resolved image references and was rejected.
41+
The final PNG was visually inspected and includes the real App screenshot.
42+
- All shared Open Graph/Twitter metadata selects the new content-addressed PNG.
43+
44+
## Validation and deployment
45+
46+
The added consistency cases first failed (five expected failures), then the
47+
full website suite passed (342 tests). No hardware tests are part of this task.
48+
Deployment uses a new complete static site, preserves old assets/downloads,
49+
and atomically switches the site symlink with the previous release retained.
50+
Production route and artifact delivery checks are recorded in the local
51+
deployment workspace; qualification claims remain owner-provided.

‎tools/web/public/sitemap.xml‎

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,103 +2,103 @@
22
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
33
<url>
44
<loc>https://pyble.dev/</loc>
5-
<lastmod>2026-08-28T00:00:00.000Z</lastmod>
5+
<lastmod>2026-09-11T00:00:00.000Z</lastmod>
66
<changefreq>weekly</changefreq>
77
<priority>1</priority>
88
</url>
99
<url>
1010
<loc>https://pyble.dev/app</loc>
11-
<lastmod>2026-08-28T00:00:00.000Z</lastmod>
11+
<lastmod>2026-09-11T00:00:00.000Z</lastmod>
1212
<changefreq>monthly</changefreq>
1313
<priority>0.9</priority>
1414
</url>
1515
<url>
1616
<loc>https://pyble.dev/privacy</loc>
17-
<lastmod>2026-08-28T00:00:00.000Z</lastmod>
17+
<lastmod>2026-09-11T00:00:00.000Z</lastmod>
1818
<changefreq>monthly</changefreq>
1919
<priority>0.7</priority>
2020
</url>
2121
<url>
2222
<loc>https://pyble.dev/support</loc>
23-
<lastmod>2026-08-28T00:00:00.000Z</lastmod>
23+
<lastmod>2026-09-11T00:00:00.000Z</lastmod>
2424
<changefreq>monthly</changefreq>
2525
<priority>0.7</priority>
2626
</url>
2727
<url>
2828
<loc>https://pyble.dev/flash</loc>
29-
<lastmod>2026-07-29T00:00:00.000Z</lastmod>
29+
<lastmod>2026-09-11T00:00:00.000Z</lastmod>
3030
<changefreq>monthly</changefreq>
3131
<priority>0.7</priority>
3232
</url>
3333
<url>
3434
<loc>https://pyble.dev/features</loc>
35-
<lastmod>2026-09-01T00:00:00.000Z</lastmod>
35+
<lastmod>2026-09-11T00:00:00.000Z</lastmod>
3636
<changefreq>monthly</changefreq>
3737
<priority>0.9</priority>
3838
</url>
3939
<url>
4040
<loc>https://pyble.dev/learn</loc>
41-
<lastmod>2026-08-28T00:00:00.000Z</lastmod>
41+
<lastmod>2026-09-11T00:00:00.000Z</lastmod>
4242
<changefreq>monthly</changefreq>
4343
<priority>0.9</priority>
4444
</url>
4545
<url>
4646
<loc>https://pyble.dev/learn/setup</loc>
47-
<lastmod>2026-08-28T00:00:00.000Z</lastmod>
47+
<lastmod>2026-09-11T00:00:00.000Z</lastmod>
4848
<changefreq>monthly</changefreq>
4949
<priority>0.8</priority>
5050
</url>
5151
<url>
5252
<loc>https://pyble.dev/learn/first-program</loc>
53-
<lastmod>2026-08-28T00:00:00.000Z</lastmod>
53+
<lastmod>2026-09-11T00:00:00.000Z</lastmod>
5454
<changefreq>monthly</changefreq>
5555
<priority>0.8</priority>
5656
</url>
5757
<url>
5858
<loc>https://pyble.dev/learn/files</loc>
59-
<lastmod>2026-08-28T00:00:00.000Z</lastmod>
59+
<lastmod>2026-09-11T00:00:00.000Z</lastmod>
6060
<changefreq>monthly</changefreq>
6161
<priority>0.8</priority>
6262
</url>
6363
<url>
6464
<loc>https://pyble.dev/learn/github-import</loc>
65-
<lastmod>2026-08-28T00:00:00.000Z</lastmod>
65+
<lastmod>2026-09-11T00:00:00.000Z</lastmod>
6666
<changefreq>monthly</changefreq>
6767
<priority>0.8</priority>
6868
</url>
6969
<url>
7070
<loc>https://pyble.dev/learn/blocks</loc>
71-
<lastmod>2026-08-28T00:00:00.000Z</lastmod>
71+
<lastmod>2026-09-11T00:00:00.000Z</lastmod>
7272
<changefreq>monthly</changefreq>
7373
<priority>0.8</priority>
7474
</url>
7575
<url>
7676
<loc>https://pyble.dev/learn/examples</loc>
77-
<lastmod>2026-08-28T00:00:00.000Z</lastmod>
77+
<lastmod>2026-09-11T00:00:00.000Z</lastmod>
7878
<changefreq>monthly</changefreq>
7979
<priority>0.8</priority>
8080
</url>
8181
<url>
8282
<loc>https://pyble.dev/learn/hardware</loc>
83-
<lastmod>2026-08-28T00:00:00.000Z</lastmod>
83+
<lastmod>2026-09-11T00:00:00.000Z</lastmod>
8484
<changefreq>monthly</changefreq>
8585
<priority>0.8</priority>
8686
</url>
8787
<url>
8888
<loc>https://pyble.dev/learn/configured-hardware</loc>
89-
<lastmod>2026-08-28T00:00:00.000Z</lastmod>
89+
<lastmod>2026-09-11T00:00:00.000Z</lastmod>
9090
<changefreq>monthly</changefreq>
9191
<priority>0.8</priority>
9292
</url>
9393
<url>
9494
<loc>https://pyble.dev/learn/pico-2-w</loc>
95-
<lastmod>2026-08-28T00:00:00.000Z</lastmod>
95+
<lastmod>2026-09-11T00:00:00.000Z</lastmod>
9696
<changefreq>monthly</changefreq>
9797
<priority>0.8</priority>
9898
</url>
9999
<url>
100100
<loc>https://pyble.dev/learn/waveshare-lcd-147b</loc>
101-
<lastmod>2026-08-28T00:00:00.000Z</lastmod>
101+
<lastmod>2026-09-11T00:00:00.000Z</lastmod>
102102
<changefreq>monthly</changefreq>
103103
<priority>0.8</priority>
104104
</url>
215 KB
Loading
Lines changed: 166 additions & 0 deletions
Loading

‎tools/web/src/app/flash/page.tsx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ export default function FlashPage() {
7171
? ` Qualified v${release.version} firmware is available for all ${exactProfileCountLabel(release.profiles.length)} exact release profiles.`
7272
: candidate
7373
? ` This protected, access-controlled v${release.version} release candidate is staged for hardware qualification. Hardware validation is pending on every included profile; the public install action stays unavailable until it passes.`
74-
: " The public install action remains unavailable until the final v0.6.0-derived bytes pass hardware validation on every included profile."}
74+
: " No firmware release is selected for this build; installation remains unavailable."}
7575
</p>
7676
</PageIntro>
7777

‎tools/web/src/app/learn/examples/page.tsx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ export default function ExamplesTutorial() {
174174
<dd>{examplesSnapshot.examples.length}</dd>
175175
</div>
176176
<div>
177-
<dt>Firmware baseline</dt>
177+
<dt>Snapshot's original firmware baseline (historical)</dt>
178178
<dd>{examplesSnapshot.firmwareBaseline}</dd>
179179
</div>
180180
<div>

‎tools/web/src/app/learn/files/page.tsx‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,20 @@ export default function FilesTutorial() {
122122
deleted and later targets are unattempted.
123123
</p>
124124
</TutorialCallout>
125+
<TutorialCallout title="Firmware v0.6.1 storage" tone="note">
126+
<p>
127+
All five official profiles use LFS2. Back up files before migrating
128+
an older FAT workspace and use the documented installer. If storage
129+
cannot mount, nonblank or uncertain media is preserved without
130+
starting the agent; explicit USB recovery is required. It is not
131+
silently reformatted.
132+
</p>
133+
<p>
134+
Finish or cancel an active PUT or GET before deleting, renaming, or
135+
creating a directory. Those mutations return EBUSY during a
136+
transfer; listing and inspecting files remain available.
137+
</p>
138+
</TutorialCallout>
125139
</section>
126140

127141
<section aria-labelledby="files-selection-boundary">

‎tools/web/src/app/learn/first-program/page.tsx‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,9 @@ const steps: readonly TutorialStep[] = [
6565
body: (
6666
<p>
6767
Change the message, Save the new snapshot, and Run it again. Confirm
68-
that Console shows the changed text, not the earlier copy.
68+
that Console shows the changed text, not the earlier copy. Firmware
69+
0.6.1 gives each Run fresh globals, so recreate variables in your
70+
program. Imported modules and hardware state are not necessarily reset.
6971
</p>
7072
),
7173
expected:

0 commit comments

Comments
 (0)