Add device msh.to links (010)#1898
Merged
Merged
Conversation
# 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
…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.
…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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Testing