diff --git a/CHANGELOG.md b/CHANGELOG.md index 044395c..3e1d7c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,11 +4,6 @@ All notable changes to Patternflow will be documented in this file. ## [Unreleased] -## [3.4.1] - 2026-08-12 - -### Changed -- **A broker ships with the firmware, so MQTT works without standing up a server first.** The host and login move out of the gitignored secrets header and into `net_config.h` as published defaults — they are in the repo and readable in every release image, which is the honest place for a credential that goes to everybody. The account is scoped to match: it can read and write the `patternflow` topic and nothing else on that server, so publishing it costs its owner a topic rather than a broker. Run by **[@SimonePDA](https://github.com/SimonePDA)**, who contributed the MQTT work and confirmed the terms. Nothing dials on its own — the role still lives in NVS and starts at Off, so this arms the option rather than the radio. Point a board somewhere else by overriding `PF_MQTT_HOST` (and friends) in `patternflow_secrets.h`, which is included first and wins. - ## [3.4.0] - 2026-08-12 Patterns leave the firmware and live on the filesystem, so a board ships nearly empty — and a pack ships with it. **Hardware unchanged**; v3.0 board and case carry over as-is. diff --git a/firmware/patternflow/net_config.h b/firmware/patternflow/net_config.h index e3c53ff..664648a 100644 --- a/firmware/patternflow/net_config.h +++ b/firmware/patternflow/net_config.h @@ -72,7 +72,7 @@ // Firmware version string reported to the flasher (Improv device-info RPC). // Keep in sync with web/public/flash/manifest.json. #ifndef PF_IMPROV_FW_VERSION -#define PF_IMPROV_FW_VERSION "3.4.1" +#define PF_IMPROV_FW_VERSION "3.4.0" #endif // ── OTA (wireless flashing from Arduino IDE / espota.py) ───── @@ -181,7 +181,8 @@ // anything. Nothing connects until a role is picked AND a broker host is // set, so the default build is inert. // -// A shared broker ships with the firmware — see the block further down. +// Broker credentials belong in patternflow_secrets.h (gitignored), never +// here: this file ships in the repo and lands in every published .bin. // // This costs internal DRAM: ~600 B of statics, plus ~1.8 KB for the socket // while a role is connected. That is worth knowing because the web console @@ -205,48 +206,20 @@ #ifndef PF_MQTT_HTTP_ENABLED #define PF_MQTT_HTTP_ENABLED PF_MQTT_ENABLED #endif -// ── The shared Patternflow broker ──────────────────────────── -// A broker anyone with a Patternflow may use, run and paid for by -// @SimonePDA (Simone Majocchi), who contributed the MQTT work and opened it -// for exactly this. It ships so that two panels can mirror each other, or a -// panel can join a home setup, without first standing up a server. -// -// These are PUBLISHED DEFAULTS, not secrets, and the login below is scoped -// to match: it can read and write the `patternflow` topic and nothing else -// on that server. That is what makes shipping it sound rather than reckless -// — the account cannot be used to reach anything private, so publishing it -// costs its owner a topic, not a broker. -// -// Stated plainly because it is in the repo and readable in every .bin we -// release. A credential that ships to everyone is public from the first -// download; writing it here rather than hiding it in the gitignored secrets -// file only means the people reading the source can see what their board is -// configured to talk to. The release credential scan treats anything in this -// file as public for the same reason. -// -// Terms confirmed by @SimonePDA, 2026-08-12: "the MQTT broker data can be -// currently shared with other users as the broker is secured and allows just -// the patternflow topic to be read/written". -// -// It still dials nothing on its own. The role (Off / Publisher / -// Subscriber) lives in NVS and starts at Off, so shipping a broker arms the -// option rather than the radio — a board that is never told to publish -// never connects. -// -// Running your own broker, or want off this one entirely? Override any of -// these in patternflow_secrets.h; that file is included first and wins. +// Empty (the default) = no broker configured; the role picker says so and +// nothing is dialled. Set it in patternflow_secrets.h. #ifndef PF_MQTT_HOST -#define PF_MQTT_HOST "Simonehome.xyz" +#define PF_MQTT_HOST "" #endif #ifndef PF_MQTT_PORT #define PF_MQTT_PORT 1883 #endif // Empty user = connect anonymously (brokers on a trusted LAN often allow it). #ifndef PF_MQTT_USER -#define PF_MQTT_USER "patternflow" +#define PF_MQTT_USER "" #endif #ifndef PF_MQTT_PASS -#define PF_MQTT_PASS "pattern_pw_01" +#define PF_MQTT_PASS "" #endif // Topic root: /knob/1..4 and /pattern. Give each panel its // own prefix when several share a broker and should NOT mirror each other. diff --git a/web/public/flash/bin/v3.4.1/boot_app0.bin b/web/public/flash/bin/v3.4.1/boot_app0.bin deleted file mode 100644 index 13562ca..0000000 Binary files a/web/public/flash/bin/v3.4.1/boot_app0.bin and /dev/null differ diff --git a/web/public/flash/bin/v3.4.1/patternflow.ino.bin b/web/public/flash/bin/v3.4.1/patternflow.ino.bin deleted file mode 100644 index 80142fc..0000000 Binary files a/web/public/flash/bin/v3.4.1/patternflow.ino.bin and /dev/null differ diff --git a/web/public/flash/bin/v3.4.1/patternflow.ino.bootloader.bin b/web/public/flash/bin/v3.4.1/patternflow.ino.bootloader.bin deleted file mode 100644 index 1b0e84c..0000000 Binary files a/web/public/flash/bin/v3.4.1/patternflow.ino.bootloader.bin and /dev/null differ diff --git a/web/public/flash/bin/v3.4.1/patternflow.ino.partitions.bin b/web/public/flash/bin/v3.4.1/patternflow.ino.partitions.bin deleted file mode 100644 index 223d9eb..0000000 Binary files a/web/public/flash/bin/v3.4.1/patternflow.ino.partitions.bin and /dev/null differ diff --git a/web/public/flash/manifest.json b/web/public/flash/manifest.json index 7b10531..eb55369 100644 --- a/web/public/flash/manifest.json +++ b/web/public/flash/manifest.json @@ -1,15 +1,15 @@ { "name": "Patternflow", - "version": "v3.4.1", + "version": "v3.4.0", "new_install_prompt_erase": true, "builds": [ { "chipFamily": "ESP32-S3", "parts": [ - { "path": "bin/v3.4.1/patternflow.ino.bootloader.bin", "offset": 0 }, - { "path": "bin/v3.4.1/patternflow.ino.partitions.bin", "offset": 32768 }, - { "path": "bin/v3.4.1/boot_app0.bin", "offset": 57344 }, - { "path": "bin/v3.4.1/patternflow.ino.bin", "offset": 65536 } + { "path": "bin/v3.4.0/patternflow.ino.bootloader.bin", "offset": 0 }, + { "path": "bin/v3.4.0/patternflow.ino.partitions.bin", "offset": 32768 }, + { "path": "bin/v3.4.0/boot_app0.bin", "offset": 57344 }, + { "path": "bin/v3.4.0/patternflow.ino.bin", "offset": 65536 } ] } ] diff --git a/web/src/components/community/FirmwareNotice.tsx b/web/src/components/community/FirmwareNotice.tsx index 8f38aaf..26c809d 100644 --- a/web/src/components/community/FirmwareNotice.tsx +++ b/web/src/components/community/FirmwareNotice.tsx @@ -61,11 +61,9 @@ export default function FirmwareNotice() { return (
Firmware - {/* Describes the current firmware rather than one release's diff, so a - patch bump does not advertise the previous version's changes as new. */} - {LATEST} is out — pattern packs install from a link, a set ships with the - board, and MQTT has a broker ready to use. + {LATEST} is out — patterns install from a link, and a set now ships with + the board. Update over Wi-Fi →