303 Commits
Author SHA1 Message Date
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 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 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
Michael A. CojocariandClaude Opus 5.5 07c92b2af8 feat(touch): Device shows the radio; info pages scroll by keypad, close with X (#596)
- The Device page lists the radio this build drives ("Radio: SX1262"),
  from RADIO_CLASS with the "Custom" prefix dropped. The Device card's
  second line shows it too on boards without the T-Deck keyboard, which
  is what tells the T-LoRa Pager's SX1262 and LR1121 builds apart.
- System Information and Memory detail close with a compact X instead
  of a "Close" button.
- Their text now scrolls from the keyboard: the X is the only focus
  stop, so Up/Down and the Pager's wheel found nothing to move to and
  the text was unreachable off-touch. A shared navInfoModalScroll()
  scrolls the body instead, from navMoveDir (trackball / d-pad / arrow
  keys) and the Pager encoder; the M9's own special case now uses it.
  Focus stays on the X at either edge.

"Radio:" translated in all 14 languages; i18n_builtin.h regenerated.

(cherry picked from commit 4b99579b4e58aa78d165204502c14263559c563e)

Translations are in the i18n PR.
(from e56c6ea)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016zE15egJdCZ9nRBZmg1YUq
2026-10-15 14:15:14 -04:00
Michael A. CojocariandClaude Opus 5.5 671213771b feat(touch): Device section at the top of Settings, About merged in (#596)
Settings opens with a Device card that names the hardware on a second
line ("LilyGo T-Deck · newer keyboard"), so a wrongly detected or set
variant is visible before anyone opens a page. It replaces About, which
moves from the bottom of the list; its content is unchanged and now sits
under a new hardware block:

- Model, and on the T-Deck the keyboard the protocol probe settled on,
  or "set manually" when the override is on (new
  tdeckKeyboardDetectedMode() getter).
- The T-Deck "Older keyboard protocol" switch, moved here from the
  Keyboard page, which keeps a one-line pointer to it. Flipping it
  updates the card and the page in place.

The update-available dot moves to the Device card, and the "Diagnostics
are on the About page" hint now points at Device.

New strings are translated in all 14 languages; the moved switch's label
and note were English-only in 12 and are now translated too. The old
About rows stay for firmware that still asks for them. i18n_builtin.h
regenerated. The site docs now say Settings > Device.

Not included: a T-Deck Pro touchscreen override (V1.0 and V1.1 are
separate builds, so it cannot change at runtime; the card shows which
build is installed) and an inaccurate-RTC flag (new clock behaviour,
better as its own ticket).

Fixes #596

(cherry picked from commit 726905ea607dea496f5e74e90e7b13068552007e)

Rebased onto beta_92's card-based Settings: the hardware readout and the switch are a Hardware card on the Device page. Its translations are in the i18n PR.
(from ddcff4e)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016zE15egJdCZ9nRBZmg1YUq
2026-10-15 14:15:14 -04:00
Kaj SchittecatandClaude Opus 5.5 b85eef6fec touch: beta_95, MeshCore 1.18 via meshcomod v1.18.0.1
About (Build) and the boot log name the meshcomod release the core is:
"on meshcomod v1.18.0.1". release.sh reads it from the pinned core's own
examples/companion_radio/MyMesh.h, keeps the in-tree defaults in step and checks
every staged image carries it. Language store v26 (this build's new texts),
release notes for beta_95.

Bench (T-Deck, 1.18): device and self info, 404-contact sync, the companion CLI
(ver, board, get name/radio/tx/freq, unknown command), 4 packets received and a
zero-hop advert sent in 90 s, correct device time.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 18:07:34 +02:00
Kaj SchittecatandClaude Opus 5.5 d3a9cf1453 touch: radio tools redesign, Music app, Store update badge, triage fixes
Spectrum: stat tiles (peak, floor, our channel, busy), plot and waterfall drawn
at screen size (the lv_chart and zoomed waterfall were the page's render cost),
dark-to-yellow waterfall, peak hold, our-channel marker, Band/Channel and
Live/1 min/10 min chips. RF Monitor 1.4 (tiles, filled chart, typed feed, packet
detail card; the old type table did not match MeshCore payload types) and
Airtime 1.6 (big figure, tiles, duty line, rx/tx split).

Lua SDK: ui.panel, bold labels and a size-24 figure font, colors.warn/border,
app.on_audio (fires with the screen off), read-only wada.sd.list and sd: audio on
the SD_MMC boards (P4, Tanmatsu, Wio L2), caps panel/audio_events/epaper, a
"music" icon and an "audio" Store requirement. button:set() no longer writes
label fields into the button object (heap corruption, every earlier firmware).
The SDK page's input table described events the firmware never sent.

Music 1.0 (Store app): plays MP3/WAV from the card's Music folder, shuffle,
repeat, keeps going through the list with the screen off. Verified on the
T-Display P4 end to end.

Store: the update check also fetches the app catalog and badges the Store tile
with the number of installed apps that have a newer version. Baked Lua apps are
raw-deflated and inflated by the S3 ROM (14.6 KB back on the V4); the V4 language
table keeps only texts of apps it can run.

Fixes: the SD-card notice no longer fires when the card mounts fine (#667); the
Control Center clock keeps time while open (#666); M9 keyboard brightness (#664);
the battery widget's number no longer sits on a ring too small for it (Discord);
M9 shortcuts doc follows #669's composer order. New texts in all 14 languages.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 17:07:11 +02:00
Kaj Schittecat ea4913f117 Merge PR #580 (TerryTel93): feat: add support for hashtag channels links with prefill and open fu… 2026-10-14 10:16:49 +02:00
Kaj Schittecat 806ecb0f71 Merge PR #655 (oumike): Add the Elecrow CrowPanel Advance 5.0 (#651) 2026-10-14 10:16:48 +02:00
Michael A. CojocariandCopilot 320e5cb93b CrowPanel 5: zero chat_back's shift in the chat header; docs say what was tested
chatHeaderApply now resets chat_back's translate_y, which updateGlobalStatusBar
skips in a chat, so a chat opened from a settings or app page no longer keeps
the half-bar upward shift. DEVICES.md and the site describe the hardware
testing, and the site counts 14 boards.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-13 09:01:59 -04:00
Michael A. Cojocari b0960cdcf1 Merge remote-tracking branch 'upstream/main' into crowpanel-50
# Conflicts:
#	scripts/build/gen-touch-fonts.sh
#	src/ui-touch/ui_font_18.c
#	src/ui-touch/ui_font_20.c
#	src/ui-touch/ui_font_24.c
2026-10-13 08:59:08 -04:00
Terry Carr 7e539c3373 Merge branch 'ALLFATHER-BV:main' into hash-channels-links 2026-10-13 11:38:23 +01:00
Kaj SchittecatandClaude Opus 5.5 a99a582bd4 i18n + notes: the track, SD and Reader strings; beta_94 notes for the three features
Short strings in all 14 languages; the long SD-fallback and track-stopped texts
as English placeholders until translated. v25 snapshot kept equal.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 11:49:29 +02:00
Kaj SchittecatandClaude Opus 5.5 459be25e34 beta_94 notes: this round; MECP gets the bell icon
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 11:20:12 +02:00
Kaj SchittecatandClaude Opus 5.5 6ff2cdedd8 i18n: rows for the Bluetooth failure messages
"The Bluetooth chip is not responding." and "Bluetooth could not start.
Restart the device and try again." in all 14 languages, v25 snapshot kept equal.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 11:20:12 +02:00
Kaj SchittecatandClaude Opus 5.5 821f9b2c5a apps: a Store app can ship its own files
An app's manifest can list files beside its code as one quoted string,
"files":"beep.wav,track.mp3" (the manifest reader takes strings only). The
Store installs each into /apps/<id>.d/, the folder wada.fs and
wada.audio.play("beep.wav") already read, so an app can carry its sounds. On
the T-Display P4, whose Lua SD API is off, that was the only way to get a sound
there (#lua-app-dev). Files stream to storage through a 4 KB internal buffer
(SD writes from PSRAM come back short), the server must send a length, a
short read deletes the partial file and fails the install. Up to 8 files of
4 MB, names as wada.audio's. No app uses it yet, so existing installs are
unchanged. SDK page documents it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 11:20:12 +02:00
Kaj SchittecatandClaude Opus 5.5 0394fefb22 apps: MECP 1.0, write and read Mesh Emergency Communication Protocol messages
Asked for on Discord. MECP (github.com/xiang-dev-1/MECP) codes an emergency
or everyday message as MECP/<severity>/<codes> [extras], so every reader with
a code table sees it in their own language. Compose: severity, codes from the
12 categories, head count and GPS position, a preview of the exact text, then
a channel post (MAYDAY asks first). Read: MECP lines heard while the app is
open are listed in words, a MAYDAY pops a toast, and Decode takes typed text.
English code table from MECP's languages/en.json (CC BY 4.0, credited); the
protocol is CC0. Needs sdk_ext; seed false, so not in the V4 image.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 10:56:36 +02:00
Kaj SchittecatandClaude Opus 5.5 a7a286b4e7 beta_94 prep: release notes, guide entries, language store v25
Notes for beta_94; the guide mentions the map's Favorites only and the
Fahrenheit option; the 14 languages move to v25 with their snapshot
(deploy/apps/lang/25/), for deploy-apps.sh at the slice.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 09:58:49 +02:00
Kaj SchittecatandClaude Opus 5.5 6c6fb32d8d i18n: rows for the beta_94 strings
Temperature in Fahrenheit, Up to 15 characters and Favorites only in all 14
languages; the full-Home toast as an English placeholder like the other Home
widget strings. The V4 keeps its pinned beta_92 table.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 09:24:59 +02:00
CyrioandClaude Opus 5.5 6ee9424ece i18n: wording nits from review (nl, de, hu)
jcyrio's follow-up to #632 (ea2315e), pushed after the merge so it never
reached main. Only the .lang rows; i18n_builtin.h is generated and the V4
builds from its pinned copy.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 09:18:50 +02:00
Kaj Schittecat 133df4ca7f Merge PR #635 (Confituurke): feat(ui): pick your advert position on the map 2026-10-13 09:18:20 +02:00
Kaj Schittecat 01182d1be1 Merge PR #624 (jcyrio): Pager: Fn+V pastes the clipboard (no touch path to the edit menu) 2026-10-13 09:18:18 +02:00
Kaj Schittecat 4e73bcc34a Merge PR #645 (oumike): T-Deck Pro / Max: Normal, Large and Huge text sizes, as on the T-Deck (#639) 2026-10-13 09:18:17 +02:00
Kaj Schittecat 449b8abb67 Merge PR #649 (oumike): Contacts: show the chat icon, picked or the first emoji in the name (#646) 2026-10-13 09:18:14 +02:00
Terry Carr 9c8ac06d30 fix: remove redundant translations for "Select a link or location" in multiple language files 2026-10-11 21:48:15 +01:00
Michael A. CojocariandCopilot 3ce6b065e4 Add Elecrow CrowPanel Advance 5.0 build target
New env crowpanel_50_companion_radio_touch for the 800x480 ST7262 RGB panel,
GT911 touch and an SX1262 in the wireless slot. Board quirks follow Camillia-MT:
14 MHz pixel clock, internal-RAM draw band, PCA9557 (V1.0) / MCU (V1.1+)
backlight controller detection with GT911 reset at 0x5D or 0x14, NSS on GPIO8
(V1.2+), no SD/GPS/battery. Large-screen layouts and UI-size fonts; browser
file transfer to the internal tiles partition. Added to the upload helper,
release script, flasher manifests, site, DEVICES.md, README and NOTICE.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-11 15:07:32 -04:00
Michael A. CojocariandCopilot c05153ef85 web app: add Reply to the channel message long-press sheet
Long-pressing someone else's message in a channel chat in the remote web
app now offers Reply (above Copy and Info). It prefills the composer with
the device's mention syntax '@[sender] ', keeps any draft, clamps to the
160-char limit and focuses the input. DMs and our own messages are
unchanged.

Fixes #642

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-11 13:46:37 -04:00
Michael A. CojocariandCopilot b0a6f59ea3 Contacts: show the chat icon, picked or the first emoji in the name (#646)
The Contacts list now gives each contact the same icon as its chat: the
chat icon picked for it (keyed on the advertised name), else the first
emoji in its shown name, as #640 does for the chat list. Picking or
resetting a chat icon marks the Contacts list for a rebuild.

Fixes #646

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-11 13:00:53 -04:00
Terry Carr 8cc4a5aacf Merge branch 'ALLFATHER-BV:main' into hash-channels-links 2026-10-11 12:05:52 +01:00