Skip to content

Add device msh.to links (010)#1898

Merged
garthvh merged 8 commits into
mainfrom
010-device-mshto-links
Jun 2, 2026
Merged

Add device msh.to links (010)#1898
garthvh merged 8 commits into
mainfrom
010-device-mshto-links

Conversation

@garthvh

@garthvh garthvh commented Jun 2, 2026

Copy link
Copy Markdown
Member

Summary

  • add MVP support for device msh.to links
  • update generated files for the new link flow
  • tune link size and caching behavior
  • include spec/plan artifacts for feature 010

Testing

  • not run (not requested)

garthvh added 5 commits May 19, 2026 00:22
# Conflicts:
#	.github/copilot-instructions.md
#	Localizable.xcstrings
#	Meshtastic.xcodeproj/project.pbxproj
#	Meshtastic/API/MeshtasticAPI.swift
#	Meshtastic/Resources/images/image_manifest.json
#	Meshtastic/Views/Helpers/DeviceHardwareImage.swift
@meshtastic meshtastic deleted a comment from github-actions Bot Jun 2, 2026
…n JSON

DeviceHardware.json contains an 'portduino' architecture value that was
not present in the Architecture enum. This caused decoder.decode() to
throw a DecodingError, silently aborting refreshBundledDevicesData()
before importDeviceLinks() could run — so DeviceLinkEntity records were
never created and the 'I want one' section never rendered.

Fix: change DeviceHardware.architecture from Architecture enum to String
so unknown architecture values decode without error and are stored
verbatim in DeviceHardwareEntity. FirmwareFile.swift and
FirmwareViewModel.swift already use Architecture(rawValue:) optional
binding, so their behaviour is unaffected.

Also ensures refreshBundledDevicesData() runs on every BLE connect
(not just user-initiated ones) and after a full app data reset, so
device links are always repopulated after any database clear.
@meshtastic meshtastic deleted a comment from github-actions Bot Jun 2, 2026
garthvh added 2 commits June 1, 2026 23:53
…e links

Add Node Detail View > Hardware Info section explaining Supported vs
Discontinued Hardware labels and the Flagship/Niche/Legacy support tiers.

Add Where to Buy section documenting the 'I want one' purchase links
panel: vendor and regional marketplace links sourced from msh.to,
filtered to the user's region.

Update Erase All App Data description to note the bundled device
hardware catalog is immediately reloaded after the clear.
…tation

data-model.md: complete rewrite — documents actual DeviceLinkEntity
schema, DeviceHardwareEntity fields, urls.json + marketplaces.json
schemas, importDeviceLinks() algorithm, DeviceLinksSection matching
algorithm, isVendor determination, refresh lifecycle, and the critical
architecture-field-as-String requirement.

spec.md: add Implementation Notes section covering:
- Architecture field must be String not enum (portduino bug post-mortem)
- isVendor determination via platformioTarget set membership
- Refresh lifecycle: catalog must be repopulated after any DB clear
- No hwModelSlug matching, no many-to-many relationship on entity

plan.md: correct misleading 'no SwiftData entity' claim; document
DeviceLinkEntity and marketplaces.json; update complexity tracking.

tasks.md: mark T021-T023 done; add Post-Implementation Bug Fixes section
documenting the architecture decode failure and Android-specific warning.
@garthvh garthvh merged commit 4451210 into main Jun 2, 2026
4 checks passed
@garthvh garthvh deleted the 010-device-mshto-links branch June 2, 2026 15:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant