Compare commits
No files matched your search
@@ -14,10 +14,11 @@ USB) and the [GitHub releases](https://github.com/ALLFATHER-BV/wadamesh/releases
|
||||
| Heltec V4 + TFT | ESP32-S3, SX1262 | 2.4" 240x320 touch (CHSC6x) | Web flasher | Stable | Fully supported; Expansion Kit sensors, V4.3 high-gain RX toggle |
|
||||
| Tanmatsu | ESP32-P4 + ESP32-C6, SX1262 | 4" 800x480, 69-key keyboard (no touch) | Tanmatsu app store on the device (runs under the badge.team launcher, not web-flashable) | Store tracks the test channel | Fully supported; LoRa + Wi-Fi + Bluetooth simultaneously, standalone and companion in one |
|
||||
| Elecrow ThinkNode M9 | ESP32-S3, LR1110 | 2.4" 240x320 (no touch), I2C QWERTY + d-pad | Web flasher | Beta (new in beta_38) | Hardware-complete community port by ded (#138): GPS, microSD, buzzer, lock screen, d-pad navigation |
|
||||
| Elecrow CrowPanel Advance 3.5 | ESP32-S3, external SX1262 | 3.5" ILI9488 480x320 touch (GT911) | Web flasher (beta) | Beta, hardware validation pending | Requires an SX1262 module in the LoRa expansion slot; not for other CrowPanel models |
|
||||
| RAK WisMesh Tap V2 (RAK3312) | ESP32-S3, SX1262 | Touch display (LovyanGFX, 30+ fps) | Web flasher | Beta (new in beta_38) | Early community port by Ethac.chen (#136); core mesh, chat and map working |
|
||||
| LilyGo T-Lora Pager | ESP32-S3, LR1121 or SX1262 | 2.33" IPS LCD, 480x222 (no touch), QWERTY + rotary encoder | Web flasher (pick the build matching your radio) | Beta (new in beta_45) | Fully supported; keyboard-first navigation, microSD, map tile packs |
|
||||
| Heltec V4-R8 + Expansion Kit V2 | ESP32-S3 (8 MB octal PSRAM), SX1262 | 2.4" touch (CHSC6x) | Web flasher | Beta (new in beta_45) | As the V4 plus microSD and the Expansion Kit sensors; buzzer supported |
|
||||
| LilyGo T-Display P4 | ESP32-P4 + ESP32-C6, SX1262 | AMOLED or TFT-LCD, touch | Web flasher (AMOLED) or the .bin for the LCD SKU | Beta (new in beta_45) | Two screen SKUs; fuel-gauge battery reporting, full TX power |
|
||||
| LilyGo T-Display P4 | ESP32-P4 + ESP32-C6, SX1262 or LR2021 | AMOLED or TFT-LCD, touch | Web flasher | Beta (new in beta_45) | Four panel/radio builds; AMOLED + SX1262 hardware-tested, the other combinations need validation |
|
||||
| Attaky Mesh Series | ESP32-S3, SX1262 | Touch display + front D-pad | Web flasher | Beta (new in beta_47) | Community port by attakygit (#158/#169); detachable keyboard supported; the front D-pad + SELECT navigate the UI |
|
||||
|
||||
## Feature notes per board
|
||||
@@ -33,12 +34,14 @@ USB) and the [GitHub releases](https://github.com/ALLFATHER-BV/wadamesh/releases
|
||||
this needs [LilyGO keyboard-controller firmware with raw matrix mode](https://github.com/Xinyuan-LilyGO/T-Deck/tree/master/examples/Keyboard_ESP32C3)
|
||||
(June 2025 or newer). Older controller firmware keeps normal typing and
|
||||
reports the unavailable latch mode on Serial.
|
||||
- **T-Deck Pro**: dedicated `LilyGo_TDeck_Pro_companion_radio_touch` development
|
||||
target for the GDEQ031T10 e-paper model. It uses a monochrome shadow buffer,
|
||||
coalesced partial refreshes, CST328/CST3530 touch detection and the Pro-specific
|
||||
TCA8418 matrix. Keyboard events are drained during the panel BUSY interval so
|
||||
a refresh cannot overflow the controller FIFO. Hardware validation is pending;
|
||||
see [variants/lilygo_tdeck_pro/PORT.md](variants/lilygo_tdeck_pro/PORT.md).
|
||||
- **T-Deck Pro**: separate `LilyGo_TDeck_Pro_v1_0_companion_radio_touch` and
|
||||
`LilyGo_TDeck_Pro_v1_1_companion_radio_touch` targets for the incompatible PCB
|
||||
revisions. V1.0 has no frontlight and uses GPIO45 for touch reset; V1.1 uses
|
||||
GPIO45 for its frontlight and GPIO38 for touch reset. Flashing the V1.1 image
|
||||
onto V1.0 holds touch in reset. Both use the GDEQ031T10 e-paper panel,
|
||||
CST328/CST3530 touch detection, and the Pro-specific TCA8418 matrix. See
|
||||
[variants/lilygo_tdeck_pro/PORT.md](variants/lilygo_tdeck_pro/PORT.md) before
|
||||
choosing a target.
|
||||
- **T-Deck Max**: `LilyGo_TDeck_Max_companion_radio_touch`. The same e-paper,
|
||||
keyboard and radio as the Pro, whose display and touch drivers it reuses; the
|
||||
differences are an XL9555 expander in front of the peripheral power enables and
|
||||
@@ -79,12 +82,48 @@ USB) and the [GitHub releases](https://github.com/ALLFATHER-BV/wadamesh/releases
|
||||
validated at boot; if it reports lost integrity, the same optional saved-Wi-Fi
|
||||
cold-boot sync offered on T-Deck is available in Clock settings. New in beta_38;
|
||||
report anything that feels off.
|
||||
- **T-Display P4**: touch UI with the on-screen keyboard. The BOOT button wakes
|
||||
the screen (or lights the lock screen) and holding it for two seconds locks or
|
||||
unlocks, as the Wio Tracker L2's wake button does; "Lock when screen off" is
|
||||
under Settings, Lock screen. The optional clip-on
|
||||
keyboard expansion can be attached or removed while running and is picked up
|
||||
within a couple of seconds; while it is on, it types into the focused field
|
||||
and the on-screen keyboard stays down (tap the field again to bring it up).
|
||||
Arrows move the caret or the focus highlight, Esc goes back, F1-F5 open the
|
||||
tabs left to right, F11 steps the keyboard light through off, low, medium and
|
||||
high (the level is kept across reboots), Caps Lock lights its LEDs,
|
||||
and Shift, Sym and Alt apply to the next key. Alt+Backspace goes back.
|
||||
- **RAK WisMesh Tap V2**: newest port, touch-driven. The browser-flash path is
|
||||
fresh; if the flasher cannot open the serial port, put the board in download
|
||||
mode manually and retry, and please report it.
|
||||
- **Seeed Wio Tracker L2**: pre-release touch target under active bring-up. Builds are for
|
||||
development and hardware validation only; no public release artifact is
|
||||
promised until the port is verified.
|
||||
- **CrowPanel Advance 3.5**: `crowpanel_35_companion_radio_touch` is a
|
||||
16 MB flash / 8 MB OPI PSRAM build for the ILI9488/GT911 panel and an SX1262
|
||||
in the expansion slot. It starts upright in 480x320 landscape; Display
|
||||
settings can switch to 320x480 portrait, rotated 180 degrees. The selected
|
||||
orientation persists across reboots; landscape is only the default when no
|
||||
saved choice exists.
|
||||
It uses the same compact font and control sizing as Wio Tracker L2.
|
||||
Fit the radio before booting. GPIO0 is shared by BOOT and the radio's chip
|
||||
select, so BOOT is not configured as a wake/unlock input on stock wiring.
|
||||
Screen-off remains touch-wakeable; hard lock is disabled without a separate
|
||||
unlock button. See the
|
||||
[official schematic](https://github.com/Elecrow-RD/CrowPanel-Advance-HMI-ESP32-AI-Display/blob/master/3.5/schematic/ESP32%20Display%203.5%20inch%20V1.0.sch)
|
||||
and [reference radio pin map](https://github.com/meshtastic/firmware/blob/master/variants/esp32s3/elecrow_panel/variant.h).
|
||||
An optional external GPS can be connected to UART1 (CrowPanel RX GPIO18 /
|
||||
TX GPIO17, 9600 baud). Data
|
||||
can use a FAT32 microSD card for data, offline maps, File Manager and browser
|
||||
Transfer. The card uses software SPI (SCLK 5, MISO 4, MOSI 6, CS 7), leaving
|
||||
the display and radio SPI hosts untouched; missing or unreadable cards fall
|
||||
back to SPIFFS. The dedicated LittleFS partition remains the internal tile
|
||||
cache. Cards are never auto-formatted; format them on a computer. Serial
|
||||
uses the board's USB-to-UART bridge. Battery voltage monitoring is not
|
||||
supported. Display, touch, radio and SD still need validation on a physical
|
||||
CrowPanel. Like Wio Tracker L2, it is included in the all-target builds and local beta release
|
||||
scripts, not the two-board stable CI workflow. Select it in the upload
|
||||
helper with `scripts/build-upload-monitor.sh --crowpanel-35`.
|
||||
|
||||
## Requested boards
|
||||
|
||||
|
||||
@@ -91,5 +91,11 @@ driver, variants/tdisplay_p4/P4Audio.cpp)
|
||||
LovyanGFX (RAK WisMesh Tap V2 display backend)
|
||||
Copyright (c) lovyan03 — FreeBSD License — https://github.com/lovyan03/LovyanGFX
|
||||
|
||||
Camillia-MT (CrowPanel Advance 3.5 software-SPI microSD backend)
|
||||
Copyright (c) 2025-2026 Michael A. Cojocari and contributors
|
||||
GNU General Public License v3.0 or later
|
||||
Adapted from src/sd_soft_spi.cpp; integrated with WadaMesh's filesystem
|
||||
API and concurrent storage consumers.
|
||||
|
||||
This list is not exhaustive and is expanded as dependencies are vendored or
|
||||
added.
|
||||
@@ -8,7 +8,7 @@
|
||||
<p align="center"><b>A real touchscreen UI for your mesh radio.</b> · open source · GPL-3.0</p>
|
||||
|
||||
Touch-UI [MeshCore](https://github.com/meshcore-dev/MeshCore) companion-radio
|
||||
firmware for the **LilyGo T-Deck / T-Deck Plus**, **Heltec V4 + TFT** and eight other boards
|
||||
firmware for the **LilyGo T-Deck / T-Deck Plus**, **Heltec V4 + TFT** and other boards
|
||||
(ESP32-S3).
|
||||
|
||||
An LVGL touch UI — map, chat, contacts, channels, settings — split out of
|
||||
@@ -27,8 +27,9 @@ per-board status.
|
||||
- RAK WisMesh Tap V2 (RAK3312) — env `rak_tap_v2_companion_radio_touch` (beta)
|
||||
- LilyGo T-Lora Pager — envs `tlora_pager_lr1121_companion_radio_touch` / `tlora_pager_sx1262_companion_radio_touch` (beta) — [keyboard shortcuts](TLORA_PAGER_SHORTCUTS.md)
|
||||
- Heltec V4-R8 + Expansion Kit V2 — env `heltec_v4_r8_tft_companion_radio_usb_tcp_touch` (beta)
|
||||
- LilyGo T-Display P4 — built from `tdisplay_p4/` (ESP-IDF); AMOLED by default, `WADA_P4_LCD=1` for the TFT-LCD SKU (beta)
|
||||
- LilyGo T-Display P4 — built from `tdisplay_p4/` (ESP-IDF); AMOLED + SX1262 by default, with `WADA_P4_LCD=1` for TFT-LCD and `WADA_P4_LR2021=1` for LR2021 (beta)
|
||||
- Attaky Mesh Series — env `attaky_mesh_series_companion_radio_touch` (beta)
|
||||
- Elecrow CrowPanel Advance 3.5 — env `crowpanel_35_companion_radio_touch` (beta, hardware validation pending; requires an SX1262 in the expansion slot)
|
||||
|
||||
## Architecture
|
||||
|
||||
@@ -98,7 +99,8 @@ automatically:
|
||||
```bash
|
||||
pio run -e heltec_v4_tft_companion_radio_usb_tcp_touch # Heltec V4 TFT
|
||||
pio run -e LilyGo_TDeck_companion_radio_touch # LilyGo T-Deck
|
||||
# or just `pio run` to build both
|
||||
pio run -e crowpanel_35_companion_radio_touch # CrowPanel Advance 3.5
|
||||
# or just `pio run` to build the configured default environments
|
||||
```
|
||||
|
||||
Flash with the NVS-preserving 4-component chain (bootloader / partitions /
|
||||
|
||||
@@ -3,6 +3,17 @@
|
||||
These post-flash checks verify the setup-wizard keyboard fallback and CST3530
|
||||
touch fix on a LilyGo T-Deck Pro 4G.
|
||||
|
||||
## Choose the hardware revision
|
||||
|
||||
Flash `LilyGo_TDeck_Pro_v1_0_companion_radio_touch` on V1.0 hardware and
|
||||
`LilyGo_TDeck_Pro_v1_1_companion_radio_touch` on V1.1 hardware. Do not use the
|
||||
V1.1 image on V1.0: GPIO45 is touch reset on V1.0 but frontlight PWM on V1.1,
|
||||
so the wrong image can hold the touch controller in reset. V1.0 has no
|
||||
frontlight; V1.1 identifies a DRV2605 at I2C address `0x5A`.
|
||||
|
||||
Run the checks below separately on each available PCB revision and include the
|
||||
revision and firmware target in the report.
|
||||
|
||||
## Boot check
|
||||
|
||||
With a 115200-baud serial monitor attached, reboot the device and record this
|
||||
|
||||
@@ -0,0 +1,412 @@
|
||||
# T-Display P4 C6 firmware and Bluetooth plan
|
||||
|
||||
## Decision
|
||||
|
||||
Use Espressif esp-hosted as the normal WadaMesh backend for current T-Display P4
|
||||
V1 units, which ship C6 hosted firmware 2.12.3. Retain the existing ESP-AT
|
||||
backend only for older units carrying LilyGo's now-deprecated AT images.
|
||||
|
||||
Older AT units need a guided two-stage conversion because the P4 can reset the
|
||||
C6 but cannot press its documented physical BOOT control. Current hosted units
|
||||
need no C6 reflash. After any legacy conversion, C6 firmware updates should be
|
||||
delivered and verified by the P4 over SDIO so normal WadaMesh updates remain a
|
||||
one-device operation.
|
||||
|
||||
## Goals
|
||||
|
||||
- Expose the C6 Bluetooth LE radio to WadaMesh.
|
||||
- Run the existing MeshCore Bluetooth companion transport without an AT-to-BLE
|
||||
protocol translation layer.
|
||||
- Preserve P4 Wi-Fi scanning, station mode, TCP clients, the companion TCP
|
||||
server, HTTP, SNTP, and simultaneous Wi-Fi/BLE operation.
|
||||
- Make the one-time C6 conversion understandable from the WadaMesh installer.
|
||||
- Make every later P4 installation or update automatically enforce a compatible
|
||||
C6 firmware version.
|
||||
- Provide A/B update, verification, rollback, and a wired recovery route for the
|
||||
C6.
|
||||
- Keep the P4 usable for LoRa and local UI if the C6 is absent or broken.
|
||||
|
||||
## Non-goals
|
||||
|
||||
- Classic Bluetooth. The ESP32-C6 supports Bluetooth LE only.
|
||||
- Silently rewriting the factory C6 through undocumented raw flash commands.
|
||||
- Depending on deprecated factory ESP-AT images for long-term update support.
|
||||
- Removing the existing AT implementation before the hosted replacement has
|
||||
equivalent Wi-Fi and socket coverage.
|
||||
|
||||
## Current architecture
|
||||
|
||||
### Processors
|
||||
|
||||
- ESP32-P4: runs WadaMesh, LVGL, LoRa, GPS, storage, and the companion logic.
|
||||
- ESP32-C6: owns the physical 2.4 GHz Wi-Fi and Bluetooth LE radio.
|
||||
|
||||
The P4 itself has no Wi-Fi or Bluetooth radio.
|
||||
|
||||
### Current C6 connection
|
||||
|
||||
The C6 is connected to the P4 over SDIO slot 1:
|
||||
|
||||
| Signal | P4 GPIO |
|
||||
|---|---:|
|
||||
| CLK | 18 |
|
||||
| CMD | 19 |
|
||||
| D0 | 14 |
|
||||
| D1 | 15 |
|
||||
| D2 | 16 |
|
||||
| D3 | 17 |
|
||||
|
||||
C6 enable/reset is `XL9535 IO14`. The P4 can pulse this line but does not have a
|
||||
connection to the C6 IO9 boot strap.
|
||||
|
||||
### Current software generations
|
||||
|
||||
- Current V1 factory/release firmware uses esp-hosted MCU 2.12.3. WadaMesh uses
|
||||
the matching local host fork (`2.12.3~1`) and standard remote Wi-Fi/NimBLE
|
||||
paths.
|
||||
- Older V1 units may carry LilyGo's deprecated ESP-AT SDIO firmware.
|
||||
- `tdisplay_p4/components/c6_at/` and `C6WifiShim.h` remain as an explicit
|
||||
`WADA_P4_LEGACY_AT=1` compatibility backend for those units.
|
||||
- Legacy AT Wi-Fi scans, joins, sockets, server mode, and SNTP are implemented
|
||||
in that worker. Its BLE commands cannot reliably expose the MeshCore service.
|
||||
- `AT+CIUPDATE` and `AT+USEROTA` are unavailable on the tested legacy image.
|
||||
- `C6_FLASH_HELPER=1 ./tdisplay_p4/build.sh build` creates a P4 image that does
|
||||
not reset or start the C6. It is useful for development while the C6 is placed
|
||||
in ROM download mode and flashed through its own USB connection.
|
||||
|
||||
### P4 flash layout
|
||||
|
||||
The current 16 MB P4 layout contains:
|
||||
|
||||
- 4 MB `ota_0`
|
||||
- 4 MB `ota_1`
|
||||
- approximately 8 MB FAT `storage`
|
||||
- NVS, OTA metadata, PHY data, and coredump partitions
|
||||
|
||||
The P4 application currently has less than 1 MB free in each app slot. A full C6
|
||||
image should therefore not be linked into the P4 application. If offline C6
|
||||
updates are required, reserve a dedicated data partition by reducing the FAT
|
||||
partition after measuring the final C6 image size.
|
||||
|
||||
## Target architecture
|
||||
|
||||
### C6 firmware: `wadamesh-c6`
|
||||
|
||||
Create a separately versioned ESP-IDF project for the ESP32-C6. Start from the
|
||||
same esp-hosted slave generation already proven by the Tanmatsu target.
|
||||
|
||||
Required C6 features:
|
||||
|
||||
- esp-hosted SDIO slave transport
|
||||
- Wi-Fi station and scan support
|
||||
- Bluetooth LE HCI transport for NimBLE on the P4
|
||||
- a small management endpoint for firmware identity and updates
|
||||
- A/B application partitions with rollback
|
||||
- signed-image verification
|
||||
- watchdog and boot-health reporting
|
||||
- a stable protocol version independent of the human firmware version
|
||||
|
||||
The C6 firmware should not implement the MeshCore GATT service itself. It should
|
||||
transport Bluetooth HCI to the P4, allowing the existing P4-side NimBLE and
|
||||
MeshCore `SerialBLEInterface` code to own advertising, pairing, GATT, and packet
|
||||
routing. This keeps one MeshCore BLE implementation across boards.
|
||||
|
||||
### Management protocol
|
||||
|
||||
Add a narrow WadaMesh management channel alongside the hosted data path. It must
|
||||
support at least:
|
||||
|
||||
- `GET_INFO`: protocol version, firmware version, build hash, active OTA slot,
|
||||
rollback state, and capabilities
|
||||
- `BEGIN_UPDATE`: image size, version, SHA-256, and signature metadata
|
||||
- `WRITE_CHUNK`: offset, bytes, and per-chunk integrity check
|
||||
- `END_UPDATE`: full hash/signature verification and boot-slot selection
|
||||
- `REBOOT`: restart into the pending slot
|
||||
- `CONFIRM_BOOT`: mark the new C6 image valid after host-side health checks
|
||||
- `ABORT_UPDATE`: discard a partial update
|
||||
|
||||
Commands need sequence numbers and idempotent replies so a P4 reset or SDIO
|
||||
retry cannot corrupt the inactive slot.
|
||||
|
||||
### P4 host changes
|
||||
|
||||
Introduce one explicit C6 backend boundary instead of allowing both transports
|
||||
to initialize:
|
||||
|
||||
- `C6_BACKEND_AT`: existing factory ESP-AT support, retained for migration and
|
||||
recovery builds
|
||||
- `C6_BACKEND_HOSTED`: production backend after conversion
|
||||
|
||||
For the hosted backend:
|
||||
|
||||
- stop compiling or hard-stubbing the duplicate hosted implementations
|
||||
- use exactly one esp-hosted component, following the Tanmatsu collision fix
|
||||
- route Wi-Fi through `esp_wifi_remote` and the standard Arduino Wi-Fi facade
|
||||
- route Bluetooth HCI into NimBLE
|
||||
- enable the existing MeshCore BLE companion interface
|
||||
- expose real Bluetooth capability to the UI
|
||||
- keep C6 reset under the XL9535 callback rather than a fake host GPIO
|
||||
- leave LoRa/UI startup independent from hosted initialization success
|
||||
|
||||
The host must query `GET_INFO` before enabling Wi-Fi or Bluetooth. An unsupported
|
||||
protocol should produce a clear Settings/About diagnostic and keep the rest of
|
||||
WadaMesh operational.
|
||||
|
||||
## First-time conversion
|
||||
|
||||
### Why it cannot currently be one P4 flash
|
||||
|
||||
The factory C6 has no working self-update command, and the P4 cannot force C6
|
||||
IO9 low to enter the ROM downloader. A P4 image cannot safely replace the first
|
||||
C6 firmware through the current wiring.
|
||||
|
||||
`AT+SYSFLASH` or other undocumented raw-partition writes must not be used for the
|
||||
public migration unless a sacrificial-device test proves all of the following:
|
||||
|
||||
- the required C6 partitions can be written while ESP-AT is running
|
||||
- bootloader, partition table, OTA metadata, and app offsets are known
|
||||
- power loss cannot leave the C6 unrecoverable without opening the device
|
||||
- image verification and rollback are available
|
||||
|
||||
Until then, use the C6 USB downloader.
|
||||
|
||||
### Guided web installer
|
||||
|
||||
Extend the WadaMesh install page with a P4-specific two-stage flow:
|
||||
|
||||
1. **Install C6 radio firmware**
|
||||
- Explain which USB connector reaches the C6.
|
||||
- Explain the required BOOT/IO9 and reset sequence with board photographs.
|
||||
- Launch an ESP Web Tools manifest with `chipFamily: ESP32-C6`.
|
||||
- Flash a full merged `wadamesh-c6` image containing bootloader, partition
|
||||
table, OTA metadata, and app.
|
||||
- Verify the chip and image before showing success.
|
||||
2. **Install WadaMesh P4 firmware**
|
||||
- Move the cable to the P4 USB connector.
|
||||
- Launch the existing `ESP32-P4` WadaMesh manifest.
|
||||
- On first boot, require the expected C6 protocol handshake and show the
|
||||
detected C6 version in About/Diagnostics.
|
||||
|
||||
The page should remember only browser-local completion state. The device
|
||||
handshake remains authoritative.
|
||||
|
||||
### Development flow
|
||||
|
||||
Use the existing helper for early testing:
|
||||
|
||||
```bash
|
||||
C6_FLASH_HELPER=1 ./tdisplay_p4/build.sh build
|
||||
./tdisplay_p4/build.sh flash -p <P4-port>
|
||||
```
|
||||
|
||||
Then place the C6 in ROM download mode and flash `wadamesh-c6` through the C6
|
||||
USB port. After the C6 image is installed, flash a normal hosted-backend P4
|
||||
build.
|
||||
|
||||
Document a full factory-image backup and restore command before the first C6
|
||||
write.
|
||||
|
||||
## Future seamless C6 updates
|
||||
|
||||
Once `wadamesh-c6` is installed, subsequent updates should not require the C6
|
||||
USB connector.
|
||||
|
||||
### Image delivery
|
||||
|
||||
Preferred production path:
|
||||
|
||||
- publish immutable, versioned C6 OTA images beside each P4 release
|
||||
- include required C6 protocol/version metadata in the P4 release manifest
|
||||
- let the P4 download the C6 image over its working C6 Wi-Fi connection
|
||||
- stream directly into the C6 inactive OTA slot over the management channel
|
||||
|
||||
Offline/full-install option:
|
||||
|
||||
- add a dedicated P4 `c6_fw` data partition
|
||||
- place the matching C6 OTA image there in the full merged P4 artifact
|
||||
- reduce the P4 FAT storage partition by the measured partition size
|
||||
- do not embed the image in either 4 MB P4 application slot
|
||||
|
||||
The online path should remain available for P4 OTA updates where the full flash
|
||||
image and data partition are not rewritten.
|
||||
|
||||
### Update state machine
|
||||
|
||||
1. P4 reads C6 identity and compatibility.
|
||||
2. If compatible, continue boot without rewriting anything.
|
||||
3. If an update is required, keep Wi-Fi/BLE user transports disabled.
|
||||
4. Select the C6 inactive OTA slot.
|
||||
5. Stream chunks with retries and a visible progress state.
|
||||
6. Verify SHA-256 and signature on the C6.
|
||||
7. Mark the inactive slot pending and reboot only the C6.
|
||||
8. Re-establish SDIO and run health checks:
|
||||
- management handshake
|
||||
- Wi-Fi scan
|
||||
- Wi-Fi join where credentials exist
|
||||
- BLE controller initialization
|
||||
- BLE advertising start
|
||||
9. Confirm the C6 slot only after health checks pass.
|
||||
10. If the handshake does not recover, reset the C6 and allow its bootloader
|
||||
rollback. Keep the P4 UI and LoRa available with a recovery message.
|
||||
|
||||
Never update both P4 and C6 active slots without an independently recoverable
|
||||
checkpoint between them.
|
||||
|
||||
## Release pipeline
|
||||
|
||||
Add a dedicated C6 build/release surface rather than hiding it inside the P4
|
||||
build script:
|
||||
|
||||
```text
|
||||
tdisplay_p4/c6_firmware/
|
||||
CMakeLists.txt
|
||||
sdkconfig.defaults
|
||||
partitions.csv
|
||||
main/
|
||||
build.sh
|
||||
```
|
||||
|
||||
Release artifacts:
|
||||
|
||||
- `wadamesh-c6-full.bin`: first-time USB conversion
|
||||
- `wadamesh-c6-ota.bin`: later in-band update
|
||||
- `manifest-tdisplay-p4-c6.json`: ESP Web Tools C6 manifest
|
||||
- `c6-version.json`: protocol, firmware version, hash, signature, minimum P4
|
||||
version, and release channel
|
||||
|
||||
Update these existing surfaces:
|
||||
|
||||
- `scripts/build-all-targets.sh`: build the C6 project in IDF sweeps
|
||||
- `scripts/release.sh`: stage C6 artifacts with the P4 release
|
||||
- `scripts/build/gen-flasher-meta.py`: create the ESP32-C6 manifest
|
||||
- `deploy/site/index.html`: guided two-stage P4 install
|
||||
- P4 About/Diagnostics: show C6 backend, protocol, firmware, active slot, and
|
||||
last update result
|
||||
|
||||
A release gate should reject a P4 build whose required C6 protocol is not
|
||||
present in the staged C6 metadata.
|
||||
|
||||
## Security and integrity
|
||||
|
||||
- Sign C6 images with a WadaMesh release key.
|
||||
- Verify the signature on the C6 before selecting the pending slot.
|
||||
- Pin the expected SHA-256 in release metadata and report it in diagnostics.
|
||||
- Reject downgrade unless a physical recovery flow explicitly requests it.
|
||||
- Do not carry Wi-Fi credentials inside C6 update images.
|
||||
- Clear partial-update state after abort or rollback.
|
||||
- Rate-limit and authenticate update commands so a network client cannot invoke
|
||||
the management endpoint.
|
||||
|
||||
Secure Boot and flash encryption should be evaluated for both processors as a
|
||||
separate rollout because enabling eFuses changes recovery procedures.
|
||||
|
||||
## Compatibility and fallback
|
||||
|
||||
During migration, a P4 build should detect three states:
|
||||
|
||||
| State | Behavior |
|
||||
|---|---|
|
||||
| Factory ESP-AT | Keep AT Wi-Fi available, report Bluetooth unavailable, offer C6 conversion instructions |
|
||||
| Supported hosted protocol | Enable Wi-Fi and Bluetooth normally |
|
||||
| Unknown/unresponsive C6 | Keep LoRa/UI running, disable wireless transports, expose diagnostics and wired recovery |
|
||||
|
||||
Do not infer the backend from one failed packet. Use a bounded handshake, reset
|
||||
once through XL9535 IO14, then classify the C6.
|
||||
|
||||
## Test plan
|
||||
|
||||
### C6 unit/integration
|
||||
|
||||
- version/capability handshake
|
||||
- chunk replay, duplication, and out-of-order rejection
|
||||
- full hash and signature failure
|
||||
- power loss at each update stage
|
||||
- pending-slot rollback
|
||||
- management request timeout and retry
|
||||
|
||||
### Wi-Fi
|
||||
|
||||
- scan in sparse and dense RF environments
|
||||
- hidden SSIDs
|
||||
- open, WPA2, WPA3, and wrong-password behavior
|
||||
- reconnect after C6 reset
|
||||
- TCP client and inbound companion server
|
||||
- HTTP downloads, tiles, OTA, and SNTP
|
||||
|
||||
### Bluetooth LE
|
||||
|
||||
- advertising name and MeshCore service UUID
|
||||
- Android and iOS discovery
|
||||
- connect/disconnect/reconnect
|
||||
- bidirectional MeshCore packet transport
|
||||
- MTU negotiation and fragmented writes
|
||||
- simultaneous Wi-Fi traffic
|
||||
- BLE availability after P4 and C6 independent resets
|
||||
|
||||
### System
|
||||
|
||||
- LoRa receive/transmit while Wi-Fi and BLE are active
|
||||
- SD card and C6 sharing separate SDMMC hosts
|
||||
- display underrun/flicker during C6 update and heavy traffic
|
||||
- screen-off and wake behavior
|
||||
- low-memory operation
|
||||
- C6 absent, factory, supported, outdated, and corrupt states
|
||||
- P4 OTA with matching and mismatched C6 versions
|
||||
- first-time web installation on macOS, Windows, Linux, Android Chrome, and
|
||||
ChromeOS where supported
|
||||
|
||||
## Rollout phases
|
||||
|
||||
### Phase 0: preserve and measure
|
||||
|
||||
- Back up the complete factory C6 flash.
|
||||
- Record chip revision, flash size, partition table, MAC addresses, and USB IDs.
|
||||
- Confirm the C6 USB/BOOT procedure on at least two boards.
|
||||
- Capture current AT Wi-Fi performance as a regression baseline.
|
||||
|
||||
### Phase 1: hosted proof of life
|
||||
|
||||
- Build and manually flash the smallest esp-hosted C6 slave.
|
||||
- Establish the SDIO handshake from P4.
|
||||
- Validate Wi-Fi scan/join and Bluetooth controller discovery.
|
||||
- Keep the existing AT build selectable for recovery.
|
||||
|
||||
### Phase 2: transport parity
|
||||
|
||||
- Port every P4 Wi-Fi/socket use away from `c6_at`.
|
||||
- Enable the existing MeshCore BLE companion transport.
|
||||
- Pass Wi-Fi, BLE, TCP server, OTA, tile, and time-sync tests.
|
||||
|
||||
### Phase 3: public first-time installer
|
||||
|
||||
- Publish signed full C6 artifacts and an ESP32-C6 web manifest.
|
||||
- Add the two-stage installer UI and connector/BOOT instructions.
|
||||
- Add backend/version diagnostics to P4.
|
||||
|
||||
### Phase 4: in-band updates
|
||||
|
||||
- Implement C6 A/B management protocol and host updater.
|
||||
- Add online C6 artifact delivery.
|
||||
- Add an optional offline P4 `c6_fw` partition after measuring image size.
|
||||
- Exercise interruption and rollback tests before enabling automatic updates.
|
||||
|
||||
### Phase 5: default hosted backend
|
||||
|
||||
- Make hosted the normal P4 release backend.
|
||||
- Retain an explicit AT recovery build for at least one stable release cycle.
|
||||
- Remove temporary ESP-AT GATT provisioning only after migration coverage is
|
||||
acceptable.
|
||||
|
||||
## Acceptance criteria
|
||||
|
||||
The migration is complete when:
|
||||
|
||||
- a fresh user can follow one WadaMesh page to flash both chips without command
|
||||
line tools
|
||||
- normal later WadaMesh updates need only the P4 connection or on-device OTA
|
||||
- About reports compatible P4 and C6 versions
|
||||
- Wi-Fi feature parity is maintained
|
||||
- the MeshCore phone app can discover, connect, exchange packets, and reconnect
|
||||
over Bluetooth LE
|
||||
- failed or interrupted C6 updates roll back without losing P4 LoRa/UI access
|
||||
- a documented wired restore path returns the C6 to a known image
|
||||
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"build": {
|
||||
"arduino": {
|
||||
"ldscript": "esp32s3_out.ld",
|
||||
"partitions": "default_16MB.csv",
|
||||
"memory_type": "qio_opi"
|
||||
},
|
||||
"core": "esp32",
|
||||
"extra_flags": [
|
||||
"-DBOARD_HAS_PSRAM",
|
||||
"-DARDUINO_USB_CDC_ON_BOOT=0",
|
||||
"-DARDUINO_USB_MODE=1",
|
||||
"-DARDUINO_RUNNING_CORE=1",
|
||||
"-DARDUINO_EVENT_RUNNING_CORE=1"
|
||||
],
|
||||
"f_cpu": "240000000L",
|
||||
"f_flash": "80000000L",
|
||||
"flash_mode": "qio",
|
||||
"psram_type": "opi",
|
||||
"mcu": "esp32s3",
|
||||
"variant": "esp32s3"
|
||||
},
|
||||
"connectivity": ["wifi", "bluetooth", "lora", "gps"],
|
||||
"debug": {
|
||||
"default_tool": "esp-builtin",
|
||||
"onboard_tools": ["esp-builtin"],
|
||||
"openocd_target": "esp32s3.cfg"
|
||||
},
|
||||
"frameworks": [
|
||||
"arduino",
|
||||
"espidf"
|
||||
],
|
||||
"name": "Elecrow CrowPanel Advance 3.5 (N16R8)",
|
||||
"upload": {
|
||||
"flash_size": "16MB",
|
||||
"maximum_ram_size": 327680,
|
||||
"maximum_size": 16777216,
|
||||
"use_1200bps_touch": false,
|
||||
"wait_for_upload_port": false,
|
||||
"require_upload_port": true,
|
||||
"speed": 921600
|
||||
},
|
||||
"url": "https://www.elecrow.com/",
|
||||
"vendor": "Elecrow"
|
||||
}
|
||||
@@ -18,6 +18,19 @@
|
||||
"ver": "1.0",
|
||||
"desc": "The classic, in Lua. Swipe to steer."
|
||||
},
|
||||
{
|
||||
"id": "tetris",
|
||||
"name": "Tetris",
|
||||
"ver": "1.0",
|
||||
"desc": "The classic falling-block puzzle. Swipe left/right to move, up to rotate, down to hard-drop. Contributed by samuelcoustet."
|
||||
},
|
||||
{
|
||||
"id": "protreck",
|
||||
"name": "ProTreck",
|
||||
"ver": "1.0",
|
||||
"desc": "Outdoor watch: sunrise/sunset + moon phase (ASTRO), chronometer with laps (CHRONO), countdown timer with alarm (TIMER), altimeter with trend graph (ALTI). Swipe left/right to switch modes. Contributed by samuelcoustet.",
|
||||
"seed": false
|
||||
},
|
||||
{
|
||||
"id": "sdktest",
|
||||
"name": "SDK Test",
|
||||
@@ -58,6 +71,27 @@
|
||||
"desc": "Finds and removes Windows malware on the SD card, like the M9 worm.",
|
||||
"requires": "sd",
|
||||
"seed": false
|
||||
},
|
||||
{
|
||||
"id": "tripodometer",
|
||||
"name": "Trip Odometer",
|
||||
"ver": "1.0",
|
||||
"desc": "GPS trip computer: distance, time, speed, altitude. Start/Stop to track, Reset to clear. Saves your trip across restarts. Contributed by samuelcoustet.",
|
||||
"requires": "gps",
|
||||
"seed": false
|
||||
},
|
||||
{
|
||||
"id": "breakout",
|
||||
"name": "Breakout",
|
||||
"ver": "1.0",
|
||||
"desc": "Classic brick-breaker. Swipe left/right to move the paddle, swipe up to launch the ball. Clear all bricks to advance levels. Contributed by samuelcoustet."
|
||||
},
|
||||
{
|
||||
"id": "ping",
|
||||
"name": "Ping",
|
||||
"ver": "1.0",
|
||||
"desc": "Send a mesh DM ping to any contact and measure round-trip time. Includes your GPS position so both sides see distance and bearing. Auto-replies to incoming pings. Contributed by samuelcoustet.",
|
||||
"requires": "sdk_ext"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{"id":"breakout","name":"Breakout","ver":"1.0","desc":"Classic brick-breaker. Swipe left/right to move the paddle, swipe up to launch the ball. Clear all bricks to advance levels. Contributed by samuelcoustet."}
|
||||
@@ -0,0 +1,188 @@
|
||||
-- Breakout — wadamesh Lua app
|
||||
-- Swipe left/right to move paddle | Swipe up to launch
|
||||
-- Keyboard: arrows to move, Enter / Space to launch
|
||||
-- Contributed by samuelcoustet
|
||||
|
||||
local ui, sys, store, timer = wada.ui, wada.sys, wada.store, wada.timer
|
||||
local C = ui.colors
|
||||
local app = {}
|
||||
|
||||
local COLS_B, ROWS_B = 8, 5
|
||||
local BRICK_H, BRICK_GAP = 10, 2
|
||||
local PADDLE_H, PADDLE_W = 7, 44
|
||||
local BALL_R = 5
|
||||
local TOP_H = 18 -- score strip height
|
||||
local PAD_OFF = 22 -- paddle distance from bottom
|
||||
|
||||
local COLORS = { 0xff3355, 0xff7722, 0xffdd33, 0x22cc77, 0x3399ff }
|
||||
local PTS = { 7, 5, 4, 3, 1 }
|
||||
|
||||
local cv, W, H, brick_w
|
||||
local bricks, n_alive
|
||||
local bx, by, bdx, bdy, speed
|
||||
local paddle_x
|
||||
local score, hiscore, lives, level
|
||||
local launched, over
|
||||
|
||||
local function bk_x(c) return BRICK_GAP + (c-1)*(brick_w + BRICK_GAP) end
|
||||
local function bk_y(r) return TOP_H + 4 + (r-1)*(BRICK_H + BRICK_GAP) end
|
||||
local function pad_y() return H - PAD_OFF end
|
||||
|
||||
local function new_bricks()
|
||||
bricks = {}; n_alive = 0
|
||||
for r = 1, ROWS_B do
|
||||
bricks[r] = {}
|
||||
for c = 1, COLS_B do bricks[r][c] = true; n_alive = n_alive + 1 end
|
||||
end
|
||||
end
|
||||
|
||||
local function reset_ball()
|
||||
launched = false
|
||||
bx = paddle_x
|
||||
by = pad_y() - BALL_R - 1
|
||||
bdx = 0; bdy = 0
|
||||
end
|
||||
|
||||
local function launch_ball()
|
||||
local a = sys.random(-40, 40) * math.pi / 180.0
|
||||
bdx = speed * math.sin(a)
|
||||
bdy = -speed * math.cos(a)
|
||||
launched = true
|
||||
end
|
||||
|
||||
local function draw_all()
|
||||
cv:fill(0x0a0e14)
|
||||
cv:text(6, 3, string.format("Score:%d Best:%d Lv:%d", score, hiscore, level), C.text, 11)
|
||||
for i = 1, lives do
|
||||
cv:circle(W - 6 - (i-1)*13, TOP_H // 2, 4, C.good, true)
|
||||
end
|
||||
for r = 1, ROWS_B do
|
||||
for c = 1, COLS_B do
|
||||
if bricks[r][c] then
|
||||
cv:rect(bk_x(c), bk_y(r), brick_w, BRICK_H, COLORS[r], true, 2)
|
||||
end
|
||||
end
|
||||
end
|
||||
cv:rect(paddle_x - PADDLE_W // 2, pad_y(), PADDLE_W, PADDLE_H, C.accent, true, 3)
|
||||
cv:circle(math.floor(bx), math.floor(by), BALL_R, 0xffffff, true)
|
||||
if not launched and not over then
|
||||
cv:text(W // 2 - 40, pad_y() - 20, "swipe up to launch", C.sub, 11)
|
||||
end
|
||||
if over then
|
||||
cv:rect(W // 2 - 62, H // 2 - 22, 124, 44, 0x141a22, true, 6)
|
||||
cv:text(W // 2 - 44, H // 2 - 14, "GAME OVER", C.bad, 14)
|
||||
cv:text(W // 2 - 34, H // 2 + 4, "tap to restart", C.sub, 11)
|
||||
end
|
||||
end
|
||||
|
||||
local function check_bricks()
|
||||
for r = 1, ROWS_B do
|
||||
for c = 1, COLS_B do
|
||||
if bricks[r][c] then
|
||||
local x1, y1 = bk_x(c), bk_y(r)
|
||||
local ox = math.min(bx + BALL_R - x1, x1 + brick_w - (bx - BALL_R))
|
||||
local oy = math.min(by + BALL_R - y1, y1 + BRICK_H - (by - BALL_R))
|
||||
if ox > 0 and oy > 0 then
|
||||
bricks[r][c] = false; n_alive = n_alive - 1
|
||||
score = score + PTS[r] * level
|
||||
if ox < oy then bdx = -bdx else bdy = -bdy end
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function step()
|
||||
if over or not launched then return end
|
||||
bx = bx + bdx
|
||||
by = by + bdy
|
||||
-- walls
|
||||
if bx - BALL_R < 0 then bx = BALL_R; bdx = math.abs(bdx) end
|
||||
if bx + BALL_R > W then bx = W - BALL_R; bdx = -math.abs(bdx) end
|
||||
if by - BALL_R < TOP_H then by = TOP_H + BALL_R; bdy = math.abs(bdy) end
|
||||
-- paddle
|
||||
local py = pad_y()
|
||||
if bdy > 0 and by + BALL_R >= py and by + BALL_R <= py + PADDLE_H + speed + 1 then
|
||||
local half = PADDLE_W * 0.5
|
||||
if bx >= paddle_x - half - BALL_R and bx <= paddle_x + half + BALL_R then
|
||||
local rel = math.max(-1.0, math.min(1.0, (bx - paddle_x) / half))
|
||||
bdx = speed * rel * 0.8
|
||||
local sq = speed * speed - bdx * bdx
|
||||
bdy = -(sq > 0 and math.sqrt(sq) or speed * 0.5)
|
||||
by = py - BALL_R - 1.0
|
||||
end
|
||||
end
|
||||
-- bricks
|
||||
check_bricks()
|
||||
-- ball lost
|
||||
if by - BALL_R > H + 10 then
|
||||
lives = lives - 1
|
||||
if lives <= 0 then
|
||||
if score > hiscore then hiscore = score; store.set("hiscore", hiscore) end
|
||||
over = true; launched = false; return
|
||||
end
|
||||
paddle_x = W // 2; reset_ball()
|
||||
end
|
||||
-- level won
|
||||
if n_alive == 0 then
|
||||
level = level + 1
|
||||
speed = math.min(speed + 0.6, 9.0)
|
||||
new_bricks(); reset_ball()
|
||||
end
|
||||
end
|
||||
|
||||
local function move_paddle(dx)
|
||||
paddle_x = math.max(PADDLE_W // 2 + 2, math.min(W - PADDLE_W // 2 - 2, paddle_x + dx))
|
||||
if not launched then bx = paddle_x end
|
||||
draw_all()
|
||||
end
|
||||
|
||||
function app.on_open(w, h)
|
||||
W, H = w, h
|
||||
hiscore = store.get("hiscore", 0)
|
||||
brick_w = math.floor((W - (COLS_B + 1) * BRICK_GAP) / COLS_B)
|
||||
cv = ui.canvas(W, H); cv:pos(0, 0)
|
||||
score = 0; lives = 3; level = 1; speed = 3.5; over = false
|
||||
paddle_x = W // 2
|
||||
new_bricks(); reset_ball()
|
||||
draw_all()
|
||||
timer.every(33)
|
||||
end
|
||||
|
||||
function app.on_input(ev)
|
||||
if over then
|
||||
if ev.type == "down" or (ev.type == "key" and ev.key == "enter") then
|
||||
over = false; score = 0; lives = 3; level = 1; speed = 3.5
|
||||
paddle_x = W // 2; new_bricks(); reset_ball(); draw_all()
|
||||
end
|
||||
return
|
||||
end
|
||||
if ev.type == "swipe" then
|
||||
local d = ev.dir
|
||||
if d == "left" then move_paddle(-32)
|
||||
elseif d == "right" then move_paddle( 32)
|
||||
elseif d == "up" and not launched then launch_ball(); draw_all()
|
||||
end
|
||||
elseif ev.type == "key" then
|
||||
local k = ev.key
|
||||
if k == "left" then move_paddle(-20)
|
||||
elseif k == "right" then move_paddle( 20)
|
||||
elseif (k == "up" or k == "enter" or k == " ") and not launched then
|
||||
launch_ball(); draw_all()
|
||||
end
|
||||
elseif ev.type == "down" then
|
||||
if ev.x < W // 3 then move_paddle(-32)
|
||||
elseif ev.x > (W * 2) // 3 then move_paddle( 32)
|
||||
elseif not launched then launch_ball(); draw_all()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function app.on_tick(dt)
|
||||
step(); draw_all()
|
||||
end
|
||||
|
||||
function app.on_close() end
|
||||
|
||||
return app
|
||||
@@ -1,7 +1,7 @@
|
||||
# wadamesh language file
|
||||
# canonical source - translators: edit this file and PR it
|
||||
# code: bg
|
||||
# ver: 22
|
||||
# ver: 23
|
||||
# name: Български
|
||||
# base: bg
|
||||
(device behind) (устройството изостава)
|
||||
@@ -34,9 +34,14 @@ Accent popups: off Изскачащи акценти: изкл
|
||||
Accent popups: on Изскачащи акценти: вкл
|
||||
Accent colour Акцентен цвят
|
||||
Appearance Изглед
|
||||
Condense Nav (restart to apply) Компактна навигация (рестарт за прилагане)
|
||||
Condense Nav saved — restart to apply Компактната навигация е запазена — рестарт за прилагане
|
||||
Day Ден
|
||||
High contrast Висок контраст
|
||||
High contrast - restarting to apply it… Висок контраст - рестартиране за прилагане…
|
||||
Keyboard nav: on Клавиатурна навиг.: вкл.
|
||||
Landscape only Само в хоризонтална ориентация
|
||||
Letters move the highlight when no text field is focused. Enter selects; hold Backspace to go back. Буквите местят маркера, когато няма активно текстово поле. Enter избира; задръжте Backspace за назад.
|
||||
Night Нощ
|
||||
Theme save failed Неуспешно запазване на темата
|
||||
Ack Ack
|
||||
@@ -1282,3 +1287,234 @@ No known Windows malware found. No known Windows malware found.
|
||||
This firmware can find these but not remove them. Update wadamesh, or format the card: in Files, hold the SD card row. This firmware can find these but not remove them. Update wadamesh, or format the card: in Files, hold the SD card row.
|
||||
SD Scan only removes files it recognises. If the card may be infected, the safest fix is to copy off what you need and format it completely: in Files, hold the SD card row. SD Scan only removes files it recognises. If the card may be infected, the safest fix is to copy off what you need and format it completely: in Files, hold the SD card row.
|
||||
and %d more and %d more
|
||||
# beta_89: new strings, English placeholders until translated (value = key)
|
||||
%d nodes heard today %d nodes heard today
|
||||
%lu packets heard %lu packets heard
|
||||
1 node heard today 1 node heard today
|
||||
1 packet heard 1 packet heard
|
||||
1. Connect this device to the computer with a USB cable.\n2. Open this address in Chrome or Edge: 1. Connect this device to the computer with a USB cable.\n2. Open this address in Chrome or Edge:
|
||||
3. Click Connect and choose this device. 3. Click Connect and choose this device.
|
||||
4 numbers or letters 4 numbers or letters
|
||||
A day A day
|
||||
A week A week
|
||||
Add a channel Add a channel
|
||||
Add, download or delete files on this device from a computer. Add, download or delete files on this device from a computer.
|
||||
Advertise Advertise
|
||||
Always on when connected to power Always on when connected to power
|
||||
Anything worth saying (optional) Anything worth saying (optional)
|
||||
App drawer App drawer
|
||||
App icons App icons
|
||||
Append timestamp Append timestamp
|
||||
Apr Apr
|
||||
April April
|
||||
Asks for 4 numbers or letters to unlock, and locks whenever the screen goes off. If you forget it, the only way back in is to reset the device, which erases everything on it. Asks for 4 numbers or letters to unlock, and locks whenever the screen goes off. If you forget it, the only way back in is to reset the device, which erases everything on it.
|
||||
Aug Aug
|
||||
August August
|
||||
Blocked Blocked
|
||||
Change PIN Change PIN
|
||||
Channel Channel
|
||||
Channels Channels
|
||||
Chat Chat
|
||||
Chat icon reset Chat icon reset
|
||||
Chats Chats
|
||||
Choose a PIN Choose a PIN
|
||||
Clock not set Clock not set
|
||||
Cmdr Cmdr
|
||||
Commander Commander
|
||||
Companion Companion
|
||||
Connected to the computer Connected to the computer
|
||||
Could not send the report. Try again later. Could not send the report. Try again later.
|
||||
Count this device Count this device
|
||||
Current PIN Current PIN
|
||||
Cursor Cursor
|
||||
Dec Dec
|
||||
December December
|
||||
Delete this conversation? Delete this conversation?
|
||||
Device id Device id
|
||||
Direct Direct
|
||||
Direct message Direct message
|
||||
Direct, no repeaters Direct, no repeaters
|
||||
Discover Discover
|
||||
Double-tap SPACE while typing to switch Double-tap SPACE while typing to switch
|
||||
Emoji Emoji
|
||||
Enter PIN Enter PIN
|
||||
Enter it again Enter it again
|
||||
Export Backup Export Backup
|
||||
Feb Feb
|
||||
February February
|
||||
Fri Fri
|
||||
Friday Friday
|
||||
Has a problem Has a problem
|
||||
Heard by %u repeaters Heard by %u repeaters
|
||||
Heard by 1 repeater Heard by 1 repeater
|
||||
Hold the trackball to switch Hold the trackball to switch
|
||||
Home button opens Home button opens
|
||||
I hit a problem I hit a problem
|
||||
I understand I understand
|
||||
If you forget your PIN, you have to reset the device If you forget your PIN, you have to reset the device
|
||||
Internal Internal
|
||||
It is the only way back in, and it erases everything on it: contacts, channels, messages and settings. Nobody can unlock it for you. It is the only way back in, and it erases everything on it: contacts, channels, messages and settings. Nobody can unlock it for you.
|
||||
Jan Jan
|
||||
January January
|
||||
Join # channel Join # channel
|
||||
Join Public channel Join Public channel
|
||||
Jul Jul
|
||||
July July
|
||||
Jun Jun
|
||||
June June
|
||||
Keyboard and input Keyboard and input
|
||||
Keyboard attached.\nRestarting in landscape in %d s. Keyboard attached.\nRestarting in landscape in %d s.
|
||||
Large Large
|
||||
Launcher Launcher
|
||||
Launcher layout Launcher layout
|
||||
Locks when screen off\n(hold the BOOT button to unlock) Locks when screen off\n(hold the BOOT button to unlock)
|
||||
Map and GPS Map and GPS
|
||||
Map tiles Map tiles
|
||||
Mar Mar
|
||||
March March
|
||||
Mark all as read Mark all as read
|
||||
May May
|
||||
Mentions Mentions
|
||||
Mentions muted Mentions muted
|
||||
Mentions unmuted Mentions unmuted
|
||||
Mesh · 24 h Mesh · 24 h
|
||||
Message %s Message %s
|
||||
Message text on lock screen Message text on lock screen
|
||||
Messages muted Messages muted
|
||||
Messages unmuted Messages unmuted
|
||||
Minutes Minutes
|
||||
Mon Mon
|
||||
Monday Monday
|
||||
Mute mentions Mute mentions
|
||||
Mute messages Mute messages
|
||||
Navigate Navigate
|
||||
Never Never
|
||||
New PIN New PIN
|
||||
No backups available to restore. No backups available to restore.
|
||||
No backups yet. Use Export Backup above to create one. No backups yet. Use Export Backup above to create one.
|
||||
No channels yet No channels yet
|
||||
No direct chats yet No direct chats yet
|
||||
Normal\nLarge text\nHuge text Normal\nLarge text\nHuge text
|
||||
Not delivered, tap to resend Not delivered, tap to resend
|
||||
Nov Nov
|
||||
November November
|
||||
Oct Oct
|
||||
October October
|
||||
On On
|
||||
On battery, show it for On battery, show it for
|
||||
PIN changed PIN changed
|
||||
PIN lock PIN lock
|
||||
PIN lock off PIN lock off
|
||||
PIN lock on PIN lock on
|
||||
Phone-app link Phone-app link
|
||||
Pick the numbers, or type the PIN Pick the numbers, or type the PIN
|
||||
Preview screensaver Preview screensaver
|
||||
Radio and messaging Radio and messaging
|
||||
Reboot Now Reboot Now
|
||||
Received %s Received %s
|
||||
Receiving %s Receiving %s
|
||||
Region not saved: use a-z, 0-9 and - Region not saved: use a-z, 0-9 and -
|
||||
Remote Remote
|
||||
Repeater Repeater
|
||||
Report a bug Report a bug
|
||||
Reset chat icon Reset chat icon
|
||||
Room Room
|
||||
Routed Routed
|
||||
Running it for Running it for
|
||||
Running it for: Running it for:
|
||||
SD card SD card
|
||||
SD unavailable - insert a FAT32 card and retry SD unavailable - insert a FAT32 card and retry
|
||||
Sat Sat
|
||||
Saturday Saturday
|
||||
Say whether this build works on your board, so a stable release is promoted on evidence rather than on nobody having complained. A bug report opens as a QR: scan it and file it from your phone, under your own GitHub account. Say whether this build works on your board, so a stable release is promoted on evidence rather than on nobody having complained. A bug report opens as a QR: scan it and file it from your phone, under your own GitHub account.
|
||||
Screen timeout Screen timeout
|
||||
Screensaver Screensaver
|
||||
Scroll Scroll
|
||||
Scroll moves the screen; Cursor points and clicks; Navigate (experimental) moves a selection. Hold the trackball to switch between Scroll and Cursor. Scroll moves the screen; Cursor points and clicks; Navigate (experimental) moves a selection. Hold the trackball to switch between Scroll and Cursor.
|
||||
Send Send
|
||||
Send a test report Send a test report
|
||||
Send another test report Send another test report
|
||||
Sending %s Sending %s
|
||||
Sending your report... Sending your report...
|
||||
Sensor Sensor
|
||||
Sep Sep
|
||||
September September
|
||||
Share my contact Share my contact
|
||||
Spectrum Spectrum
|
||||
Stop USB Files Stop USB Files
|
||||
Storage and SD Storage and SD
|
||||
Sun Sun
|
||||
Sunday Sunday
|
||||
Tap the EN key on the keyboard to switch Tap the EN key on the keyboard to switch
|
||||
Tells the matrix how many devices run this build, so a board with no reports can be told apart from a board nobody owns. Sends the board and the version, nothing else. Tells the matrix how many devices run this build, so a board with no reports can be told apart from a board nobody owns. Sends the board and the version, nothing else.
|
||||
Terminal Terminal
|
||||
Test report: %s Test report: %s
|
||||
Thank you. Your report is on wadamesh.com/beta Thank you. Your report is on wadamesh.com/beta
|
||||
The PINs did not match The PINs did not match
|
||||
The mesh around you instead of a dark screen. Every ring is a real packet. The mesh around you instead of a dark screen. Every ring is a real packet.
|
||||
This is everything that leaves the device. No name, no contacts, no position. This is everything that leaves the device. No name, no contacts, no position.
|
||||
Thu Thu
|
||||
Thursday Thursday
|
||||
Tick only what you actually used: Tick only what you actually used:
|
||||
Too many chat icons Too many chat icons
|
||||
Too many tries. Wait %u s Too many tries. Wait %u s
|
||||
Trackball Trackball
|
||||
Trackball: scroll Trackball: scroll
|
||||
Transfer Transfer
|
||||
Tue Tue
|
||||
Tuesday Tuesday
|
||||
Turn Wi-Fi on to send a report Turn Wi-Fi on to send a report
|
||||
Type 4 numbers or letters Type 4 numbers or letters
|
||||
USB Files USB Files
|
||||
USB Files: low memory USB Files: low memory
|
||||
Unmute mentions Unmute mentions
|
||||
Unmute messages Unmute messages
|
||||
Upload of %s stopped Upload of %s stopped
|
||||
Used Used
|
||||
VNC VNC
|
||||
Waiting for the computer Waiting for the computer
|
||||
Web Web
|
||||
Wed Wed
|
||||
Wednesday Wednesday
|
||||
While this screen is open, the companion app cannot use USB. While this screen is open, the companion app cannot use USB.
|
||||
Works Works
|
||||
Wrong PIN Wrong PIN
|
||||
You: You:
|
||||
a week or more a week or more
|
||||
about a day about a day
|
||||
heard %s ago heard %s ago
|
||||
hold the BOOT button to unlock hold the BOOT button to unlock
|
||||
hop away hop away
|
||||
hops away hops away
|
||||
minutes minutes
|
||||
new new
|
||||
node node
|
||||
nodes nodes
|
||||
now now
|
||||
routed routed
|
||||
# Theme page and colour looks: new strings, English placeholders until translated (value = key)
|
||||
A colour for every section, coloured status icons, names and glyphs in their own hue. A colour for every section, coloured status icons, names and glyphs in their own hue.
|
||||
Apply and restart Apply and restart
|
||||
Applying the theme, restarting… Applying the theme, restarting…
|
||||
Bubbles in colour Bubbles in colour
|
||||
Bubbles plain Bubbles plain
|
||||
Chat icons Chat icons
|
||||
Colourful bubbles Colourful bubbles
|
||||
Custom Custom
|
||||
Every app and page its own colour, with a little motion. Every app and page its own colour, with a little motion.
|
||||
Black and white with heavy outlines, for bright sun or low vision. Black and white with heavy outlines, for bright sun or low vision.
|
||||
Glyphs Glyphs
|
||||
High contrast keeps its own fixed colours. High contrast keeps its own fixed colours.
|
||||
Initials Initials
|
||||
MORE COLORS! MORE COLORS!
|
||||
Mode Mode
|
||||
Names are always in colour; this colours the bubbles too. Names are always in colour; this colours the bubbles too.
|
||||
Neon Neon
|
||||
On my way On my way
|
||||
Pastel Pastel
|
||||
Preview Preview
|
||||
Rainbow Rainbow
|
||||
Regular Regular
|
||||
Ridge at six? Ridge at six?
|
||||
Taste the rainbow Taste the rainbow
|
||||
Use this colour Use this colour
|
||||
@@ -1,7 +1,7 @@
|
||||
# wadamesh language file
|
||||
# canonical source - translators: edit this file and PR it
|
||||
# code: cs
|
||||
# ver: 22
|
||||
# ver: 23
|
||||
# name: Čeština
|
||||
# base: cs
|
||||
(device behind) (zařízení za)
|
||||
@@ -34,7 +34,12 @@ Accent popups: off Vyskakovací okna akcentu: vypnuto
|
||||
Accent popups: on Vyskakovací okna akcentu: zapnuto
|
||||
Accent colour Barva akcentu
|
||||
Appearance Vzhled
|
||||
Condense Nav (restart to apply) Kompaktní navigace (pro použití restartujte)
|
||||
Condense Nav saved — restart to apply Kompaktní navigace uložena — pro použití restartujte
|
||||
Day Den
|
||||
Keyboard nav: on Navigace klávesnicí: zapnuta
|
||||
Landscape only Pouze na šířku
|
||||
Letters move the highlight when no text field is focused. Enter selects; hold Backspace to go back. Písmena posouvají zvýraznění, když není aktivní textové pole. Enter vybírá; podržením Backspace se vrátíte zpět.
|
||||
Night Noc
|
||||
Theme save failed Uložení motivu selhalo
|
||||
Ack Potvrzení
|
||||
@@ -1304,3 +1309,228 @@ Snake Snake
|
||||
held by held by
|
||||
© OpenStreetMap © OpenStreetMap
|
||||
© OpenTopoMap © OpenTopoMap
|
||||
# beta_89: new strings, English placeholders until translated (value = key)
|
||||
%d nodes heard today %d nodes heard today
|
||||
%lu packets heard %lu packets heard
|
||||
1 node heard today 1 node heard today
|
||||
1 packet heard 1 packet heard
|
||||
1. Connect this device to the computer with a USB cable.\n2. Open this address in Chrome or Edge: 1. Connect this device to the computer with a USB cable.\n2. Open this address in Chrome or Edge:
|
||||
3. Click Connect and choose this device. 3. Click Connect and choose this device.
|
||||
4 numbers or letters 4 numbers or letters
|
||||
A day A day
|
||||
A week A week
|
||||
Add a channel Add a channel
|
||||
Add, download or delete files on this device from a computer. Add, download or delete files on this device from a computer.
|
||||
Advertise Advertise
|
||||
Always on when connected to power Always on when connected to power
|
||||
Anything worth saying (optional) Anything worth saying (optional)
|
||||
App drawer App drawer
|
||||
App icons App icons
|
||||
Append timestamp Append timestamp
|
||||
Apr Apr
|
||||
April April
|
||||
Asks for 4 numbers or letters to unlock, and locks whenever the screen goes off. If you forget it, the only way back in is to reset the device, which erases everything on it. Asks for 4 numbers or letters to unlock, and locks whenever the screen goes off. If you forget it, the only way back in is to reset the device, which erases everything on it.
|
||||
Aug Aug
|
||||
August August
|
||||
Blocked Blocked
|
||||
Change PIN Change PIN
|
||||
Channel Channel
|
||||
Channels Channels
|
||||
Chat icon reset Chat icon reset
|
||||
Chats Chats
|
||||
Choose a PIN Choose a PIN
|
||||
Clock not set Clock not set
|
||||
Cmdr Cmdr
|
||||
Commander Commander
|
||||
Companion Companion
|
||||
Connected to the computer Connected to the computer
|
||||
Could not send the report. Try again later. Could not send the report. Try again later.
|
||||
Count this device Count this device
|
||||
Current PIN Current PIN
|
||||
Cursor Cursor
|
||||
Dec Dec
|
||||
December December
|
||||
Delete this conversation? Delete this conversation?
|
||||
Device id Device id
|
||||
Direct Direct
|
||||
Direct message Direct message
|
||||
Direct, no repeaters Direct, no repeaters
|
||||
Double-tap SPACE while typing to switch Double-tap SPACE while typing to switch
|
||||
Emoji Emoji
|
||||
Enter PIN Enter PIN
|
||||
Enter it again Enter it again
|
||||
Export Backup Export Backup
|
||||
Feb Feb
|
||||
February February
|
||||
Fri Fri
|
||||
Friday Friday
|
||||
Has a problem Has a problem
|
||||
Heard by %u repeaters Heard by %u repeaters
|
||||
Heard by 1 repeater Heard by 1 repeater
|
||||
Hold the trackball to switch Hold the trackball to switch
|
||||
Home button opens Home button opens
|
||||
I hit a problem I hit a problem
|
||||
I understand I understand
|
||||
If you forget your PIN, you have to reset the device If you forget your PIN, you have to reset the device
|
||||
Internal Internal
|
||||
It is the only way back in, and it erases everything on it: contacts, channels, messages and settings. Nobody can unlock it for you. It is the only way back in, and it erases everything on it: contacts, channels, messages and settings. Nobody can unlock it for you.
|
||||
Jan Jan
|
||||
January January
|
||||
Join # channel Join # channel
|
||||
Join Public channel Join Public channel
|
||||
Jul Jul
|
||||
July July
|
||||
Jun Jun
|
||||
June June
|
||||
Keyboard and input Keyboard and input
|
||||
Keyboard attached.\nRestarting in landscape in %d s. Keyboard attached.\nRestarting in landscape in %d s.
|
||||
Large Large
|
||||
Launcher Launcher
|
||||
Launcher layout Launcher layout
|
||||
Locks when screen off\n(hold the BOOT button to unlock) Locks when screen off\n(hold the BOOT button to unlock)
|
||||
Map and GPS Map and GPS
|
||||
Map tiles Map tiles
|
||||
Mar Mar
|
||||
March March
|
||||
Mark all as read Mark all as read
|
||||
May May
|
||||
Mentions muted Mentions muted
|
||||
Mentions unmuted Mentions unmuted
|
||||
Mesh · 24 h Mesh · 24 h
|
||||
Message %s Message %s
|
||||
Message text on lock screen Message text on lock screen
|
||||
Messages muted Messages muted
|
||||
Messages unmuted Messages unmuted
|
||||
Minutes Minutes
|
||||
Mon Mon
|
||||
Monday Monday
|
||||
Mute mentions Mute mentions
|
||||
Mute messages Mute messages
|
||||
Navigate Navigate
|
||||
Never Never
|
||||
New PIN New PIN
|
||||
No backups available to restore. No backups available to restore.
|
||||
No backups yet. Use Export Backup above to create one. No backups yet. Use Export Backup above to create one.
|
||||
No channels yet No channels yet
|
||||
No direct chats yet No direct chats yet
|
||||
Not delivered, tap to resend Not delivered, tap to resend
|
||||
Nov Nov
|
||||
November November
|
||||
Oct Oct
|
||||
October October
|
||||
On On
|
||||
On battery, show it for On battery, show it for
|
||||
PIN changed PIN changed
|
||||
PIN lock PIN lock
|
||||
PIN lock off PIN lock off
|
||||
PIN lock on PIN lock on
|
||||
Phone-app link Phone-app link
|
||||
Pick the numbers, or type the PIN Pick the numbers, or type the PIN
|
||||
Preview screensaver Preview screensaver
|
||||
Radio and messaging Radio and messaging
|
||||
Reboot Now Reboot Now
|
||||
Received %s Received %s
|
||||
Receiving %s Receiving %s
|
||||
Region not saved: use a-z, 0-9 and - Region not saved: use a-z, 0-9 and -
|
||||
Repeater Repeater
|
||||
Report a bug Report a bug
|
||||
Reset chat icon Reset chat icon
|
||||
Room Room
|
||||
Routed Routed
|
||||
Running it for Running it for
|
||||
Running it for: Running it for:
|
||||
SD card SD card
|
||||
SD unavailable - insert a FAT32 card and retry SD unavailable - insert a FAT32 card and retry
|
||||
Sat Sat
|
||||
Saturday Saturday
|
||||
Say whether this build works on your board, so a stable release is promoted on evidence rather than on nobody having complained. A bug report opens as a QR: scan it and file it from your phone, under your own GitHub account. Say whether this build works on your board, so a stable release is promoted on evidence rather than on nobody having complained. A bug report opens as a QR: scan it and file it from your phone, under your own GitHub account.
|
||||
Screen timeout Screen timeout
|
||||
Screensaver Screensaver
|
||||
Scroll Scroll
|
||||
Scroll moves the screen; Cursor points and clicks; Navigate (experimental) moves a selection. Hold the trackball to switch between Scroll and Cursor. Scroll moves the screen; Cursor points and clicks; Navigate (experimental) moves a selection. Hold the trackball to switch between Scroll and Cursor.
|
||||
Send Send
|
||||
Send a test report Send a test report
|
||||
Send another test report Send another test report
|
||||
Sending %s Sending %s
|
||||
Sending your report... Sending your report...
|
||||
Sensor Sensor
|
||||
Sep Sep
|
||||
September September
|
||||
Share my contact Share my contact
|
||||
Stop USB Files Stop USB Files
|
||||
Storage and SD Storage and SD
|
||||
Sun Sun
|
||||
Sunday Sunday
|
||||
Tap the EN key on the keyboard to switch Tap the EN key on the keyboard to switch
|
||||
Tells the matrix how many devices run this build, so a board with no reports can be told apart from a board nobody owns. Sends the board and the version, nothing else. Tells the matrix how many devices run this build, so a board with no reports can be told apart from a board nobody owns. Sends the board and the version, nothing else.
|
||||
Terminal Terminal
|
||||
Test report: %s Test report: %s
|
||||
Thank you. Your report is on wadamesh.com/beta Thank you. Your report is on wadamesh.com/beta
|
||||
The PINs did not match The PINs did not match
|
||||
The mesh around you instead of a dark screen. Every ring is a real packet. The mesh around you instead of a dark screen. Every ring is a real packet.
|
||||
This is everything that leaves the device. No name, no contacts, no position. This is everything that leaves the device. No name, no contacts, no position.
|
||||
Thu Thu
|
||||
Thursday Thursday
|
||||
Tick only what you actually used: Tick only what you actually used:
|
||||
Too many chat icons Too many chat icons
|
||||
Too many tries. Wait %u s Too many tries. Wait %u s
|
||||
Trackball Trackball
|
||||
Trackball: scroll Trackball: scroll
|
||||
Transfer Transfer
|
||||
Tue Tue
|
||||
Tuesday Tuesday
|
||||
Turn Wi-Fi on to send a report Turn Wi-Fi on to send a report
|
||||
Type 4 numbers or letters Type 4 numbers or letters
|
||||
USB Files USB Files
|
||||
USB Files: low memory USB Files: low memory
|
||||
Unmute mentions Unmute mentions
|
||||
Unmute messages Unmute messages
|
||||
Upload of %s stopped Upload of %s stopped
|
||||
Used Used
|
||||
VNC VNC
|
||||
Waiting for the computer Waiting for the computer
|
||||
Web Web
|
||||
Wed Wed
|
||||
Wednesday Wednesday
|
||||
While this screen is open, the companion app cannot use USB. While this screen is open, the companion app cannot use USB.
|
||||
Works Works
|
||||
Wrong PIN Wrong PIN
|
||||
You: You:
|
||||
a week or more a week or more
|
||||
about a day about a day
|
||||
heard %s ago heard %s ago
|
||||
hold the BOOT button to unlock hold the BOOT button to unlock
|
||||
hop away hop away
|
||||
hops away hops away
|
||||
minutes minutes
|
||||
new new
|
||||
node node
|
||||
nodes nodes
|
||||
now now
|
||||
routed routed
|
||||
# Theme page and colour looks: new strings, English placeholders until translated (value = key)
|
||||
A colour for every section, coloured status icons, names and glyphs in their own hue. A colour for every section, coloured status icons, names and glyphs in their own hue.
|
||||
Apply and restart Apply and restart
|
||||
Applying the theme, restarting… Applying the theme, restarting…
|
||||
Bubbles in colour Bubbles in colour
|
||||
Bubbles plain Bubbles plain
|
||||
Chat icons Chat icons
|
||||
Colourful bubbles Colourful bubbles
|
||||
Custom Custom
|
||||
Every app and page its own colour, with a little motion. Every app and page its own colour, with a little motion.
|
||||
Black and white with heavy outlines, for bright sun or low vision. Black and white with heavy outlines, for bright sun or low vision.
|
||||
Glyphs Glyphs
|
||||
High contrast keeps its own fixed colours. High contrast keeps its own fixed colours.
|
||||
Initials Initials
|
||||
MORE COLORS! MORE COLORS!
|
||||
Mode Mode
|
||||
Names are always in colour; this colours the bubbles too. Names are always in colour; this colours the bubbles too.
|
||||
Neon Neon
|
||||
On my way On my way
|
||||
Pastel Pastel
|
||||
Preview Preview
|
||||
Rainbow Rainbow
|
||||
Regular Regular
|
||||
Ridge at six? Ridge at six?
|
||||
Taste the rainbow Taste the rainbow
|
||||
Use this colour Use this colour
|
||||
@@ -1,7 +1,7 @@
|
||||
# wadamesh language file
|
||||
# canonical source - translators: edit this file and PR it
|
||||
# code: de
|
||||
# ver: 22
|
||||
# ver: 23
|
||||
# name: Deutsch
|
||||
# base: de
|
||||
(device behind) (Gerät geht nach)
|
||||
@@ -34,9 +34,14 @@ Accent popups: off Akzent-Popups: aus
|
||||
Accent popups: on Akzent-Popups: ein
|
||||
Accent colour Akzentfarbe
|
||||
Appearance Erscheinungsbild
|
||||
Condense Nav (restart to apply) Kompakte Navigation (Neustart nötig)
|
||||
Condense Nav saved — restart to apply Kompakte Navigation gespeichert — Neustart zum Anwenden
|
||||
Day Tag
|
||||
High contrast Hoher Kontrast
|
||||
High contrast - restarting to apply it… Hoher Kontrast - Neustart zum Anwenden…
|
||||
Keyboard nav: on Tastaturnav.: an
|
||||
Landscape only Nur im Querformat
|
||||
Letters move the highlight when no text field is focused. Enter selects; hold Backspace to go back. Buchstaben bewegen die Markierung, wenn kein Textfeld aktiv ist. Enter wählt aus; Rücktaste halten geht zurück.
|
||||
Night Nacht
|
||||
Theme save failed Design konnte nicht gespeichert werden
|
||||
Ack Ack
|
||||
@@ -1278,3 +1283,234 @@ No known Windows malware found. No known Windows malware found.
|
||||
This firmware can find these but not remove them. Update wadamesh, or format the card: in Files, hold the SD card row. This firmware can find these but not remove them. Update wadamesh, or format the card: in Files, hold the SD card row.
|
||||
SD Scan only removes files it recognises. If the card may be infected, the safest fix is to copy off what you need and format it completely: in Files, hold the SD card row. SD Scan only removes files it recognises. If the card may be infected, the safest fix is to copy off what you need and format it completely: in Files, hold the SD card row.
|
||||
and %d more and %d more
|
||||
# beta_89: new strings, English placeholders until translated (value = key)
|
||||
%d nodes heard today %d nodes heard today
|
||||
%lu packets heard %lu packets heard
|
||||
1 node heard today 1 node heard today
|
||||
1 packet heard 1 packet heard
|
||||
1. Connect this device to the computer with a USB cable.\n2. Open this address in Chrome or Edge: 1. Connect this device to the computer with a USB cable.\n2. Open this address in Chrome or Edge:
|
||||
3. Click Connect and choose this device. 3. Click Connect and choose this device.
|
||||
4 numbers or letters 4 numbers or letters
|
||||
A day A day
|
||||
A week A week
|
||||
Add a channel Add a channel
|
||||
Add, download or delete files on this device from a computer. Add, download or delete files on this device from a computer.
|
||||
Advertise Advertise
|
||||
Always on when connected to power Always on when connected to power
|
||||
Anything worth saying (optional) Anything worth saying (optional)
|
||||
App drawer App drawer
|
||||
App icons App icons
|
||||
Append timestamp Append timestamp
|
||||
Apr Apr
|
||||
April April
|
||||
Asks for 4 numbers or letters to unlock, and locks whenever the screen goes off. If you forget it, the only way back in is to reset the device, which erases everything on it. Asks for 4 numbers or letters to unlock, and locks whenever the screen goes off. If you forget it, the only way back in is to reset the device, which erases everything on it.
|
||||
Aug Aug
|
||||
August August
|
||||
Blocked Blocked
|
||||
Change PIN Change PIN
|
||||
Channel Channel
|
||||
Channels Channels
|
||||
Chat Chat
|
||||
Chat icon reset Chat icon reset
|
||||
Chats Chats
|
||||
Choose a PIN Choose a PIN
|
||||
Clock not set Clock not set
|
||||
Cmdr Cmdr
|
||||
Commander Commander
|
||||
Companion Companion
|
||||
Connected to the computer Connected to the computer
|
||||
Could not send the report. Try again later. Could not send the report. Try again later.
|
||||
Count this device Count this device
|
||||
Current PIN Current PIN
|
||||
Cursor Cursor
|
||||
Dec Dec
|
||||
December December
|
||||
Delete this conversation? Delete this conversation?
|
||||
Device id Device id
|
||||
Direct Direct
|
||||
Direct message Direct message
|
||||
Direct, no repeaters Direct, no repeaters
|
||||
Discover Discover
|
||||
Double-tap SPACE while typing to switch Double-tap SPACE while typing to switch
|
||||
Emoji Emoji
|
||||
Enter PIN Enter PIN
|
||||
Enter it again Enter it again
|
||||
Export Backup Export Backup
|
||||
Feb Feb
|
||||
February February
|
||||
Fri Fri
|
||||
Friday Friday
|
||||
Has a problem Has a problem
|
||||
Heard by %u repeaters Heard by %u repeaters
|
||||
Heard by 1 repeater Heard by 1 repeater
|
||||
Hold the trackball to switch Hold the trackball to switch
|
||||
Home button opens Home button opens
|
||||
I hit a problem I hit a problem
|
||||
I understand I understand
|
||||
If you forget your PIN, you have to reset the device If you forget your PIN, you have to reset the device
|
||||
Internal Internal
|
||||
It is the only way back in, and it erases everything on it: contacts, channels, messages and settings. Nobody can unlock it for you. It is the only way back in, and it erases everything on it: contacts, channels, messages and settings. Nobody can unlock it for you.
|
||||
Jan Jan
|
||||
January January
|
||||
Join # channel Join # channel
|
||||
Join Public channel Join Public channel
|
||||
Jul Jul
|
||||
July July
|
||||
Jun Jun
|
||||
June June
|
||||
Keyboard and input Keyboard and input
|
||||
Keyboard attached.\nRestarting in landscape in %d s. Keyboard attached.\nRestarting in landscape in %d s.
|
||||
Large Large
|
||||
Launcher Launcher
|
||||
Launcher layout Launcher layout
|
||||
Locks when screen off\n(hold the BOOT button to unlock) Locks when screen off\n(hold the BOOT button to unlock)
|
||||
Map and GPS Map and GPS
|
||||
Map tiles Map tiles
|
||||
Mar Mar
|
||||
March March
|
||||
Mark all as read Mark all as read
|
||||
May May
|
||||
Mentions Mentions
|
||||
Mentions muted Mentions muted
|
||||
Mentions unmuted Mentions unmuted
|
||||
Mesh · 24 h Mesh · 24 h
|
||||
Message %s Message %s
|
||||
Message text on lock screen Message text on lock screen
|
||||
Messages muted Messages muted
|
||||
Messages unmuted Messages unmuted
|
||||
Minutes Minutes
|
||||
Mon Mon
|
||||
Monday Monday
|
||||
Mute mentions Mute mentions
|
||||
Mute messages Mute messages
|
||||
Navigate Navigate
|
||||
Never Never
|
||||
New PIN New PIN
|
||||
No backups available to restore. No backups available to restore.
|
||||
No backups yet. Use Export Backup above to create one. No backups yet. Use Export Backup above to create one.
|
||||
No channels yet No channels yet
|
||||
No direct chats yet No direct chats yet
|
||||
Normal\nLarge text\nHuge text Normal\nLarge text\nHuge text
|
||||
Not delivered, tap to resend Not delivered, tap to resend
|
||||
Nov Nov
|
||||
November November
|
||||
Oct Oct
|
||||
October October
|
||||
On On
|
||||
On battery, show it for On battery, show it for
|
||||
PIN changed PIN changed
|
||||
PIN lock PIN lock
|
||||
PIN lock off PIN lock off
|
||||
PIN lock on PIN lock on
|
||||
Phone-app link Phone-app link
|
||||
Pick the numbers, or type the PIN Pick the numbers, or type the PIN
|
||||
Preview screensaver Preview screensaver
|
||||
Radio and messaging Radio and messaging
|
||||
Reboot Now Reboot Now
|
||||
Received %s Received %s
|
||||
Receiving %s Receiving %s
|
||||
Region not saved: use a-z, 0-9 and - Region not saved: use a-z, 0-9 and -
|
||||
Remote Remote
|
||||
Repeater Repeater
|
||||
Report a bug Report a bug
|
||||
Reset chat icon Reset chat icon
|
||||
Room Room
|
||||
Routed Routed
|
||||
Running it for Running it for
|
||||
Running it for: Running it for:
|
||||
SD card SD card
|
||||
SD unavailable - insert a FAT32 card and retry SD unavailable - insert a FAT32 card and retry
|
||||
Sat Sat
|
||||
Saturday Saturday
|
||||
Say whether this build works on your board, so a stable release is promoted on evidence rather than on nobody having complained. A bug report opens as a QR: scan it and file it from your phone, under your own GitHub account. Say whether this build works on your board, so a stable release is promoted on evidence rather than on nobody having complained. A bug report opens as a QR: scan it and file it from your phone, under your own GitHub account.
|
||||
Screen timeout Screen timeout
|
||||
Screensaver Screensaver
|
||||
Scroll Scroll
|
||||
Scroll moves the screen; Cursor points and clicks; Navigate (experimental) moves a selection. Hold the trackball to switch between Scroll and Cursor. Scroll moves the screen; Cursor points and clicks; Navigate (experimental) moves a selection. Hold the trackball to switch between Scroll and Cursor.
|
||||
Send Send
|
||||
Send a test report Send a test report
|
||||
Send another test report Send another test report
|
||||
Sending %s Sending %s
|
||||
Sending your report... Sending your report...
|
||||
Sensor Sensor
|
||||
Sep Sep
|
||||
September September
|
||||
Share my contact Share my contact
|
||||
Spectrum Spectrum
|
||||
Stop USB Files Stop USB Files
|
||||
Storage and SD Storage and SD
|
||||
Sun Sun
|
||||
Sunday Sunday
|
||||
Tap the EN key on the keyboard to switch Tap the EN key on the keyboard to switch
|
||||
Tells the matrix how many devices run this build, so a board with no reports can be told apart from a board nobody owns. Sends the board and the version, nothing else. Tells the matrix how many devices run this build, so a board with no reports can be told apart from a board nobody owns. Sends the board and the version, nothing else.
|
||||
Terminal Terminal
|
||||
Test report: %s Test report: %s
|
||||
Thank you. Your report is on wadamesh.com/beta Thank you. Your report is on wadamesh.com/beta
|
||||
The PINs did not match The PINs did not match
|
||||
The mesh around you instead of a dark screen. Every ring is a real packet. The mesh around you instead of a dark screen. Every ring is a real packet.
|
||||
This is everything that leaves the device. No name, no contacts, no position. This is everything that leaves the device. No name, no contacts, no position.
|
||||
Thu Thu
|
||||
Thursday Thursday
|
||||
Tick only what you actually used: Tick only what you actually used:
|
||||
Too many chat icons Too many chat icons
|
||||
Too many tries. Wait %u s Too many tries. Wait %u s
|
||||
Trackball Trackball
|
||||
Trackball: scroll Trackball: scroll
|
||||
Transfer Transfer
|
||||
Tue Tue
|
||||
Tuesday Tuesday
|
||||
Turn Wi-Fi on to send a report Turn Wi-Fi on to send a report
|
||||
Type 4 numbers or letters Type 4 numbers or letters
|
||||
USB Files USB Files
|
||||
USB Files: low memory USB Files: low memory
|
||||
Unmute mentions Unmute mentions
|
||||
Unmute messages Unmute messages
|
||||
Upload of %s stopped Upload of %s stopped
|
||||
Used Used
|
||||
VNC VNC
|
||||
Waiting for the computer Waiting for the computer
|
||||
Web Web
|
||||
Wed Wed
|
||||
Wednesday Wednesday
|
||||
While this screen is open, the companion app cannot use USB. While this screen is open, the companion app cannot use USB.
|
||||
Works Works
|
||||
Wrong PIN Wrong PIN
|
||||
You: You:
|
||||
a week or more a week or more
|
||||
about a day about a day
|
||||
heard %s ago heard %s ago
|
||||
hold the BOOT button to unlock hold the BOOT button to unlock
|
||||
hop away hop away
|
||||
hops away hops away
|
||||
minutes minutes
|
||||
new new
|
||||
node node
|
||||
nodes nodes
|
||||
now now
|
||||
routed routed
|
||||
# Theme page and colour looks: new strings, English placeholders until translated (value = key)
|
||||
A colour for every section, coloured status icons, names and glyphs in their own hue. A colour for every section, coloured status icons, names and glyphs in their own hue.
|
||||
Apply and restart Apply and restart
|
||||
Applying the theme, restarting… Applying the theme, restarting…
|
||||
Bubbles in colour Bubbles in colour
|
||||
Bubbles plain Bubbles plain
|
||||
Chat icons Chat icons
|
||||
Colourful bubbles Colourful bubbles
|
||||
Custom Custom
|
||||
Every app and page its own colour, with a little motion. Every app and page its own colour, with a little motion.
|
||||
Black and white with heavy outlines, for bright sun or low vision. Black and white with heavy outlines, for bright sun or low vision.
|
||||
Glyphs Glyphs
|
||||
High contrast keeps its own fixed colours. High contrast keeps its own fixed colours.
|
||||
Initials Initials
|
||||
MORE COLORS! MORE COLORS!
|
||||
Mode Mode
|
||||
Names are always in colour; this colours the bubbles too. Names are always in colour; this colours the bubbles too.
|
||||
Neon Neon
|
||||
On my way On my way
|
||||
Pastel Pastel
|
||||
Preview Preview
|
||||
Rainbow Rainbow
|
||||
Regular Regular
|
||||
Ridge at six? Ridge at six?
|
||||
Taste the rainbow Taste the rainbow
|
||||
Use this colour Use this colour
|
||||
@@ -1,7 +1,7 @@
|
||||
# wadamesh language file
|
||||
# canonical source - translators: edit this file and PR it
|
||||
# code: el
|
||||
# ver: 22
|
||||
# ver: 23
|
||||
# name: Ελληνικά
|
||||
# base: el
|
||||
(device behind) (συσκευή πίσω)
|
||||
@@ -34,9 +34,14 @@ Accent popups: off Αναδυόμενα τόνων: όχι
|
||||
Accent popups: on Αναδυόμενα τόνων: ναι
|
||||
Accent colour Χρώμα έμφασης
|
||||
Appearance Εμφάνιση
|
||||
Condense Nav (restart to apply) Συμπαγής πλοήγηση (επανεκκίνηση για εφαρμογή)
|
||||
Condense Nav saved — restart to apply Η συμπαγής πλοήγηση αποθηκεύτηκε — επανεκκίνηση για εφαρμογή
|
||||
Day Ημέρα
|
||||
High contrast Υψηλή αντίθεση
|
||||
High contrast - restarting to apply it… Υψηλή αντίθεση - επανεκκίνηση για εφαρμογή…
|
||||
Keyboard nav: on Πλοήγηση πληκτρ.: ανοιχτό
|
||||
Landscape only Μόνο σε οριζόντιο προσανατολισμό
|
||||
Letters move the highlight when no text field is focused. Enter selects; hold Backspace to go back. Τα γράμματα μετακινούν την επισήμανση όταν δεν είναι ενεργό πεδίο κειμένου. Το Enter επιλέγει· κρατήστε το Backspace για επιστροφή.
|
||||
Night Νύχτα
|
||||
Theme save failed Αποτυχία αποθήκευσης θέματος
|
||||
Ack Ack
|
||||
@@ -1282,3 +1287,234 @@ No known Windows malware found. No known Windows malware found.
|
||||
This firmware can find these but not remove them. Update wadamesh, or format the card: in Files, hold the SD card row. This firmware can find these but not remove them. Update wadamesh, or format the card: in Files, hold the SD card row.
|
||||
SD Scan only removes files it recognises. If the card may be infected, the safest fix is to copy off what you need and format it completely: in Files, hold the SD card row. SD Scan only removes files it recognises. If the card may be infected, the safest fix is to copy off what you need and format it completely: in Files, hold the SD card row.
|
||||
and %d more and %d more
|
||||
# beta_89: new strings, English placeholders until translated (value = key)
|
||||
%d nodes heard today %d nodes heard today
|
||||
%lu packets heard %lu packets heard
|
||||
1 node heard today 1 node heard today
|
||||
1 packet heard 1 packet heard
|
||||
1. Connect this device to the computer with a USB cable.\n2. Open this address in Chrome or Edge: 1. Connect this device to the computer with a USB cable.\n2. Open this address in Chrome or Edge:
|
||||
3. Click Connect and choose this device. 3. Click Connect and choose this device.
|
||||
4 numbers or letters 4 numbers or letters
|
||||
A day A day
|
||||
A week A week
|
||||
Add a channel Add a channel
|
||||
Add, download or delete files on this device from a computer. Add, download or delete files on this device from a computer.
|
||||
Advertise Advertise
|
||||
Always on when connected to power Always on when connected to power
|
||||
Anything worth saying (optional) Anything worth saying (optional)
|
||||
App drawer App drawer
|
||||
App icons App icons
|
||||
Append timestamp Append timestamp
|
||||
Apr Apr
|
||||
April April
|
||||
Asks for 4 numbers or letters to unlock, and locks whenever the screen goes off. If you forget it, the only way back in is to reset the device, which erases everything on it. Asks for 4 numbers or letters to unlock, and locks whenever the screen goes off. If you forget it, the only way back in is to reset the device, which erases everything on it.
|
||||
Aug Aug
|
||||
August August
|
||||
Blocked Blocked
|
||||
Change PIN Change PIN
|
||||
Channel Channel
|
||||
Channels Channels
|
||||
Chat Chat
|
||||
Chat icon reset Chat icon reset
|
||||
Chats Chats
|
||||
Choose a PIN Choose a PIN
|
||||
Clock not set Clock not set
|
||||
Cmdr Cmdr
|
||||
Commander Commander
|
||||
Companion Companion
|
||||
Connected to the computer Connected to the computer
|
||||
Could not send the report. Try again later. Could not send the report. Try again later.
|
||||
Count this device Count this device
|
||||
Current PIN Current PIN
|
||||
Cursor Cursor
|
||||
Dec Dec
|
||||
December December
|
||||
Delete this conversation? Delete this conversation?
|
||||
Device id Device id
|
||||
Direct Direct
|
||||
Direct message Direct message
|
||||
Direct, no repeaters Direct, no repeaters
|
||||
Discover Discover
|
||||
Double-tap SPACE while typing to switch Double-tap SPACE while typing to switch
|
||||
Emoji Emoji
|
||||
Enter PIN Enter PIN
|
||||
Enter it again Enter it again
|
||||
Export Backup Export Backup
|
||||
Feb Feb
|
||||
February February
|
||||
Fri Fri
|
||||
Friday Friday
|
||||
Has a problem Has a problem
|
||||
Heard by %u repeaters Heard by %u repeaters
|
||||
Heard by 1 repeater Heard by 1 repeater
|
||||
Hold the trackball to switch Hold the trackball to switch
|
||||
Home button opens Home button opens
|
||||
I hit a problem I hit a problem
|
||||
I understand I understand
|
||||
If you forget your PIN, you have to reset the device If you forget your PIN, you have to reset the device
|
||||
Internal Internal
|
||||
It is the only way back in, and it erases everything on it: contacts, channels, messages and settings. Nobody can unlock it for you. It is the only way back in, and it erases everything on it: contacts, channels, messages and settings. Nobody can unlock it for you.
|
||||
Jan Jan
|
||||
January January
|
||||
Join # channel Join # channel
|
||||
Join Public channel Join Public channel
|
||||
Jul Jul
|
||||
July July
|
||||
Jun Jun
|
||||
June June
|
||||
Keyboard and input Keyboard and input
|
||||
Keyboard attached.\nRestarting in landscape in %d s. Keyboard attached.\nRestarting in landscape in %d s.
|
||||
Large Large
|
||||
Launcher Launcher
|
||||
Launcher layout Launcher layout
|
||||
Locks when screen off\n(hold the BOOT button to unlock) Locks when screen off\n(hold the BOOT button to unlock)
|
||||
Map and GPS Map and GPS
|
||||
Map tiles Map tiles
|
||||
Mar Mar
|
||||
March March
|
||||
Mark all as read Mark all as read
|
||||
May May
|
||||
Mentions Mentions
|
||||
Mentions muted Mentions muted
|
||||
Mentions unmuted Mentions unmuted
|
||||
Mesh · 24 h Mesh · 24 h
|
||||
Message %s Message %s
|
||||
Message text on lock screen Message text on lock screen
|
||||
Messages muted Messages muted
|
||||
Messages unmuted Messages unmuted
|
||||
Minutes Minutes
|
||||
Mon Mon
|
||||
Monday Monday
|
||||
Mute mentions Mute mentions
|
||||
Mute messages Mute messages
|
||||
Navigate Navigate
|
||||
Never Never
|
||||
New PIN New PIN
|
||||
No backups available to restore. No backups available to restore.
|
||||
No backups yet. Use Export Backup above to create one. No backups yet. Use Export Backup above to create one.
|
||||
No channels yet No channels yet
|
||||
No direct chats yet No direct chats yet
|
||||
Normal\nLarge text\nHuge text Normal\nLarge text\nHuge text
|
||||
Not delivered, tap to resend Not delivered, tap to resend
|
||||
Nov Nov
|
||||
November November
|
||||
Oct Oct
|
||||
October October
|
||||
On On
|
||||
On battery, show it for On battery, show it for
|
||||
PIN changed PIN changed
|
||||
PIN lock PIN lock
|
||||
PIN lock off PIN lock off
|
||||
PIN lock on PIN lock on
|
||||
Phone-app link Phone-app link
|
||||
Pick the numbers, or type the PIN Pick the numbers, or type the PIN
|
||||
Preview screensaver Preview screensaver
|
||||
Radio and messaging Radio and messaging
|
||||
Reboot Now Reboot Now
|
||||
Received %s Received %s
|
||||
Receiving %s Receiving %s
|
||||
Region not saved: use a-z, 0-9 and - Region not saved: use a-z, 0-9 and -
|
||||
Remote Remote
|
||||
Repeater Repeater
|
||||
Report a bug Report a bug
|
||||
Reset chat icon Reset chat icon
|
||||
Room Room
|
||||
Routed Routed
|
||||
Running it for Running it for
|
||||
Running it for: Running it for:
|
||||
SD card SD card
|
||||
SD unavailable - insert a FAT32 card and retry SD unavailable - insert a FAT32 card and retry
|
||||
Sat Sat
|
||||
Saturday Saturday
|
||||
Say whether this build works on your board, so a stable release is promoted on evidence rather than on nobody having complained. A bug report opens as a QR: scan it and file it from your phone, under your own GitHub account. Say whether this build works on your board, so a stable release is promoted on evidence rather than on nobody having complained. A bug report opens as a QR: scan it and file it from your phone, under your own GitHub account.
|
||||
Screen timeout Screen timeout
|
||||
Screensaver Screensaver
|
||||
Scroll Scroll
|
||||
Scroll moves the screen; Cursor points and clicks; Navigate (experimental) moves a selection. Hold the trackball to switch between Scroll and Cursor. Scroll moves the screen; Cursor points and clicks; Navigate (experimental) moves a selection. Hold the trackball to switch between Scroll and Cursor.
|
||||
Send Send
|
||||
Send a test report Send a test report
|
||||
Send another test report Send another test report
|
||||
Sending %s Sending %s
|
||||
Sending your report... Sending your report...
|
||||
Sensor Sensor
|
||||
Sep Sep
|
||||
September September
|
||||
Share my contact Share my contact
|
||||
Spectrum Spectrum
|
||||
Stop USB Files Stop USB Files
|
||||
Storage and SD Storage and SD
|
||||
Sun Sun
|
||||
Sunday Sunday
|
||||
Tap the EN key on the keyboard to switch Tap the EN key on the keyboard to switch
|
||||
Tells the matrix how many devices run this build, so a board with no reports can be told apart from a board nobody owns. Sends the board and the version, nothing else. Tells the matrix how many devices run this build, so a board with no reports can be told apart from a board nobody owns. Sends the board and the version, nothing else.
|
||||
Terminal Terminal
|
||||
Test report: %s Test report: %s
|
||||
Thank you. Your report is on wadamesh.com/beta Thank you. Your report is on wadamesh.com/beta
|
||||
The PINs did not match The PINs did not match
|
||||
The mesh around you instead of a dark screen. Every ring is a real packet. The mesh around you instead of a dark screen. Every ring is a real packet.
|
||||
This is everything that leaves the device. No name, no contacts, no position. This is everything that leaves the device. No name, no contacts, no position.
|
||||
Thu Thu
|
||||
Thursday Thursday
|
||||
Tick only what you actually used: Tick only what you actually used:
|
||||
Too many chat icons Too many chat icons
|
||||
Too many tries. Wait %u s Too many tries. Wait %u s
|
||||
Trackball Trackball
|
||||
Trackball: scroll Trackball: scroll
|
||||
Transfer Transfer
|
||||
Tue Tue
|
||||
Tuesday Tuesday
|
||||
Turn Wi-Fi on to send a report Turn Wi-Fi on to send a report
|
||||
Type 4 numbers or letters Type 4 numbers or letters
|
||||
USB Files USB Files
|
||||
USB Files: low memory USB Files: low memory
|
||||
Unmute mentions Unmute mentions
|
||||
Unmute messages Unmute messages
|
||||
Upload of %s stopped Upload of %s stopped
|
||||
Used Used
|
||||
VNC VNC
|
||||
Waiting for the computer Waiting for the computer
|
||||
Web Web
|
||||
Wed Wed
|
||||
Wednesday Wednesday
|
||||
While this screen is open, the companion app cannot use USB. While this screen is open, the companion app cannot use USB.
|
||||
Works Works
|
||||
Wrong PIN Wrong PIN
|
||||
You: You:
|
||||
a week or more a week or more
|
||||
about a day about a day
|
||||
heard %s ago heard %s ago
|
||||
hold the BOOT button to unlock hold the BOOT button to unlock
|
||||
hop away hop away
|
||||
hops away hops away
|
||||
minutes minutes
|
||||
new new
|
||||
node node
|
||||
nodes nodes
|
||||
now now
|
||||
routed routed
|
||||
# Theme page and colour looks: new strings, English placeholders until translated (value = key)
|
||||
A colour for every section, coloured status icons, names and glyphs in their own hue. A colour for every section, coloured status icons, names and glyphs in their own hue.
|
||||
Apply and restart Apply and restart
|
||||
Applying the theme, restarting… Applying the theme, restarting…
|
||||
Bubbles in colour Bubbles in colour
|
||||
Bubbles plain Bubbles plain
|
||||
Chat icons Chat icons
|
||||
Colourful bubbles Colourful bubbles
|
||||
Custom Custom
|
||||
Every app and page its own colour, with a little motion. Every app and page its own colour, with a little motion.
|
||||
Black and white with heavy outlines, for bright sun or low vision. Black and white with heavy outlines, for bright sun or low vision.
|
||||
Glyphs Glyphs
|
||||
High contrast keeps its own fixed colours. High contrast keeps its own fixed colours.
|
||||
Initials Initials
|
||||
MORE COLORS! MORE COLORS!
|
||||
Mode Mode
|
||||
Names are always in colour; this colours the bubbles too. Names are always in colour; this colours the bubbles too.
|
||||
Neon Neon
|
||||
On my way On my way
|
||||
Pastel Pastel
|
||||
Preview Preview
|
||||
Rainbow Rainbow
|
||||
Regular Regular
|
||||
Ridge at six? Ridge at six?
|
||||
Taste the rainbow Taste the rainbow
|
||||
Use this colour Use this colour
|
||||
@@ -1,7 +1,7 @@
|
||||
# wadamesh language file
|
||||
# canonical source - translators: edit this file and PR it
|
||||
# code: es
|
||||
# ver: 22
|
||||
# ver: 23
|
||||
# name: Español
|
||||
# base: es
|
||||
(device behind) (dispositivo atrasado)
|
||||
@@ -34,9 +34,14 @@ Accent popups: off Ventanas de acentos: desactivado
|
||||
Accent popups: on Ventanas de acentos: activado
|
||||
Accent colour Color de acento
|
||||
Appearance Apariencia
|
||||
Condense Nav (restart to apply) Navegación compacta (reiniciar para aplicar)
|
||||
Condense Nav saved — restart to apply Navegación compacta guardada — reinicia para aplicar
|
||||
Day Día
|
||||
High contrast Alto contraste
|
||||
High contrast - restarting to apply it… Alto contraste - reiniciando para aplicarlo…
|
||||
Keyboard nav: on Nav. teclado: activ.
|
||||
Landscape only Solo en horizontal
|
||||
Letters move the highlight when no text field is focused. Enter selects; hold Backspace to go back. Las letras mueven el resaltado cuando no hay un campo de texto activo. Intro selecciona; mantén Retroceso para volver.
|
||||
Night Noche
|
||||
Theme save failed No se pudo guardar el tema
|
||||
Ack Ack
|
||||
@@ -1282,3 +1287,234 @@ No known Windows malware found. No known Windows malware found.
|
||||
This firmware can find these but not remove them. Update wadamesh, or format the card: in Files, hold the SD card row. This firmware can find these but not remove them. Update wadamesh, or format the card: in Files, hold the SD card row.
|
||||
SD Scan only removes files it recognises. If the card may be infected, the safest fix is to copy off what you need and format it completely: in Files, hold the SD card row. SD Scan only removes files it recognises. If the card may be infected, the safest fix is to copy off what you need and format it completely: in Files, hold the SD card row.
|
||||
and %d more and %d more
|
||||
# beta_89: new strings, English placeholders until translated (value = key)
|
||||
%d nodes heard today %d nodes heard today
|
||||
%lu packets heard %lu packets heard
|
||||
1 node heard today 1 node heard today
|
||||
1 packet heard 1 packet heard
|
||||
1. Connect this device to the computer with a USB cable.\n2. Open this address in Chrome or Edge: 1. Connect this device to the computer with a USB cable.\n2. Open this address in Chrome or Edge:
|
||||
3. Click Connect and choose this device. 3. Click Connect and choose this device.
|
||||
4 numbers or letters 4 numbers or letters
|
||||
A day A day
|
||||
A week A week
|
||||
Add a channel Add a channel
|
||||
Add, download or delete files on this device from a computer. Add, download or delete files on this device from a computer.
|
||||
Advertise Advertise
|
||||
Always on when connected to power Always on when connected to power
|
||||
Anything worth saying (optional) Anything worth saying (optional)
|
||||
App drawer App drawer
|
||||
App icons App icons
|
||||
Append timestamp Append timestamp
|
||||
Apr Apr
|
||||
April April
|
||||
Asks for 4 numbers or letters to unlock, and locks whenever the screen goes off. If you forget it, the only way back in is to reset the device, which erases everything on it. Asks for 4 numbers or letters to unlock, and locks whenever the screen goes off. If you forget it, the only way back in is to reset the device, which erases everything on it.
|
||||
Aug Aug
|
||||
August August
|
||||
Blocked Blocked
|
||||
Change PIN Change PIN
|
||||
Channel Channel
|
||||
Channels Channels
|
||||
Chat Chat
|
||||
Chat icon reset Chat icon reset
|
||||
Chats Chats
|
||||
Choose a PIN Choose a PIN
|
||||
Clock not set Clock not set
|
||||
Cmdr Cmdr
|
||||
Commander Commander
|
||||
Companion Companion
|
||||
Connected to the computer Connected to the computer
|
||||
Could not send the report. Try again later. Could not send the report. Try again later.
|
||||
Count this device Count this device
|
||||
Current PIN Current PIN
|
||||
Cursor Cursor
|
||||
Dec Dec
|
||||
December December
|
||||
Delete this conversation? Delete this conversation?
|
||||
Device id Device id
|
||||
Direct Direct
|
||||
Direct message Direct message
|
||||
Direct, no repeaters Direct, no repeaters
|
||||
Discover Discover
|
||||
Double-tap SPACE while typing to switch Double-tap SPACE while typing to switch
|
||||
Emoji Emoji
|
||||
Enter PIN Enter PIN
|
||||
Enter it again Enter it again
|
||||
Export Backup Export Backup
|
||||
Feb Feb
|
||||
February February
|
||||
Fri Fri
|
||||
Friday Friday
|
||||
Has a problem Has a problem
|
||||
Heard by %u repeaters Heard by %u repeaters
|
||||
Heard by 1 repeater Heard by 1 repeater
|
||||
Hold the trackball to switch Hold the trackball to switch
|
||||
Home button opens Home button opens
|
||||
I hit a problem I hit a problem
|
||||
I understand I understand
|
||||
If you forget your PIN, you have to reset the device If you forget your PIN, you have to reset the device
|
||||
Internal Internal
|
||||
It is the only way back in, and it erases everything on it: contacts, channels, messages and settings. Nobody can unlock it for you. It is the only way back in, and it erases everything on it: contacts, channels, messages and settings. Nobody can unlock it for you.
|
||||
Jan Jan
|
||||
January January
|
||||
Join # channel Join # channel
|
||||
Join Public channel Join Public channel
|
||||
Jul Jul
|
||||
July July
|
||||
Jun Jun
|
||||
June June
|
||||
Keyboard and input Keyboard and input
|
||||
Keyboard attached.\nRestarting in landscape in %d s. Keyboard attached.\nRestarting in landscape in %d s.
|
||||
Large Large
|
||||
Launcher Launcher
|
||||
Launcher layout Launcher layout
|
||||
Locks when screen off\n(hold the BOOT button to unlock) Locks when screen off\n(hold the BOOT button to unlock)
|
||||
Map and GPS Map and GPS
|
||||
Map tiles Map tiles
|
||||
Mar Mar
|
||||
March March
|
||||
Mark all as read Mark all as read
|
||||
May May
|
||||
Mentions Mentions
|
||||
Mentions muted Mentions muted
|
||||
Mentions unmuted Mentions unmuted
|
||||
Mesh · 24 h Mesh · 24 h
|
||||
Message %s Message %s
|
||||
Message text on lock screen Message text on lock screen
|
||||
Messages muted Messages muted
|
||||
Messages unmuted Messages unmuted
|
||||
Minutes Minutes
|
||||
Mon Mon
|
||||
Monday Monday
|
||||
Mute mentions Mute mentions
|
||||
Mute messages Mute messages
|
||||
Navigate Navigate
|
||||
Never Never
|
||||
New PIN New PIN
|
||||
No backups available to restore. No backups available to restore.
|
||||
No backups yet. Use Export Backup above to create one. No backups yet. Use Export Backup above to create one.
|
||||
No channels yet No channels yet
|
||||
No direct chats yet No direct chats yet
|
||||
Normal\nLarge text\nHuge text Normal\nLarge text\nHuge text
|
||||
Not delivered, tap to resend Not delivered, tap to resend
|
||||
Nov Nov
|
||||
November November
|
||||
Oct Oct
|
||||
October October
|
||||
On On
|
||||
On battery, show it for On battery, show it for
|
||||
PIN changed PIN changed
|
||||
PIN lock PIN lock
|
||||
PIN lock off PIN lock off
|
||||
PIN lock on PIN lock on
|
||||
Phone-app link Phone-app link
|
||||
Pick the numbers, or type the PIN Pick the numbers, or type the PIN
|
||||
Preview screensaver Preview screensaver
|
||||
Radio and messaging Radio and messaging
|
||||
Reboot Now Reboot Now
|
||||
Received %s Received %s
|
||||
Receiving %s Receiving %s
|
||||
Region not saved: use a-z, 0-9 and - Region not saved: use a-z, 0-9 and -
|
||||
Remote Remote
|
||||
Repeater Repeater
|
||||
Report a bug Report a bug
|
||||
Reset chat icon Reset chat icon
|
||||
Room Room
|
||||
Routed Routed
|
||||
Running it for Running it for
|
||||
Running it for: Running it for:
|
||||
SD card SD card
|
||||
SD unavailable - insert a FAT32 card and retry SD unavailable - insert a FAT32 card and retry
|
||||
Sat Sat
|
||||
Saturday Saturday
|
||||
Say whether this build works on your board, so a stable release is promoted on evidence rather than on nobody having complained. A bug report opens as a QR: scan it and file it from your phone, under your own GitHub account. Say whether this build works on your board, so a stable release is promoted on evidence rather than on nobody having complained. A bug report opens as a QR: scan it and file it from your phone, under your own GitHub account.
|
||||
Screen timeout Screen timeout
|
||||
Screensaver Screensaver
|
||||
Scroll Scroll
|
||||
Scroll moves the screen; Cursor points and clicks; Navigate (experimental) moves a selection. Hold the trackball to switch between Scroll and Cursor. Scroll moves the screen; Cursor points and clicks; Navigate (experimental) moves a selection. Hold the trackball to switch between Scroll and Cursor.
|
||||
Send Send
|
||||
Send a test report Send a test report
|
||||
Send another test report Send another test report
|
||||
Sending %s Sending %s
|
||||
Sending your report... Sending your report...
|
||||
Sensor Sensor
|
||||
Sep Sep
|
||||
September September
|
||||
Share my contact Share my contact
|
||||
Spectrum Spectrum
|
||||
Stop USB Files Stop USB Files
|
||||
Storage and SD Storage and SD
|
||||
Sun Sun
|
||||
Sunday Sunday
|
||||
Tap the EN key on the keyboard to switch Tap the EN key on the keyboard to switch
|
||||
Tells the matrix how many devices run this build, so a board with no reports can be told apart from a board nobody owns. Sends the board and the version, nothing else. Tells the matrix how many devices run this build, so a board with no reports can be told apart from a board nobody owns. Sends the board and the version, nothing else.
|
||||
Terminal Terminal
|
||||
Test report: %s Test report: %s
|
||||
Thank you. Your report is on wadamesh.com/beta Thank you. Your report is on wadamesh.com/beta
|
||||
The PINs did not match The PINs did not match
|
||||
The mesh around you instead of a dark screen. Every ring is a real packet. The mesh around you instead of a dark screen. Every ring is a real packet.
|
||||
This is everything that leaves the device. No name, no contacts, no position. This is everything that leaves the device. No name, no contacts, no position.
|
||||
Thu Thu
|
||||
Thursday Thursday
|
||||
Tick only what you actually used: Tick only what you actually used:
|
||||
Too many chat icons Too many chat icons
|
||||
Too many tries. Wait %u s Too many tries. Wait %u s
|
||||
Trackball Trackball
|
||||
Trackball: scroll Trackball: scroll
|
||||
Transfer Transfer
|
||||
Tue Tue
|
||||
Tuesday Tuesday
|
||||
Turn Wi-Fi on to send a report Turn Wi-Fi on to send a report
|
||||
Type 4 numbers or letters Type 4 numbers or letters
|
||||
USB Files USB Files
|
||||
USB Files: low memory USB Files: low memory
|
||||
Unmute mentions Unmute mentions
|
||||
Unmute messages Unmute messages
|
||||
Upload of %s stopped Upload of %s stopped
|
||||
Used Used
|
||||
VNC VNC
|
||||
Waiting for the computer Waiting for the computer
|
||||
Web Web
|
||||
Wed Wed
|
||||
Wednesday Wednesday
|
||||
While this screen is open, the companion app cannot use USB. While this screen is open, the companion app cannot use USB.
|
||||
Works Works
|
||||
Wrong PIN Wrong PIN
|
||||
You: You:
|
||||
a week or more a week or more
|
||||
about a day about a day
|
||||
heard %s ago heard %s ago
|
||||
hold the BOOT button to unlock hold the BOOT button to unlock
|
||||
hop away hop away
|
||||
hops away hops away
|
||||
minutes minutes
|
||||
new new
|
||||
node node
|
||||
nodes nodes
|
||||
now now
|
||||
routed routed
|
||||
# Theme page and colour looks: new strings, English placeholders until translated (value = key)
|
||||
A colour for every section, coloured status icons, names and glyphs in their own hue. A colour for every section, coloured status icons, names and glyphs in their own hue.
|
||||
Apply and restart Apply and restart
|
||||
Applying the theme, restarting… Applying the theme, restarting…
|
||||
Bubbles in colour Bubbles in colour
|
||||
Bubbles plain Bubbles plain
|
||||
Chat icons Chat icons
|
||||
Colourful bubbles Colourful bubbles
|
||||
Custom Custom
|
||||
Every app and page its own colour, with a little motion. Every app and page its own colour, with a little motion.
|
||||
Black and white with heavy outlines, for bright sun or low vision. Black and white with heavy outlines, for bright sun or low vision.
|
||||
Glyphs Glyphs
|
||||
High contrast keeps its own fixed colours. High contrast keeps its own fixed colours.
|
||||
Initials Initials
|
||||
MORE COLORS! MORE COLORS!
|
||||
Mode Mode
|
||||
Names are always in colour; this colours the bubbles too. Names are always in colour; this colours the bubbles too.
|
||||
Neon Neon
|
||||
On my way On my way
|
||||
Pastel Pastel
|
||||
Preview Preview
|
||||
Rainbow Rainbow
|
||||
Regular Regular
|
||||
Ridge at six? Ridge at six?
|
||||
Taste the rainbow Taste the rainbow
|
||||
Use this colour Use this colour
|
||||
@@ -1,7 +1,7 @@
|
||||
# wadamesh language file
|
||||
# canonical source - translators: edit this file and PR it
|
||||
# code: fr
|
||||
# ver: 22
|
||||
# ver: 23
|
||||
# name: Français
|
||||
# base: fr
|
||||
(device behind) (appareil en retard)
|
||||
@@ -34,9 +34,14 @@ Accent popups: off Fenêtres d'accents : désactivé
|
||||
Accent popups: on Fenêtres d'accents : activé
|
||||
Accent colour Couleur d'accent
|
||||
Appearance Apparence
|
||||
Condense Nav (restart to apply) Navigation compacte (redémarrer pour appliquer)
|
||||
Condense Nav saved — restart to apply Navigation compacte enregistrée — redémarrez pour appliquer
|
||||
Day Jour
|
||||
High contrast Contraste élevé
|
||||
High contrast - restarting to apply it… Contraste élevé - redémarrage pour l'appliquer…
|
||||
Keyboard nav: on Nav. clavier : activé
|
||||
Landscape only Paysage uniquement
|
||||
Letters move the highlight when no text field is focused. Enter selects; hold Backspace to go back. Les lettres déplacent la sélection quand aucun champ de texte n'est actif. Entrée sélectionne ; maintenez Retour arrière pour revenir.
|
||||
Night Nuit
|
||||
Theme save failed Échec de l’enregistrement du thème
|
||||
Ack Accusé
|
||||
@@ -1281,3 +1286,234 @@ No known Windows malware found. No known Windows malware found.
|
||||
This firmware can find these but not remove them. Update wadamesh, or format the card: in Files, hold the SD card row. This firmware can find these but not remove them. Update wadamesh, or format the card: in Files, hold the SD card row.
|
||||
SD Scan only removes files it recognises. If the card may be infected, the safest fix is to copy off what you need and format it completely: in Files, hold the SD card row. SD Scan only removes files it recognises. If the card may be infected, the safest fix is to copy off what you need and format it completely: in Files, hold the SD card row.
|
||||
and %d more and %d more
|
||||
# beta_89: new strings, English placeholders until translated (value = key)
|
||||
%d nodes heard today %d nodes heard today
|
||||
%lu packets heard %lu packets heard
|
||||
1 node heard today 1 node heard today
|
||||
1 packet heard 1 packet heard
|
||||
1. Connect this device to the computer with a USB cable.\n2. Open this address in Chrome or Edge: 1. Connect this device to the computer with a USB cable.\n2. Open this address in Chrome or Edge:
|
||||
3. Click Connect and choose this device. 3. Click Connect and choose this device.
|
||||
4 numbers or letters 4 numbers or letters
|
||||
A day A day
|
||||
A week A week
|
||||
Add a channel Add a channel
|
||||
Add, download or delete files on this device from a computer. Add, download or delete files on this device from a computer.
|
||||
Advertise Advertise
|
||||
Always on when connected to power Always on when connected to power
|
||||
Anything worth saying (optional) Anything worth saying (optional)
|
||||
App drawer App drawer
|
||||
App icons App icons
|
||||
Append timestamp Append timestamp
|
||||
Apr Apr
|
||||
April April
|
||||
Asks for 4 numbers or letters to unlock, and locks whenever the screen goes off. If you forget it, the only way back in is to reset the device, which erases everything on it. Asks for 4 numbers or letters to unlock, and locks whenever the screen goes off. If you forget it, the only way back in is to reset the device, which erases everything on it.
|
||||
Aug Aug
|
||||
August August
|
||||
Blocked Blocked
|
||||
Change PIN Change PIN
|
||||
Channel Channel
|
||||
Channels Channels
|
||||
Chat Chat
|
||||
Chat icon reset Chat icon reset
|
||||
Chats Chats
|
||||
Choose a PIN Choose a PIN
|
||||
Clock not set Clock not set
|
||||
Cmdr Cmdr
|
||||
Commander Commander
|
||||
Companion Companion
|
||||
Connected to the computer Connected to the computer
|
||||
Could not send the report. Try again later. Could not send the report. Try again later.
|
||||
Count this device Count this device
|
||||
Current PIN Current PIN
|
||||
Cursor Cursor
|
||||
Dec Dec
|
||||
December December
|
||||
Delete this conversation? Delete this conversation?
|
||||
Device id Device id
|
||||
Direct Direct
|
||||
Direct message Direct message
|
||||
Direct, no repeaters Direct, no repeaters
|
||||
Discover Discover
|
||||
Double-tap SPACE while typing to switch Double-tap SPACE while typing to switch
|
||||
Emoji Emoji
|
||||
Enter PIN Enter PIN
|
||||
Enter it again Enter it again
|
||||
Export Backup Export Backup
|
||||
Feb Feb
|
||||
February February
|
||||
Fri Fri
|
||||
Friday Friday
|
||||
Has a problem Has a problem
|
||||
Heard by %u repeaters Heard by %u repeaters
|
||||
Heard by 1 repeater Heard by 1 repeater
|
||||
Hold the trackball to switch Hold the trackball to switch
|
||||
Home button opens Home button opens
|
||||
I hit a problem I hit a problem
|
||||
I understand I understand
|
||||
If you forget your PIN, you have to reset the device If you forget your PIN, you have to reset the device
|
||||
Internal Internal
|
||||
It is the only way back in, and it erases everything on it: contacts, channels, messages and settings. Nobody can unlock it for you. It is the only way back in, and it erases everything on it: contacts, channels, messages and settings. Nobody can unlock it for you.
|
||||
Jan Jan
|
||||
January January
|
||||
Join # channel Join # channel
|
||||
Join Public channel Join Public channel
|
||||
Jul Jul
|
||||
July July
|
||||
Jun Jun
|
||||
June June
|
||||
Keyboard and input Keyboard and input
|
||||
Keyboard attached.\nRestarting in landscape in %d s. Keyboard attached.\nRestarting in landscape in %d s.
|
||||
Large Large
|
||||
Launcher Launcher
|
||||
Launcher layout Launcher layout
|
||||
Locks when screen off\n(hold the BOOT button to unlock) Locks when screen off\n(hold the BOOT button to unlock)
|
||||
Map and GPS Map and GPS
|
||||
Map tiles Map tiles
|
||||
Mar Mar
|
||||
March March
|
||||
Mark all as read Mark all as read
|
||||
May May
|
||||
Mentions Mentions
|
||||
Mentions muted Mentions muted
|
||||
Mentions unmuted Mentions unmuted
|
||||
Mesh · 24 h Mesh · 24 h
|
||||
Message %s Message %s
|
||||
Message text on lock screen Message text on lock screen
|
||||
Messages muted Messages muted
|
||||
Messages unmuted Messages unmuted
|
||||
Minutes Minutes
|
||||
Mon Mon
|
||||
Monday Monday
|
||||
Mute mentions Mute mentions
|
||||
Mute messages Mute messages
|
||||
Navigate Navigate
|
||||
Never Never
|
||||
New PIN New PIN
|
||||
No backups available to restore. No backups available to restore.
|
||||
No backups yet. Use Export Backup above to create one. No backups yet. Use Export Backup above to create one.
|
||||
No channels yet No channels yet
|
||||
No direct chats yet No direct chats yet
|
||||
Normal\nLarge text\nHuge text Normal\nLarge text\nHuge text
|
||||
Not delivered, tap to resend Not delivered, tap to resend
|
||||
Nov Nov
|
||||
November November
|
||||
Oct Oct
|
||||
October October
|
||||
On On
|
||||
On battery, show it for On battery, show it for
|
||||
PIN changed PIN changed
|
||||
PIN lock PIN lock
|
||||
PIN lock off PIN lock off
|
||||
PIN lock on PIN lock on
|
||||
Phone-app link Phone-app link
|
||||
Pick the numbers, or type the PIN Pick the numbers, or type the PIN
|
||||
Preview screensaver Preview screensaver
|
||||
Radio and messaging Radio and messaging
|
||||
Reboot Now Reboot Now
|
||||
Received %s Received %s
|
||||
Receiving %s Receiving %s
|
||||
Region not saved: use a-z, 0-9 and - Region not saved: use a-z, 0-9 and -
|
||||
Remote Remote
|
||||
Repeater Repeater
|
||||
Report a bug Report a bug
|
||||
Reset chat icon Reset chat icon
|
||||
Room Room
|
||||
Routed Routed
|
||||
Running it for Running it for
|
||||
Running it for: Running it for:
|
||||
SD card SD card
|
||||
SD unavailable - insert a FAT32 card and retry SD unavailable - insert a FAT32 card and retry
|
||||
Sat Sat
|
||||
Saturday Saturday
|
||||
Say whether this build works on your board, so a stable release is promoted on evidence rather than on nobody having complained. A bug report opens as a QR: scan it and file it from your phone, under your own GitHub account. Say whether this build works on your board, so a stable release is promoted on evidence rather than on nobody having complained. A bug report opens as a QR: scan it and file it from your phone, under your own GitHub account.
|
||||
Screen timeout Screen timeout
|
||||
Screensaver Screensaver
|
||||
Scroll Scroll
|
||||
Scroll moves the screen; Cursor points and clicks; Navigate (experimental) moves a selection. Hold the trackball to switch between Scroll and Cursor. Scroll moves the screen; Cursor points and clicks; Navigate (experimental) moves a selection. Hold the trackball to switch between Scroll and Cursor.
|
||||
Send Send
|
||||
Send a test report Send a test report
|
||||
Send another test report Send another test report
|
||||
Sending %s Sending %s
|
||||
Sending your report... Sending your report...
|
||||
Sensor Sensor
|
||||
Sep Sep
|
||||
September September
|
||||
Share my contact Share my contact
|
||||
Spectrum Spectrum
|
||||
Stop USB Files Stop USB Files
|
||||
Storage and SD Storage and SD
|
||||
Sun Sun
|
||||
Sunday Sunday
|
||||
Tap the EN key on the keyboard to switch Tap the EN key on the keyboard to switch
|
||||
Tells the matrix how many devices run this build, so a board with no reports can be told apart from a board nobody owns. Sends the board and the version, nothing else. Tells the matrix how many devices run this build, so a board with no reports can be told apart from a board nobody owns. Sends the board and the version, nothing else.
|
||||
Terminal Terminal
|
||||
Test report: %s Test report: %s
|
||||
Thank you. Your report is on wadamesh.com/beta Thank you. Your report is on wadamesh.com/beta
|
||||
The PINs did not match The PINs did not match
|
||||
The mesh around you instead of a dark screen. Every ring is a real packet. The mesh around you instead of a dark screen. Every ring is a real packet.
|
||||
This is everything that leaves the device. No name, no contacts, no position. This is everything that leaves the device. No name, no contacts, no position.
|
||||
Thu Thu
|
||||
Thursday Thursday
|
||||
Tick only what you actually used: Tick only what you actually used:
|
||||
Too many chat icons Too many chat icons
|
||||
Too many tries. Wait %u s Too many tries. Wait %u s
|
||||
Trackball Trackball
|
||||
Trackball: scroll Trackball: scroll
|
||||
Transfer Transfer
|
||||
Tue Tue
|
||||
Tuesday Tuesday
|
||||
Turn Wi-Fi on to send a report Turn Wi-Fi on to send a report
|
||||
Type 4 numbers or letters Type 4 numbers or letters
|
||||
USB Files USB Files
|
||||
USB Files: low memory USB Files: low memory
|
||||
Unmute mentions Unmute mentions
|
||||
Unmute messages Unmute messages
|
||||
Upload of %s stopped Upload of %s stopped
|
||||
Used Used
|
||||
VNC VNC
|
||||
Waiting for the computer Waiting for the computer
|
||||
Web Web
|
||||
Wed Wed
|
||||
Wednesday Wednesday
|
||||
While this screen is open, the companion app cannot use USB. While this screen is open, the companion app cannot use USB.
|
||||
Works Works
|
||||
Wrong PIN Wrong PIN
|
||||
You: You:
|
||||
a week or more a week or more
|
||||
about a day about a day
|
||||
heard %s ago heard %s ago
|
||||
hold the BOOT button to unlock hold the BOOT button to unlock
|
||||
hop away hop away
|
||||
hops away hops away
|
||||
minutes minutes
|
||||
new new
|
||||
node node
|
||||
nodes nodes
|
||||
now now
|
||||
routed routed
|
||||
# Theme page and colour looks: new strings, English placeholders until translated (value = key)
|
||||
A colour for every section, coloured status icons, names and glyphs in their own hue. A colour for every section, coloured status icons, names and glyphs in their own hue.
|
||||
Apply and restart Apply and restart
|
||||
Applying the theme, restarting… Applying the theme, restarting…
|
||||
Bubbles in colour Bubbles in colour
|
||||
Bubbles plain Bubbles plain
|
||||
Chat icons Chat icons
|
||||
Colourful bubbles Colourful bubbles
|
||||
Custom Custom
|
||||
Every app and page its own colour, with a little motion. Every app and page its own colour, with a little motion.
|
||||
Black and white with heavy outlines, for bright sun or low vision. Black and white with heavy outlines, for bright sun or low vision.
|
||||
Glyphs Glyphs
|
||||
High contrast keeps its own fixed colours. High contrast keeps its own fixed colours.
|
||||
Initials Initials
|
||||
MORE COLORS! MORE COLORS!
|
||||
Mode Mode
|
||||
Names are always in colour; this colours the bubbles too. Names are always in colour; this colours the bubbles too.
|
||||
Neon Neon
|
||||
On my way On my way
|
||||
Pastel Pastel
|
||||
Preview Preview
|
||||
Rainbow Rainbow
|
||||
Regular Regular
|
||||
Ridge at six? Ridge at six?
|
||||
Taste the rainbow Taste the rainbow
|
||||
Use this colour Use this colour
|
||||
@@ -1,7 +1,7 @@
|
||||
# wadamesh language file
|
||||
# canonical source - translators: edit this file and PR it
|
||||
# code: hu
|
||||
# ver: 22
|
||||
# ver: 23
|
||||
# name: Magyar
|
||||
# base: hu
|
||||
(device behind) (készülék hátulján)
|
||||
@@ -34,9 +34,14 @@ Accent popups: off Accent popups: kikapcsolva
|
||||
Accent popups: on Accent popups: bekapcsolva
|
||||
Accent colour Kiemelőszín
|
||||
Appearance Megjelenés
|
||||
Condense Nav (restart to apply) Tömör navigáció (újraindítás az alkalmazáshoz)
|
||||
Condense Nav saved — restart to apply Tömör navigáció mentve – indítsa újra az alkalmazáshoz
|
||||
Day Nappali
|
||||
High contrast Nagy kontraszt
|
||||
High contrast - restarting to apply it… Nagy kontraszt - újraindítás az alkalmazáshoz…
|
||||
Keyboard nav: on Billentyűzetnavigáció: bekapcsolva
|
||||
Landscape only Csak fekvő tájolásban
|
||||
Letters move the highlight when no text field is focused. Enter selects; hold Backspace to go back. A betűk mozgatják a kijelölést, ha nincs aktív szövegmező. Az Enter kiválaszt; a Backspace nyomva tartása visszalép.
|
||||
Night Éjszakai
|
||||
Theme save failed Téma mentése sikertelen
|
||||
Ack Ack
|
||||
@@ -1298,3 +1303,229 @@ No known Windows malware found. No known Windows malware found.
|
||||
This firmware can find these but not remove them. Update wadamesh, or format the card: in Files, hold the SD card row. This firmware can find these but not remove them. Update wadamesh, or format the card: in Files, hold the SD card row.
|
||||
SD Scan only removes files it recognises. If the card may be infected, the safest fix is to copy off what you need and format it completely: in Files, hold the SD card row. SD Scan only removes files it recognises. If the card may be infected, the safest fix is to copy off what you need and format it completely: in Files, hold the SD card row.
|
||||
and %d more and %d more
|
||||
# beta_89: new strings, English placeholders until translated (value = key)
|
||||
%d nodes heard today %d nodes heard today
|
||||
%lu packets heard %lu packets heard
|
||||
1 node heard today 1 node heard today
|
||||
1 packet heard 1 packet heard
|
||||
1. Connect this device to the computer with a USB cable.\n2. Open this address in Chrome or Edge: 1. Connect this device to the computer with a USB cable.\n2. Open this address in Chrome or Edge:
|
||||
3. Click Connect and choose this device. 3. Click Connect and choose this device.
|
||||
4 numbers or letters 4 numbers or letters
|
||||
A day A day
|
||||
A week A week
|
||||
Add a channel Add a channel
|
||||
Add, download or delete files on this device from a computer. Add, download or delete files on this device from a computer.
|
||||
Advertise Advertise
|
||||
Always on when connected to power Always on when connected to power
|
||||
Anything worth saying (optional) Anything worth saying (optional)
|
||||
App drawer App drawer
|
||||
App icons App icons
|
||||
Append timestamp Append timestamp
|
||||
Apr Apr
|
||||
April April
|
||||
Asks for 4 numbers or letters to unlock, and locks whenever the screen goes off. If you forget it, the only way back in is to reset the device, which erases everything on it. Asks for 4 numbers or letters to unlock, and locks whenever the screen goes off. If you forget it, the only way back in is to reset the device, which erases everything on it.
|
||||
Aug Aug
|
||||
August August
|
||||
Blocked Blocked
|
||||
Change PIN Change PIN
|
||||
Channel Channel
|
||||
Channels Channels
|
||||
Chat icon reset Chat icon reset
|
||||
Chats Chats
|
||||
Choose a PIN Choose a PIN
|
||||
Clock not set Clock not set
|
||||
Cmdr Cmdr
|
||||
Commander Commander
|
||||
Companion Companion
|
||||
Connected to the computer Connected to the computer
|
||||
Could not send the report. Try again later. Could not send the report. Try again later.
|
||||
Count this device Count this device
|
||||
Current PIN Current PIN
|
||||
Cursor Cursor
|
||||
Dec Dec
|
||||
December December
|
||||
Delete this conversation? Delete this conversation?
|
||||
Device id Device id
|
||||
Direct Direct
|
||||
Direct message Direct message
|
||||
Direct, no repeaters Direct, no repeaters
|
||||
Double-tap SPACE while typing to switch Double-tap SPACE while typing to switch
|
||||
Emoji Emoji
|
||||
Enter PIN Enter PIN
|
||||
Enter it again Enter it again
|
||||
Export Backup Export Backup
|
||||
Feb Feb
|
||||
February February
|
||||
Fri Fri
|
||||
Friday Friday
|
||||
Has a problem Has a problem
|
||||
Heard by %u repeaters Heard by %u repeaters
|
||||
Heard by 1 repeater Heard by 1 repeater
|
||||
Hold the trackball to switch Hold the trackball to switch
|
||||
Home button opens Home button opens
|
||||
I hit a problem I hit a problem
|
||||
I understand I understand
|
||||
If you forget your PIN, you have to reset the device If you forget your PIN, you have to reset the device
|
||||
Internal Internal
|
||||
It is the only way back in, and it erases everything on it: contacts, channels, messages and settings. Nobody can unlock it for you. It is the only way back in, and it erases everything on it: contacts, channels, messages and settings. Nobody can unlock it for you.
|
||||
Jan Jan
|
||||
January January
|
||||
Join # channel Join # channel
|
||||
Join Public channel Join Public channel
|
||||
Jul Jul
|
||||
July July
|
||||
Jun Jun
|
||||
June June
|
||||
Keyboard and input Keyboard and input
|
||||
Keyboard attached.\nRestarting in landscape in %d s. Keyboard attached.\nRestarting in landscape in %d s.
|
||||
Large Large
|
||||
Launcher Launcher
|
||||
Launcher layout Launcher layout
|
||||
Locks when screen off\n(hold the BOOT button to unlock) Locks when screen off\n(hold the BOOT button to unlock)
|
||||
Map and GPS Map and GPS
|
||||
Map tiles Map tiles
|
||||
Mar Mar
|
||||
March March
|
||||
Mark all as read Mark all as read
|
||||
May May
|
||||
Mentions muted Mentions muted
|
||||
Mentions unmuted Mentions unmuted
|
||||
Mesh · 24 h Mesh · 24 h
|
||||
Message %s Message %s
|
||||
Message text on lock screen Message text on lock screen
|
||||
Messages muted Messages muted
|
||||
Messages unmuted Messages unmuted
|
||||
Minutes Minutes
|
||||
Mon Mon
|
||||
Monday Monday
|
||||
Mute mentions Mute mentions
|
||||
Mute messages Mute messages
|
||||
Navigate Navigate
|
||||
Never Never
|
||||
New PIN New PIN
|
||||
No backups available to restore. No backups available to restore.
|
||||
No backups yet. Use Export Backup above to create one. No backups yet. Use Export Backup above to create one.
|
||||
No channels yet No channels yet
|
||||
No direct chats yet No direct chats yet
|
||||
Normal\nLarge text\nHuge text Normal\nLarge text\nHuge text
|
||||
Not delivered, tap to resend Not delivered, tap to resend
|
||||
Nov Nov
|
||||
November November
|
||||
Oct Oct
|
||||
October October
|
||||
On On
|
||||
On battery, show it for On battery, show it for
|
||||
PIN changed PIN changed
|
||||
PIN lock PIN lock
|
||||
PIN lock off PIN lock off
|
||||
PIN lock on PIN lock on
|
||||
Phone-app link Phone-app link
|
||||
Pick the numbers, or type the PIN Pick the numbers, or type the PIN
|
||||
Preview screensaver Preview screensaver
|
||||
Radio and messaging Radio and messaging
|
||||
Reboot Now Reboot Now
|
||||
Received %s Received %s
|
||||
Receiving %s Receiving %s
|
||||
Region not saved: use a-z, 0-9 and - Region not saved: use a-z, 0-9 and -
|
||||
Repeater Repeater
|
||||
Report a bug Report a bug
|
||||
Reset chat icon Reset chat icon
|
||||
Room Room
|
||||
Routed Routed
|
||||
Running it for Running it for
|
||||
Running it for: Running it for:
|
||||
SD card SD card
|
||||
SD unavailable - insert a FAT32 card and retry SD unavailable - insert a FAT32 card and retry
|
||||
Sat Sat
|
||||
Saturday Saturday
|
||||
Say whether this build works on your board, so a stable release is promoted on evidence rather than on nobody having complained. A bug report opens as a QR: scan it and file it from your phone, under your own GitHub account. Say whether this build works on your board, so a stable release is promoted on evidence rather than on nobody having complained. A bug report opens as a QR: scan it and file it from your phone, under your own GitHub account.
|
||||
Screen timeout Screen timeout
|
||||
Screensaver Screensaver
|
||||
Scroll Scroll
|
||||
Scroll moves the screen; Cursor points and clicks; Navigate (experimental) moves a selection. Hold the trackball to switch between Scroll and Cursor. Scroll moves the screen; Cursor points and clicks; Navigate (experimental) moves a selection. Hold the trackball to switch between Scroll and Cursor.
|
||||
Send Send
|
||||
Send a test report Send a test report
|
||||
Send another test report Send another test report
|
||||
Sending %s Sending %s
|
||||
Sending your report... Sending your report...
|
||||
Sensor Sensor
|
||||
Sep Sep
|
||||
September September
|
||||
Share my contact Share my contact
|
||||
Stop USB Files Stop USB Files
|
||||
Storage and SD Storage and SD
|
||||
Sun Sun
|
||||
Sunday Sunday
|
||||
Tap the EN key on the keyboard to switch Tap the EN key on the keyboard to switch
|
||||
Tells the matrix how many devices run this build, so a board with no reports can be told apart from a board nobody owns. Sends the board and the version, nothing else. Tells the matrix how many devices run this build, so a board with no reports can be told apart from a board nobody owns. Sends the board and the version, nothing else.
|
||||
Terminal Terminal
|
||||
Test report: %s Test report: %s
|
||||
Thank you. Your report is on wadamesh.com/beta Thank you. Your report is on wadamesh.com/beta
|
||||
The PINs did not match The PINs did not match
|
||||
The mesh around you instead of a dark screen. Every ring is a real packet. The mesh around you instead of a dark screen. Every ring is a real packet.
|
||||
This is everything that leaves the device. No name, no contacts, no position. This is everything that leaves the device. No name, no contacts, no position.
|
||||
Thu Thu
|
||||
Thursday Thursday
|
||||
Tick only what you actually used: Tick only what you actually used:
|
||||
Too many chat icons Too many chat icons
|
||||
Too many tries. Wait %u s Too many tries. Wait %u s
|
||||
Trackball Trackball
|
||||
Trackball: scroll Trackball: scroll
|
||||
Transfer Transfer
|
||||
Tue Tue
|
||||
Tuesday Tuesday
|
||||
Turn Wi-Fi on to send a report Turn Wi-Fi on to send a report
|
||||
Type 4 numbers or letters Type 4 numbers or letters
|
||||
USB Files USB Files
|
||||
USB Files: low memory USB Files: low memory
|
||||
Unmute mentions Unmute mentions
|
||||
Unmute messages Unmute messages
|
||||
Upload of %s stopped Upload of %s stopped
|
||||
Used Used
|
||||
VNC VNC
|
||||
Waiting for the computer Waiting for the computer
|
||||
Web Web
|
||||
Wed Wed
|
||||
Wednesday Wednesday
|
||||
While this screen is open, the companion app cannot use USB. While this screen is open, the companion app cannot use USB.
|
||||
Works Works
|
||||
Wrong PIN Wrong PIN
|
||||
You: You:
|
||||
a week or more a week or more
|
||||
about a day about a day
|
||||
heard %s ago heard %s ago
|
||||
hold the BOOT button to unlock hold the BOOT button to unlock
|
||||
hop away hop away
|
||||
hops away hops away
|
||||
minutes minutes
|
||||
new new
|
||||
node node
|
||||
nodes nodes
|
||||
now now
|
||||
routed routed
|
||||
# Theme page and colour looks: new strings, English placeholders until translated (value = key)
|
||||
A colour for every section, coloured status icons, names and glyphs in their own hue. A colour for every section, coloured status icons, names and glyphs in their own hue.
|
||||
Apply and restart Apply and restart
|
||||
Applying the theme, restarting… Applying the theme, restarting…
|
||||
Bubbles in colour Bubbles in colour
|
||||
Bubbles plain Bubbles plain
|
||||
Chat icons Chat icons
|
||||
Colourful bubbles Colourful bubbles
|
||||
Custom Custom
|
||||
Every app and page its own colour, with a little motion. Every app and page its own colour, with a little motion.
|
||||
Black and white with heavy outlines, for bright sun or low vision. Black and white with heavy outlines, for bright sun or low vision.
|
||||
Glyphs Glyphs
|
||||
High contrast keeps its own fixed colours. High contrast keeps its own fixed colours.
|
||||
Initials Initials
|
||||
MORE COLORS! MORE COLORS!
|
||||
Mode Mode
|
||||
Names are always in colour; this colours the bubbles too. Names are always in colour; this colours the bubbles too.
|
||||
Neon Neon
|
||||
On my way On my way
|
||||
Pastel Pastel
|
||||
Preview Preview
|
||||
Rainbow Rainbow
|
||||
Regular Regular
|
||||
Ridge at six? Ridge at six?
|
||||
Taste the rainbow Taste the rainbow
|
||||
Use this colour Use this colour
|
||||
@@ -1,7 +1,7 @@
|
||||
# wadamesh language file
|
||||
# canonical source - translators: edit this file and PR it
|
||||
# code: it
|
||||
# ver: 22
|
||||
# ver: 23
|
||||
# name: Italiano
|
||||
# base: it
|
||||
(device behind) (dispositivo indietro)
|
||||
@@ -34,9 +34,14 @@ Accent popups: off Popup accenti: disattivi
|
||||
Accent popups: on Popup accenti: attivi
|
||||
Accent colour Colore accento
|
||||
Appearance Aspetto
|
||||
Condense Nav (restart to apply) Navigazione compatta (riavvia per applicare)
|
||||
Condense Nav saved — restart to apply Navigazione compatta salvata — riavvia per applicare
|
||||
Day Giorno
|
||||
High contrast Contrasto elevato
|
||||
High contrast - restarting to apply it… Contrasto elevato - riavvio per applicarlo…
|
||||
Keyboard nav: on Nav. tastiera: on
|
||||
Landscape only Solo in orizzontale
|
||||
Letters move the highlight when no text field is focused. Enter selects; hold Backspace to go back. Le lettere spostano l'evidenziazione quando nessun campo di testo è attivo. Invio seleziona; tieni premuto Backspace per tornare indietro.
|
||||
Night Notte
|
||||
Theme save failed Salvataggio tema non riuscito
|
||||
Ack Ack
|
||||
@@ -1281,3 +1286,234 @@ No known Windows malware found. No known Windows malware found.
|
||||
This firmware can find these but not remove them. Update wadamesh, or format the card: in Files, hold the SD card row. This firmware can find these but not remove them. Update wadamesh, or format the card: in Files, hold the SD card row.
|
||||
SD Scan only removes files it recognises. If the card may be infected, the safest fix is to copy off what you need and format it completely: in Files, hold the SD card row. SD Scan only removes files it recognises. If the card may be infected, the safest fix is to copy off what you need and format it completely: in Files, hold the SD card row.
|
||||
and %d more and %d more
|
||||
# beta_89: new strings, English placeholders until translated (value = key)
|
||||
%d nodes heard today %d nodes heard today
|
||||
%lu packets heard %lu packets heard
|
||||
1 node heard today 1 node heard today
|
||||
1 packet heard 1 packet heard
|
||||
1. Connect this device to the computer with a USB cable.\n2. Open this address in Chrome or Edge: 1. Connect this device to the computer with a USB cable.\n2. Open this address in Chrome or Edge:
|
||||
3. Click Connect and choose this device. 3. Click Connect and choose this device.
|
||||
4 numbers or letters 4 numbers or letters
|
||||
A day A day
|
||||
A week A week
|
||||
Add a channel Add a channel
|
||||
Add, download or delete files on this device from a computer. Add, download or delete files on this device from a computer.
|
||||
Advertise Advertise
|
||||
Always on when connected to power Always on when connected to power
|
||||
Anything worth saying (optional) Anything worth saying (optional)
|
||||
App drawer App drawer
|
||||
App icons App icons
|
||||
Append timestamp Append timestamp
|
||||
Apr Apr
|
||||
April April
|
||||
Asks for 4 numbers or letters to unlock, and locks whenever the screen goes off. If you forget it, the only way back in is to reset the device, which erases everything on it. Asks for 4 numbers or letters to unlock, and locks whenever the screen goes off. If you forget it, the only way back in is to reset the device, which erases everything on it.
|
||||
Aug Aug
|
||||
August August
|
||||
Blocked Blocked
|
||||
Change PIN Change PIN
|
||||
Channel Channel
|
||||
Channels Channels
|
||||
Chat Chat
|
||||
Chat icon reset Chat icon reset
|
||||
Chats Chats
|
||||
Choose a PIN Choose a PIN
|
||||
Clock not set Clock not set
|
||||
Cmdr Cmdr
|
||||
Commander Commander
|
||||
Companion Companion
|
||||
Connected to the computer Connected to the computer
|
||||
Could not send the report. Try again later. Could not send the report. Try again later.
|
||||
Count this device Count this device
|
||||
Current PIN Current PIN
|
||||
Cursor Cursor
|
||||
Dec Dec
|
||||
December December
|
||||
Delete this conversation? Delete this conversation?
|
||||
Device id Device id
|
||||
Direct Direct
|
||||
Direct message Direct message
|
||||
Direct, no repeaters Direct, no repeaters
|
||||
Discover Discover
|
||||
Double-tap SPACE while typing to switch Double-tap SPACE while typing to switch
|
||||
Emoji Emoji
|
||||
Enter PIN Enter PIN
|
||||
Enter it again Enter it again
|
||||
Export Backup Export Backup
|
||||
Feb Feb
|
||||
February February
|
||||
Fri Fri
|
||||
Friday Friday
|
||||
Has a problem Has a problem
|
||||
Heard by %u repeaters Heard by %u repeaters
|
||||
Heard by 1 repeater Heard by 1 repeater
|
||||
Hold the trackball to switch Hold the trackball to switch
|
||||
Home button opens Home button opens
|
||||
I hit a problem I hit a problem
|
||||
I understand I understand
|
||||
If you forget your PIN, you have to reset the device If you forget your PIN, you have to reset the device
|
||||
Internal Internal
|
||||
It is the only way back in, and it erases everything on it: contacts, channels, messages and settings. Nobody can unlock it for you. It is the only way back in, and it erases everything on it: contacts, channels, messages and settings. Nobody can unlock it for you.
|
||||
Jan Jan
|
||||
January January
|
||||
Join # channel Join # channel
|
||||
Join Public channel Join Public channel
|
||||
Jul Jul
|
||||
July July
|
||||
Jun Jun
|
||||
June June
|
||||
Keyboard and input Keyboard and input
|
||||
Keyboard attached.\nRestarting in landscape in %d s. Keyboard attached.\nRestarting in landscape in %d s.
|
||||
Large Large
|
||||
Launcher Launcher
|
||||
Launcher layout Launcher layout
|
||||
Locks when screen off\n(hold the BOOT button to unlock) Locks when screen off\n(hold the BOOT button to unlock)
|
||||
Map and GPS Map and GPS
|
||||
Map tiles Map tiles
|
||||
Mar Mar
|
||||
March March
|
||||
Mark all as read Mark all as read
|
||||
May May
|
||||
Mentions Mentions
|
||||
Mentions muted Mentions muted
|
||||
Mentions unmuted Mentions unmuted
|
||||
Mesh · 24 h Mesh · 24 h
|
||||
Message %s Message %s
|
||||
Message text on lock screen Message text on lock screen
|
||||
Messages muted Messages muted
|
||||
Messages unmuted Messages unmuted
|
||||
Minutes Minutes
|
||||
Mon Mon
|
||||
Monday Monday
|
||||
Mute mentions Mute mentions
|
||||
Mute messages Mute messages
|
||||
Navigate Navigate
|
||||
Never Never
|
||||
New PIN New PIN
|
||||
No backups available to restore. No backups available to restore.
|
||||
No backups yet. Use Export Backup above to create one. No backups yet. Use Export Backup above to create one.
|
||||
No channels yet No channels yet
|
||||
No direct chats yet No direct chats yet
|
||||
Normal\nLarge text\nHuge text Normal\nLarge text\nHuge text
|
||||
Not delivered, tap to resend Not delivered, tap to resend
|
||||
Nov Nov
|
||||
November November
|
||||
Oct Oct
|
||||
October October
|
||||
On On
|
||||
On battery, show it for On battery, show it for
|
||||
PIN changed PIN changed
|
||||
PIN lock PIN lock
|
||||
PIN lock off PIN lock off
|
||||
PIN lock on PIN lock on
|
||||
Phone-app link Phone-app link
|
||||
Pick the numbers, or type the PIN Pick the numbers, or type the PIN
|
||||
Preview screensaver Preview screensaver
|
||||
Radio and messaging Radio and messaging
|
||||
Reboot Now Reboot Now
|
||||
Received %s Received %s
|
||||
Receiving %s Receiving %s
|
||||
Region not saved: use a-z, 0-9 and - Region not saved: use a-z, 0-9 and -
|
||||
Remote Remote
|
||||
Repeater Repeater
|
||||
Report a bug Report a bug
|
||||
Reset chat icon Reset chat icon
|
||||
Room Room
|
||||
Routed Routed
|
||||
Running it for Running it for
|
||||
Running it for: Running it for:
|
||||
SD card SD card
|
||||
SD unavailable - insert a FAT32 card and retry SD unavailable - insert a FAT32 card and retry
|
||||
Sat Sat
|
||||
Saturday Saturday
|
||||
Say whether this build works on your board, so a stable release is promoted on evidence rather than on nobody having complained. A bug report opens as a QR: scan it and file it from your phone, under your own GitHub account. Say whether this build works on your board, so a stable release is promoted on evidence rather than on nobody having complained. A bug report opens as a QR: scan it and file it from your phone, under your own GitHub account.
|
||||
Screen timeout Screen timeout
|
||||
Screensaver Screensaver
|
||||
Scroll Scroll
|
||||
Scroll moves the screen; Cursor points and clicks; Navigate (experimental) moves a selection. Hold the trackball to switch between Scroll and Cursor. Scroll moves the screen; Cursor points and clicks; Navigate (experimental) moves a selection. Hold the trackball to switch between Scroll and Cursor.
|
||||
Send Send
|
||||
Send a test report Send a test report
|
||||
Send another test report Send another test report
|
||||
Sending %s Sending %s
|
||||
Sending your report... Sending your report...
|
||||
Sensor Sensor
|
||||
Sep Sep
|
||||
September September
|
||||
Share my contact Share my contact
|
||||
Spectrum Spectrum
|
||||
Stop USB Files Stop USB Files
|
||||
Storage and SD Storage and SD
|
||||
Sun Sun
|
||||
Sunday Sunday
|
||||
Tap the EN key on the keyboard to switch Tap the EN key on the keyboard to switch
|
||||
Tells the matrix how many devices run this build, so a board with no reports can be told apart from a board nobody owns. Sends the board and the version, nothing else. Tells the matrix how many devices run this build, so a board with no reports can be told apart from a board nobody owns. Sends the board and the version, nothing else.
|
||||
Terminal Terminal
|
||||
Test report: %s Test report: %s
|
||||
Thank you. Your report is on wadamesh.com/beta Thank you. Your report is on wadamesh.com/beta
|
||||
The PINs did not match The PINs did not match
|
||||
The mesh around you instead of a dark screen. Every ring is a real packet. The mesh around you instead of a dark screen. Every ring is a real packet.
|
||||
This is everything that leaves the device. No name, no contacts, no position. This is everything that leaves the device. No name, no contacts, no position.
|
||||
Thu Thu
|
||||
Thursday Thursday
|
||||
Tick only what you actually used: Tick only what you actually used:
|
||||
Too many chat icons Too many chat icons
|
||||
Too many tries. Wait %u s Too many tries. Wait %u s
|
||||
Trackball Trackball
|
||||
Trackball: scroll Trackball: scroll
|
||||
Transfer Transfer
|
||||
Tue Tue
|
||||
Tuesday Tuesday
|
||||
Turn Wi-Fi on to send a report Turn Wi-Fi on to send a report
|
||||
Type 4 numbers or letters Type 4 numbers or letters
|
||||
USB Files USB Files
|
||||
USB Files: low memory USB Files: low memory
|
||||
Unmute mentions Unmute mentions
|
||||
Unmute messages Unmute messages
|
||||
Upload of %s stopped Upload of %s stopped
|
||||
Used Used
|
||||
VNC VNC
|
||||
Waiting for the computer Waiting for the computer
|
||||
Web Web
|
||||
Wed Wed
|
||||
Wednesday Wednesday
|
||||
While this screen is open, the companion app cannot use USB. While this screen is open, the companion app cannot use USB.
|
||||
Works Works
|
||||
Wrong PIN Wrong PIN
|
||||
You: You:
|
||||
a week or more a week or more
|
||||
about a day about a day
|
||||
heard %s ago heard %s ago
|
||||
hold the BOOT button to unlock hold the BOOT button to unlock
|
||||
hop away hop away
|
||||
hops away hops away
|
||||
minutes minutes
|
||||
new new
|
||||
node node
|
||||
nodes nodes
|
||||
now now
|
||||
routed routed
|
||||
# Theme page and colour looks: new strings, English placeholders until translated (value = key)
|
||||
A colour for every section, coloured status icons, names and glyphs in their own hue. A colour for every section, coloured status icons, names and glyphs in their own hue.
|
||||
Apply and restart Apply and restart
|
||||
Applying the theme, restarting… Applying the theme, restarting…
|
||||
Bubbles in colour Bubbles in colour
|
||||
Bubbles plain Bubbles plain
|
||||
Chat icons Chat icons
|
||||
Colourful bubbles Colourful bubbles
|
||||
Custom Custom
|
||||
Every app and page its own colour, with a little motion. Every app and page its own colour, with a little motion.
|
||||
Black and white with heavy outlines, for bright sun or low vision. Black and white with heavy outlines, for bright sun or low vision.
|
||||
Glyphs Glyphs
|
||||
High contrast keeps its own fixed colours. High contrast keeps its own fixed colours.
|
||||
Initials Initials
|
||||
MORE COLORS! MORE COLORS!
|
||||
Mode Mode
|
||||
Names are always in colour; this colours the bubbles too. Names are always in colour; this colours the bubbles too.
|
||||
Neon Neon
|
||||
On my way On my way
|
||||
Pastel Pastel
|
||||
Preview Preview
|
||||
Rainbow Rainbow
|
||||
Regular Regular
|
||||
Ridge at six? Ridge at six?
|
||||
Taste the rainbow Taste the rainbow
|
||||
Use this colour Use this colour
|
||||
@@ -1,7 +1,7 @@
|
||||
# wadamesh language file
|
||||
# canonical source - translators: edit this file and PR it
|
||||
# code: nl
|
||||
# ver: 22
|
||||
# ver: 23
|
||||
# name: Nederlands
|
||||
# base: nl
|
||||
(device behind) (apparaat loopt achter)
|
||||
@@ -34,9 +34,14 @@ Accent popups: off Accent-popups: uit
|
||||
Accent popups: on Accent-popups: aan
|
||||
Accent colour Accentkleur
|
||||
Appearance Weergave
|
||||
Condense Nav (restart to apply) Compacte navigatie (herstart om toe te passen)
|
||||
Condense Nav saved — restart to apply Compacte navigatie opgeslagen — herstart om toe te passen
|
||||
Day Dag
|
||||
High contrast Hoog contrast
|
||||
High contrast - restarting to apply it… Hoog contrast - opnieuw opstarten om toe te passen…
|
||||
Keyboard nav: on Toetsenbordnav.: aan
|
||||
Landscape only Alleen liggend
|
||||
Letters move the highlight when no text field is focused. Enter selects; hold Backspace to go back. Letters verplaatsen de markering als er geen tekstveld actief is. Enter selecteert; houd Backspace ingedrukt om terug te gaan.
|
||||
Night Nacht
|
||||
Theme save failed Thema opslaan mislukt
|
||||
Ack Ack
|
||||
@@ -1279,3 +1284,234 @@ No known Windows malware found. No known Windows malware found.
|
||||
This firmware can find these but not remove them. Update wadamesh, or format the card: in Files, hold the SD card row. This firmware can find these but not remove them. Update wadamesh, or format the card: in Files, hold the SD card row.
|
||||
SD Scan only removes files it recognises. If the card may be infected, the safest fix is to copy off what you need and format it completely: in Files, hold the SD card row. SD Scan only removes files it recognises. If the card may be infected, the safest fix is to copy off what you need and format it completely: in Files, hold the SD card row.
|
||||
and %d more and %d more
|
||||
# beta_89: new strings, English placeholders until translated (value = key)
|
||||
%d nodes heard today %d nodes heard today
|
||||
%lu packets heard %lu packets heard
|
||||
1 node heard today 1 node heard today
|
||||
1 packet heard 1 packet heard
|
||||
1. Connect this device to the computer with a USB cable.\n2. Open this address in Chrome or Edge: 1. Connect this device to the computer with a USB cable.\n2. Open this address in Chrome or Edge:
|
||||
3. Click Connect and choose this device. 3. Click Connect and choose this device.
|
||||
4 numbers or letters 4 numbers or letters
|
||||
A day A day
|
||||
A week A week
|
||||
Add a channel Add a channel
|
||||
Add, download or delete files on this device from a computer. Add, download or delete files on this device from a computer.
|
||||
Advertise Advertise
|
||||
Always on when connected to power Always on when connected to power
|
||||
Anything worth saying (optional) Anything worth saying (optional)
|
||||
App drawer App drawer
|
||||
App icons App icons
|
||||
Append timestamp Append timestamp
|
||||
Apr Apr
|
||||
April April
|
||||
Asks for 4 numbers or letters to unlock, and locks whenever the screen goes off. If you forget it, the only way back in is to reset the device, which erases everything on it. Asks for 4 numbers or letters to unlock, and locks whenever the screen goes off. If you forget it, the only way back in is to reset the device, which erases everything on it.
|
||||
Aug Aug
|
||||
August August
|
||||
Blocked Blocked
|
||||
Change PIN Change PIN
|
||||
Channel Channel
|
||||
Channels Channels
|
||||
Chat Chat
|
||||
Chat icon reset Chat icon reset
|
||||
Chats Chats
|
||||
Choose a PIN Choose a PIN
|
||||
Clock not set Clock not set
|
||||
Cmdr Cmdr
|
||||
Commander Commander
|
||||
Companion Companion
|
||||
Connected to the computer Connected to the computer
|
||||
Could not send the report. Try again later. Could not send the report. Try again later.
|
||||
Count this device Count this device
|
||||
Current PIN Current PIN
|
||||
Cursor Cursor
|
||||
Dec Dec
|
||||
December December
|
||||
Delete this conversation? Delete this conversation?
|
||||
Device id Device id
|
||||
Direct Direct
|
||||
Direct message Direct message
|
||||
Direct, no repeaters Direct, no repeaters
|
||||
Discover Discover
|
||||
Double-tap SPACE while typing to switch Double-tap SPACE while typing to switch
|
||||
Emoji Emoji
|
||||
Enter PIN Enter PIN
|
||||
Enter it again Enter it again
|
||||
Export Backup Export Backup
|
||||
Feb Feb
|
||||
February February
|
||||
Fri Fri
|
||||
Friday Friday
|
||||
Has a problem Has a problem
|
||||
Heard by %u repeaters Heard by %u repeaters
|
||||
Heard by 1 repeater Heard by 1 repeater
|
||||
Hold the trackball to switch Hold the trackball to switch
|
||||
Home button opens Home button opens
|
||||
I hit a problem I hit a problem
|
||||
I understand I understand
|
||||
If you forget your PIN, you have to reset the device If you forget your PIN, you have to reset the device
|
||||
Internal Internal
|
||||
It is the only way back in, and it erases everything on it: contacts, channels, messages and settings. Nobody can unlock it for you. It is the only way back in, and it erases everything on it: contacts, channels, messages and settings. Nobody can unlock it for you.
|
||||
Jan Jan
|
||||
January January
|
||||
Join # channel Join # channel
|
||||
Join Public channel Join Public channel
|
||||
Jul Jul
|
||||
July July
|
||||
Jun Jun
|
||||
June June
|
||||
Keyboard and input Keyboard and input
|
||||
Keyboard attached.\nRestarting in landscape in %d s. Keyboard attached.\nRestarting in landscape in %d s.
|
||||
Large Large
|
||||
Launcher Launcher
|
||||
Launcher layout Launcher layout
|
||||
Locks when screen off\n(hold the BOOT button to unlock) Locks when screen off\n(hold the BOOT button to unlock)
|
||||
Map and GPS Map and GPS
|
||||
Map tiles Map tiles
|
||||
Mar Mar
|
||||
March March
|
||||
Mark all as read Mark all as read
|
||||
May May
|
||||
Mentions Mentions
|
||||
Mentions muted Mentions muted
|
||||
Mentions unmuted Mentions unmuted
|
||||
Mesh · 24 h Mesh · 24 h
|
||||
Message %s Message %s
|
||||
Message text on lock screen Message text on lock screen
|
||||
Messages muted Messages muted
|
||||
Messages unmuted Messages unmuted
|
||||
Minutes Minutes
|
||||
Mon Mon
|
||||
Monday Monday
|
||||
Mute mentions Mute mentions
|
||||
Mute messages Mute messages
|
||||
Navigate Navigate
|
||||
Never Never
|
||||
New PIN New PIN
|
||||
No backups available to restore. No backups available to restore.
|
||||
No backups yet. Use Export Backup above to create one. No backups yet. Use Export Backup above to create one.
|
||||
No channels yet No channels yet
|
||||
No direct chats yet No direct chats yet
|
||||
Normal\nLarge text\nHuge text Normal\nLarge text\nHuge text
|
||||
Not delivered, tap to resend Not delivered, tap to resend
|
||||
Nov Nov
|
||||
November November
|
||||
Oct Oct
|
||||
October October
|
||||
On On
|
||||
On battery, show it for On battery, show it for
|
||||
PIN changed PIN changed
|
||||
PIN lock PIN lock
|
||||
PIN lock off PIN lock off
|
||||
PIN lock on PIN lock on
|
||||
Phone-app link Phone-app link
|
||||
Pick the numbers, or type the PIN Pick the numbers, or type the PIN
|
||||
Preview screensaver Preview screensaver
|
||||
Radio and messaging Radio and messaging
|
||||
Reboot Now Reboot Now
|
||||
Received %s Received %s
|
||||
Receiving %s Receiving %s
|
||||
Region not saved: use a-z, 0-9 and - Region not saved: use a-z, 0-9 and -
|
||||
Remote Remote
|
||||
Repeater Repeater
|
||||
Report a bug Report a bug
|
||||
Reset chat icon Reset chat icon
|
||||
Room Room
|
||||
Routed Routed
|
||||
Running it for Running it for
|
||||
Running it for: Running it for:
|
||||
SD card SD card
|
||||
SD unavailable - insert a FAT32 card and retry SD unavailable - insert a FAT32 card and retry
|
||||
Sat Sat
|
||||
Saturday Saturday
|
||||
Say whether this build works on your board, so a stable release is promoted on evidence rather than on nobody having complained. A bug report opens as a QR: scan it and file it from your phone, under your own GitHub account. Say whether this build works on your board, so a stable release is promoted on evidence rather than on nobody having complained. A bug report opens as a QR: scan it and file it from your phone, under your own GitHub account.
|
||||
Screen timeout Screen timeout
|
||||
Screensaver Screensaver
|
||||
Scroll Scroll
|
||||
Scroll moves the screen; Cursor points and clicks; Navigate (experimental) moves a selection. Hold the trackball to switch between Scroll and Cursor. Scroll moves the screen; Cursor points and clicks; Navigate (experimental) moves a selection. Hold the trackball to switch between Scroll and Cursor.
|
||||
Send Send
|
||||
Send a test report Send a test report
|
||||
Send another test report Send another test report
|
||||
Sending %s Sending %s
|
||||
Sending your report... Sending your report...
|
||||
Sensor Sensor
|
||||
Sep Sep
|
||||
September September
|
||||
Share my contact Share my contact
|
||||
Spectrum Spectrum
|
||||
Stop USB Files Stop USB Files
|
||||
Storage and SD Storage and SD
|
||||
Sun Sun
|
||||
Sunday Sunday
|
||||
Tap the EN key on the keyboard to switch Tap the EN key on the keyboard to switch
|
||||
Tells the matrix how many devices run this build, so a board with no reports can be told apart from a board nobody owns. Sends the board and the version, nothing else. Tells the matrix how many devices run this build, so a board with no reports can be told apart from a board nobody owns. Sends the board and the version, nothing else.
|
||||
Terminal Terminal
|
||||
Test report: %s Test report: %s
|
||||
Thank you. Your report is on wadamesh.com/beta Thank you. Your report is on wadamesh.com/beta
|
||||
The PINs did not match The PINs did not match
|
||||
The mesh around you instead of a dark screen. Every ring is a real packet. The mesh around you instead of a dark screen. Every ring is a real packet.
|
||||
This is everything that leaves the device. No name, no contacts, no position. This is everything that leaves the device. No name, no contacts, no position.
|
||||
Thu Thu
|
||||
Thursday Thursday
|
||||
Tick only what you actually used: Tick only what you actually used:
|
||||
Too many chat icons Too many chat icons
|
||||
Too many tries. Wait %u s Too many tries. Wait %u s
|
||||
Trackball Trackball
|
||||
Trackball: scroll Trackball: scroll
|
||||
Transfer Transfer
|
||||
Tue Tue
|
||||
Tuesday Tuesday
|
||||
Turn Wi-Fi on to send a report Turn Wi-Fi on to send a report
|
||||
Type 4 numbers or letters Type 4 numbers or letters
|
||||
USB Files USB Files
|
||||
USB Files: low memory USB Files: low memory
|
||||
Unmute mentions Unmute mentions
|
||||
Unmute messages Unmute messages
|
||||
Upload of %s stopped Upload of %s stopped
|
||||
Used Used
|
||||
VNC VNC
|
||||
Waiting for the computer Waiting for the computer
|
||||
Web Web
|
||||
Wed Wed
|
||||
Wednesday Wednesday
|
||||
While this screen is open, the companion app cannot use USB. While this screen is open, the companion app cannot use USB.
|
||||
Works Works
|
||||
Wrong PIN Wrong PIN
|
||||
You: You:
|
||||
a week or more a week or more
|
||||
about a day about a day
|
||||
heard %s ago heard %s ago
|
||||
hold the BOOT button to unlock hold the BOOT button to unlock
|
||||
hop away hop away
|
||||
hops away hops away
|
||||
minutes minutes
|
||||
new new
|
||||
node node
|
||||
nodes nodes
|
||||
now now
|
||||
routed routed
|
||||
# Theme page and colour looks: new strings, English placeholders until translated (value = key)
|
||||
A colour for every section, coloured status icons, names and glyphs in their own hue. A colour for every section, coloured status icons, names and glyphs in their own hue.
|
||||
Apply and restart Apply and restart
|
||||
Applying the theme, restarting… Applying the theme, restarting…
|
||||
Bubbles in colour Bubbles in colour
|
||||
Bubbles plain Bubbles plain
|
||||
Chat icons Chat icons
|
||||
Colourful bubbles Colourful bubbles
|
||||
Custom Custom
|
||||
Every app and page its own colour, with a little motion. Every app and page its own colour, with a little motion.
|
||||
Black and white with heavy outlines, for bright sun or low vision. Black and white with heavy outlines, for bright sun or low vision.
|
||||
Glyphs Glyphs
|
||||
High contrast keeps its own fixed colours. High contrast keeps its own fixed colours.
|
||||
Initials Initials
|
||||
MORE COLORS! MORE COLORS!
|
||||
Mode Mode
|
||||
Names are always in colour; this colours the bubbles too. Names are always in colour; this colours the bubbles too.
|
||||
Neon Neon
|
||||
On my way On my way
|
||||
Pastel Pastel
|
||||
Preview Preview
|
||||
Rainbow Rainbow
|
||||
Regular Regular
|
||||
Ridge at six? Ridge at six?
|
||||
Taste the rainbow Taste the rainbow
|
||||
Use this colour Use this colour
|
||||
@@ -1,7 +1,7 @@
|
||||
# wadamesh language file
|
||||
# canonical source - translators: edit this file and PR it
|
||||
# code: pt-br
|
||||
# ver: 22
|
||||
# ver: 23
|
||||
# name: Português (BR)
|
||||
# base: pt-br
|
||||
(device behind) (dispositivo atrasado)
|
||||
@@ -34,9 +34,14 @@ Accent popups: off Pop-ups de acento: desligados
|
||||
Accent popups: on Pop-ups de acento: ligados
|
||||
Accent colour Cor de destaque
|
||||
Appearance Aparência
|
||||
Condense Nav (restart to apply) Navegação compacta (reinicie para aplicar)
|
||||
Condense Nav saved — restart to apply Navegação compacta salva — reinicie para aplicar
|
||||
Day Dia
|
||||
High contrast Alto contraste
|
||||
High contrast - restarting to apply it… Alto contraste - reiniciando para aplicar…
|
||||
Keyboard nav: on Nav. teclado: ligado
|
||||
Landscape only Somente em paisagem
|
||||
Letters move the highlight when no text field is focused. Enter selects; hold Backspace to go back. As letras movem o destaque quando nenhum campo de texto está ativo. Enter seleciona; segure Backspace para voltar.
|
||||
Night Noite
|
||||
Theme save failed Falha ao salvar o tema
|
||||
Ack Ack
|
||||
@@ -1281,3 +1286,234 @@ No known Windows malware found. No known Windows malware found.
|
||||
This firmware can find these but not remove them. Update wadamesh, or format the card: in Files, hold the SD card row. This firmware can find these but not remove them. Update wadamesh, or format the card: in Files, hold the SD card row.
|
||||
SD Scan only removes files it recognises. If the card may be infected, the safest fix is to copy off what you need and format it completely: in Files, hold the SD card row. SD Scan only removes files it recognises. If the card may be infected, the safest fix is to copy off what you need and format it completely: in Files, hold the SD card row.
|
||||
and %d more and %d more
|
||||
# beta_89: new strings, English placeholders until translated (value = key)
|
||||
%d nodes heard today %d nodes heard today
|
||||
%lu packets heard %lu packets heard
|
||||
1 node heard today 1 node heard today
|
||||
1 packet heard 1 packet heard
|
||||
1. Connect this device to the computer with a USB cable.\n2. Open this address in Chrome or Edge: 1. Connect this device to the computer with a USB cable.\n2. Open this address in Chrome or Edge:
|
||||
3. Click Connect and choose this device. 3. Click Connect and choose this device.
|
||||
4 numbers or letters 4 numbers or letters
|
||||
A day A day
|
||||
A week A week
|
||||
Add a channel Add a channel
|
||||
Add, download or delete files on this device from a computer. Add, download or delete files on this device from a computer.
|
||||
Advertise Advertise
|
||||
Always on when connected to power Always on when connected to power
|
||||
Anything worth saying (optional) Anything worth saying (optional)
|
||||
App drawer App drawer
|
||||
App icons App icons
|
||||
Append timestamp Append timestamp
|
||||
Apr Apr
|
||||
April April
|
||||
Asks for 4 numbers or letters to unlock, and locks whenever the screen goes off. If you forget it, the only way back in is to reset the device, which erases everything on it. Asks for 4 numbers or letters to unlock, and locks whenever the screen goes off. If you forget it, the only way back in is to reset the device, which erases everything on it.
|
||||
Aug Aug
|
||||
August August
|
||||
Blocked Blocked
|
||||
Change PIN Change PIN
|
||||
Channel Channel
|
||||
Channels Channels
|
||||
Chat Chat
|
||||
Chat icon reset Chat icon reset
|
||||
Chats Chats
|
||||
Choose a PIN Choose a PIN
|
||||
Clock not set Clock not set
|
||||
Cmdr Cmdr
|
||||
Commander Commander
|
||||
Companion Companion
|
||||
Connected to the computer Connected to the computer
|
||||
Could not send the report. Try again later. Could not send the report. Try again later.
|
||||
Count this device Count this device
|
||||
Current PIN Current PIN
|
||||
Cursor Cursor
|
||||
Dec Dec
|
||||
December December
|
||||
Delete this conversation? Delete this conversation?
|
||||
Device id Device id
|
||||
Direct Direct
|
||||
Direct message Direct message
|
||||
Direct, no repeaters Direct, no repeaters
|
||||
Discover Discover
|
||||
Double-tap SPACE while typing to switch Double-tap SPACE while typing to switch
|
||||
Emoji Emoji
|
||||
Enter PIN Enter PIN
|
||||
Enter it again Enter it again
|
||||
Export Backup Export Backup
|
||||
Feb Feb
|
||||
February February
|
||||
Fri Fri
|
||||
Friday Friday
|
||||
Has a problem Has a problem
|
||||
Heard by %u repeaters Heard by %u repeaters
|
||||
Heard by 1 repeater Heard by 1 repeater
|
||||
Hold the trackball to switch Hold the trackball to switch
|
||||
Home button opens Home button opens
|
||||
I hit a problem I hit a problem
|
||||
I understand I understand
|
||||
If you forget your PIN, you have to reset the device If you forget your PIN, you have to reset the device
|
||||
Internal Internal
|
||||
It is the only way back in, and it erases everything on it: contacts, channels, messages and settings. Nobody can unlock it for you. It is the only way back in, and it erases everything on it: contacts, channels, messages and settings. Nobody can unlock it for you.
|
||||
Jan Jan
|
||||
January January
|
||||
Join # channel Join # channel
|
||||
Join Public channel Join Public channel
|
||||
Jul Jul
|
||||
July July
|
||||
Jun Jun
|
||||
June June
|
||||
Keyboard and input Keyboard and input
|
||||
Keyboard attached.\nRestarting in landscape in %d s. Keyboard attached.\nRestarting in landscape in %d s.
|
||||
Large Large
|
||||
Launcher Launcher
|
||||
Launcher layout Launcher layout
|
||||
Locks when screen off\n(hold the BOOT button to unlock) Locks when screen off\n(hold the BOOT button to unlock)
|
||||
Map and GPS Map and GPS
|
||||
Map tiles Map tiles
|
||||
Mar Mar
|
||||
March March
|
||||
Mark all as read Mark all as read
|
||||
May May
|
||||
Mentions Mentions
|
||||
Mentions muted Mentions muted
|
||||
Mentions unmuted Mentions unmuted
|
||||
Mesh · 24 h Mesh · 24 h
|
||||
Message %s Message %s
|
||||
Message text on lock screen Message text on lock screen
|
||||
Messages muted Messages muted
|
||||
Messages unmuted Messages unmuted
|
||||
Minutes Minutes
|
||||
Mon Mon
|
||||
Monday Monday
|
||||
Mute mentions Mute mentions
|
||||
Mute messages Mute messages
|
||||
Navigate Navigate
|
||||
Never Never
|
||||
New PIN New PIN
|
||||
No backups available to restore. No backups available to restore.
|
||||
No backups yet. Use Export Backup above to create one. No backups yet. Use Export Backup above to create one.
|
||||
No channels yet No channels yet
|
||||
No direct chats yet No direct chats yet
|
||||
Normal\nLarge text\nHuge text Normal\nLarge text\nHuge text
|
||||
Not delivered, tap to resend Not delivered, tap to resend
|
||||
Nov Nov
|
||||
November November
|
||||
Oct Oct
|
||||
October October
|
||||
On On
|
||||
On battery, show it for On battery, show it for
|
||||
PIN changed PIN changed
|
||||
PIN lock PIN lock
|
||||
PIN lock off PIN lock off
|
||||
PIN lock on PIN lock on
|
||||
Phone-app link Phone-app link
|
||||
Pick the numbers, or type the PIN Pick the numbers, or type the PIN
|
||||
Preview screensaver Preview screensaver
|
||||
Radio and messaging Radio and messaging
|
||||
Reboot Now Reboot Now
|
||||
Received %s Received %s
|
||||
Receiving %s Receiving %s
|
||||
Region not saved: use a-z, 0-9 and - Region not saved: use a-z, 0-9 and -
|
||||
Remote Remote
|
||||
Repeater Repeater
|
||||
Report a bug Report a bug
|
||||
Reset chat icon Reset chat icon
|
||||
Room Room
|
||||
Routed Routed
|
||||
Running it for Running it for
|
||||
Running it for: Running it for:
|
||||
SD card SD card
|
||||
SD unavailable - insert a FAT32 card and retry SD unavailable - insert a FAT32 card and retry
|
||||
Sat Sat
|
||||
Saturday Saturday
|
||||
Say whether this build works on your board, so a stable release is promoted on evidence rather than on nobody having complained. A bug report opens as a QR: scan it and file it from your phone, under your own GitHub account. Say whether this build works on your board, so a stable release is promoted on evidence rather than on nobody having complained. A bug report opens as a QR: scan it and file it from your phone, under your own GitHub account.
|
||||
Screen timeout Screen timeout
|
||||
Screensaver Screensaver
|
||||
Scroll Scroll
|
||||
Scroll moves the screen; Cursor points and clicks; Navigate (experimental) moves a selection. Hold the trackball to switch between Scroll and Cursor. Scroll moves the screen; Cursor points and clicks; Navigate (experimental) moves a selection. Hold the trackball to switch between Scroll and Cursor.
|
||||
Send Send
|
||||
Send a test report Send a test report
|
||||
Send another test report Send another test report
|
||||
Sending %s Sending %s
|
||||
Sending your report... Sending your report...
|
||||
Sensor Sensor
|
||||
Sep Sep
|
||||
September September
|
||||
Share my contact Share my contact
|
||||
Spectrum Spectrum
|
||||
Stop USB Files Stop USB Files
|
||||
Storage and SD Storage and SD
|
||||
Sun Sun
|
||||
Sunday Sunday
|
||||
Tap the EN key on the keyboard to switch Tap the EN key on the keyboard to switch
|
||||
Tells the matrix how many devices run this build, so a board with no reports can be told apart from a board nobody owns. Sends the board and the version, nothing else. Tells the matrix how many devices run this build, so a board with no reports can be told apart from a board nobody owns. Sends the board and the version, nothing else.
|
||||
Terminal Terminal
|
||||
Test report: %s Test report: %s
|
||||
Thank you. Your report is on wadamesh.com/beta Thank you. Your report is on wadamesh.com/beta
|
||||
The PINs did not match The PINs did not match
|
||||
The mesh around you instead of a dark screen. Every ring is a real packet. The mesh around you instead of a dark screen. Every ring is a real packet.
|
||||
This is everything that leaves the device. No name, no contacts, no position. This is everything that leaves the device. No name, no contacts, no position.
|
||||
Thu Thu
|
||||
Thursday Thursday
|
||||
Tick only what you actually used: Tick only what you actually used:
|
||||
Too many chat icons Too many chat icons
|
||||
Too many tries. Wait %u s Too many tries. Wait %u s
|
||||
Trackball Trackball
|
||||
Trackball: scroll Trackball: scroll
|
||||
Transfer Transfer
|
||||
Tue Tue
|
||||
Tuesday Tuesday
|
||||
Turn Wi-Fi on to send a report Turn Wi-Fi on to send a report
|
||||
Type 4 numbers or letters Type 4 numbers or letters
|
||||
USB Files USB Files
|
||||
USB Files: low memory USB Files: low memory
|
||||
Unmute mentions Unmute mentions
|
||||
Unmute messages Unmute messages
|
||||
Upload of %s stopped Upload of %s stopped
|
||||
Used Used
|
||||
VNC VNC
|
||||
Waiting for the computer Waiting for the computer
|
||||
Web Web
|
||||
Wed Wed
|
||||
Wednesday Wednesday
|
||||
While this screen is open, the companion app cannot use USB. While this screen is open, the companion app cannot use USB.
|
||||
Works Works
|
||||
Wrong PIN Wrong PIN
|
||||
You: You:
|
||||
a week or more a week or more
|
||||
about a day about a day
|
||||
heard %s ago heard %s ago
|
||||
hold the BOOT button to unlock hold the BOOT button to unlock
|
||||
hop away hop away
|
||||
hops away hops away
|
||||
minutes minutes
|
||||
new new
|
||||
node node
|
||||
nodes nodes
|
||||
now now
|
||||
routed routed
|
||||
# Theme page and colour looks: new strings, English placeholders until translated (value = key)
|
||||
A colour for every section, coloured status icons, names and glyphs in their own hue. A colour for every section, coloured status icons, names and glyphs in their own hue.
|
||||
Apply and restart Apply and restart
|
||||
Applying the theme, restarting… Applying the theme, restarting…
|
||||
Bubbles in colour Bubbles in colour
|
||||
Bubbles plain Bubbles plain
|
||||
Chat icons Chat icons
|
||||
Colourful bubbles Colourful bubbles
|
||||
Custom Custom
|
||||
Every app and page its own colour, with a little motion. Every app and page its own colour, with a little motion.
|
||||
Black and white with heavy outlines, for bright sun or low vision. Black and white with heavy outlines, for bright sun or low vision.
|
||||
Glyphs Glyphs
|
||||
High contrast keeps its own fixed colours. High contrast keeps its own fixed colours.
|
||||
Initials Initials
|
||||
MORE COLORS! MORE COLORS!
|
||||
Mode Mode
|
||||
Names are always in colour; this colours the bubbles too. Names are always in colour; this colours the bubbles too.
|
||||
Neon Neon
|
||||
On my way On my way
|
||||
Pastel Pastel
|
||||
Preview Preview
|
||||
Rainbow Rainbow
|
||||
Regular Regular
|
||||
Ridge at six? Ridge at six?
|
||||
Taste the rainbow Taste the rainbow
|
||||
Use this colour Use this colour
|
||||
@@ -1,7 +1,7 @@
|
||||
# wadamesh language file
|
||||
# canonical source - translators: edit this file and PR it
|
||||
# code: ro
|
||||
# ver: 22
|
||||
# ver: 23
|
||||
# name: Română
|
||||
# base: ro
|
||||
(device behind) (dispozitiv în urmă)
|
||||
@@ -34,9 +34,14 @@ Accent popups: off Popupuri accente: oprite
|
||||
Accent popups: on Popupuri accente: pornite
|
||||
Accent colour Culoare de accent
|
||||
Appearance Aspect
|
||||
Condense Nav (restart to apply) Navigare compactă (repornire pentru aplicare)
|
||||
Condense Nav saved — restart to apply Navigare compactă salvată — reporneşte pentru aplicare
|
||||
Day Zi
|
||||
High contrast Contrast ridicat
|
||||
High contrast - restarting to apply it… Contrast ridicat - repornire pentru aplicare…
|
||||
Keyboard nav: on Navigare tastatură: pornită
|
||||
Landscape only Doar în modul peisaj
|
||||
Letters move the highlight when no text field is focused. Enter selects; hold Backspace to go back. Literele mută selecția când niciun câmp de text nu este activ. Enter selectează; ține apăsat Backspace pentru înapoi.
|
||||
Night Noapte
|
||||
Theme save failed Salvarea temei a eșuat
|
||||
Ack Ack
|
||||
@@ -1283,3 +1288,234 @@ No known Windows malware found. No known Windows malware found.
|
||||
This firmware can find these but not remove them. Update wadamesh, or format the card: in Files, hold the SD card row. This firmware can find these but not remove them. Update wadamesh, or format the card: in Files, hold the SD card row.
|
||||
SD Scan only removes files it recognises. If the card may be infected, the safest fix is to copy off what you need and format it completely: in Files, hold the SD card row. SD Scan only removes files it recognises. If the card may be infected, the safest fix is to copy off what you need and format it completely: in Files, hold the SD card row.
|
||||
and %d more and %d more
|
||||
# beta_89: new strings, English placeholders until translated (value = key)
|
||||
%d nodes heard today %d nodes heard today
|
||||
%lu packets heard %lu packets heard
|
||||
1 node heard today 1 node heard today
|
||||
1 packet heard 1 packet heard
|
||||
1. Connect this device to the computer with a USB cable.\n2. Open this address in Chrome or Edge: 1. Connect this device to the computer with a USB cable.\n2. Open this address in Chrome or Edge:
|
||||
3. Click Connect and choose this device. 3. Click Connect and choose this device.
|
||||
4 numbers or letters 4 numbers or letters
|
||||
A day A day
|
||||
A week A week
|
||||
Add a channel Add a channel
|
||||
Add, download or delete files on this device from a computer. Add, download or delete files on this device from a computer.
|
||||
Advertise Advertise
|
||||
Always on when connected to power Always on when connected to power
|
||||
Anything worth saying (optional) Anything worth saying (optional)
|
||||
App drawer App drawer
|
||||
App icons App icons
|
||||
Append timestamp Append timestamp
|
||||
Apr Apr
|
||||
April April
|
||||
Asks for 4 numbers or letters to unlock, and locks whenever the screen goes off. If you forget it, the only way back in is to reset the device, which erases everything on it. Asks for 4 numbers or letters to unlock, and locks whenever the screen goes off. If you forget it, the only way back in is to reset the device, which erases everything on it.
|
||||
Aug Aug
|
||||
August August
|
||||
Blocked Blocked
|
||||
Change PIN Change PIN
|
||||
Channel Channel
|
||||
Channels Channels
|
||||
Chat Chat
|
||||
Chat icon reset Chat icon reset
|
||||
Chats Chats
|
||||
Choose a PIN Choose a PIN
|
||||
Clock not set Clock not set
|
||||
Cmdr Cmdr
|
||||
Commander Commander
|
||||
Companion Companion
|
||||
Connected to the computer Connected to the computer
|
||||
Could not send the report. Try again later. Could not send the report. Try again later.
|
||||
Count this device Count this device
|
||||
Current PIN Current PIN
|
||||
Cursor Cursor
|
||||
Dec Dec
|
||||
December December
|
||||
Delete this conversation? Delete this conversation?
|
||||
Device id Device id
|
||||
Direct Direct
|
||||
Direct message Direct message
|
||||
Direct, no repeaters Direct, no repeaters
|
||||
Discover Discover
|
||||
Double-tap SPACE while typing to switch Double-tap SPACE while typing to switch
|
||||
Emoji Emoji
|
||||
Enter PIN Enter PIN
|
||||
Enter it again Enter it again
|
||||
Export Backup Export Backup
|
||||
Feb Feb
|
||||
February February
|
||||
Fri Fri
|
||||
Friday Friday
|
||||
Has a problem Has a problem
|
||||
Heard by %u repeaters Heard by %u repeaters
|
||||
Heard by 1 repeater Heard by 1 repeater
|
||||
Hold the trackball to switch Hold the trackball to switch
|
||||
Home button opens Home button opens
|
||||
I hit a problem I hit a problem
|
||||
I understand I understand
|
||||
If you forget your PIN, you have to reset the device If you forget your PIN, you have to reset the device
|
||||
Internal Internal
|
||||
It is the only way back in, and it erases everything on it: contacts, channels, messages and settings. Nobody can unlock it for you. It is the only way back in, and it erases everything on it: contacts, channels, messages and settings. Nobody can unlock it for you.
|
||||
Jan Jan
|
||||
January January
|
||||
Join # channel Join # channel
|
||||
Join Public channel Join Public channel
|
||||
Jul Jul
|
||||
July July
|
||||
Jun Jun
|
||||
June June
|
||||
Keyboard and input Keyboard and input
|
||||
Keyboard attached.\nRestarting in landscape in %d s. Keyboard attached.\nRestarting in landscape in %d s.
|
||||
Large Large
|
||||
Launcher Launcher
|
||||
Launcher layout Launcher layout
|
||||
Locks when screen off\n(hold the BOOT button to unlock) Locks when screen off\n(hold the BOOT button to unlock)
|
||||
Map and GPS Map and GPS
|
||||
Map tiles Map tiles
|
||||
Mar Mar
|
||||
March March
|
||||
Mark all as read Mark all as read
|
||||
May May
|
||||
Mentions Mentions
|
||||
Mentions muted Mentions muted
|
||||
Mentions unmuted Mentions unmuted
|
||||
Mesh · 24 h Mesh · 24 h
|
||||
Message %s Message %s
|
||||
Message text on lock screen Message text on lock screen
|
||||
Messages muted Messages muted
|
||||
Messages unmuted Messages unmuted
|
||||
Minutes Minutes
|
||||
Mon Mon
|
||||
Monday Monday
|
||||
Mute mentions Mute mentions
|
||||
Mute messages Mute messages
|
||||
Navigate Navigate
|
||||
Never Never
|
||||
New PIN New PIN
|
||||
No backups available to restore. No backups available to restore.
|
||||
No backups yet. Use Export Backup above to create one. No backups yet. Use Export Backup above to create one.
|
||||
No channels yet No channels yet
|
||||
No direct chats yet No direct chats yet
|
||||
Normal\nLarge text\nHuge text Normal\nLarge text\nHuge text
|
||||
Not delivered, tap to resend Not delivered, tap to resend
|
||||
Nov Nov
|
||||
November November
|
||||
Oct Oct
|
||||
October October
|
||||
On On
|
||||
On battery, show it for On battery, show it for
|
||||
PIN changed PIN changed
|
||||
PIN lock PIN lock
|
||||
PIN lock off PIN lock off
|
||||
PIN lock on PIN lock on
|
||||
Phone-app link Phone-app link
|
||||
Pick the numbers, or type the PIN Pick the numbers, or type the PIN
|
||||
Preview screensaver Preview screensaver
|
||||
Radio and messaging Radio and messaging
|
||||
Reboot Now Reboot Now
|
||||
Received %s Received %s
|
||||
Receiving %s Receiving %s
|
||||
Region not saved: use a-z, 0-9 and - Region not saved: use a-z, 0-9 and -
|
||||
Remote Remote
|
||||
Repeater Repeater
|
||||
Report a bug Report a bug
|
||||
Reset chat icon Reset chat icon
|
||||
Room Room
|
||||
Routed Routed
|
||||
Running it for Running it for
|
||||
Running it for: Running it for:
|
||||
SD card SD card
|
||||
SD unavailable - insert a FAT32 card and retry SD unavailable - insert a FAT32 card and retry
|
||||
Sat Sat
|
||||
Saturday Saturday
|
||||
Say whether this build works on your board, so a stable release is promoted on evidence rather than on nobody having complained. A bug report opens as a QR: scan it and file it from your phone, under your own GitHub account. Say whether this build works on your board, so a stable release is promoted on evidence rather than on nobody having complained. A bug report opens as a QR: scan it and file it from your phone, under your own GitHub account.
|
||||
Screen timeout Screen timeout
|
||||
Screensaver Screensaver
|
||||
Scroll Scroll
|
||||
Scroll moves the screen; Cursor points and clicks; Navigate (experimental) moves a selection. Hold the trackball to switch between Scroll and Cursor. Scroll moves the screen; Cursor points and clicks; Navigate (experimental) moves a selection. Hold the trackball to switch between Scroll and Cursor.
|
||||
Send Send
|
||||
Send a test report Send a test report
|
||||
Send another test report Send another test report
|
||||
Sending %s Sending %s
|
||||
Sending your report... Sending your report...
|
||||
Sensor Sensor
|
||||
Sep Sep
|
||||
September September
|
||||
Share my contact Share my contact
|
||||
Spectrum Spectrum
|
||||
Stop USB Files Stop USB Files
|
||||
Storage and SD Storage and SD
|
||||
Sun Sun
|
||||
Sunday Sunday
|
||||
Tap the EN key on the keyboard to switch Tap the EN key on the keyboard to switch
|
||||
Tells the matrix how many devices run this build, so a board with no reports can be told apart from a board nobody owns. Sends the board and the version, nothing else. Tells the matrix how many devices run this build, so a board with no reports can be told apart from a board nobody owns. Sends the board and the version, nothing else.
|
||||
Terminal Terminal
|
||||
Test report: %s Test report: %s
|
||||
Thank you. Your report is on wadamesh.com/beta Thank you. Your report is on wadamesh.com/beta
|
||||
The PINs did not match The PINs did not match
|
||||
The mesh around you instead of a dark screen. Every ring is a real packet. The mesh around you instead of a dark screen. Every ring is a real packet.
|
||||
This is everything that leaves the device. No name, no contacts, no position. This is everything that leaves the device. No name, no contacts, no position.
|
||||
Thu Thu
|
||||
Thursday Thursday
|
||||
Tick only what you actually used: Tick only what you actually used:
|
||||
Too many chat icons Too many chat icons
|
||||
Too many tries. Wait %u s Too many tries. Wait %u s
|
||||
Trackball Trackball
|
||||
Trackball: scroll Trackball: scroll
|
||||
Transfer Transfer
|
||||
Tue Tue
|
||||
Tuesday Tuesday
|
||||
Turn Wi-Fi on to send a report Turn Wi-Fi on to send a report
|
||||
Type 4 numbers or letters Type 4 numbers or letters
|
||||
USB Files USB Files
|
||||
USB Files: low memory USB Files: low memory
|
||||
Unmute mentions Unmute mentions
|
||||
Unmute messages Unmute messages
|
||||
Upload of %s stopped Upload of %s stopped
|
||||
Used Used
|
||||
VNC VNC
|
||||
Waiting for the computer Waiting for the computer
|
||||
Web Web
|
||||
Wed Wed
|
||||
Wednesday Wednesday
|
||||
While this screen is open, the companion app cannot use USB. While this screen is open, the companion app cannot use USB.
|
||||
Works Works
|
||||
Wrong PIN Wrong PIN
|
||||
You: You:
|
||||
a week or more a week or more
|
||||
about a day about a day
|
||||
heard %s ago heard %s ago
|
||||
hold the BOOT button to unlock hold the BOOT button to unlock
|
||||
hop away hop away
|
||||
hops away hops away
|
||||
minutes minutes
|
||||
new new
|
||||
node node
|
||||
nodes nodes
|
||||
now now
|
||||
routed routed
|
||||
# Theme page and colour looks: new strings, English placeholders until translated (value = key)
|
||||
A colour for every section, coloured status icons, names and glyphs in their own hue. A colour for every section, coloured status icons, names and glyphs in their own hue.
|
||||
Apply and restart Apply and restart
|
||||
Applying the theme, restarting… Applying the theme, restarting…
|
||||
Bubbles in colour Bubbles in colour
|
||||
Bubbles plain Bubbles plain
|
||||
Chat icons Chat icons
|
||||
Colourful bubbles Colourful bubbles
|
||||
Custom Custom
|
||||
Every app and page its own colour, with a little motion. Every app and page its own colour, with a little motion.
|
||||
Black and white with heavy outlines, for bright sun or low vision. Black and white with heavy outlines, for bright sun or low vision.
|
||||
Glyphs Glyphs
|
||||
High contrast keeps its own fixed colours. High contrast keeps its own fixed colours.
|
||||
Initials Initials
|
||||
MORE COLORS! MORE COLORS!
|
||||
Mode Mode
|
||||
Names are always in colour; this colours the bubbles too. Names are always in colour; this colours the bubbles too.
|
||||
Neon Neon
|
||||
On my way On my way
|
||||
Pastel Pastel
|
||||
Preview Preview
|
||||
Rainbow Rainbow
|
||||
Regular Regular
|
||||
Ridge at six? Ridge at six?
|
||||
Taste the rainbow Taste the rainbow
|
||||
Use this colour Use this colour
|
||||
@@ -1,7 +1,7 @@
|
||||
# wadamesh language file
|
||||
# canonical source - translators: edit this file and PR it
|
||||
# code: ru
|
||||
# ver: 22
|
||||
# ver: 23
|
||||
# name: Русский
|
||||
# base: ru
|
||||
(device behind) (устройство отстаёт)
|
||||
@@ -34,9 +34,14 @@ Accent popups: off Подсказки акцентов: выкл
|
||||
Accent popups: on Подсказки акцентов: вкл
|
||||
Accent colour Акцентный цвет
|
||||
Appearance Оформление
|
||||
Condense Nav (restart to apply) Компактная навигация (перезапуск для применения)
|
||||
Condense Nav saved — restart to apply Компактная навигация сохранена — перезапуск для применения
|
||||
Day День
|
||||
High contrast Высокая контрастность
|
||||
High contrast - restarting to apply it… Высокая контрастность - перезагрузка для применения…
|
||||
Keyboard nav: on Навигация клавиатурой: вкл.
|
||||
Landscape only Только в альбомной ориентации
|
||||
Letters move the highlight when no text field is focused. Enter selects; hold Backspace to go back. Буквы перемещают выделение, когда не активно текстовое поле. Enter выбирает; удерживайте Backspace, чтобы вернуться.
|
||||
Night Ночь
|
||||
Theme save failed Не удалось сохранить тему
|
||||
Ack Подтв.
|
||||
@@ -1282,3 +1287,234 @@ No known Windows malware found. No known Windows malware found.
|
||||
This firmware can find these but not remove them. Update wadamesh, or format the card: in Files, hold the SD card row. This firmware can find these but not remove them. Update wadamesh, or format the card: in Files, hold the SD card row.
|
||||
SD Scan only removes files it recognises. If the card may be infected, the safest fix is to copy off what you need and format it completely: in Files, hold the SD card row. SD Scan only removes files it recognises. If the card may be infected, the safest fix is to copy off what you need and format it completely: in Files, hold the SD card row.
|
||||
and %d more and %d more
|
||||
# beta_89: new strings, English placeholders until translated (value = key)
|
||||
%d nodes heard today %d nodes heard today
|
||||
%lu packets heard %lu packets heard
|
||||
1 node heard today 1 node heard today
|
||||
1 packet heard 1 packet heard
|
||||
1. Connect this device to the computer with a USB cable.\n2. Open this address in Chrome or Edge: 1. Connect this device to the computer with a USB cable.\n2. Open this address in Chrome or Edge:
|
||||
3. Click Connect and choose this device. 3. Click Connect and choose this device.
|
||||
4 numbers or letters 4 numbers or letters
|
||||
A day A day
|
||||
A week A week
|
||||
Add a channel Add a channel
|
||||
Add, download or delete files on this device from a computer. Add, download or delete files on this device from a computer.
|
||||
Advertise Advertise
|
||||
Always on when connected to power Always on when connected to power
|
||||
Anything worth saying (optional) Anything worth saying (optional)
|
||||
App drawer App drawer
|
||||
App icons App icons
|
||||
Append timestamp Append timestamp
|
||||
Apr Apr
|
||||
April April
|
||||
Asks for 4 numbers or letters to unlock, and locks whenever the screen goes off. If you forget it, the only way back in is to reset the device, which erases everything on it. Asks for 4 numbers or letters to unlock, and locks whenever the screen goes off. If you forget it, the only way back in is to reset the device, which erases everything on it.
|
||||
Aug Aug
|
||||
August August
|
||||
Blocked Blocked
|
||||
Change PIN Change PIN
|
||||
Channel Channel
|
||||
Channels Channels
|
||||
Chat Chat
|
||||
Chat icon reset Chat icon reset
|
||||
Chats Chats
|
||||
Choose a PIN Choose a PIN
|
||||
Clock not set Clock not set
|
||||
Cmdr Cmdr
|
||||
Commander Commander
|
||||
Companion Companion
|
||||
Connected to the computer Connected to the computer
|
||||
Could not send the report. Try again later. Could not send the report. Try again later.
|
||||
Count this device Count this device
|
||||
Current PIN Current PIN
|
||||
Cursor Cursor
|
||||
Dec Dec
|
||||
December December
|
||||
Delete this conversation? Delete this conversation?
|
||||
Device id Device id
|
||||
Direct Direct
|
||||
Direct message Direct message
|
||||
Direct, no repeaters Direct, no repeaters
|
||||
Discover Discover
|
||||
Double-tap SPACE while typing to switch Double-tap SPACE while typing to switch
|
||||
Emoji Emoji
|
||||
Enter PIN Enter PIN
|
||||
Enter it again Enter it again
|
||||
Export Backup Export Backup
|
||||
Feb Feb
|
||||
February February
|
||||
Fri Fri
|
||||
Friday Friday
|
||||
Has a problem Has a problem
|
||||
Heard by %u repeaters Heard by %u repeaters
|
||||
Heard by 1 repeater Heard by 1 repeater
|
||||
Hold the trackball to switch Hold the trackball to switch
|
||||
Home button opens Home button opens
|
||||
I hit a problem I hit a problem
|
||||
I understand I understand
|
||||
If you forget your PIN, you have to reset the device If you forget your PIN, you have to reset the device
|
||||
Internal Internal
|
||||
It is the only way back in, and it erases everything on it: contacts, channels, messages and settings. Nobody can unlock it for you. It is the only way back in, and it erases everything on it: contacts, channels, messages and settings. Nobody can unlock it for you.
|
||||
Jan Jan
|
||||
January January
|
||||
Join # channel Join # channel
|
||||
Join Public channel Join Public channel
|
||||
Jul Jul
|
||||
July July
|
||||
Jun Jun
|
||||
June June
|
||||
Keyboard and input Keyboard and input
|
||||
Keyboard attached.\nRestarting in landscape in %d s. Keyboard attached.\nRestarting in landscape in %d s.
|
||||
Large Large
|
||||
Launcher Launcher
|
||||
Launcher layout Launcher layout
|
||||
Locks when screen off\n(hold the BOOT button to unlock) Locks when screen off\n(hold the BOOT button to unlock)
|
||||
Map and GPS Map and GPS
|
||||
Map tiles Map tiles
|
||||
Mar Mar
|
||||
March March
|
||||
Mark all as read Mark all as read
|
||||
May May
|
||||
Mentions Mentions
|
||||
Mentions muted Mentions muted
|
||||
Mentions unmuted Mentions unmuted
|
||||
Mesh · 24 h Mesh · 24 h
|
||||
Message %s Message %s
|
||||
Message text on lock screen Message text on lock screen
|
||||
Messages muted Messages muted
|
||||
Messages unmuted Messages unmuted
|
||||
Minutes Minutes
|
||||
Mon Mon
|
||||
Monday Monday
|
||||
Mute mentions Mute mentions
|
||||
Mute messages Mute messages
|
||||
Navigate Navigate
|
||||
Never Never
|
||||
New PIN New PIN
|
||||
No backups available to restore. No backups available to restore.
|
||||
No backups yet. Use Export Backup above to create one. No backups yet. Use Export Backup above to create one.
|
||||
No channels yet No channels yet
|
||||
No direct chats yet No direct chats yet
|
||||
Normal\nLarge text\nHuge text Normal\nLarge text\nHuge text
|
||||
Not delivered, tap to resend Not delivered, tap to resend
|
||||
Nov Nov
|
||||
November November
|
||||
Oct Oct
|
||||
October October
|
||||
On On
|
||||
On battery, show it for On battery, show it for
|
||||
PIN changed PIN changed
|
||||
PIN lock PIN lock
|
||||
PIN lock off PIN lock off
|
||||
PIN lock on PIN lock on
|
||||
Phone-app link Phone-app link
|
||||
Pick the numbers, or type the PIN Pick the numbers, or type the PIN
|
||||
Preview screensaver Preview screensaver
|
||||
Radio and messaging Radio and messaging
|
||||
Reboot Now Reboot Now
|
||||
Received %s Received %s
|
||||
Receiving %s Receiving %s
|
||||
Region not saved: use a-z, 0-9 and - Region not saved: use a-z, 0-9 and -
|
||||
Remote Remote
|
||||
Repeater Repeater
|
||||
Report a bug Report a bug
|
||||
Reset chat icon Reset chat icon
|
||||
Room Room
|
||||
Routed Routed
|
||||
Running it for Running it for
|
||||
Running it for: Running it for:
|
||||
SD card SD card
|
||||
SD unavailable - insert a FAT32 card and retry SD unavailable - insert a FAT32 card and retry
|
||||
Sat Sat
|
||||
Saturday Saturday
|
||||
Say whether this build works on your board, so a stable release is promoted on evidence rather than on nobody having complained. A bug report opens as a QR: scan it and file it from your phone, under your own GitHub account. Say whether this build works on your board, so a stable release is promoted on evidence rather than on nobody having complained. A bug report opens as a QR: scan it and file it from your phone, under your own GitHub account.
|
||||
Screen timeout Screen timeout
|
||||
Screensaver Screensaver
|
||||
Scroll Scroll
|
||||
Scroll moves the screen; Cursor points and clicks; Navigate (experimental) moves a selection. Hold the trackball to switch between Scroll and Cursor. Scroll moves the screen; Cursor points and clicks; Navigate (experimental) moves a selection. Hold the trackball to switch between Scroll and Cursor.
|
||||
Send Send
|
||||
Send a test report Send a test report
|
||||
Send another test report Send another test report
|
||||
Sending %s Sending %s
|
||||
Sending your report... Sending your report...
|
||||
Sensor Sensor
|
||||
Sep Sep
|
||||
September September
|
||||
Share my contact Share my contact
|
||||
Spectrum Spectrum
|
||||
Stop USB Files Stop USB Files
|
||||
Storage and SD Storage and SD
|
||||
Sun Sun
|
||||
Sunday Sunday
|
||||
Tap the EN key on the keyboard to switch Tap the EN key on the keyboard to switch
|
||||
Tells the matrix how many devices run this build, so a board with no reports can be told apart from a board nobody owns. Sends the board and the version, nothing else. Tells the matrix how many devices run this build, so a board with no reports can be told apart from a board nobody owns. Sends the board and the version, nothing else.
|
||||
Terminal Terminal
|
||||
Test report: %s Test report: %s
|
||||
Thank you. Your report is on wadamesh.com/beta Thank you. Your report is on wadamesh.com/beta
|
||||
The PINs did not match The PINs did not match
|
||||
The mesh around you instead of a dark screen. Every ring is a real packet. The mesh around you instead of a dark screen. Every ring is a real packet.
|
||||
This is everything that leaves the device. No name, no contacts, no position. This is everything that leaves the device. No name, no contacts, no position.
|
||||
Thu Thu
|
||||
Thursday Thursday
|
||||
Tick only what you actually used: Tick only what you actually used:
|
||||
Too many chat icons Too many chat icons
|
||||
Too many tries. Wait %u s Too many tries. Wait %u s
|
||||
Trackball Trackball
|
||||
Trackball: scroll Trackball: scroll
|
||||
Transfer Transfer
|
||||
Tue Tue
|
||||
Tuesday Tuesday
|
||||
Turn Wi-Fi on to send a report Turn Wi-Fi on to send a report
|
||||
Type 4 numbers or letters Type 4 numbers or letters
|
||||
USB Files USB Files
|
||||
USB Files: low memory USB Files: low memory
|
||||
Unmute mentions Unmute mentions
|
||||
Unmute messages Unmute messages
|
||||
Upload of %s stopped Upload of %s stopped
|
||||
Used Used
|
||||
VNC VNC
|
||||
Waiting for the computer Waiting for the computer
|
||||
Web Web
|
||||
Wed Wed
|
||||
Wednesday Wednesday
|
||||
While this screen is open, the companion app cannot use USB. While this screen is open, the companion app cannot use USB.
|
||||
Works Works
|
||||
Wrong PIN Wrong PIN
|
||||
You: You:
|
||||
a week or more a week or more
|
||||
about a day about a day
|
||||
heard %s ago heard %s ago
|
||||
hold the BOOT button to unlock hold the BOOT button to unlock
|
||||
hop away hop away
|
||||
hops away hops away
|
||||
minutes minutes
|
||||
new new
|
||||
node node
|
||||
nodes nodes
|
||||
now now
|
||||
routed routed
|
||||
# Theme page and colour looks: new strings, English placeholders until translated (value = key)
|
||||
A colour for every section, coloured status icons, names and glyphs in their own hue. A colour for every section, coloured status icons, names and glyphs in their own hue.
|
||||
Apply and restart Apply and restart
|
||||
Applying the theme, restarting… Applying the theme, restarting…
|
||||
Bubbles in colour Bubbles in colour
|
||||
Bubbles plain Bubbles plain
|
||||
Chat icons Chat icons
|
||||
Colourful bubbles Colourful bubbles
|
||||
Custom Custom
|
||||
Every app and page its own colour, with a little motion. Every app and page its own colour, with a little motion.
|
||||
Black and white with heavy outlines, for bright sun or low vision. Black and white with heavy outlines, for bright sun or low vision.
|
||||
Glyphs Glyphs
|
||||
High contrast keeps its own fixed colours. High contrast keeps its own fixed colours.
|
||||
Initials Initials
|
||||
MORE COLORS! MORE COLORS!
|
||||
Mode Mode
|
||||
Names are always in colour; this colours the bubbles too. Names are always in colour; this colours the bubbles too.
|
||||
Neon Neon
|
||||
On my way On my way
|
||||
Pastel Pastel
|
||||
Preview Preview
|
||||
Rainbow Rainbow
|
||||
Regular Regular
|
||||
Ridge at six? Ridge at six?
|
||||
Taste the rainbow Taste the rainbow
|
||||
Use this colour Use this colour
|
||||
@@ -1,7 +1,7 @@
|
||||
# wadamesh language file
|
||||
# canonical source - translators: edit this file and PR it
|
||||
# code: sr
|
||||
# ver: 22
|
||||
# ver: 23
|
||||
# name: Српски
|
||||
# base: sr
|
||||
(device behind) (уређај касни)
|
||||
@@ -34,9 +34,14 @@ Accent popups: off Искачући акценти: искљ
|
||||
Accent popups: on Искачући акценти: укљ
|
||||
Accent colour Акцентна боја
|
||||
Appearance Изглед
|
||||
Condense Nav (restart to apply) Компактна навигација (рестарт за примену)
|
||||
Condense Nav saved — restart to apply Компактна навигација сачувана — рестарт за примену
|
||||
Day Дан
|
||||
High contrast Висок контраст
|
||||
High contrast - restarting to apply it… Висок контраст - рестартовање ради примене…
|
||||
Keyboard nav: on Навиг. тастатуром: укљ.
|
||||
Landscape only Само у хоризонталном положају
|
||||
Letters move the highlight when no text field is focused. Enter selects; hold Backspace to go back. Слова померају истицање када ниједно текстуално поље није активно. Enter бира; држите Backspace за назад.
|
||||
Night Ноћ
|
||||
Theme save failed Чување теме није успело
|
||||
Ack Ack
|
||||
@@ -1282,3 +1287,234 @@ No known Windows malware found. No known Windows malware found.
|
||||
This firmware can find these but not remove them. Update wadamesh, or format the card: in Files, hold the SD card row. This firmware can find these but not remove them. Update wadamesh, or format the card: in Files, hold the SD card row.
|
||||
SD Scan only removes files it recognises. If the card may be infected, the safest fix is to copy off what you need and format it completely: in Files, hold the SD card row. SD Scan only removes files it recognises. If the card may be infected, the safest fix is to copy off what you need and format it completely: in Files, hold the SD card row.
|
||||
and %d more and %d more
|
||||
# beta_89: new strings, English placeholders until translated (value = key)
|
||||
%d nodes heard today %d nodes heard today
|
||||
%lu packets heard %lu packets heard
|
||||
1 node heard today 1 node heard today
|
||||
1 packet heard 1 packet heard
|
||||
1. Connect this device to the computer with a USB cable.\n2. Open this address in Chrome or Edge: 1. Connect this device to the computer with a USB cable.\n2. Open this address in Chrome or Edge:
|
||||
3. Click Connect and choose this device. 3. Click Connect and choose this device.
|
||||
4 numbers or letters 4 numbers or letters
|
||||
A day A day
|
||||
A week A week
|
||||
Add a channel Add a channel
|
||||
Add, download or delete files on this device from a computer. Add, download or delete files on this device from a computer.
|
||||
Advertise Advertise
|
||||
Always on when connected to power Always on when connected to power
|
||||
Anything worth saying (optional) Anything worth saying (optional)
|
||||
App drawer App drawer
|
||||
App icons App icons
|
||||
Append timestamp Append timestamp
|
||||
Apr Apr
|
||||
April April
|
||||
Asks for 4 numbers or letters to unlock, and locks whenever the screen goes off. If you forget it, the only way back in is to reset the device, which erases everything on it. Asks for 4 numbers or letters to unlock, and locks whenever the screen goes off. If you forget it, the only way back in is to reset the device, which erases everything on it.
|
||||
Aug Aug
|
||||
August August
|
||||
Blocked Blocked
|
||||
Change PIN Change PIN
|
||||
Channel Channel
|
||||
Channels Channels
|
||||
Chat Chat
|
||||
Chat icon reset Chat icon reset
|
||||
Chats Chats
|
||||
Choose a PIN Choose a PIN
|
||||
Clock not set Clock not set
|
||||
Cmdr Cmdr
|
||||
Commander Commander
|
||||
Companion Companion
|
||||
Connected to the computer Connected to the computer
|
||||
Could not send the report. Try again later. Could not send the report. Try again later.
|
||||
Count this device Count this device
|
||||
Current PIN Current PIN
|
||||
Cursor Cursor
|
||||
Dec Dec
|
||||
December December
|
||||
Delete this conversation? Delete this conversation?
|
||||
Device id Device id
|
||||
Direct Direct
|
||||
Direct message Direct message
|
||||
Direct, no repeaters Direct, no repeaters
|
||||
Discover Discover
|
||||
Double-tap SPACE while typing to switch Double-tap SPACE while typing to switch
|
||||
Emoji Emoji
|
||||
Enter PIN Enter PIN
|
||||
Enter it again Enter it again
|
||||
Export Backup Export Backup
|
||||
Feb Feb
|
||||
February February
|
||||
Fri Fri
|
||||
Friday Friday
|
||||
Has a problem Has a problem
|
||||
Heard by %u repeaters Heard by %u repeaters
|
||||
Heard by 1 repeater Heard by 1 repeater
|
||||
Hold the trackball to switch Hold the trackball to switch
|
||||
Home button opens Home button opens
|
||||
I hit a problem I hit a problem
|
||||
I understand I understand
|
||||
If you forget your PIN, you have to reset the device If you forget your PIN, you have to reset the device
|
||||
Internal Internal
|
||||
It is the only way back in, and it erases everything on it: contacts, channels, messages and settings. Nobody can unlock it for you. It is the only way back in, and it erases everything on it: contacts, channels, messages and settings. Nobody can unlock it for you.
|
||||
Jan Jan
|
||||
January January
|
||||
Join # channel Join # channel
|
||||
Join Public channel Join Public channel
|
||||
Jul Jul
|
||||
July July
|
||||
Jun Jun
|
||||
June June
|
||||
Keyboard and input Keyboard and input
|
||||
Keyboard attached.\nRestarting in landscape in %d s. Keyboard attached.\nRestarting in landscape in %d s.
|
||||
Large Large
|
||||
Launcher Launcher
|
||||
Launcher layout Launcher layout
|
||||
Locks when screen off\n(hold the BOOT button to unlock) Locks when screen off\n(hold the BOOT button to unlock)
|
||||
Map and GPS Map and GPS
|
||||
Map tiles Map tiles
|
||||
Mar Mar
|
||||
March March
|
||||
Mark all as read Mark all as read
|
||||
May May
|
||||
Mentions Mentions
|
||||
Mentions muted Mentions muted
|
||||
Mentions unmuted Mentions unmuted
|
||||
Mesh · 24 h Mesh · 24 h
|
||||
Message %s Message %s
|
||||
Message text on lock screen Message text on lock screen
|
||||
Messages muted Messages muted
|
||||
Messages unmuted Messages unmuted
|
||||
Minutes Minutes
|
||||
Mon Mon
|
||||
Monday Monday
|
||||
Mute mentions Mute mentions
|
||||
Mute messages Mute messages
|
||||
Navigate Navigate
|
||||
Never Never
|
||||
New PIN New PIN
|
||||
No backups available to restore. No backups available to restore.
|
||||
No backups yet. Use Export Backup above to create one. No backups yet. Use Export Backup above to create one.
|
||||
No channels yet No channels yet
|
||||
No direct chats yet No direct chats yet
|
||||
Normal\nLarge text\nHuge text Normal\nLarge text\nHuge text
|
||||
Not delivered, tap to resend Not delivered, tap to resend
|
||||
Nov Nov
|
||||
November November
|
||||
Oct Oct
|
||||
October October
|
||||
On On
|
||||
On battery, show it for On battery, show it for
|
||||
PIN changed PIN changed
|
||||
PIN lock PIN lock
|
||||
PIN lock off PIN lock off
|
||||
PIN lock on PIN lock on
|
||||
Phone-app link Phone-app link
|
||||
Pick the numbers, or type the PIN Pick the numbers, or type the PIN
|
||||
Preview screensaver Preview screensaver
|
||||
Radio and messaging Radio and messaging
|
||||
Reboot Now Reboot Now
|
||||
Received %s Received %s
|
||||
Receiving %s Receiving %s
|
||||
Region not saved: use a-z, 0-9 and - Region not saved: use a-z, 0-9 and -
|
||||
Remote Remote
|
||||
Repeater Repeater
|
||||
Report a bug Report a bug
|
||||
Reset chat icon Reset chat icon
|
||||
Room Room
|
||||
Routed Routed
|
||||
Running it for Running it for
|
||||
Running it for: Running it for:
|
||||
SD card SD card
|
||||
SD unavailable - insert a FAT32 card and retry SD unavailable - insert a FAT32 card and retry
|
||||
Sat Sat
|
||||
Saturday Saturday
|
||||
Say whether this build works on your board, so a stable release is promoted on evidence rather than on nobody having complained. A bug report opens as a QR: scan it and file it from your phone, under your own GitHub account. Say whether this build works on your board, so a stable release is promoted on evidence rather than on nobody having complained. A bug report opens as a QR: scan it and file it from your phone, under your own GitHub account.
|
||||
Screen timeout Screen timeout
|
||||
Screensaver Screensaver
|
||||
Scroll Scroll
|
||||
Scroll moves the screen; Cursor points and clicks; Navigate (experimental) moves a selection. Hold the trackball to switch between Scroll and Cursor. Scroll moves the screen; Cursor points and clicks; Navigate (experimental) moves a selection. Hold the trackball to switch between Scroll and Cursor.
|
||||
Send Send
|
||||
Send a test report Send a test report
|
||||
Send another test report Send another test report
|
||||
Sending %s Sending %s
|
||||
Sending your report... Sending your report...
|
||||
Sensor Sensor
|
||||
Sep Sep
|
||||
September September
|
||||
Share my contact Share my contact
|
||||
Spectrum Spectrum
|
||||
Stop USB Files Stop USB Files
|
||||
Storage and SD Storage and SD
|
||||
Sun Sun
|
||||
Sunday Sunday
|
||||
Tap the EN key on the keyboard to switch Tap the EN key on the keyboard to switch
|
||||
Tells the matrix how many devices run this build, so a board with no reports can be told apart from a board nobody owns. Sends the board and the version, nothing else. Tells the matrix how many devices run this build, so a board with no reports can be told apart from a board nobody owns. Sends the board and the version, nothing else.
|
||||
Terminal Terminal
|
||||
Test report: %s Test report: %s
|
||||
Thank you. Your report is on wadamesh.com/beta Thank you. Your report is on wadamesh.com/beta
|
||||
The PINs did not match The PINs did not match
|
||||
The mesh around you instead of a dark screen. Every ring is a real packet. The mesh around you instead of a dark screen. Every ring is a real packet.
|
||||
This is everything that leaves the device. No name, no contacts, no position. This is everything that leaves the device. No name, no contacts, no position.
|
||||
Thu Thu
|
||||
Thursday Thursday
|
||||
Tick only what you actually used: Tick only what you actually used:
|
||||
Too many chat icons Too many chat icons
|
||||
Too many tries. Wait %u s Too many tries. Wait %u s
|
||||
Trackball Trackball
|
||||
Trackball: scroll Trackball: scroll
|
||||
Transfer Transfer
|
||||
Tue Tue
|
||||
Tuesday Tuesday
|
||||
Turn Wi-Fi on to send a report Turn Wi-Fi on to send a report
|
||||
Type 4 numbers or letters Type 4 numbers or letters
|
||||
USB Files USB Files
|
||||
USB Files: low memory USB Files: low memory
|
||||
Unmute mentions Unmute mentions
|
||||
Unmute messages Unmute messages
|
||||
Upload of %s stopped Upload of %s stopped
|
||||
Used Used
|
||||
VNC VNC
|
||||
Waiting for the computer Waiting for the computer
|
||||
Web Web
|
||||
Wed Wed
|
||||
Wednesday Wednesday
|
||||
While this screen is open, the companion app cannot use USB. While this screen is open, the companion app cannot use USB.
|
||||
Works Works
|
||||
Wrong PIN Wrong PIN
|
||||
You: You:
|
||||
a week or more a week or more
|
||||
about a day about a day
|
||||
heard %s ago heard %s ago
|
||||
hold the BOOT button to unlock hold the BOOT button to unlock
|
||||
hop away hop away
|
||||
hops away hops away
|
||||
minutes minutes
|
||||
new new
|
||||
node node
|
||||
nodes nodes
|
||||
now now
|
||||
routed routed
|
||||
# Theme page and colour looks: new strings, English placeholders until translated (value = key)
|
||||
A colour for every section, coloured status icons, names and glyphs in their own hue. A colour for every section, coloured status icons, names and glyphs in their own hue.
|
||||
Apply and restart Apply and restart
|
||||
Applying the theme, restarting… Applying the theme, restarting…
|
||||
Bubbles in colour Bubbles in colour
|
||||
Bubbles plain Bubbles plain
|
||||
Chat icons Chat icons
|
||||
Colourful bubbles Colourful bubbles
|
||||
Custom Custom
|
||||
Every app and page its own colour, with a little motion. Every app and page its own colour, with a little motion.
|
||||
Black and white with heavy outlines, for bright sun or low vision. Black and white with heavy outlines, for bright sun or low vision.
|
||||
Glyphs Glyphs
|
||||
High contrast keeps its own fixed colours. High contrast keeps its own fixed colours.
|
||||
Initials Initials
|
||||
MORE COLORS! MORE COLORS!
|
||||
Mode Mode
|
||||
Names are always in colour; this colours the bubbles too. Names are always in colour; this colours the bubbles too.
|
||||
Neon Neon
|
||||
On my way On my way
|
||||
Pastel Pastel
|
||||
Preview Preview
|
||||
Rainbow Rainbow
|
||||
Regular Regular
|
||||
Ridge at six? Ridge at six?
|
||||
Taste the rainbow Taste the rainbow
|
||||
Use this colour Use this colour
|
||||
@@ -1,7 +1,7 @@
|
||||
# wadamesh language file
|
||||
# canonical source - translators: edit this file and PR it
|
||||
# code: uk
|
||||
# ver: 22
|
||||
# ver: 23
|
||||
# name: Українська
|
||||
# base: uk
|
||||
(device behind) (пристрій відстає)
|
||||
@@ -34,9 +34,14 @@ Accent popups: off Підказки акцентів: вимк
|
||||
Accent popups: on Підказки акцентів: увімк
|
||||
Accent colour Акцентний колір
|
||||
Appearance Вигляд
|
||||
Condense Nav (restart to apply) Компактна навігація (перезапуск для застосування)
|
||||
Condense Nav saved — restart to apply Компактну навігацію збережено — перезапуск для застосування
|
||||
Day День
|
||||
High contrast Висока контрастність
|
||||
High contrast - restarting to apply it… Висока контрастність - перезавантаження для застосування…
|
||||
Keyboard nav: on Навігація клавіатурою: увімк.
|
||||
Landscape only Лише в альбомній орієнтації
|
||||
Letters move the highlight when no text field is focused. Enter selects; hold Backspace to go back. Літери переміщують виділення, коли не активне текстове поле. Enter вибирає; утримуйте Backspace, щоб повернутися.
|
||||
Night Ніч
|
||||
Theme save failed Не вдалося зберегти тему
|
||||
Ack Підтв.
|
||||
@@ -1282,3 +1287,234 @@ No known Windows malware found. No known Windows malware found.
|
||||
This firmware can find these but not remove them. Update wadamesh, or format the card: in Files, hold the SD card row. This firmware can find these but not remove them. Update wadamesh, or format the card: in Files, hold the SD card row.
|
||||
SD Scan only removes files it recognises. If the card may be infected, the safest fix is to copy off what you need and format it completely: in Files, hold the SD card row. SD Scan only removes files it recognises. If the card may be infected, the safest fix is to copy off what you need and format it completely: in Files, hold the SD card row.
|
||||
and %d more and %d more
|
||||
# beta_89: new strings, English placeholders until translated (value = key)
|
||||
%d nodes heard today %d nodes heard today
|
||||
%lu packets heard %lu packets heard
|
||||
1 node heard today 1 node heard today
|
||||
1 packet heard 1 packet heard
|
||||
1. Connect this device to the computer with a USB cable.\n2. Open this address in Chrome or Edge: 1. Connect this device to the computer with a USB cable.\n2. Open this address in Chrome or Edge:
|
||||
3. Click Connect and choose this device. 3. Click Connect and choose this device.
|
||||
4 numbers or letters 4 numbers or letters
|
||||
A day A day
|
||||
A week A week
|
||||
Add a channel Add a channel
|
||||
Add, download or delete files on this device from a computer. Add, download or delete files on this device from a computer.
|
||||
Advertise Advertise
|
||||
Always on when connected to power Always on when connected to power
|
||||
Anything worth saying (optional) Anything worth saying (optional)
|
||||
App drawer App drawer
|
||||
App icons App icons
|
||||
Append timestamp Append timestamp
|
||||
Apr Apr
|
||||
April April
|
||||
Asks for 4 numbers or letters to unlock, and locks whenever the screen goes off. If you forget it, the only way back in is to reset the device, which erases everything on it. Asks for 4 numbers or letters to unlock, and locks whenever the screen goes off. If you forget it, the only way back in is to reset the device, which erases everything on it.
|
||||
Aug Aug
|
||||
August August
|
||||
Blocked Blocked
|
||||
Change PIN Change PIN
|
||||
Channel Channel
|
||||
Channels Channels
|
||||
Chat Chat
|
||||
Chat icon reset Chat icon reset
|
||||
Chats Chats
|
||||
Choose a PIN Choose a PIN
|
||||
Clock not set Clock not set
|
||||
Cmdr Cmdr
|
||||
Commander Commander
|
||||
Companion Companion
|
||||
Connected to the computer Connected to the computer
|
||||
Could not send the report. Try again later. Could not send the report. Try again later.
|
||||
Count this device Count this device
|
||||
Current PIN Current PIN
|
||||
Cursor Cursor
|
||||
Dec Dec
|
||||
December December
|
||||
Delete this conversation? Delete this conversation?
|
||||
Device id Device id
|
||||
Direct Direct
|
||||
Direct message Direct message
|
||||
Direct, no repeaters Direct, no repeaters
|
||||
Discover Discover
|
||||
Double-tap SPACE while typing to switch Double-tap SPACE while typing to switch
|
||||
Emoji Emoji
|
||||
Enter PIN Enter PIN
|
||||
Enter it again Enter it again
|
||||
Export Backup Export Backup
|
||||
Feb Feb
|
||||
February February
|
||||
Fri Fri
|
||||
Friday Friday
|
||||
Has a problem Has a problem
|
||||
Heard by %u repeaters Heard by %u repeaters
|
||||
Heard by 1 repeater Heard by 1 repeater
|
||||
Hold the trackball to switch Hold the trackball to switch
|
||||
Home button opens Home button opens
|
||||
I hit a problem I hit a problem
|
||||
I understand I understand
|
||||
If you forget your PIN, you have to reset the device If you forget your PIN, you have to reset the device
|
||||
Internal Internal
|
||||
It is the only way back in, and it erases everything on it: contacts, channels, messages and settings. Nobody can unlock it for you. It is the only way back in, and it erases everything on it: contacts, channels, messages and settings. Nobody can unlock it for you.
|
||||
Jan Jan
|
||||
January January
|
||||
Join # channel Join # channel
|
||||
Join Public channel Join Public channel
|
||||
Jul Jul
|
||||
July July
|
||||
Jun Jun
|
||||
June June
|
||||
Keyboard and input Keyboard and input
|
||||
Keyboard attached.\nRestarting in landscape in %d s. Keyboard attached.\nRestarting in landscape in %d s.
|
||||
Large Large
|
||||
Launcher Launcher
|
||||
Launcher layout Launcher layout
|
||||
Locks when screen off\n(hold the BOOT button to unlock) Locks when screen off\n(hold the BOOT button to unlock)
|
||||
Map and GPS Map and GPS
|
||||
Map tiles Map tiles
|
||||
Mar Mar
|
||||
March March
|
||||
Mark all as read Mark all as read
|
||||
May May
|
||||
Mentions Mentions
|
||||
Mentions muted Mentions muted
|
||||
Mentions unmuted Mentions unmuted
|
||||
Mesh · 24 h Mesh · 24 h
|
||||
Message %s Message %s
|
||||
Message text on lock screen Message text on lock screen
|
||||
Messages muted Messages muted
|
||||
Messages unmuted Messages unmuted
|
||||
Minutes Minutes
|
||||
Mon Mon
|
||||
Monday Monday
|
||||
Mute mentions Mute mentions
|
||||
Mute messages Mute messages
|
||||
Navigate Navigate
|
||||
Never Never
|
||||
New PIN New PIN
|
||||
No backups available to restore. No backups available to restore.
|
||||
No backups yet. Use Export Backup above to create one. No backups yet. Use Export Backup above to create one.
|
||||
No channels yet No channels yet
|
||||
No direct chats yet No direct chats yet
|
||||
Normal\nLarge text\nHuge text Normal\nLarge text\nHuge text
|
||||
Not delivered, tap to resend Not delivered, tap to resend
|
||||
Nov Nov
|
||||
November November
|
||||
Oct Oct
|
||||
October October
|
||||
On On
|
||||
On battery, show it for On battery, show it for
|
||||
PIN changed PIN changed
|
||||
PIN lock PIN lock
|
||||
PIN lock off PIN lock off
|
||||
PIN lock on PIN lock on
|
||||
Phone-app link Phone-app link
|
||||
Pick the numbers, or type the PIN Pick the numbers, or type the PIN
|
||||
Preview screensaver Preview screensaver
|
||||
Radio and messaging Radio and messaging
|
||||
Reboot Now Reboot Now
|
||||
Received %s Received %s
|
||||
Receiving %s Receiving %s
|
||||
Region not saved: use a-z, 0-9 and - Region not saved: use a-z, 0-9 and -
|
||||
Remote Remote
|
||||
Repeater Repeater
|
||||
Report a bug Report a bug
|
||||
Reset chat icon Reset chat icon
|
||||
Room Room
|
||||
Routed Routed
|
||||
Running it for Running it for
|
||||
Running it for: Running it for:
|
||||
SD card SD card
|
||||
SD unavailable - insert a FAT32 card and retry SD unavailable - insert a FAT32 card and retry
|
||||
Sat Sat
|
||||
Saturday Saturday
|
||||
Say whether this build works on your board, so a stable release is promoted on evidence rather than on nobody having complained. A bug report opens as a QR: scan it and file it from your phone, under your own GitHub account. Say whether this build works on your board, so a stable release is promoted on evidence rather than on nobody having complained. A bug report opens as a QR: scan it and file it from your phone, under your own GitHub account.
|
||||
Screen timeout Screen timeout
|
||||
Screensaver Screensaver
|
||||
Scroll Scroll
|
||||
Scroll moves the screen; Cursor points and clicks; Navigate (experimental) moves a selection. Hold the trackball to switch between Scroll and Cursor. Scroll moves the screen; Cursor points and clicks; Navigate (experimental) moves a selection. Hold the trackball to switch between Scroll and Cursor.
|
||||
Send Send
|
||||
Send a test report Send a test report
|
||||
Send another test report Send another test report
|
||||
Sending %s Sending %s
|
||||
Sending your report... Sending your report...
|
||||
Sensor Sensor
|
||||
Sep Sep
|
||||
September September
|
||||
Share my contact Share my contact
|
||||
Spectrum Spectrum
|
||||
Stop USB Files Stop USB Files
|
||||
Storage and SD Storage and SD
|
||||
Sun Sun
|
||||
Sunday Sunday
|
||||
Tap the EN key on the keyboard to switch Tap the EN key on the keyboard to switch
|
||||
Tells the matrix how many devices run this build, so a board with no reports can be told apart from a board nobody owns. Sends the board and the version, nothing else. Tells the matrix how many devices run this build, so a board with no reports can be told apart from a board nobody owns. Sends the board and the version, nothing else.
|
||||
Terminal Terminal
|
||||
Test report: %s Test report: %s
|
||||
Thank you. Your report is on wadamesh.com/beta Thank you. Your report is on wadamesh.com/beta
|
||||
The PINs did not match The PINs did not match
|
||||
The mesh around you instead of a dark screen. Every ring is a real packet. The mesh around you instead of a dark screen. Every ring is a real packet.
|
||||
This is everything that leaves the device. No name, no contacts, no position. This is everything that leaves the device. No name, no contacts, no position.
|
||||
Thu Thu
|
||||
Thursday Thursday
|
||||
Tick only what you actually used: Tick only what you actually used:
|
||||
Too many chat icons Too many chat icons
|
||||
Too many tries. Wait %u s Too many tries. Wait %u s
|
||||
Trackball Trackball
|
||||
Trackball: scroll Trackball: scroll
|
||||
Transfer Transfer
|
||||
Tue Tue
|
||||
Tuesday Tuesday
|
||||
Turn Wi-Fi on to send a report Turn Wi-Fi on to send a report
|
||||
Type 4 numbers or letters Type 4 numbers or letters
|
||||
USB Files USB Files
|
||||
USB Files: low memory USB Files: low memory
|
||||
Unmute mentions Unmute mentions
|
||||
Unmute messages Unmute messages
|
||||
Upload of %s stopped Upload of %s stopped
|
||||
Used Used
|
||||
VNC VNC
|
||||
Waiting for the computer Waiting for the computer
|
||||
Web Web
|
||||
Wed Wed
|
||||
Wednesday Wednesday
|
||||
While this screen is open, the companion app cannot use USB. While this screen is open, the companion app cannot use USB.
|
||||
Works Works
|
||||
Wrong PIN Wrong PIN
|
||||
You: You:
|
||||
a week or more a week or more
|
||||
about a day about a day
|
||||
heard %s ago heard %s ago
|
||||
hold the BOOT button to unlock hold the BOOT button to unlock
|
||||
hop away hop away
|
||||
hops away hops away
|
||||
minutes minutes
|
||||
new new
|
||||
node node
|
||||
nodes nodes
|
||||
now now
|
||||
routed routed
|
||||
# Theme page and colour looks: new strings, English placeholders until translated (value = key)
|
||||
A colour for every section, coloured status icons, names and glyphs in their own hue. A colour for every section, coloured status icons, names and glyphs in their own hue.
|
||||
Apply and restart Apply and restart
|
||||
Applying the theme, restarting… Applying the theme, restarting…
|
||||
Bubbles in colour Bubbles in colour
|
||||
Bubbles plain Bubbles plain
|
||||
Chat icons Chat icons
|
||||
Colourful bubbles Colourful bubbles
|
||||
Custom Custom
|
||||
Every app and page its own colour, with a little motion. Every app and page its own colour, with a little motion.
|
||||
Black and white with heavy outlines, for bright sun or low vision. Black and white with heavy outlines, for bright sun or low vision.
|
||||
Glyphs Glyphs
|
||||
High contrast keeps its own fixed colours. High contrast keeps its own fixed colours.
|
||||
Initials Initials
|
||||
MORE COLORS! MORE COLORS!
|
||||
Mode Mode
|
||||
Names are always in colour; this colours the bubbles too. Names are always in colour; this colours the bubbles too.
|
||||
Neon Neon
|
||||
On my way On my way
|
||||
Pastel Pastel
|
||||
Preview Preview
|
||||
Rainbow Rainbow
|
||||
Regular Regular
|
||||
Ridge at six? Ridge at six?
|
||||
Taste the rainbow Taste the rainbow
|
||||
Use this colour Use this colour
|
||||
@@ -3,72 +3,72 @@
|
||||
{
|
||||
"code": "bg",
|
||||
"name": "Български",
|
||||
"ver": "22"
|
||||
"ver": "23"
|
||||
},
|
||||
{
|
||||
"code": "de",
|
||||
"name": "Deutsch",
|
||||
"ver": "22"
|
||||
"ver": "23"
|
||||
},
|
||||
{
|
||||
"code": "el",
|
||||
"name": "Ελληνικά",
|
||||
"ver": "22"
|
||||
"ver": "23"
|
||||
},
|
||||
{
|
||||
"code": "es",
|
||||
"name": "Español",
|
||||
"ver": "22"
|
||||
"ver": "23"
|
||||
},
|
||||
{
|
||||
"code": "fr",
|
||||
"name": "Français",
|
||||
"ver": "22"
|
||||
"ver": "23"
|
||||
},
|
||||
{
|
||||
"code": "hu",
|
||||
"name": "Magyar",
|
||||
"ver": "22"
|
||||
"ver": "23"
|
||||
},
|
||||
{
|
||||
"code": "it",
|
||||
"name": "Italiano",
|
||||
"ver": "22"
|
||||
"ver": "23"
|
||||
},
|
||||
{
|
||||
"code": "nl",
|
||||
"name": "Nederlands",
|
||||
"ver": "22"
|
||||
"ver": "23"
|
||||
},
|
||||
{
|
||||
"code": "pt-br",
|
||||
"name": "Português (BR)",
|
||||
"ver": "22"
|
||||
"ver": "23"
|
||||
},
|
||||
{
|
||||
"code": "ro",
|
||||
"name": "Română",
|
||||
"ver": "22"
|
||||
"ver": "23"
|
||||
},
|
||||
{
|
||||
"code": "cs",
|
||||
"name": "Čeština",
|
||||
"ver": "22"
|
||||
"ver": "23"
|
||||
},
|
||||
{
|
||||
"code": "ru",
|
||||
"name": "Русский",
|
||||
"ver": "22"
|
||||
"ver": "23"
|
||||
},
|
||||
{
|
||||
"code": "sr",
|
||||
"name": "Српски",
|
||||
"ver": "22"
|
||||
"ver": "23"
|
||||
},
|
||||
{
|
||||
"code": "uk",
|
||||
"name": "Українська",
|
||||
"ver": "22"
|
||||
"ver": "23"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{"id":"ping","name":"Ping","ver":"1.0","desc":"Send a mesh DM ping to any contact and measure round-trip time. Includes your GPS position so both sides see distance and bearing. Auto-replies to incoming pings. Contributed by samuelcoustet.","requires":"sdk_ext"}
|
||||
@@ -0,0 +1,169 @@
|
||||
-- Ping — wadamesh Lua app
|
||||
-- Send a DM to any contact and measure round-trip time.
|
||||
-- Both devices exchange their GPS position; the result shows RTT,
|
||||
-- distance and cardinal bearing when both have a fix.
|
||||
-- The app also auto-replies to incoming pings from other Ping users.
|
||||
-- Requires: sdk_ext
|
||||
|
||||
local ui, sys, store, timer = wada.ui, wada.sys, wada.store, wada.timer
|
||||
local mesh = wada.mesh
|
||||
local geo = wada.geo -- great-circle helpers; nil on firmware without sdk_ext
|
||||
local C = ui.colors
|
||||
|
||||
local app = {}
|
||||
|
||||
local PING_PFX = "WADAPING:"
|
||||
local PONG_PFX = "WADAPONG:"
|
||||
|
||||
local W, H
|
||||
local gps_lbl
|
||||
local rows = {} -- {name, result_lbl} (parallel with contacts table)
|
||||
local pending = {} -- name → {sent_ms, lat_e6, lon_e6}
|
||||
|
||||
-- ---- helpers ---------------------------------------------------------------
|
||||
|
||||
local function gps_line()
|
||||
local fix = sys.gps()
|
||||
if not fix then return "no GPS fix" end
|
||||
local ns = fix.lat >= 0 and "N" or "S"
|
||||
local ew = fix.lon >= 0 and "E" or "W"
|
||||
return string.format("%.4f°%s %.4f°%s %d sats",
|
||||
math.abs(fix.lat), ns, math.abs(fix.lon), ew, fix.sats or 0)
|
||||
end
|
||||
|
||||
local function dist_str(m)
|
||||
if m < 1000 then return string.format("%dm", math.floor(m + 0.5))
|
||||
else return string.format("%.1fkm", m / 1000.0) end
|
||||
end
|
||||
|
||||
local function find_row(name)
|
||||
for _, r in ipairs(rows) do
|
||||
if r.name == name then return r end
|
||||
end
|
||||
end
|
||||
|
||||
local function set_row_result(name, rtt_ms, dist_m, cardinal)
|
||||
local r = find_row(name)
|
||||
if not r then return end
|
||||
if rtt_ms then
|
||||
local s = tostring(rtt_ms) .. "ms"
|
||||
if dist_m and dist_m > 0 then
|
||||
s = s .. " " .. dist_str(dist_m)
|
||||
if cardinal then s = s .. " " .. cardinal end
|
||||
end
|
||||
r.result_lbl:set(s)
|
||||
r.result_lbl:color(C.good)
|
||||
else
|
||||
r.result_lbl:set("waiting…")
|
||||
r.result_lbl:color(C.sub)
|
||||
end
|
||||
end
|
||||
|
||||
local function do_ping(name)
|
||||
local fix = sys.gps()
|
||||
local lat6 = fix and fix.lat_e6 or 0
|
||||
local lon6 = fix and fix.lon_e6 or 0
|
||||
local ts = sys.millis()
|
||||
local msg = string.format("%s%d:%d:%d", PING_PFX, ts, lat6, lon6)
|
||||
local ok, err = mesh.send_dm(name, msg)
|
||||
if ok then
|
||||
pending[name] = { sent_ms = ts, lat_e6 = lat6, lon_e6 = lon6 }
|
||||
set_row_result(name, nil, nil, nil) -- "waiting…"
|
||||
sys.toast("Ping → " .. name, 800)
|
||||
else
|
||||
sys.toast("Error: " .. tostring(err), 2000)
|
||||
end
|
||||
end
|
||||
|
||||
-- ---- message handler -------------------------------------------------------
|
||||
|
||||
function app.on_message(m)
|
||||
if m.kind ~= "dm" then return end
|
||||
local text = tostring(m.text or "")
|
||||
|
||||
-- ---- incoming PING: echo back with our position -------------------------
|
||||
if text:sub(1, #PING_PFX) == PING_PFX then
|
||||
local ts_s, _, _ = text:sub(#PING_PFX + 1):match("(-?%d+):(-?%d+):(-?%d+)")
|
||||
if ts_s then
|
||||
local fix = sys.gps()
|
||||
local my6lat = fix and fix.lat_e6 or 0
|
||||
local my6lon = fix and fix.lon_e6 or 0
|
||||
mesh.send_dm(m.sender, string.format("%s%s:%d:%d", PONG_PFX, ts_s, my6lat, my6lon))
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
-- ---- incoming PONG: compute RTT + distance ------------------------------
|
||||
if text:sub(1, #PONG_PFX) == PONG_PFX then
|
||||
local ts_s, their_lat_s, their_lon_s =
|
||||
text:sub(#PONG_PFX + 1):match("(-?%d+):(-?%d+):(-?%d+)")
|
||||
if not ts_s then return end
|
||||
|
||||
local sent_ms = tonumber(ts_s)
|
||||
local rtt = sys.millis() - sent_ms
|
||||
|
||||
local dist_m, cardinal
|
||||
local p = pending[m.sender]
|
||||
if p and geo and tonumber(their_lat_s) ~= 0 and p.lat_e6 ~= 0 then
|
||||
local my_lat = p.lat_e6 / 1000000.0
|
||||
local my_lon = p.lon_e6 / 1000000.0
|
||||
local th_lat = tonumber(their_lat_s) / 1000000.0
|
||||
local th_lon = tonumber(their_lon_s) / 1000000.0
|
||||
dist_m = geo.distance(my_lat, my_lon, th_lat, th_lon)
|
||||
local brg = geo.bearing(my_lat, my_lon, th_lat, th_lon)
|
||||
cardinal = geo.cardinal(brg)
|
||||
end
|
||||
|
||||
pending[m.sender] = nil
|
||||
set_row_result(m.sender, rtt, dist_m, cardinal)
|
||||
|
||||
local notice = m.sender .. ": " .. rtt .. "ms"
|
||||
if dist_m then notice = notice .. " " .. dist_str(dist_m) end
|
||||
sys.toast(notice, 2500)
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
-- ---- lifecycle -------------------------------------------------------------
|
||||
|
||||
function app.on_open(w, h)
|
||||
W, H = w, h
|
||||
ui.scroll(true)
|
||||
|
||||
local cy = 6
|
||||
gps_lbl = ui.label(gps_line(), 6, cy, 11, C.sub)
|
||||
gps_lbl:width(w - 12)
|
||||
cy = cy + 20
|
||||
|
||||
local contacts = mesh.contacts()
|
||||
|
||||
if #contacts == 0 then
|
||||
ui.label("No contacts visible", 8, cy, 12, C.sub)
|
||||
timer.every(5000)
|
||||
return
|
||||
end
|
||||
|
||||
for _, ct in ipairs(contacts) do
|
||||
local name = ct.name
|
||||
local nl = ui.label(name, 8, cy, 13, C.text)
|
||||
nl:width(w - 68)
|
||||
local rl = ui.label("—", 8, cy + 16, 11, C.sub)
|
||||
rl:width(w - 68)
|
||||
local cap = name -- capture for closure
|
||||
ui.button("Ping", w - 60, cy + 4, 52, 28, function()
|
||||
do_ping(cap)
|
||||
end)
|
||||
rows[#rows + 1] = { name = name, result_lbl = rl }
|
||||
cy = cy + 44
|
||||
end
|
||||
|
||||
timer.every(5000)
|
||||
end
|
||||
|
||||
function app.on_tick(dt)
|
||||
if gps_lbl then gps_lbl:set(gps_line()) end
|
||||
end
|
||||
|
||||
function app.on_close() end
|
||||
|
||||
return app
|
||||
@@ -0,0 +1 @@
|
||||
{"id":"protreck","name":"ProTreck","ver":"1.0","desc":"Outdoor watch: sunrise/sunset + moon phase (ASTRO), chronometer with laps (CHRONO), countdown timer with alarm (TIMER), altimeter with trend graph (ALTI). Swipe left/right to switch modes. Contributed by samuelcoustet."}
|
||||
@@ -0,0 +1,491 @@
|
||||
-- ProTreck — wadamesh outdoor watch: Astro · Chrono · Timer · Altimeter
|
||||
-- Swipe left/right to change tab
|
||||
-- ASTRO: sunrise/sunset + moon phase from GPS fix
|
||||
-- CHRONO: tap start/stop, swipe-up lap, swipe-down reset
|
||||
-- TIMER: tap start/stop, swipe-up cycle preset, swipe-down reset
|
||||
-- ALTI: GPS altitude with min/max and trend graph; swipe-down resets min/max
|
||||
-- Contributed by samuelcoustet
|
||||
|
||||
local ui, sys, store, tmr = wada.ui, wada.sys, wada.store, wada.timer
|
||||
local C = ui.colors
|
||||
|
||||
local app = {}
|
||||
|
||||
-- ── Constants ─────────────────────────────────────────────────────────────
|
||||
local TAB = { "ASTRO", "CHRONO", "TIMER", "ALTI" }
|
||||
local TAB_H = 18 -- tab bar height (px)
|
||||
local HIST_N = 60 -- altimeter ring-buffer size
|
||||
|
||||
-- ── State ─────────────────────────────────────────────────────────────────
|
||||
local tab = 1
|
||||
local cv, W, H
|
||||
|
||||
-- Astro
|
||||
local astro_t0 = 0 -- last refresh (millis)
|
||||
local astro_sr, astro_ss -- sunrise / sunset (UTC fractional hours), or nil
|
||||
local astro_phase = 0 -- moon phase 0-29
|
||||
local astro_lat, astro_lon, astro_yday, astro_year
|
||||
|
||||
-- Chrono
|
||||
local chr_run = false
|
||||
local chr_t0 = 0 -- millis at last start
|
||||
local chr_acc = 0 -- accumulated ms before last start
|
||||
local chr_laps = {} -- list of "MM:SS.cs" strings
|
||||
|
||||
-- Timer
|
||||
local TMR_PRESETS = { 30, 60, 120, 300, 600, 1800, 3600 }
|
||||
local tmr_pi = 4 -- preset index (default 300 s)
|
||||
local tmr_secs = 300
|
||||
local tmr_end = 0 -- millis when alarm fires; 0 = not running
|
||||
local tmr_done = false
|
||||
|
||||
-- Altimeter
|
||||
local alti_min = 99999
|
||||
local alti_max = -99999
|
||||
local alti_hist = {}
|
||||
local alti_hi = 0 -- ring-buffer write head
|
||||
|
||||
-- ── Time helpers ──────────────────────────────────────────────────────────
|
||||
local function now_unix()
|
||||
local ep = sys.epoch and sys.epoch()
|
||||
if ep then return ep end
|
||||
if os then return os.time and os.time() end
|
||||
return nil
|
||||
end
|
||||
|
||||
local function decompose(t)
|
||||
if os and os.date then return os.date("*t", t) end
|
||||
-- minimal fallback (good enough for rough yday on harness without os.date)
|
||||
local s = t % 86400
|
||||
local sec = s % 60; s = math.floor(s / 60)
|
||||
local min2 = s % 60; local hr = math.floor(s / 60)
|
||||
local days = math.floor(t / 86400)
|
||||
-- Gregorian: days since epoch 1970-01-01
|
||||
local y = 1970; local d = days
|
||||
while true do
|
||||
local ylen = ((y % 4 == 0 and y % 100 ~= 0) or y % 400 == 0) and 366 or 365
|
||||
if d < ylen then break end
|
||||
d = d - ylen; y = y + 1
|
||||
end
|
||||
return { year = y, hour = hr, min = min2, sec = sec, yday = d + 1 }
|
||||
end
|
||||
|
||||
local function fmt_hms(ms)
|
||||
local s = math.floor(ms / 1000)
|
||||
local cs = math.floor((ms % 1000) / 10)
|
||||
local m = math.floor(s / 60); s = s % 60
|
||||
local h = math.floor(m / 60); m = m % 60
|
||||
if h > 0 then
|
||||
return string.format("%d:%02d:%02d", h, m, s)
|
||||
else
|
||||
return string.format("%02d:%02d.%02d", m, s, cs)
|
||||
end
|
||||
end
|
||||
|
||||
local function fmt_mm_ss(secs)
|
||||
local h = math.floor(secs / 3600)
|
||||
local m = math.floor((secs % 3600) / 60)
|
||||
local s = secs % 60
|
||||
if h > 0 then return string.format("%d:%02d:%02d", h, m, s) end
|
||||
return string.format("%02d:%02d", m, s)
|
||||
end
|
||||
|
||||
-- ── Sun / moon algorithms ─────────────────────────────────────────────────
|
||||
local PI = math.pi
|
||||
local RAD = PI / 180
|
||||
|
||||
local function sun_utc(lat, lon, yday)
|
||||
-- Spencer 1971 simplified; returns rise_utc, set_utc (fractional hours) or nil,nil
|
||||
local B = RAD * (360 / 365) * (yday - 81)
|
||||
local eqt = 9.87 * math.sin(2 * B) - 7.53 * math.cos(B) - 1.5 * math.sin(B) -- minutes
|
||||
local decl = RAD * 23.45 * math.sin(B)
|
||||
local cha = -math.tan(lat * RAD) * math.tan(decl)
|
||||
if cha < -1 or cha > 1 then return nil, nil end
|
||||
local ha = math.acos(cha) / RAD -- degrees
|
||||
local noon = 12 - lon / 15 - eqt / 60
|
||||
return noon - ha / 15, noon + ha / 15
|
||||
end
|
||||
|
||||
local function moon_phase_num(t)
|
||||
-- days since known new moon 2000-01-06 (JD 2451549.5) → phase 0-29
|
||||
local days = t / 86400 - 10957 -- 10957 = days from 1970-01-01 to 2000-01-01
|
||||
local cycle = 29.53058867
|
||||
return math.floor((days - 6.0) % cycle)
|
||||
end
|
||||
|
||||
local MOON_NAMES = {
|
||||
[0]="New Moon", [1]="New Moon",
|
||||
[2]="Waxing Crescent",[3]="Waxing Crescent",[4]="Waxing Crescent",
|
||||
[5]="Waxing Crescent",[6]="Waxing Crescent",[7]="Waxing Crescent",
|
||||
[8]="First Quarter",[9]="First Quarter",
|
||||
[10]="Waxing Gibbous",[11]="Waxing Gibbous",[12]="Waxing Gibbous",
|
||||
[13]="Waxing Gibbous",[14]="Waxing Gibbous",
|
||||
[15]="Full Moon",[16]="Full Moon",
|
||||
[17]="Waning Gibbous",[18]="Waning Gibbous",[19]="Waning Gibbous",
|
||||
[20]="Waning Gibbous",[21]="Waning Gibbous",
|
||||
[22]="Last Quarter",[23]="Last Quarter",
|
||||
[24]="Waning Crescent",[25]="Waning Crescent",[26]="Waning Crescent",
|
||||
[27]="Waning Crescent",[28]="Waning Crescent",[29]="New Moon",
|
||||
}
|
||||
|
||||
local function update_astro()
|
||||
local now = sys.millis()
|
||||
if now - astro_t0 < 60000 then return end
|
||||
astro_t0 = now
|
||||
local t = now_unix()
|
||||
local gps = sys.gps()
|
||||
if gps and t then
|
||||
local d = decompose(t)
|
||||
astro_lat = gps.lat
|
||||
astro_lon = gps.lon
|
||||
astro_yday = d.yday or 182
|
||||
astro_year = d.year or 2024
|
||||
astro_sr, astro_ss = sun_utc(gps.lat, gps.lon, astro_yday)
|
||||
astro_phase = moon_phase_num(t)
|
||||
end
|
||||
end
|
||||
|
||||
-- ── Draw helpers ──────────────────────────────────────────────────────────
|
||||
local function tx(x) return math.floor(x) end
|
||||
local function ty(y) return math.floor(y) end
|
||||
|
||||
local function label(x, y, s, col, sz)
|
||||
cv:text(tx(x), ty(y), tostring(s), col, sz)
|
||||
end
|
||||
|
||||
local function head(x, y, s, col)
|
||||
label(x, y, s, col or C.sub, 11)
|
||||
end
|
||||
|
||||
local function big(x, y, s, col, sz)
|
||||
label(x, y, s, col or C.text, sz or 24)
|
||||
return #s * (sz and math.floor(sz * 0.6) or 14) -- rough width estimate
|
||||
end
|
||||
|
||||
-- ── ASTRO tab ─────────────────────────────────────────────────────────────
|
||||
local function draw_astro(cw, ch)
|
||||
local t = now_unix()
|
||||
local d = t and decompose(t) or nil
|
||||
|
||||
-- Date header
|
||||
if d then
|
||||
local ds = string.format("%04d-%02d-%02d", d.year or 0, d.month or 0, d.day or 0)
|
||||
head(4, 4, ds, C.sub)
|
||||
local ts2 = string.format("%02d:%02d:%02d UTC", d.hour or 0, d.min or 0, d.sec or 0)
|
||||
head(cw - tx(#ts2 * 6 + 4), 4, ts2, C.sub)
|
||||
end
|
||||
|
||||
local y = 22
|
||||
-- Sun section
|
||||
cv:rect(4, y, cw - 8, 1, C.sub, true, 0)
|
||||
y = y + 6
|
||||
head(4, y, "SUN", C.accent)
|
||||
y = y + 14
|
||||
if astro_sr then
|
||||
local rh = math.floor(astro_sr)
|
||||
local rm = math.floor((astro_sr - rh) * 60 + 0.5)
|
||||
local sh = math.floor(astro_ss)
|
||||
local sm = math.floor((astro_ss - sh) * 60 + 0.5)
|
||||
label(8, y, string.format("Rise %02d:%02d", rh, rm), C.text, 13)
|
||||
label(8, y + 16, string.format("Set %02d:%02d", sh, sm), C.text, 13)
|
||||
elseif astro_lat then
|
||||
label(8, y, "Polar day / night", C.sub, 12)
|
||||
y = y - 16
|
||||
else
|
||||
label(8, y, "Need GPS fix", C.bad, 12)
|
||||
y = y - 16
|
||||
end
|
||||
|
||||
y = y + 40
|
||||
-- Moon section
|
||||
cv:rect(4, y, cw - 8, 1, C.sub, true, 0)
|
||||
y = y + 6
|
||||
head(4, y, "MOON", C.accent)
|
||||
y = y + 14
|
||||
if astro_lat and t then
|
||||
local name = MOON_NAMES[astro_phase] or "?"
|
||||
label(8, y, string.format("Phase %d / 29", astro_phase), C.text, 13)
|
||||
label(8, y + 16, name, C.sub, 12)
|
||||
-- draw a simple moon disc glyph (filled = new/full, half = quarters)
|
||||
local mx = math.floor(cw * 3 / 4)
|
||||
local my = ty(y + 8)
|
||||
local r = 10
|
||||
cv:circle(mx, my, r, C.sub, false, 1)
|
||||
if astro_phase < 3 or astro_phase > 27 then
|
||||
cv:circle(mx, my, r - 2, C.sub, true, 0) -- new moon: dark
|
||||
elseif astro_phase < 15 then
|
||||
cv:circle(mx, my, r - 2, C.accent, true, 0) -- waxing: right half lit
|
||||
elseif astro_phase < 17 then
|
||||
cv:circle(mx, my, r - 2, C.good, true, 0) -- full moon
|
||||
else
|
||||
cv:circle(mx, my, r - 2, C.accent, true, 0) -- waning: left half lit
|
||||
end
|
||||
else
|
||||
label(8, y, "Need GPS + time", C.bad, 12)
|
||||
end
|
||||
|
||||
-- GPS status row at bottom
|
||||
local gps = sys.gps()
|
||||
if gps then
|
||||
label(4, ch - 16, string.format("GPS %d sats %.4f,%.4f", gps.sats, gps.lat, gps.lon), C.sub, 10)
|
||||
else
|
||||
label(4, ch - 16, "GPS: no fix", C.bad, 10)
|
||||
end
|
||||
end
|
||||
|
||||
-- ── CHRONO tab ────────────────────────────────────────────────────────────
|
||||
local function chr_elapsed()
|
||||
if chr_run then
|
||||
return chr_acc + (sys.millis() - chr_t0)
|
||||
else
|
||||
return chr_acc
|
||||
end
|
||||
end
|
||||
|
||||
local function draw_chrono(cw, ch)
|
||||
local ms = chr_elapsed()
|
||||
local ts = fmt_hms(ms)
|
||||
-- big time
|
||||
local tw = tx(#ts * 14)
|
||||
local tx2 = math.max(4, math.floor((cw - tw) / 2))
|
||||
cv:text(tx2, 20, ts, chr_run and C.good or C.text, 22)
|
||||
|
||||
-- status
|
||||
local stat = chr_run and "RUNNING" or (chr_acc > 0 and "STOPPED" or "READY")
|
||||
head(math.floor((cw - #stat * 6) / 2), 52, stat, chr_run and C.good or C.sub)
|
||||
|
||||
-- hints
|
||||
head(4, 66, "tap: start/stop up: lap down: reset", C.sub)
|
||||
|
||||
-- lap list (last 6)
|
||||
local start_lap = math.max(1, #chr_laps - 5)
|
||||
local ly = 84
|
||||
for i = start_lap, #chr_laps do
|
||||
local col = i == #chr_laps and C.text or C.sub
|
||||
label(4, ly, string.format("Lap %d", i), col, 12)
|
||||
label(44, ly, chr_laps[i], col, 12)
|
||||
ly = ly + 14
|
||||
if ly > ch - 20 then break end
|
||||
end
|
||||
end
|
||||
|
||||
-- ── TIMER tab ─────────────────────────────────────────────────────────────
|
||||
local function tmr_remaining()
|
||||
if tmr_end == 0 then return tmr_secs * 1000 end
|
||||
local r = tmr_end - sys.millis()
|
||||
return r < 0 and 0 or r
|
||||
end
|
||||
|
||||
local function draw_timer(cw, ch)
|
||||
local rem = tmr_remaining()
|
||||
local secs = math.floor(rem / 1000)
|
||||
local ts = fmt_mm_ss(secs)
|
||||
local col = tmr_done and C.bad or (tmr_end ~= 0 and C.good or C.text)
|
||||
local tw = tx(#ts * 16)
|
||||
local tx2 = math.max(4, math.floor((cw - tw) / 2))
|
||||
cv:text(tx2, 20, ts, col, 26)
|
||||
|
||||
-- progress bar
|
||||
local total_ms = tmr_secs * 1000
|
||||
local pct = (total_ms > 0) and math.floor((total_ms - rem) * (cw - 8) / total_ms) or 0
|
||||
if pct > 0 then
|
||||
cv:rect(4, 58, pct, 4, tmr_done and C.bad or C.accent, true, 0)
|
||||
end
|
||||
cv:rect(4, 58, cw - 8, 4, 0x1a1f26, false, 0)
|
||||
|
||||
-- preset
|
||||
local pre_s = string.format("Preset: %s", fmt_mm_ss(tmr_secs))
|
||||
head(4, 70, pre_s, C.sub)
|
||||
head(4, 84, "tap: start/stop up: cycle preset down: reset", C.sub)
|
||||
|
||||
if tmr_done then
|
||||
local ax = math.floor((cw - 60) / 2)
|
||||
cv:rect(ax, 100, 60, 22, 0x1a1f26, true, 4)
|
||||
label(ax + 8, 104, "ALARM!", C.bad, 16)
|
||||
end
|
||||
end
|
||||
|
||||
-- ── ALTI tab ──────────────────────────────────────────────────────────────
|
||||
local function draw_alti(cw, ch)
|
||||
local gps = sys.gps()
|
||||
local alt = gps and gps.alt_m or nil
|
||||
|
||||
-- big altitude
|
||||
local ats = alt and string.format("%d m", math.floor(alt)) or "--- m"
|
||||
local tw = tx(#ats * 14)
|
||||
cv:text(math.max(4, math.floor((cw - tw) / 2)), 10, ats,
|
||||
alt and C.text or C.sub, 24)
|
||||
|
||||
-- min / max
|
||||
local mn_s = alti_min < 99999 and string.format("%d m", math.floor(alti_min)) or "---"
|
||||
local mx_s = alti_max > -99999 and string.format("%d m", math.floor(alti_max)) or "---"
|
||||
head(4, 44, "MIN")
|
||||
label(4, 56, mn_s, C.sub, 13)
|
||||
head(math.floor(cw / 2) + 4, 44, "MAX")
|
||||
label(math.floor(cw / 2) + 4, 56, mx_s, C.sub, 13)
|
||||
|
||||
-- GPS info
|
||||
if gps then
|
||||
label(4, 76, string.format("Sats %d %d km/h", gps.sats, math.floor(gps.speed_kmh or 0)),
|
||||
gps.sats >= 4 and C.good or C.bad, 11)
|
||||
else
|
||||
label(4, 76, "No GPS fix", C.bad, 11)
|
||||
end
|
||||
|
||||
-- trend graph
|
||||
local n = #alti_hist
|
||||
if n > 2 then
|
||||
local gy = 92
|
||||
local gh = ch - gy - 20
|
||||
local gw = cw - 8
|
||||
cv:rect(4, gy, gw, gh, 0x1a1f26, true, 2)
|
||||
-- find range
|
||||
local mn2, mx2 = alti_hist[1], alti_hist[1]
|
||||
for _, v in ipairs(alti_hist) do
|
||||
if v < mn2 then mn2 = v end
|
||||
if v > mx2 then mx2 = v end
|
||||
end
|
||||
local rng = mx2 - mn2
|
||||
if rng < 1 then rng = 1 end
|
||||
-- draw line as series of small rects
|
||||
for i = 2, n do
|
||||
local x1 = math.floor(4 + (i - 2) * gw / (HIST_N - 1))
|
||||
local x2 = math.floor(4 + (i - 1) * gw / (HIST_N - 1))
|
||||
local y1 = math.floor(gy + gh - (alti_hist[i-1] - mn2) * gh / rng)
|
||||
local y2 = math.floor(gy + gh - (alti_hist[i] - mn2) * gh / rng)
|
||||
local lx = math.min(x1, x2)
|
||||
local lw = math.max(1, math.abs(x2 - x1))
|
||||
local ly = math.min(y1, y2)
|
||||
local lh = math.max(1, math.abs(y2 - y1))
|
||||
cv:rect(lx, ly, lw, lh, C.accent, true, 0)
|
||||
end
|
||||
-- axis labels
|
||||
head(6, gy + 2, math.floor(mx2) .. "m", C.sub)
|
||||
head(6, gy + gh - 12, math.floor(mn2) .. "m", C.sub)
|
||||
end
|
||||
|
||||
head(4, ch - 14, "down: reset min/max", C.sub)
|
||||
end
|
||||
|
||||
-- ── Tab bar ───────────────────────────────────────────────────────────────
|
||||
local function draw_tab_bar()
|
||||
local tw = math.floor(W / #TAB)
|
||||
for i, name in ipairs(TAB) do
|
||||
local tx2 = (i - 1) * tw
|
||||
if i == tab then
|
||||
cv:rect(tx2, H - TAB_H, tw, TAB_H, C.accent, true, 0)
|
||||
cv:text(math.floor(tx2 + (tw - #name * 6) / 2), H - TAB_H + 4, name, 0x000000, 10)
|
||||
else
|
||||
cv:text(math.floor(tx2 + (tw - #name * 6) / 2), H - TAB_H + 4, name, C.sub, 10)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- ── Full redraw ───────────────────────────────────────────────────────────
|
||||
local function redraw()
|
||||
if not cv then return end
|
||||
local ch = H - TAB_H
|
||||
cv:fill(0x0d1117)
|
||||
if tab == 1 then draw_astro( W, ch)
|
||||
elseif tab == 2 then draw_chrono(W, ch)
|
||||
elseif tab == 3 then draw_timer( W, ch)
|
||||
elseif tab == 4 then draw_alti( W, ch)
|
||||
end
|
||||
draw_tab_bar()
|
||||
end
|
||||
|
||||
-- ── App lifecycle ─────────────────────────────────────────────────────────
|
||||
function app.on_open(w, h)
|
||||
W, H = w, h
|
||||
cv = ui.canvas(w, h)
|
||||
cv:pos(0, 0)
|
||||
-- restore persistent state
|
||||
alti_min = tonumber(store.get("alti_min", 99999)) or 99999
|
||||
alti_max = tonumber(store.get("alti_max", -99999)) or -99999
|
||||
tmr_pi = tonumber(store.get("tmr_pi", 4)) or 4
|
||||
if tmr_pi < 1 or tmr_pi > #TMR_PRESETS then tmr_pi = 4 end
|
||||
tmr_secs = TMR_PRESETS[tmr_pi]
|
||||
astro_t0 = 0 -- force an immediate astro refresh
|
||||
update_astro()
|
||||
redraw()
|
||||
tmr.every(500)
|
||||
end
|
||||
|
||||
function app.on_tick(dt)
|
||||
-- altimeter: sample GPS when on the alti tab
|
||||
if tab == 4 then
|
||||
local gps = sys.gps()
|
||||
if gps and gps.alt_m then
|
||||
local a = gps.alt_m
|
||||
alti_hi = (alti_hi % HIST_N) + 1
|
||||
alti_hist[alti_hi] = a
|
||||
if a < alti_min then alti_min = a; store.set("alti_min", alti_min) end
|
||||
if a > alti_max then alti_max = a; store.set("alti_max", alti_max) end
|
||||
end
|
||||
end
|
||||
-- timer alarm
|
||||
if tmr_end ~= 0 and not tmr_done and sys.millis() >= tmr_end then
|
||||
tmr_done = true
|
||||
tmr_end = 0
|
||||
sys.beep()
|
||||
end
|
||||
-- astro refresh (throttled inside update_astro)
|
||||
update_astro()
|
||||
redraw()
|
||||
end
|
||||
|
||||
function app.on_input(ev)
|
||||
if ev.type == "swipe" then
|
||||
local d = ev.dir
|
||||
if d == "left" then
|
||||
tab = (tab % #TAB) + 1
|
||||
elseif d == "right" then
|
||||
tab = ((tab - 2) % #TAB) + 1
|
||||
elseif d == "up" then
|
||||
if tab == 2 and chr_run then
|
||||
chr_laps[#chr_laps + 1] = fmt_hms(chr_elapsed())
|
||||
sys.toast("Lap " .. #chr_laps, 800)
|
||||
elseif tab == 3 then
|
||||
tmr_pi = (tmr_pi % #TMR_PRESETS) + 1
|
||||
tmr_secs = TMR_PRESETS[tmr_pi]
|
||||
store.set("tmr_pi", tmr_pi)
|
||||
tmr_end = 0; tmr_done = false
|
||||
end
|
||||
elseif d == "down" then
|
||||
if tab == 2 then
|
||||
chr_run = false; chr_t0 = 0; chr_acc = 0; chr_laps = {}
|
||||
elseif tab == 3 then
|
||||
tmr_end = 0; tmr_done = false
|
||||
elseif tab == 4 then
|
||||
alti_min = 99999; alti_max = -99999; alti_hist = {}; alti_hi = 0
|
||||
store.set("alti_min", alti_min); store.set("alti_max", alti_max)
|
||||
sys.toast("Alt min/max reset", 1000)
|
||||
end
|
||||
end
|
||||
redraw()
|
||||
elseif ev.type == "down" then
|
||||
if tab == 2 then
|
||||
if chr_run then
|
||||
chr_acc = chr_elapsed(); chr_run = false
|
||||
else
|
||||
chr_t0 = sys.millis(); chr_run = true
|
||||
end
|
||||
redraw()
|
||||
elseif tab == 3 then
|
||||
if tmr_end ~= 0 then
|
||||
tmr_end = 0; tmr_done = false
|
||||
elseif tmr_done then
|
||||
tmr_done = false
|
||||
else
|
||||
tmr_end = sys.millis() + tmr_secs * 1000
|
||||
end
|
||||
redraw()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function app.on_close()
|
||||
chr_run = false
|
||||
end
|
||||
|
||||
return app
|
||||
@@ -0,0 +1 @@
|
||||
{"id":"tetris","name":"Tetris","ver":"1.0","desc":"The classic falling-block puzzle. Swipe left/right to move, up to rotate, down to hard-drop. Contributed by samuelcoustet."}
|
||||
@@ -0,0 +1,259 @@
|
||||
-- Tetris — wadamesh Lua app
|
||||
-- Swipe left/right to move | Swipe up to rotate | Swipe down to hard-drop
|
||||
-- Keyboard: arrows to move/rotate, Enter or Space to hard-drop
|
||||
-- Contributed by samuelcoustet
|
||||
|
||||
local ui, sys, store, timer = wada.ui, wada.sys, wada.store, wada.timer
|
||||
local C = ui.colors
|
||||
|
||||
local app = {}
|
||||
|
||||
local COLS, ROWS = 10, 20
|
||||
local CELL = 12
|
||||
|
||||
local COLORS = {
|
||||
0x00d4ff, -- 1 I: cyan
|
||||
0xffe066, -- 2 O: yellow
|
||||
0xcc44ff, -- 3 T: purple
|
||||
0x00dd88, -- 4 S: green
|
||||
0xff4455, -- 5 Z: red
|
||||
0x3399ff, -- 6 J: blue
|
||||
0xff8833, -- 7 L: orange
|
||||
}
|
||||
|
||||
-- Piece rotations: each entry is 4 {dr, dc} offsets from bounding-box origin
|
||||
-- Row and column are 0-indexed; field coords = py+dr (row), px+dc (col)
|
||||
local PIECES = {
|
||||
-- 1 I (4×4 bounding box)
|
||||
{ {{1,0},{1,1},{1,2},{1,3}}, {{0,2},{1,2},{2,2},{3,2}},
|
||||
{{1,0},{1,1},{1,2},{1,3}}, {{0,1},{1,1},{2,1},{3,1}} },
|
||||
-- 2 O
|
||||
{ {{0,0},{0,1},{1,0},{1,1}}, {{0,0},{0,1},{1,0},{1,1}},
|
||||
{{0,0},{0,1},{1,0},{1,1}}, {{0,0},{0,1},{1,0},{1,1}} },
|
||||
-- 3 T
|
||||
{ {{0,1},{1,0},{1,1},{1,2}}, {{0,1},{1,1},{1,2},{2,1}},
|
||||
{{1,0},{1,1},{1,2},{2,1}}, {{0,1},{1,0},{1,1},{2,1}} },
|
||||
-- 4 S
|
||||
{ {{0,1},{0,2},{1,0},{1,1}}, {{0,0},{1,0},{1,1},{2,1}},
|
||||
{{0,1},{0,2},{1,0},{1,1}}, {{0,0},{1,0},{1,1},{2,1}} },
|
||||
-- 5 Z
|
||||
{ {{0,0},{0,1},{1,1},{1,2}}, {{0,1},{1,0},{1,1},{2,0}},
|
||||
{{0,0},{0,1},{1,1},{1,2}}, {{0,1},{1,0},{1,1},{2,0}} },
|
||||
-- 6 J
|
||||
{ {{0,0},{1,0},{1,1},{1,2}}, {{0,1},{0,2},{1,1},{2,1}},
|
||||
{{1,0},{1,1},{1,2},{2,2}}, {{0,1},{1,1},{2,0},{2,1}} },
|
||||
-- 7 L
|
||||
{ {{0,2},{1,0},{1,1},{1,2}}, {{0,1},{1,1},{2,1},{2,2}},
|
||||
{{1,0},{1,1},{1,2},{2,0}}, {{0,0},{0,1},{1,1},{2,1}} },
|
||||
}
|
||||
|
||||
local board, cv, side_cv
|
||||
local px, py, rot, pid, npid
|
||||
local score, hiscore, level, cleared_total
|
||||
local over
|
||||
local SIDE_W = 58
|
||||
|
||||
local function new_board()
|
||||
local b = {}
|
||||
for r = 1, ROWS do
|
||||
b[r] = {}
|
||||
for c = 1, COLS do b[r][c] = 0 end
|
||||
end
|
||||
return b
|
||||
end
|
||||
|
||||
local function get_cells(p, r, bx, by)
|
||||
local out = {}
|
||||
for _, off in ipairs(PIECES[p][r]) do
|
||||
out[#out+1] = {by + off[1], bx + off[2]}
|
||||
end
|
||||
return out
|
||||
end
|
||||
|
||||
local function collides(p, r, bx, by)
|
||||
for _, fc in ipairs(get_cells(p, r, bx, by)) do
|
||||
local fr, fc2 = fc[1] + 1, fc[2] + 1 -- 0-indexed to 1-indexed
|
||||
if fc[2] < 0 or fc[2] >= COLS or fc[1] >= ROWS then return true end
|
||||
if fc[1] >= 0 and board[fr][fc2] ~= 0 then return true end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
local function lock_piece()
|
||||
for _, fc in ipairs(get_cells(pid, rot, px, py)) do
|
||||
local fr, fc2 = fc[1] + 1, fc[2] + 1
|
||||
if fr >= 1 then board[fr][fc2] = pid end
|
||||
end
|
||||
local cleared = 0
|
||||
local r = ROWS
|
||||
while r >= 1 do
|
||||
local full = true
|
||||
for c = 1, COLS do
|
||||
if board[r][c] == 0 then full = false; break end
|
||||
end
|
||||
if full then
|
||||
table.remove(board, r)
|
||||
table.insert(board, 1, {})
|
||||
for c = 1, COLS do board[1][c] = 0 end
|
||||
cleared = cleared + 1
|
||||
else
|
||||
r = r - 1
|
||||
end
|
||||
end
|
||||
if cleared > 0 then
|
||||
cleared_total = cleared_total + cleared
|
||||
local pts = {100, 300, 500, 800}
|
||||
score = score + (pts[cleared] or 800) * level
|
||||
level = math.max(1, math.floor(cleared_total / 10) + 1)
|
||||
timer.every(math.max(80, 700 - (level - 1) * 60))
|
||||
end
|
||||
end
|
||||
|
||||
local function spawn()
|
||||
pid, npid = npid, sys.random(1, 7)
|
||||
px = math.floor((COLS - 4) / 2) -- center the 4-wide bounding box
|
||||
py = 0
|
||||
rot = 1
|
||||
if collides(pid, rot, px, py) then
|
||||
over = true
|
||||
if score > hiscore then
|
||||
hiscore = score
|
||||
store.set("hiscore", hiscore)
|
||||
sys.toast("New high score: " .. hiscore, 2000)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function draw_board()
|
||||
cv:fill(0x0d1117)
|
||||
for r = 1, ROWS do
|
||||
for c = 1, COLS do
|
||||
local v = board[r][c]
|
||||
if v ~= 0 then
|
||||
cv:rect((c-1)*CELL+1, (r-1)*CELL+1, CELL-2, CELL-2, COLORS[v], true, 2)
|
||||
end
|
||||
end
|
||||
end
|
||||
if not over then
|
||||
for _, fc in ipairs(get_cells(pid, rot, px, py)) do
|
||||
local r, c = fc[1]+1, fc[2]+1
|
||||
if r >= 1 then
|
||||
cv:rect((c-1)*CELL+1, (r-1)*CELL+1, CELL-2, CELL-2, COLORS[pid], true, 2)
|
||||
end
|
||||
end
|
||||
end
|
||||
if over then
|
||||
local mx = math.floor(COLS * CELL / 2)
|
||||
local my = math.floor(ROWS * CELL / 2)
|
||||
cv:rect(mx - 44, my - 18, 88, 36, 0x1a1f26, true, 4)
|
||||
cv:text(mx - 38, my - 12, "GAME OVER", C.bad, 14)
|
||||
cv:text(mx - 30, my + 4, "tap to retry", C.sub, 11)
|
||||
end
|
||||
end
|
||||
|
||||
local function draw_side()
|
||||
side_cv:fill(0x0d1117)
|
||||
side_cv:text(6, 4, "NEXT", C.sub, 11)
|
||||
local PC = 10
|
||||
local ox = math.floor((SIDE_W - 4 * PC) / 2)
|
||||
for _, off in ipairs(PIECES[npid][1]) do
|
||||
side_cv:rect(ox + off[2]*PC+1, 20 + off[1]*PC+1, PC-2, PC-2, COLORS[npid], true, 2)
|
||||
end
|
||||
side_cv:text(6, 76, "SCORE", C.sub, 11)
|
||||
side_cv:text(6, 90, tostring(score), C.text, 13)
|
||||
side_cv:text(6, 116, "BEST", C.sub, 11)
|
||||
side_cv:text(6, 130, tostring(hiscore), C.accent, 13)
|
||||
side_cv:text(6, 156, "LEVEL", C.sub, 11)
|
||||
side_cv:text(6, 170, tostring(level), C.good, 15)
|
||||
end
|
||||
|
||||
local function try_rotate()
|
||||
local nr = (rot % 4) + 1
|
||||
if not collides(pid, nr, px, py) then rot = nr
|
||||
elseif not collides(pid, nr, px-1, py) then px = px-1; rot = nr
|
||||
elseif not collides(pid, nr, px+1, py) then px = px+1; rot = nr
|
||||
end
|
||||
draw_board()
|
||||
end
|
||||
|
||||
local function hard_drop()
|
||||
while not collides(pid, rot, px, py+1) do py = py+1 end
|
||||
lock_piece()
|
||||
spawn()
|
||||
draw_board()
|
||||
draw_side()
|
||||
end
|
||||
|
||||
local function reset()
|
||||
board = new_board()
|
||||
score, cleared_total, level = 0, 0, 1
|
||||
over = false
|
||||
npid = sys.random(1, 7)
|
||||
spawn()
|
||||
draw_board()
|
||||
draw_side()
|
||||
timer.every(700)
|
||||
end
|
||||
|
||||
function app.on_open(w, h)
|
||||
hiscore = store.get("hiscore", 0)
|
||||
local board_w = COLS * CELL
|
||||
local board_h = ROWS * CELL
|
||||
local total_w = board_w + 4 + SIDE_W
|
||||
local ox = math.max(0, math.floor((w - total_w) / 2))
|
||||
local oy = math.max(0, math.floor((h - board_h) / 2))
|
||||
cv = ui.canvas(board_w, board_h)
|
||||
cv:pos(ox, oy)
|
||||
side_cv = ui.canvas(SIDE_W, board_h)
|
||||
side_cv:pos(ox + board_w + 4, oy)
|
||||
reset()
|
||||
end
|
||||
|
||||
function app.on_input(ev)
|
||||
if over then
|
||||
if ev.type == "down" then reset() end
|
||||
return
|
||||
end
|
||||
if ev.type == "swipe" then
|
||||
local d = ev.dir
|
||||
if d == "left" then
|
||||
if not collides(pid, rot, px-1, py) then px = px-1; draw_board() end
|
||||
elseif d == "right" then
|
||||
if not collides(pid, rot, px+1, py) then px = px+1; draw_board() end
|
||||
elseif d == "up" then
|
||||
try_rotate()
|
||||
elseif d == "down" then
|
||||
hard_drop()
|
||||
end
|
||||
elseif ev.type == "key" then
|
||||
local k = ev.key
|
||||
if k == "left" then
|
||||
if not collides(pid, rot, px-1, py) then px = px-1; draw_board() end
|
||||
elseif k == "right" then
|
||||
if not collides(pid, rot, px+1, py) then px = px+1; draw_board() end
|
||||
elseif k == "up" then
|
||||
try_rotate()
|
||||
elseif k == "down" then
|
||||
if not collides(pid, rot, px, py+1) then py = py+1; draw_board() end
|
||||
elseif k == "enter" or k == " " then
|
||||
hard_drop()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function app.on_tick(dt)
|
||||
if over then return end
|
||||
if collides(pid, rot, px, py+1) then
|
||||
lock_piece()
|
||||
spawn()
|
||||
draw_board()
|
||||
draw_side()
|
||||
else
|
||||
py = py + 1
|
||||
draw_board()
|
||||
end
|
||||
end
|
||||
|
||||
function app.on_close() end
|
||||
|
||||
return app
|
||||
@@ -0,0 +1 @@
|
||||
{"id":"tripodometer","name":"Trip Odometer","ver":"1.0","desc":"GPS trip computer: distance, time, speed, altitude. Start/Stop to track, Reset to clear. Saves your trip across restarts. Contributed by samuelcoustet.","requires":"gps"}
|
||||
@@ -0,0 +1,176 @@
|
||||
-- Trip Odometer — wadamesh Lua app
|
||||
-- Tracks distance, time, speed, and altitude for a trip via GPS.
|
||||
-- Tap Start/Stop to track, Reset to clear. Saves your trip across app restarts.
|
||||
-- Contributed by samuelcoustet
|
||||
|
||||
local ui, sys, store, timer = wada.ui, wada.sys, wada.store, wada.timer
|
||||
local C = ui.colors
|
||||
|
||||
local app = {}
|
||||
|
||||
local MIN_SPEED_KMH = 2.0 -- below this speed, GPS drift is ignored
|
||||
local POLL_MS = 2000 -- GPS poll interval
|
||||
|
||||
-- state
|
||||
local total_km, max_kmh, elapsed_s
|
||||
local last_lat, last_lon
|
||||
local running, fix
|
||||
|
||||
-- labels updated each tick
|
||||
local spd_lbl, dist_lbl, time_lbl, maxspd_lbl, alt_lbl, sats_lbl, st_lbl
|
||||
|
||||
local function haversine(lat1, lon1, lat2, lon2)
|
||||
local R = 6371.0
|
||||
local dlat = (lat2 - lat1) * math.pi / 180.0
|
||||
local dlon = (lon2 - lon1) * math.pi / 180.0
|
||||
local a = math.sin(dlat * 0.5) ^ 2
|
||||
+ math.cos(lat1 * math.pi / 180.0)
|
||||
* math.cos(lat2 * math.pi / 180.0)
|
||||
* math.sin(dlon * 0.5) ^ 2
|
||||
return R * 2.0 * math.atan(math.sqrt(a), math.sqrt(1.0 - a))
|
||||
end
|
||||
|
||||
local function fmt_time(s)
|
||||
local h = math.floor(s / 3600)
|
||||
local m = math.floor((s % 3600) / 60)
|
||||
local sec = s % 60
|
||||
if h > 0 then return string.format("%d:%02d:%02d", h, m, sec) end
|
||||
return string.format("%d:%02d", m, sec)
|
||||
end
|
||||
|
||||
local function fmt_dist(km)
|
||||
if km < 1.0 then return string.format("%d m", math.floor(km * 1000)) end
|
||||
return string.format("%.2f km", km)
|
||||
end
|
||||
|
||||
local function save()
|
||||
store.set("trip_km_x1000", math.floor(total_km * 1000))
|
||||
store.set("trip_max_x10", math.floor(max_kmh * 10))
|
||||
store.set("trip_s", elapsed_s)
|
||||
end
|
||||
|
||||
local function redraw()
|
||||
local spd = (fix and fix.speed_kmh) or 0.0
|
||||
spd_lbl:set(string.format("%.1f", spd))
|
||||
|
||||
dist_lbl:set(fmt_dist(total_km))
|
||||
time_lbl:set(fmt_time(elapsed_s))
|
||||
maxspd_lbl:set(string.format("%.1f km/h", max_kmh))
|
||||
|
||||
if fix then
|
||||
alt_lbl:set(string.format("%d m", fix.alt_m or 0))
|
||||
sats_lbl:set(string.format("%d sats", fix.sats or 0))
|
||||
if running then
|
||||
st_lbl:set("tracking"); st_lbl:color(C.good)
|
||||
else
|
||||
st_lbl:set("paused"); st_lbl:color(C.sub)
|
||||
end
|
||||
else
|
||||
alt_lbl:set("-- m")
|
||||
sats_lbl:set("no GPS")
|
||||
st_lbl:set("no fix"); st_lbl:color(C.bad)
|
||||
end
|
||||
end
|
||||
|
||||
function app.on_open(w, h)
|
||||
-- restore saved trip
|
||||
total_km = store.get("trip_km_x1000", 0) / 1000.0
|
||||
max_kmh = store.get("trip_max_x10", 0) / 10.0
|
||||
elapsed_s = store.get("trip_s", 0)
|
||||
running = false
|
||||
fix = nil
|
||||
last_lat = nil
|
||||
last_lon = nil
|
||||
|
||||
local col2 = math.floor(w / 2)
|
||||
|
||||
-- large speed at top
|
||||
ui.label("SPEED", 8, 6, 11, C.sub)
|
||||
spd_lbl = ui.label("0.0", 8, 20, 36, C.accent)
|
||||
ui.label("km/h", 8, 60, 12, C.sub)
|
||||
|
||||
-- 2×2 grid
|
||||
local y2 = 84
|
||||
ui.label("DISTANCE", 8, y2, 11, C.sub)
|
||||
dist_lbl = ui.label("0 m", 8, y2 + 14, 20, C.text)
|
||||
|
||||
ui.label("TIME", col2, y2, 11, C.sub)
|
||||
time_lbl = ui.label("0:00", col2, y2 + 14, 20, C.text)
|
||||
|
||||
local y3 = y2 + 48
|
||||
ui.label("MAX SPEED", 8, y3, 11, C.sub)
|
||||
maxspd_lbl = ui.label("0.0 km/h", 8, y3 + 14, 16, C.text)
|
||||
|
||||
ui.label("ALTITUDE", col2, y3, 11, C.sub)
|
||||
alt_lbl = ui.label("-- m", col2, y3 + 14, 16, C.text)
|
||||
|
||||
-- GPS status row
|
||||
local y4 = y3 + 42
|
||||
sats_lbl = ui.label("no GPS", 8, y4, 13, C.sub)
|
||||
st_lbl = ui.label("no fix", col2, y4, 13, C.sub)
|
||||
|
||||
-- buttons anchored to bottom
|
||||
local bw = math.floor((w - 20) / 2)
|
||||
local btn_y = h - 46
|
||||
ui.button("Start / Stop", 8, btn_y, bw, 36, function()
|
||||
running = not running
|
||||
if running then
|
||||
last_lat = nil; last_lon = nil -- fresh segment on resume
|
||||
end
|
||||
redraw()
|
||||
end)
|
||||
ui.button("Reset", 12 + bw, btn_y, bw, 36, function()
|
||||
total_km = 0; max_kmh = 0; elapsed_s = 0
|
||||
last_lat = nil; last_lon = nil
|
||||
running = false
|
||||
save()
|
||||
redraw()
|
||||
sys.toast("Trip reset", 1200)
|
||||
end)
|
||||
|
||||
timer.every(POLL_MS)
|
||||
redraw()
|
||||
end
|
||||
|
||||
function app.on_tick()
|
||||
fix = sys.gps()
|
||||
|
||||
if running then
|
||||
elapsed_s = elapsed_s + math.floor(POLL_MS / 1000)
|
||||
|
||||
if fix and fix.lat and fix.lon then
|
||||
local spd = fix.speed_kmh or 0.0
|
||||
if spd > max_kmh then max_kmh = spd end
|
||||
|
||||
if spd >= MIN_SPEED_KMH then
|
||||
if last_lat then
|
||||
local d = haversine(last_lat, last_lon, fix.lat, fix.lon)
|
||||
if d > 0.003 then -- skip < 3 m to suppress stationary jitter
|
||||
total_km = total_km + d
|
||||
end
|
||||
end
|
||||
last_lat = fix.lat; last_lon = fix.lon
|
||||
end
|
||||
end
|
||||
|
||||
if elapsed_s % 10 == 0 then save() end
|
||||
end
|
||||
|
||||
redraw()
|
||||
end
|
||||
|
||||
function app.on_input(ev)
|
||||
-- swipe down = shortcut to reset (only when stopped, to avoid accidents)
|
||||
if ev.type == "swipe" and ev.dir == "down" and not running then
|
||||
total_km = 0; max_kmh = 0; elapsed_s = 0
|
||||
last_lat = nil; last_lon = nil
|
||||
save(); redraw()
|
||||
sys.toast("Trip reset", 1200)
|
||||
end
|
||||
end
|
||||
|
||||
function app.on_close()
|
||||
save()
|
||||
end
|
||||
|
||||
return app
|
||||
@@ -104,6 +104,13 @@
|
||||
<esp-web-install-button manifest="./manifest-tlora-pager-sx1262.json"></esp-web-install-button>
|
||||
<span class="unsupported">Use Chrome or Edge on desktop (Web Serial).</span>
|
||||
</div>
|
||||
<div class="card">
|
||||
<h2>Elecrow CrowPanel Advance 3.5 <span class="beta">Beta</span></h2>
|
||||
<p>3.5" touch display, microSD, and an SX1262 module in the LoRa expansion slot.</p>
|
||||
<p class="warn">For the <b>Advance 3.5</b> only. Hardware validation is pending; the SX1262 module must be attached.</p>
|
||||
<esp-web-install-button manifest="https://firmware.wadamesh.com/latest-beta/manifest-crowpanel-35.json"></esp-web-install-button>
|
||||
<span class="unsupported">Use Chrome or Edge on desktop (Web Serial).</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="note">
|
||||
<b>How it works:</b> plug the device in over USB, click <b>Connect</b>, pick the serial port,
|
||||
|
||||
@@ -17,19 +17,19 @@
|
||||
"role": "gui",
|
||||
"title": "Touch UI",
|
||||
"version": {
|
||||
"beta_83": {
|
||||
"notes": "New on the T-Deck and the Heltec V4: USB Files. Open it from the app drawer, connect the device to a computer with a USB cable and go to files.wadamesh.com in Chrome or Edge. You can browse the SD card, internal storage and the map tiles, upload files and whole folders, and download, rename or delete them.\nThe device carries out every file operation itself, so what it relies on stays safe: identity, contacts, settings and chat history can be downloaded but not changed or deleted. On the SD card that is the meshcomod folder.\nFiles that SD Scan would flag, like Windows programs, scripts, shortcuts and autorun.inf, show in red on the page, and downloading one asks you first. The device also checks a file's first bytes, so a Windows program under a harmless name is caught too.\nYour files go straight from the device to your computer over the cable. Nothing passes through our server.\nWhile USB Files is open, the companion app cannot use USB. Bluetooth, Wi-Fi and the radio keep working.\nThe buttons on the sides of wadamesh.com now have labels, and a new folder button opens USB Files.\nUSB Files is tested on a T-Deck. Heltec V4 owners: worth reporting whether connecting, uploading and downloading work. Other boards follow once tested.",
|
||||
"beta_85": {
|
||||
"notes": "Settings, About has \"Send a test report\". Say whether it works on your board, tick what you actually used, say how long you have run it, and send. What comes in is at wadamesh.com/beta, and that is what the next stable release gets promoted on, instead of nobody having complained. It takes one tap and needs Wi-Fi.\nThe report carries the board, the version, your ticks and the free memory. No name, no contacts, no position, and the device lists exactly what it will send before it sends it.\n\"Report a bug\" on the same page draws a QR code. Scan it with your phone and a GitHub issue form opens with your board, version and diagnostics already filled in, so you only type what went wrong, and it is filed under your own account.\nOptional, off by default: \"Count this device\" lets the update check say which board and build it is running, so a board nobody has reported on can be told apart from a board nobody owns.\nA T-Deck Max that updated itself installed T-Deck Pro firmware. The Max reuses the Pro's display and touch drivers, and the table that picks the download file matched the Pro first, so the update check found the right release and then fetched the wrong image for it. If you have a Max on beta_84, update this one over USB from wadamesh.com rather than from the device.\nThe screen timeout is a slider with fixed stops now, from 30 seconds to an hour, plus Never, instead of a free-text field. Existing settings move to the nearest stop and the default is 30 seconds.\nThe keyboard backlight in Auto follows your screen timeout instead of switching off after about three seconds, which was too short to finish typing.\nAdvert can be left from the screen itself on every touch board, not just with a hardware key.\nExport and Import moved out of Profile into Backups, as one Export action with an optional timestamp in the filename. Import finds the backups on internal storage and the card by itself and only asks which one when there is more than one.\nThinkNode M9: pressing down at the bottom of a conversation reveals the next message instead of stopping, Back stays in the app drawer when the drawer is your home screen, and a page title no longer sits on top of the lock screen.\nT-Deck Pro and Max: the sender and the message no longer overdraw each other, first-run setup can be driven from the keyboard, and Commander has two rows of controls.\nT-Deck Pro and Max: the lock screen is drawn for the screen it is on, the e-paper keeps an unambiguous locked frame instead of the last live view, and a hard lock survives waking the front pad.\nThe M9 has text size presets: Settings, Display, UI size, with Normal, Large text and Huge text. It grows the text and leaves the layout alone, so rows, cards and controls keep their size and nothing becomes unreachable, which is how the Heltec V4-R8 does it on the same size panel. Your current setting is untouched by the update.\nThe T-Display P4 can run landscape. Settings, Display, Orientation, and it restarts to apply. The panel itself cannot rotate, so the interface is rotated in software the way the Tanmatsu already does it on the same chip.\nI did not have my P4 with me to test this, so it goes out untested on the hardware. If you have one, this is the thing to try and report: whether it is smooth, and whether taps land where you put them, particularly near the edges. Portrait is still the default and one tap puts it back.\nCoordinates in a chat message can be opened on the map. The message menu gains Map, tapping the message does the same, and the spot is marked so you can find it again or remove it. By TerryTel93.\nCompact chat messages have a small gap between them on the T-Deck Pro and Max, which have no alternating row colour to separate them.\nReporting from the device is new and has never run on real hardware. If it fails, say so the old way, on Discord or GitHub.\nThe screen timeout default changed for everyone: check Settings, Display if your screen now sleeps sooner or later than you expect.",
|
||||
"files": [
|
||||
{
|
||||
"type": "flash-wipe",
|
||||
"name": "wadamesh-heltec-v4-tft-merged.bin",
|
||||
"url": "https://firmware.wadamesh.com/releases/TOUCH/beta_83/wadamesh-heltec-v4-tft-merged.bin",
|
||||
"url": "https://firmware.wadamesh.com/releases/TOUCH/beta_85/wadamesh-heltec-v4-tft-merged.bin",
|
||||
"title": "Full install (bootloader + firmware)"
|
||||
},
|
||||
{
|
||||
"type": "flash-update",
|
||||
"name": "wadamesh-heltec-v4-tft.bin",
|
||||
"url": "https://firmware.wadamesh.com/releases/TOUCH/beta_83/wadamesh-heltec-v4-tft.bin",
|
||||
"url": "https://firmware.wadamesh.com/releases/TOUCH/beta_85/wadamesh-heltec-v4-tft.bin",
|
||||
"title": "Update (app only)"
|
||||
}
|
||||
]
|
||||
@@ -49,19 +49,19 @@
|
||||
"role": "gui",
|
||||
"title": "Touch UI",
|
||||
"version": {
|
||||
"beta_83": {
|
||||
"notes": "New on the T-Deck and the Heltec V4: USB Files. Open it from the app drawer, connect the device to a computer with a USB cable and go to files.wadamesh.com in Chrome or Edge. You can browse the SD card, internal storage and the map tiles, upload files and whole folders, and download, rename or delete them.\nThe device carries out every file operation itself, so what it relies on stays safe: identity, contacts, settings and chat history can be downloaded but not changed or deleted. On the SD card that is the meshcomod folder.\nFiles that SD Scan would flag, like Windows programs, scripts, shortcuts and autorun.inf, show in red on the page, and downloading one asks you first. The device also checks a file's first bytes, so a Windows program under a harmless name is caught too.\nYour files go straight from the device to your computer over the cable. Nothing passes through our server.\nWhile USB Files is open, the companion app cannot use USB. Bluetooth, Wi-Fi and the radio keep working.\nThe buttons on the sides of wadamesh.com now have labels, and a new folder button opens USB Files.\nUSB Files is tested on a T-Deck. Heltec V4 owners: worth reporting whether connecting, uploading and downloading work. Other boards follow once tested.",
|
||||
"beta_85": {
|
||||
"notes": "Settings, About has \"Send a test report\". Say whether it works on your board, tick what you actually used, say how long you have run it, and send. What comes in is at wadamesh.com/beta, and that is what the next stable release gets promoted on, instead of nobody having complained. It takes one tap and needs Wi-Fi.\nThe report carries the board, the version, your ticks and the free memory. No name, no contacts, no position, and the device lists exactly what it will send before it sends it.\n\"Report a bug\" on the same page draws a QR code. Scan it with your phone and a GitHub issue form opens with your board, version and diagnostics already filled in, so you only type what went wrong, and it is filed under your own account.\nOptional, off by default: \"Count this device\" lets the update check say which board and build it is running, so a board nobody has reported on can be told apart from a board nobody owns.\nA T-Deck Max that updated itself installed T-Deck Pro firmware. The Max reuses the Pro's display and touch drivers, and the table that picks the download file matched the Pro first, so the update check found the right release and then fetched the wrong image for it. If you have a Max on beta_84, update this one over USB from wadamesh.com rather than from the device.\nThe screen timeout is a slider with fixed stops now, from 30 seconds to an hour, plus Never, instead of a free-text field. Existing settings move to the nearest stop and the default is 30 seconds.\nThe keyboard backlight in Auto follows your screen timeout instead of switching off after about three seconds, which was too short to finish typing.\nAdvert can be left from the screen itself on every touch board, not just with a hardware key.\nExport and Import moved out of Profile into Backups, as one Export action with an optional timestamp in the filename. Import finds the backups on internal storage and the card by itself and only asks which one when there is more than one.\nThinkNode M9: pressing down at the bottom of a conversation reveals the next message instead of stopping, Back stays in the app drawer when the drawer is your home screen, and a page title no longer sits on top of the lock screen.\nT-Deck Pro and Max: the sender and the message no longer overdraw each other, first-run setup can be driven from the keyboard, and Commander has two rows of controls.\nT-Deck Pro and Max: the lock screen is drawn for the screen it is on, the e-paper keeps an unambiguous locked frame instead of the last live view, and a hard lock survives waking the front pad.\nThe M9 has text size presets: Settings, Display, UI size, with Normal, Large text and Huge text. It grows the text and leaves the layout alone, so rows, cards and controls keep their size and nothing becomes unreachable, which is how the Heltec V4-R8 does it on the same size panel. Your current setting is untouched by the update.\nThe T-Display P4 can run landscape. Settings, Display, Orientation, and it restarts to apply. The panel itself cannot rotate, so the interface is rotated in software the way the Tanmatsu already does it on the same chip.\nI did not have my P4 with me to test this, so it goes out untested on the hardware. If you have one, this is the thing to try and report: whether it is smooth, and whether taps land where you put them, particularly near the edges. Portrait is still the default and one tap puts it back.\nCoordinates in a chat message can be opened on the map. The message menu gains Map, tapping the message does the same, and the spot is marked so you can find it again or remove it. By TerryTel93.\nCompact chat messages have a small gap between them on the T-Deck Pro and Max, which have no alternating row colour to separate them.\nReporting from the device is new and has never run on real hardware. If it fails, say so the old way, on Discord or GitHub.\nThe screen timeout default changed for everyone: check Settings, Display if your screen now sleeps sooner or later than you expect.",
|
||||
"files": [
|
||||
{
|
||||
"type": "flash-wipe",
|
||||
"name": "wadamesh-tdeck-merged.bin",
|
||||
"url": "https://firmware.wadamesh.com/releases/TOUCH/beta_83/wadamesh-tdeck-merged.bin",
|
||||
"url": "https://firmware.wadamesh.com/releases/TOUCH/beta_85/wadamesh-tdeck-merged.bin",
|
||||
"title": "Full install (bootloader + firmware)"
|
||||
},
|
||||
{
|
||||
"type": "flash-update",
|
||||
"name": "wadamesh-tdeck.bin",
|
||||
"url": "https://firmware.wadamesh.com/releases/TOUCH/beta_83/wadamesh-tdeck.bin",
|
||||
"url": "https://firmware.wadamesh.com/releases/TOUCH/beta_85/wadamesh-tdeck.bin",
|
||||
"title": "Update (app only)"
|
||||
}
|
||||
]
|
||||
@@ -81,19 +81,19 @@
|
||||
"role": "gui",
|
||||
"title": "[LR1121] Touch UI",
|
||||
"version": {
|
||||
"beta_83": {
|
||||
"notes": "New on the T-Deck and the Heltec V4: USB Files. Open it from the app drawer, connect the device to a computer with a USB cable and go to files.wadamesh.com in Chrome or Edge. You can browse the SD card, internal storage and the map tiles, upload files and whole folders, and download, rename or delete them.\nThe device carries out every file operation itself, so what it relies on stays safe: identity, contacts, settings and chat history can be downloaded but not changed or deleted. On the SD card that is the meshcomod folder.\nFiles that SD Scan would flag, like Windows programs, scripts, shortcuts and autorun.inf, show in red on the page, and downloading one asks you first. The device also checks a file's first bytes, so a Windows program under a harmless name is caught too.\nYour files go straight from the device to your computer over the cable. Nothing passes through our server.\nWhile USB Files is open, the companion app cannot use USB. Bluetooth, Wi-Fi and the radio keep working.\nThe buttons on the sides of wadamesh.com now have labels, and a new folder button opens USB Files.\nUSB Files is tested on a T-Deck. Heltec V4 owners: worth reporting whether connecting, uploading and downloading work. Other boards follow once tested.",
|
||||
"beta_85": {
|
||||
"notes": "Settings, About has \"Send a test report\". Say whether it works on your board, tick what you actually used, say how long you have run it, and send. What comes in is at wadamesh.com/beta, and that is what the next stable release gets promoted on, instead of nobody having complained. It takes one tap and needs Wi-Fi.\nThe report carries the board, the version, your ticks and the free memory. No name, no contacts, no position, and the device lists exactly what it will send before it sends it.\n\"Report a bug\" on the same page draws a QR code. Scan it with your phone and a GitHub issue form opens with your board, version and diagnostics already filled in, so you only type what went wrong, and it is filed under your own account.\nOptional, off by default: \"Count this device\" lets the update check say which board and build it is running, so a board nobody has reported on can be told apart from a board nobody owns.\nA T-Deck Max that updated itself installed T-Deck Pro firmware. The Max reuses the Pro's display and touch drivers, and the table that picks the download file matched the Pro first, so the update check found the right release and then fetched the wrong image for it. If you have a Max on beta_84, update this one over USB from wadamesh.com rather than from the device.\nThe screen timeout is a slider with fixed stops now, from 30 seconds to an hour, plus Never, instead of a free-text field. Existing settings move to the nearest stop and the default is 30 seconds.\nThe keyboard backlight in Auto follows your screen timeout instead of switching off after about three seconds, which was too short to finish typing.\nAdvert can be left from the screen itself on every touch board, not just with a hardware key.\nExport and Import moved out of Profile into Backups, as one Export action with an optional timestamp in the filename. Import finds the backups on internal storage and the card by itself and only asks which one when there is more than one.\nThinkNode M9: pressing down at the bottom of a conversation reveals the next message instead of stopping, Back stays in the app drawer when the drawer is your home screen, and a page title no longer sits on top of the lock screen.\nT-Deck Pro and Max: the sender and the message no longer overdraw each other, first-run setup can be driven from the keyboard, and Commander has two rows of controls.\nT-Deck Pro and Max: the lock screen is drawn for the screen it is on, the e-paper keeps an unambiguous locked frame instead of the last live view, and a hard lock survives waking the front pad.\nThe M9 has text size presets: Settings, Display, UI size, with Normal, Large text and Huge text. It grows the text and leaves the layout alone, so rows, cards and controls keep their size and nothing becomes unreachable, which is how the Heltec V4-R8 does it on the same size panel. Your current setting is untouched by the update.\nThe T-Display P4 can run landscape. Settings, Display, Orientation, and it restarts to apply. The panel itself cannot rotate, so the interface is rotated in software the way the Tanmatsu already does it on the same chip.\nI did not have my P4 with me to test this, so it goes out untested on the hardware. If you have one, this is the thing to try and report: whether it is smooth, and whether taps land where you put them, particularly near the edges. Portrait is still the default and one tap puts it back.\nCoordinates in a chat message can be opened on the map. The message menu gains Map, tapping the message does the same, and the spot is marked so you can find it again or remove it. By TerryTel93.\nCompact chat messages have a small gap between them on the T-Deck Pro and Max, which have no alternating row colour to separate them.\nReporting from the device is new and has never run on real hardware. If it fails, say so the old way, on Discord or GitHub.\nThe screen timeout default changed for everyone: check Settings, Display if your screen now sleeps sooner or later than you expect.",
|
||||
"files": [
|
||||
{
|
||||
"type": "flash-wipe",
|
||||
"name": "wadamesh-tlora-pager-lr1121-merged.bin",
|
||||
"url": "https://firmware.wadamesh.com/releases/TOUCH/beta_83/wadamesh-tlora-pager-lr1121-merged.bin",
|
||||
"url": "https://firmware.wadamesh.com/releases/TOUCH/beta_85/wadamesh-tlora-pager-lr1121-merged.bin",
|
||||
"title": "Full install (bootloader + firmware)"
|
||||
},
|
||||
{
|
||||
"type": "flash-update",
|
||||
"name": "wadamesh-tlora-pager-lr1121.bin",
|
||||
"url": "https://firmware.wadamesh.com/releases/TOUCH/beta_83/wadamesh-tlora-pager-lr1121.bin",
|
||||
"url": "https://firmware.wadamesh.com/releases/TOUCH/beta_85/wadamesh-tlora-pager-lr1121.bin",
|
||||
"title": "Update (app only)"
|
||||
}
|
||||
]
|
||||
@@ -104,19 +104,19 @@
|
||||
"role": "gui",
|
||||
"title": "[SX1262] Touch UI",
|
||||
"version": {
|
||||
"beta_83": {
|
||||
"notes": "New on the T-Deck and the Heltec V4: USB Files. Open it from the app drawer, connect the device to a computer with a USB cable and go to files.wadamesh.com in Chrome or Edge. You can browse the SD card, internal storage and the map tiles, upload files and whole folders, and download, rename or delete them.\nThe device carries out every file operation itself, so what it relies on stays safe: identity, contacts, settings and chat history can be downloaded but not changed or deleted. On the SD card that is the meshcomod folder.\nFiles that SD Scan would flag, like Windows programs, scripts, shortcuts and autorun.inf, show in red on the page, and downloading one asks you first. The device also checks a file's first bytes, so a Windows program under a harmless name is caught too.\nYour files go straight from the device to your computer over the cable. Nothing passes through our server.\nWhile USB Files is open, the companion app cannot use USB. Bluetooth, Wi-Fi and the radio keep working.\nThe buttons on the sides of wadamesh.com now have labels, and a new folder button opens USB Files.\nUSB Files is tested on a T-Deck. Heltec V4 owners: worth reporting whether connecting, uploading and downloading work. Other boards follow once tested.",
|
||||
"beta_85": {
|
||||
"notes": "Settings, About has \"Send a test report\". Say whether it works on your board, tick what you actually used, say how long you have run it, and send. What comes in is at wadamesh.com/beta, and that is what the next stable release gets promoted on, instead of nobody having complained. It takes one tap and needs Wi-Fi.\nThe report carries the board, the version, your ticks and the free memory. No name, no contacts, no position, and the device lists exactly what it will send before it sends it.\n\"Report a bug\" on the same page draws a QR code. Scan it with your phone and a GitHub issue form opens with your board, version and diagnostics already filled in, so you only type what went wrong, and it is filed under your own account.\nOptional, off by default: \"Count this device\" lets the update check say which board and build it is running, so a board nobody has reported on can be told apart from a board nobody owns.\nA T-Deck Max that updated itself installed T-Deck Pro firmware. The Max reuses the Pro's display and touch drivers, and the table that picks the download file matched the Pro first, so the update check found the right release and then fetched the wrong image for it. If you have a Max on beta_84, update this one over USB from wadamesh.com rather than from the device.\nThe screen timeout is a slider with fixed stops now, from 30 seconds to an hour, plus Never, instead of a free-text field. Existing settings move to the nearest stop and the default is 30 seconds.\nThe keyboard backlight in Auto follows your screen timeout instead of switching off after about three seconds, which was too short to finish typing.\nAdvert can be left from the screen itself on every touch board, not just with a hardware key.\nExport and Import moved out of Profile into Backups, as one Export action with an optional timestamp in the filename. Import finds the backups on internal storage and the card by itself and only asks which one when there is more than one.\nThinkNode M9: pressing down at the bottom of a conversation reveals the next message instead of stopping, Back stays in the app drawer when the drawer is your home screen, and a page title no longer sits on top of the lock screen.\nT-Deck Pro and Max: the sender and the message no longer overdraw each other, first-run setup can be driven from the keyboard, and Commander has two rows of controls.\nT-Deck Pro and Max: the lock screen is drawn for the screen it is on, the e-paper keeps an unambiguous locked frame instead of the last live view, and a hard lock survives waking the front pad.\nThe M9 has text size presets: Settings, Display, UI size, with Normal, Large text and Huge text. It grows the text and leaves the layout alone, so rows, cards and controls keep their size and nothing becomes unreachable, which is how the Heltec V4-R8 does it on the same size panel. Your current setting is untouched by the update.\nThe T-Display P4 can run landscape. Settings, Display, Orientation, and it restarts to apply. The panel itself cannot rotate, so the interface is rotated in software the way the Tanmatsu already does it on the same chip.\nI did not have my P4 with me to test this, so it goes out untested on the hardware. If you have one, this is the thing to try and report: whether it is smooth, and whether taps land where you put them, particularly near the edges. Portrait is still the default and one tap puts it back.\nCoordinates in a chat message can be opened on the map. The message menu gains Map, tapping the message does the same, and the spot is marked so you can find it again or remove it. By TerryTel93.\nCompact chat messages have a small gap between them on the T-Deck Pro and Max, which have no alternating row colour to separate them.\nReporting from the device is new and has never run on real hardware. If it fails, say so the old way, on Discord or GitHub.\nThe screen timeout default changed for everyone: check Settings, Display if your screen now sleeps sooner or later than you expect.",
|
||||
"files": [
|
||||
{
|
||||
"type": "flash-wipe",
|
||||
"name": "wadamesh-tlora-pager-sx1262-merged.bin",
|
||||
"url": "https://firmware.wadamesh.com/releases/TOUCH/beta_83/wadamesh-tlora-pager-sx1262-merged.bin",
|
||||
"url": "https://firmware.wadamesh.com/releases/TOUCH/beta_85/wadamesh-tlora-pager-sx1262-merged.bin",
|
||||
"title": "Full install (bootloader + firmware)"
|
||||
},
|
||||
{
|
||||
"type": "flash-update",
|
||||
"name": "wadamesh-tlora-pager-sx1262.bin",
|
||||
"url": "https://firmware.wadamesh.com/releases/TOUCH/beta_83/wadamesh-tlora-pager-sx1262.bin",
|
||||
"url": "https://firmware.wadamesh.com/releases/TOUCH/beta_85/wadamesh-tlora-pager-sx1262.bin",
|
||||
"title": "Update (app only)"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -98,11 +98,16 @@ AREA_LABEL = {
|
||||
"storage": "storage and SD",
|
||||
}
|
||||
RAN = ("boot", "day", "week")
|
||||
RAN_LABEL = {"boot": "just flashed", "day": "about a day", "week": "a week or more"}
|
||||
RAN_LABEL = {"boot": "ran it for minutes", "day": "ran it for about a day",
|
||||
"week": "ran it for a week or more"}
|
||||
|
||||
# Boards with no web-flasher manifest to take a display name from.
|
||||
NAME_FALLBACK = {
|
||||
"tdisplay-p4-lcd": "LilyGo T-Display P4 (LCD)",
|
||||
"tdeck-pro-v1-0": "LilyGo T-Deck Pro V1.0",
|
||||
"tdeck-pro-v1-1": "LilyGo T-Deck Pro V1.1",
|
||||
"tdisplay-p4-lr2021": "LilyGo T-Display P4 (AMOLED, LR2021)",
|
||||
"tdisplay-p4-lcd": "LilyGo T-Display P4 (LCD, SX1262)",
|
||||
"tdisplay-p4-lcd-lr2021": "LilyGo T-Display P4 (LCD, LR2021)",
|
||||
"tanmatsu": "Tanmatsu",
|
||||
}
|
||||
|
||||
|
||||
@@ -177,7 +177,9 @@ const API = 'https://firmware.wadamesh.com/report/matrix.json';
|
||||
const LABEL = {radio:'radio and messaging', map:'map and GPS', link:'phone-app link',
|
||||
input:'keyboard and input', storage:'storage and SD'};
|
||||
const STATE = {green:'green', amber:'needs a second report', red:'problem reported', none:'no reports'};
|
||||
const RAN = {boot:'just flashed', day:'about a day', week:'a week or more'};
|
||||
// Phrased as durations, not bare spans: next to the "57 min ago" timestamp,
|
||||
// "about a day" read as a contradiction rather than as how long they ran it.
|
||||
const RAN = {boot:'ran it for minutes', day:'ran it for about a day', week:'ran it for a week or more'};
|
||||
|
||||
function ago(ts){
|
||||
if(!ts) return '';
|
||||
@@ -261,7 +263,7 @@ function render(d){
|
||||
nb.innerHTML = notes.map(([b, n]) =>
|
||||
'<div class="n"><div class="who">' + esc(b.name) + ', '
|
||||
+ (n.status === 'works' ? 'works' : 'problem') + ', ' + (RAN[n.ran] || n.ran)
|
||||
+ ', ' + ago(n.at) + '</div>' + esc(n.note) + '</div>').join('');
|
||||
+ ', reported ' + ago(n.at) + '</div>' + esc(n.note) + '</div>').join('');
|
||||
}
|
||||
|
||||
document.getElementById('stamp').textContent =
|
||||
|
||||
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 9.5 KiB After Width: | Height: | Size: 9.0 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 6.4 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 119 KiB After Width: | Height: | Size: 115 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 9.0 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 9.5 KiB After Width: | Height: | Size: 9.9 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 9.8 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 9.8 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 14 KiB |