## Offband MeshCore 1.8.0 A channels release. Message history now belongs to the channel itself, not to the slot it happens to occupy on your radio, and the app no longer keeps history out of sight where it could reappear later. Every channel write now waits for the radio to confirm it, adds can't overwrite another channel, and a radio whose channel storage was wiped can be put back from the app. Alongside that: control of your radio's own channel sounds, display, status LED and Bluetooth PIN, a factory reset, and a macOS download. ### Now on iPhone Offband MeshCore is on the **App Store**: https://apps.apple.com/us/app/offband-meshcore/id6829124741. It needs iOS 16.4 or newer. The App Store has 1.7.0 today. 1.8.0 goes up once Apple has reviewed it. ### Which radios get what - **Any MeshCore companion radio** the app already supported gets the channel changes, the Bluetooth PIN setting, and Factory Reset. - **Offband firmware 1.7.0 or newer** is needed for Radio sound per channel, the Display and LED settings, and display rotation. On other firmware those controls stay hidden. ### Please read before updating **Hidden history is cleared.** Earlier versions could keep a channel's messages out of sight after the channel left your radio, and bring them back if the same channel was added again. 1.8.0 stops doing that. The first time it fully syncs with a radio, it deletes the stored history of any channel that radio no longer holds. Messages for the channels on your radio are not touched. It only does this after a sync in which the radio answered for every slot. If any slot was unanswered or erased, or the radio reported no channels at all, nothing is deleted. If a reflash wipes a radio's channel storage outright, the app recognizes the erased slots, keeps the history, and offers **Restore to radio** instead (#1128, #1060). **Slot 0 is kept for Public on every radio.** The app never puts any other channel in slot 0, which matches Offband firmware 1.7.0. On stock or older firmware, that means one slot goes unused if you don't have Public. A channel that is already in slot 0 is left where it is (#1117). **New text is in English only.** The 65 new messages and labels in this release are English in every language for now. Translations will follow. ### Channels you can trust - **History follows the channel.** Messages, unread counts and notification settings are tied to the channel's key. A channel that moves to another slot keeps them, and the channel that takes its old slot doesn't inherit them. When a sync finds a different channel in a slot, the app tells you in a notice you can dismiss (#1063, #1064). - **The app confirms your channel list before using it.** Channel messages that arrive while the list is still being confirmed are held and filed once it is, so they can't land in the wrong channel. A slot the radio never answers for is shown as unknown, with a **Retry sync** banner. It never borrows the previous list, and it doesn't send notifications. Sending to a channel the app hasn't confirmed on this connection is refused with a message saying why. An incomplete sync never overwrites the last fully confirmed list, and a sync that fails while you're connected retries by itself (#1062). - **Every channel write waits for the radio.** Adding, editing and deleting a channel now wait for the radio's answer. Success shows only after the radio confirms. If the radio refuses or doesn't answer within 5 seconds, a message stays on screen saying what happened, and the channel's history is kept (#1026). - **Adds can't overwrite another channel.** The slot is chosen when you press Add, not when the dialog opened. Adding is refused while a sync is running, or when the radio is full, instead of silently writing over slot 0. This covers the channels screen, QR shares, joining a community and config import (#1021, #1022, #1023). A community join shows its green "joined" message only when the channel was actually written. A config import started during a sync imports nothing and lists each channel as skipped. - **Changing a channel's key asks first.** Renaming a hashtag channel or giving a private channel a new key asks whether to **keep** its message history under the new key or **delete** it. Keep also carries the channel's phone notification setting. A rename that keeps the same key asks nothing. If the radio takes the new key but the history can't be moved, a message says so and the history is kept. If the radio removes the old channel but refuses the new one, a message says the slot is now empty and to add the channel again (#1128, #1025). - **Public stays Public.** It goes in slot 0. It can't be deleted, and trying says why. Its key can't be edited, and while Public is on the radio no other channel can be given its key. Typing "public" as a hashtag channel, in any case and with or without the #, adds the real Public channel instead of a lookalike (#1117, #1029). - **Hashtag channels in Edit Channel.** The key is shown read-only, with a copy button, and is recomputed as you rename. A name that stops being a hashtag, or starts with "##", is refused. For a community hashtag channel, the name and key are both read-only (#1103). - **Edit Channel refuses a stale save.** If a sync replaced the channel in that slot while the dialog was open, Save is refused with a message instead of overwriting it (#1103). - **Restore to radio.** When a radio comes back with its channel storage erased, a banner offers to write your channels back. It lists only the channels the radio is missing. Public goes to slot 0, and every other channel goes to its old slot if that's free, or else the lowest free one. A channel already on the radio is never overwritten. Afterwards it reports how many channels the radio confirmed, and names any it didn't (#1060, #1117). - Channels that showed up as rows of replacement characters (�) after a radio lost its channel storage are no longer adopted, and any an earlier version saved are dropped (#1060). ### Notifications - **Radio sound per channel**: choose whether the radio itself beeps for all messages, mentions only, or never, or leave it to the radio's own setting. This is separate from your phone's notifications, and the existing control is now labeled **Phone notifications** so the two can't be confused. The Radio sound row shows what the channel will actually do: "Follows the radio" when it's left to the radio, and "Silent" when the radio's own setting is None (#1068). - Fixed: a channel you had set to None on the radio could start sounding again after it moved to another slot. The setting now follows the channel (#1060). ### Your radio's settings - **Display and LED** under Node Settings: display mode, status LED, and display rotation for a screen mounted upside down (#523). The display and LED controls are shown separately, each only when the radio says it can change it (#1132). See Known issues for radios on firmware 1.7.0. - **BLE pairing PIN** in the device Actions: set a 6-digit PIN the radio asks for when a phone or PC pairs, or reset it to the firmware default. It's shown in plain text, because any app connected to the radio can read it anyway. Devices already paired may need to forget the radio and pair again (#1100). - **Factory Reset**, in Settings, with a red confirm like Reboot. It erases the radio's identity, contacts, channels and settings, and can't be undone. A box, on by default, also deletes that radio's data stored in the app. The radio drops the connection before it erases, so the app can't confirm the reset happened. With the box ticked, the app deletes its data as soon as the reset is sent. Over Bluetooth, remove the radio's old pairing from your phone or PC before reconnecting, because the reset erases it (#1057, #1118). - The app now asks an Offband radio what it supports instead of inferring it from a version number (#1094, #1065). Fixed along with it: **blocks stored on the radio**, the radio's capture log in **Serial capture**, **CoreScope observer counts** and **observer settings** could be hidden on Offband firmware that supports them, because the app was checking a version number. Settings added in 1.7.0 for Offband radios, such as GPS power save and custom tunes, appear once the radio runs Offband firmware 1.7.0. ### Everything else - **macOS:** a desktop build is now part of each release. It's signed with an Apple Developer ID and notarized by Apple, so it opens like any downloaded app. It's added to this page once Apple accepts it, which can be a while after the other downloads appear. If Apple doesn't accept it, the release goes out without a macOS download rather than with an unchecked one. This is its first release, and it hasn't had a full test pass yet (#1108, #1109). - **Share logs** and **About** are reachable from the connect screen with no radio connected, through a new settings icon. A failed log export now shows a message that stays until you dismiss it (#693). - If a Bluetooth scan can't start, the app says why and keeps the message on screen. On Android 11 and older, that usually means Location is turned off (#1033). - Map tile requests now identify the app as Offband MeshCore, as OpenStreetMap's tile policy requires, and every map shows the OpenStreetMap credit (#1111). - Long menus scroll, so items at the bottom (such as a room server's Delete Contact) can be reached, and a link right beside an @mention can be tapped (#1074, #1075). - The app is spelled **Offband MeshCore** everywhere: launcher, window title, notifications and web. On Windows your data folder keeps its old name, so nothing moves (#1050). - **iOS:** the Google Play link, Donate and the Experimental section are hidden, channels get a back arrow and the edge swipe works, and tapping or dragging the messages dismisses the keyboard (#1048, #1051, #1052). - After you've used the app for a while (the third launch, at least 7 days after the first), it asks once whether you'd like to support its development. **Not now** puts it off for 30 days, **Sponsor** opens the page and puts it off for 90, and **Never Show Again** means exactly that. It isn't shown on iOS. You can always find it under About in Settings (#1129). ### For troubleshooting - The app log now records every channel notification decision and every save of a notification setting, and each channel sync records what it checked before clearing any history, or why it skipped the check (#1122, #1128). ### Known issues - **Phone notifications set to Off for a channel can still notify.** Under investigation (#1121). - **Factory reset from one phone leaves that radio's old data on your other phones** and PCs. Only the phone that sent the reset deletes its copy (#1123). - **On a radio with a screen but no switchable LED** (the SenseCAP T1000-E, the QCC badge, the Heltec T096) running Offband firmware 1.7.0, the Status LED switch still appears and the radio turns the change down. Firmware 1.7.0 doesn't report the display and LED separately yet. A later firmware release does, and the app then hides that switch (#1132). - **A Display or LED change can be undone** by the radio's older reading arriving just after it (#1124). - **Adding a contact when the radio's contact table is full shows it as added**, and direct messages to it fail silently after 8 seconds (#1028). - **On a SenseCAP T1000-E, Position Reporting Interval says "Location updated"** even though the radio refused the value (#1134).