332 Commits
Author SHA1 Message Date
Kaj SchittecatandClaude Opus 5.5 08c5c80311 touch: beta_99 - release notes, language store v29
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 18:13:29 +02:00
Kaj SchittecatandClaude Opus 5.5 277ccd106e web: merge main (P4 Wi-Fi off after crashes with it on)
No conflicts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 15:07:03 +02:00
Kaj SchittecatandClaude Opus 5.5 3aa49443bc p4: switch Wi-Fi off after crashes with it on (old C6 firmware)
A CrowPanel 10.1 with a C6 on esp-hosted 2.3.0 (host 2.12) ran fine for a day,
then crashed or hung at every boot once a network was saved, since Wi-Fi then
starts on every boot; Wi-Fi scans and BLE never worked on it either. Now that a
crash restarts the device instead of halting, it would loop.

WifiCrashGuard keeps a marker in RTC no-init memory while Wi-Fi runs. A panic or
watchdog reset within 60 s of starting Wi-Fi, or a second one with Wi-Fi on
within 30 minutes, switches Wi-Fi off in the settings and the next boot says so.
With Wi-Fi and BLE off the C6 is not started at all. T-Display P4 and CrowPanel
P4 10.1.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 14:46:15 +02:00
Kaj SchittecatandClaude Opus 5.5 6f8dc88008 web: merge main (trackball off switch, P4 keyboard light)
No conflicts; i18n_builtin.h and lua_builtin.h regenerate unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 14:03:50 +02:00
Kaj SchittecatandClaude Opus 5.5 7a7f4b3458 lang: rows for the trackball switch and the P4 keyboard light
Nine new keys in every .lang file: the "Use the trackball" switch and its
note, the Trackball on/off toasts, "press Enter to unlock" for the lock
screen and the lock-on-screen-off note, the power-off toast that points
at the reset button, and the P4 keyboard-light row ("Low" and its F11
note). Translated where the existing rows give the wording; pl, and "Low"
(matching the untranslated "Medium"), get English placeholders.
i18n_builtin.h regenerated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 13:43:55 +02:00
Kaj SchittecatandClaude Opus 5.5 b13e29534d web: merge main (16 community PRs: orientation, USB Files on every native-USB S3, contact sort, Store apps, translations, ...)
No textual conflicts. Checked by hand: device_caps.h keeps the WADA_WEB
block (CAP_USB_FILES 0 there) under main's new native-USB CAP_USB_FILES
gate; apps.json keeps main's new and bumped apps (blackjack 1.2.2,
protreck 1.2, tripodometer 1.1, spaceinvaders) and web-build's
"radio": "own" on RF Monitor, Airtime and Wardrive; lua_builtin.h
regenerates unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 13:35:46 +02:00
Kaj SchittecatandClaude Opus 5.5 0282c1266f lang: translate the four Orientation choices from #700 / #702
Portrait, Portrait 180, Landscape and Landscape 180 are new TR() keys with
no row in any .lang file, so audit-lang listed them as missing in every
language. Each language reuses the portrait / landscape word its file
already has ("Portrait set ...", "Landscape (desktop)"); pl gets the
English placeholders. i18n_builtin.h regenerated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 12:44:57 +02:00
Kaj SchittecatandClaude Opus 5.5 ecbe1ebe22 i18n: regenerate the built-in table after the #634 + #720 merges; pl placeholders
Both PRs appended rows to the same .lang files ("Fewest hops", "module
attached", "not attached"); the merge keeps every row and
i18n_builtin.h is regenerated from the merged files with
gen-lang-builtin.py rather than hand-merged. pl.lang gains the three keys as
English placeholders, like the rest of that file.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 12:44:08 +02:00
Kaj Schittecat 7d0bf8b975 Merge PR #607 (samuelcoustet): Trip Odometer 1.1
Harness: #648 and #607 each declared the map mock's map_obj/map_centers
locals; the second declaration shadowed the first, so reset_world() and the
scenarios after it would never see the map the mock created. One declaration
is kept. tripodometer, protreck and gpscompass harness runs: ALL OK.
2026-10-21 12:41:49 +02:00
Kaj Schittecat 5ef8617f7d Merge PR #648 (samuelcoustet): ProTreck 1.2
Catalog: the UTF-8 BOM the PR put in front of apps.json is dropped (json.load
and other strict readers refuse it), and ProTreck keeps "seed": false, which
the PR had removed: without it gen-lua-builtin.py would bake ProTreck into
every firmware image instead of serving it from the Store.
2026-10-21 12:40:56 +02:00
Kaj Schittecat a4a6472c64 Merge PR #707 (Jack Cortines): Space Invaders app
Catalog: the comma the PR left out between the Blackjack and Space Invaders
entries is restored, so apps.json is valid JSON again.
2026-10-21 12:40:03 +02:00
Kaj Schittecat bd14df9192 Merge PR #705 (halflive-743): Blackjack 1.2.2 2026-10-21 12:39:52 +02:00
Kaj Schittecat 36875ce692 Merge PR #720 (Michael A. Cojocari): "Fewest hops" sort for Contacts and Discovered (#718)
# Conflicts:
#	deploy/apps/lang/bg.lang
#	deploy/apps/lang/cs.lang
#	deploy/apps/lang/de.lang
#	deploy/apps/lang/el.lang
#	deploy/apps/lang/es.lang
#	deploy/apps/lang/fr.lang
#	deploy/apps/lang/hu.lang
#	deploy/apps/lang/it.lang
#	deploy/apps/lang/nl.lang
#	deploy/apps/lang/pt-br.lang
#	deploy/apps/lang/ro.lang
#	deploy/apps/lang/ru.lang
#	deploy/apps/lang/sr.lang
#	deploy/apps/lang/uk.lang
2026-10-21 12:39:47 +02:00
Kaj Schittecat 61e1eb09da Merge PR #634 (Michael A. Cojocari): Mesh Deck keyboard module detection, chat header GPS glyph, message list start 2026-10-21 12:38:55 +02:00
Kaj Schittecat 7a5b5e3e9a Merge PR #704 (Ender436): touch: fix Lua app rendering on e-paper 2026-10-21 12:38:44 +02:00
Kaj SchittecatandClaude Opus 5.5 115158f596 lang: pl.lang, every string as an English placeholder for the Polish translation
Not in langs.json yet, so the Store does not offer it and the V4's built-in
table is unchanged; it goes into the catalog once translated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 12:34:42 +02:00
Kaj SchittecatandClaude Opus 5.5 e7f67bd906 touch: USB Files on every native-USB ESP32-S3 board
The T-Deck and Heltec V4 proved both Arduino USB serial drivers, so the gate is
now ARDUINO_USB_CDC_ON_BOOT instead of two board names: T-LoRa Pager, Heltec
V4-R8, RAK Tap V2 and Wio Tracker L2 gain it. Still out: boards behind a
USB-serial bridge (M9, CrowPanel, SenseCAP, Attaky), the P4 builds and the
T-Deck Pro family. files.wadamesh.com says which devices work.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 10:45:08 +02:00
Michael A. CojocariandCopilot 3dde94c2c4 touch: "Fewest hops" sort for Contacts and Discovered (#718)
Both lists already show the hop count on each row; they can now be sorted
by it so the nearest repeaters come first. Combined with the Repeaters
filter this shows which repeaters are reachable directly.

Rows with no known path sink to the end in either direction, like the "?"
rows in the time-based sorts. Hops use pathHops() so 2/3-byte path hashes
don't read as 65+ hops. Language rows added for all 14 languages.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-20 14:17:29 -04:00
Jack Cortines 55d4cb1059 Add Space Invaders game entry to apps.json
Signed-off-by: Jack Cortines
326212311+JackCortines@users.noreply.github.com
2026-10-19 15:13:59 -04:00
Jack Cortines bdd4ddead9 Add JSON file for Space Invaders app
Signed-off-by: Jack Cortines  326212311+JackCortines@users.noreply.github.com
2026-10-19 15:10:05 -04:00
Jack Cortines d8deb9e75e Add Space Invaders app
Signed-off-by: Jack Cortines  326212311+JackCortines@users.noreply.github.com
2026-10-19 15:05:35 -04:00
Michael A. CojocariandClaude Opus 5.5 c3d830204b Mesh Deck: the Device page says whether the keyboard module is attached
The Hardware card adds "Keyboard: module attached / not attached" under
the model and radio. The module can be attached or removed at any time,
so the line refreshes when it is.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016yt7fNCKmafm9LtRjyuUmS
2026-10-19 10:25:43 -04:00
halflive-743 77c6f7ec8b feat(apps): update Blackjack to v1.2.2 2026-10-18 21:43:41 -06:00
Ender436 4d51f54bd8 touch: fix Lua app rendering on e-paper
Lua apps use the night palette, but the T-Deck Pro/Max force the light
e-paper theme. On a 1-bit panel the app's black ground stayed black and
mid-grey ink thresholded to black, leaving most apps unreadable.

Invert colors once at the Lua host API boundary on HAS_TDECK_PRO builds,
so dark app grounds become paper-white and light app ink becomes black
without touching app sources. Use explicit white/black chart chrome,
invert list/scroll/panel colors, and keep wada.ui.colors as the logical
night palette to avoid double inversion.

The #else path is an identity mapping, so LCD/AMOLED builds are unchanged.

Also document the logical palette behavior in LUA_APPS.md and the SDK page.

Tested with:
- pio run -e LilyGo_TDeck_Max_companion_radio_touch
- pio run -e heltec_v4_tft_companion_radio_usb_tcp_touch
- flashed and checked ProTreck/Music on a T-Deck Max

Signed-off-by: Ender436 <68835715+Ender436@users.noreply.github.com>
2026-10-18 20:01:28 -06:00
Kaj SchittecatandClaude Opus 5.5 1eac81b81f touch: beta_98 - release notes, language store v28
Repeater and room server admin, SenseCAP Indicator D1L, CrowPanel 10.1 touch,
OTA watchdog fix (#689), backup names (#688), P4 C6 recovery (#685), the web
client, sync cursor reuse.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 19:50:23 +02:00
Kaj SchittecatandClaude Opus 5.5 5350db0110 deploy+site: the Wi-Fi copy is wifi.app.wadamesh.com
Two levels deep: proxied (origin IP stays hidden) but outside Universal
SSL, so https fails and Chrome stays on http.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 17:22:45 +02:00
Kaj SchittecatandClaude Opus 5.5 8a24c42969 site: drop the unverified Insecure-content tip
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 16:59:38 +02:00
Kaj SchittecatandClaude Opus 5.5 7d8a094ecf site: the Wi-Fi version lives on wifi.wadamesh.com
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 16:59:29 +02:00
Kaj SchittecatandClaude Opus 5.5 6657014035 deploy: serve the web client's Wi-Fi copy on wifi.wadamesh.com
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 16:59:18 +02:00
Kaj SchittecatandClaude Opus 5.5 817004c861 web: merge main (repeater admin); the stand-in serves the admin app
Merges main 8954fe06. The drift alarm caught the repeater admin app's new
members: sendStatusPingForUI, sendTelemetryRequestForUI,
uiSendBinaryRequest (-> onBinaryReply), UiReqKind::Binary and
uiLastLoginInfo/UiLoginInfo. Over a node: CMD_SEND_BINARY_REQ and its tagged
PUSH_BINARY_RESPONSE, the ACL and firmware level of a modern LOGIN_OK. The
demo's repeater and room log in (any password = admin, empty = guest) and
answer status, neighbours, the access list, owner info and CLI lines; the
mock node answers neighbours and owner info.

Also from main: nvs_open/nvs_close in the compat (SdNvsPrefs asks first),
and the tiles partition now has to exist before the UI mounts it: the compat
partition table reports "tiles" (the web board's LittleFS volume). Font
guards keep WADA_WEB next to main's new SenseCAP Indicator.

No-threads bundle: a UI-thread wait called from the page (not the main
loop) no longer sleeps (it hung the flush after a Store install).

A wheel turn counts as user activity (no screensaver mid-scroll).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 16:42:56 +02:00
Kaj Schittecat 8954fe06df Merge repeater-admin: repeater and room server admin app
# Conflicts:
#	deploy/apps/lang/bg.lang
#	deploy/apps/lang/cs.lang
#	deploy/apps/lang/de.lang
#	deploy/apps/lang/el.lang
#	deploy/apps/lang/es.lang
#	deploy/apps/lang/fr.lang
#	deploy/apps/lang/hu.lang
#	deploy/apps/lang/it.lang
#	deploy/apps/lang/nl.lang
#	deploy/apps/lang/pt-br.lang
#	deploy/apps/lang/ro.lang
#	deploy/apps/lang/ru.lang
#	deploy/apps/lang/sr.lang
#	deploy/apps/lang/uk.lang
#	src/ui-touch/i18n_builtin.h
2026-10-18 15:34:38 +02:00
Kaj SchittecatandClaude Opus 5.5 2a4e48bc50 touch: repeater and room server admin app
The contact sheet's Admin button (repeaters, and now room servers) opens a
full admin app instead of a password box and a raw console. Login as admin
or guest (remembered password logs in at once), then an overview with the
node's status (GET_STATUS), firmware and owner info (GET_OWNER_INFO),
neighbours (GET_NEIGHBOURS, paged, newest or strongest), telemetry, the
access list with role changes (GET_ACCESS_LIST + setperm), settings pages
(identity and location, radio, repeating and limits, adverts, passwords and
access, regions) and actions (adverts, clock sync, discover neighbours,
reset counters, reboot, firmware update). The old CLI console stays as
Advanced > Console.

Every CLI line carries the "wX|" correlation prefix MeshCore echoes back, so
a reply always lands on the field that asked; one request is in flight at a
time, reads retry once, writes never, and a write is followed by a re-read.
Radio changes go through a confirm that shows old and new values, with a
10 minute tempradio trial before a saved change, and a reboot offer after.

MyMesh gains uiSendBinaryRequest (UiReqKind::Binary -> onBinaryReply) and
uiLastLoginInfo (the LOGIN_OK ACL byte and firmware level). The repeater
ping toast read uptime from the airtime field (offset 16, not 20); fixed.
Parsing lives in RepeaterAdminProto.h with a host test. Translations for all
14 languages. -DDOC_CAPTURE -DDOC_AUDIT_FOCUS -DDOC_ADMIN_AUDIT captures the
app against a node in range as a guest.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 15:17:08 +02:00
Kaj Schittecat e566823d0f Merge p4-ui-bits: P4 always-external antenna, slim landscape composer, Glass tiles switch 2026-10-18 15:12:14 +02:00
Kaj SchittecatandClaude Opus 5.5 d2ec668535 site: the web client (app.wadamesh.com), its page, and a third hero button
- webclient.html: what the web client is, how to connect (USB, Bluetooth,
  Wi-Fi), where it works (desktop, Android, iPhone), the https / http split
  for Wi-Fi, where data lives, what only a device can do, and a FAQ, with
  screenshots of the real client.
- index: "Use the web client" next to Install and Join the community, a Web
  client button on the side rail and a resource card; sitemap.
- deploy/nginx/app.wadamesh.com.conf: the vhost (COOP/COEP/CORP, versioned
  bundles cached, same-origin /tiles/ and /fw/apps/ handed to the tiles and
  firmware vhosts over loopback). scripts/deploy-webclient.sh publishes
  web/dist (and web/dist-nothreads to nt/).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 15:09:22 +02:00
Kaj SchittecatandClaude Opus 5.5 f71a42ef0e touch: P4 always-external antenna, slim landscape composer, Glass tiles switch
- T-Display P4 (CAP_ANTENNA_SELECT): Radio settings "Always use the external
  antenna (MMCX)". Boot selects the external socket only with this opt-in,
  which asks first with a damage warning. Own NVS key ant_ext (never the
  reserved cfg byte p4_antenna), left out of the settings backup. Turning it
  off goes back to the on-board antenna at once. The control panel gets an
  Antenna tile (filled + "MMCX" on external); a tap asks for the external
  socket through the same warning, hold opens Radio settings.
- Large screens in landscape (P4 landscape, Tanmatsu, CrowPanel 5.0/10.1):
  the empty composer text box is one line tall and grows from there; the row
  stays as tall as its buttons and a shorter box sits centred on them. P4
  portrait two-row layout unchanged.
- Settings > Theme > Background: "Glass tiles" (default on). Off draws Home
  widgets, cards, the control panel and its tiles solid. Pending + Apply.
- 11 new strings translated in all 14 languages.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 15:06:00 +02:00
Kaj SchittecatandClaude Opus 5.5 17c3d6392f site: the P4 installer names the blue screen as the sign to pick Never connects
On a P4 whose C6 still runs the factory ESP-AT firmware the esp-hosted image
can stop on a teal/blue screen right after the logo (Discord), not only fail
to connect; both P4 cards' help text now names that symptom too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 14:51:03 +02:00
Kaj SchittecatandClaude Opus 5.5 66a0c30945 release: the SenseCAP Indicator D1L ships in betas and the web flasher
The #682 port is merged; add its env to release.sh, a flasher manifest, a
card under Seeed Studio on wadamesh.com (experimental, community port, no
device updates) and the README. The site card points at the beta feed, so
deploy the site after the next beta publishes. Board count 16.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 14:50:26 +02:00
Kaj SchittecatandClaude Opus 5.5 71f1829a2e web: the browser's location is the GPS, map tiles, polish
Location: the web board has CAP_GPS 1. web/platform/WebLocation.* is its
SensorManager + LocationProvider, fed by navigator.geolocation (page shell,
only while the UI's GPS is on, the prompt deferred to a tap) or WADA_GPS on
the host, so the GPS switch, status, map centring, distances and
wada.sys.gps (with speed/course) work unchanged. The position reaches a
connected node (CMD_SET_ADVERT_LATLON, displaced by the Location privacy
radius) only while the node's advert-location setting is "share"; the demo
moves its cast to the visitor's location.

Map tiles: wadaHttpRequest serves the firmware's default tile server only:
a synchronous emscripten_fetch from the tile_fetch pthread to the
same-origin tiles/ path (serve.py proxies it; nginx location for the site),
plain HTTP natively. WiFi reports connected while the browser is online.
Fixes the static-init order of the host VFS (the UI's own tiles LittleFS
copied an empty impl).

Polish: Lua apps that need the board's own radio carry "radio": "own" in the
catalog (baked under CAP_RADIO_TOOLS, greyed in the Store); mouse wheel and
trackpad scrolling; Settings > Wi-Fi / Bluetooth explain the page bar
(CAP_WIFI_SETUP / CAP_BT_SETUP); no Download mode (CAP_USB_FLASH); no
receiver settings on Settings > GPS (CAP_GPS_RECEIVER).

Tests: webtest checks the map centres on Playwright's Ghent location and
shows tiles; nodetest checks the location privacy rule against the mock node.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 14:25:13 +02:00
Kaj SchittecatandClaude Opus 5.5 18279edac9 release: the CrowPanel Advanced 10.1 (P4) ships in betas and the web flasher
- p4-release.sh builds and verifies the three revisions (V1.2, V1.1, V1.0)
  from crowpanel_p4_101/ in the same loop as the T-Display P4 images, with
  the same OTA-name and tag checks.
- Self-update is on (CAP_OTA 1): each revision updates from its own
  wadamesh-crowpanel-p4-101-v1x.bin, so a V1.0 never takes a V1.2 image.
- gen-flasher-meta writes a manifest per revision; wadamesh.com gets a
  CrowPanel Advanced 10.1 card with a V1.2 / V1.1 / V1.0 picker, and the
  standalone flasher one card per revision. Both point at the beta feed,
  so nothing shows until the next beta publishes the images.
- README, DEVICES.md and the site's board count (15).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 21:02:37 +02:00
Kaj SchittecatandClaude Opus 5.5 94baf4deac touch: beta_96 - release notes, language store v27, Blackjack on the App Store page
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 15:22:25 +02:00
Kaj Schittecat e43c06b09a Merge PR #681: Blackjack 1.0 in the Store 2026-10-17 15:17:16 +02:00
Kaj Schittecat d89185367d Merge PR #630: Touch UI design calls (P4 one-row bar, chat clock, Device page, Bluetooth at setup)
# Conflicts:
#	src/ui-touch/UITask.cpp
2026-10-17 15:17:16 +02:00
Kaj SchittecatandClaude Opus 5.5 9eda9b0f26 apps: Store lists up to 40 apps, canvases fit the big screens, button:bg
- The catalog parse stopped at 16 rows and the catalog has 16, so a 17th app
  (Blackjack, #681) was silently never listed; installed apps had the same
  cap. Both are 40 now, and the catalog buffer grows from 8 KB to 24 KB so
  the JSON is not cut off. PSRAM only.
- wada.ui.canvas raised a Lua error above 480 px, which killed apps that size
  a canvas from on_open(w, h) on the T-Display P4 (body ~575 tall), Tanmatsu
  and CrowPanel 5 (800 wide) (Discord). Sides are now clamped to the screen's
  long side instead.
- button:bg(fill [, border]) colours a button (or boxes a label), so apps no
  longer fake coloured buttons from panels that keys cannot focus (Discord).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 12:15:18 +02:00
Kaj SchittecatandClaude Opus 5.5 5198813f99 usb files: Lua apps can be dropped into the apps folder
/meshcomod/apps on the card and /apps internally now take top-level .lua and
.json files, so an app can be side-loaded without pulling the card (Discord).
Everything else there stays read-only: the folder itself, subfolders (<id>.d
data), app save files (.sav, .wgt), hidden names and 8.3 aliases. A change
from the page invalidates the cached app listing, so the drawer and the Store
pick the new app up the next time they open. Host tests cover the policy.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 11:54:47 +02:00
Kaj SchittecatandClaude Opus 5.5 2986354f3c site: Join the community (Discord) button next to Install
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 10:38:17 +02:00
Kaj SchittecatandClaude Opus 5.5 8109bbf43a site: App Store page listing every Store app, with the SDK and how to submit
apps.html is generated from deploy/apps/apps.json (the catalog the devices
read) plus the site-only write-ups in deploy/site/apps-info.json, by
scripts/build/gen-apps-page.py, which deploy-site.sh now runs on every
deploy. Linked from the home page (Apps button + resource card), the SDK
guide and the sitemap.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 09:17:59 +02:00
halflive-743 bc32153c69 apps: add Blackjack 1.0 to the Store catalog 2026-10-16 22:06:13 -06:00
Michael A. CojocariandCopilot 896c8e7030 Settings: the group is 'Display & lock', so 'Hardware' only names the Device page's card
docs.html follows: the group's name, Theme under it, and Run setup again
and Reboot on the Device page rather than General.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-15 14:15:25 -04:00
Michael A. CojocariandCopilot b9ff27de8c site: Settings > About is now Settings > Device
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-15 14:15:25 -04:00
Michael A. CojocariandCopilot e83c483a0f i18n: rows for the Settings > Device and keyboard protocol strings
Hardware, the setup wizard Bluetooth hint, Radio:/Keyboard: and the four
keyboard protocol states in all 14 languages, taken from #631 so they
ship with the code that uses them.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-15 14:15:25 -04:00