Skip to content

chore(project): convert MeshtasticTests, Watch App, and Widgets to buildable folders (#2085 by @laconicman)#2101

Merged
garthvh merged 5 commits into
mainfrom
chore/buildable-folders-2085
Jul 17, 2026
Merged

chore(project): convert MeshtasticTests, Watch App, and Widgets to buildable folders (#2085 by @laconicman)#2101
garthvh merged 5 commits into
mainfrom
chore/buildable-folders-2085

Conversation

@garthvh

@garthvh garthvh commented Jul 16, 2026

Copy link
Copy Markdown
Member

Lands #2085 by @laconicman with the merge conflict against current main resolved. All commits and authorship are theirs; see #2085 for the full write-up and discussion.

What this adds on top of #2085

  • Merge with current main resolved (project.pbxproj was the only conflict): kept the PR's restructuring, re-registered the app-target sources main gained since the PR's base (site planner, event firmware, air quality, firmware update notifier/game, message search, uk localization), and dropped main's explicit test-file registrations — the synchronized MeshtasticTests folder now picks those up automatically, which is the point of the conversion.
  • Removed the leftover explicit registration of PMTilesExtractorTests.swift that produced a duplicate-build-file warning alongside the synced folder (the one substantive CodeRabbit finding).

Verification on the merged result

  • Full MeshtasticTests suite runs — including the three test files chore(project): convert MeshtasticTests and Watch App to buildable folders #2085 resurrects (NodeBackupManagerTests, ChannelEntityTests, CompactViewTests, all on disk but compiled into no target on main today) and every test added by recently merged PRs, picked up by the synced folder with no pbxproj edits. Every failure observed also reproduces identically on unmodified main on the same machine (snapshot references, a known allCases count from the protobuf sync) or passes standalone (timing-sensitive tests under full-suite load) — nothing attributable to this change.
  • Meshtastic and Meshtastic Watch App schemes build.
  • Symbol check: shared types (BatteryIcon, MeshActivityAttributes) present in both the app and WidgetsExtension binaries; widget-only types (WidgetsLiveActivity) only in the appex.
  • All Shared/ relocations are 100% similarity renames.

Merging this auto-marks #2085 as merged since it carries its commits.

Closes #2085

laconicman and others added 5 commits July 13, 2026 23:02
Part of #2026. Replaces the classic group (75 file refs, 75 build
files; -307/+4 lines) with an Xcode 16 synchronized folder on the
MeshtasticTests target.

Restores three test files that were on disk but had lost target
membership to pbxproj conflict resolution: NodeBackupManagerTests
(dropped by #1898), ChannelEntityTests and CompactViewTests (never
registered). Full test target: 2227 tests run; the only failures
also reproduce on unconverted main.
Part of #2026. Synchronized folder on the watch target; Info.plist
and the entitlements file are membership exceptions (both are
referenced by build settings, not as bundle resources).
…gets

Part of #2026. Files owned by both the app and WidgetsExtension move
to a top-level Shared/ synchronized folder attached to both targets
(BatteryLevel, MeshActivityAttributes, Assets.xcassets from Widgets/,
plus Constants.swift from Meshtastic/Extensions — the main tree's
only cross-target file). Widgets/ becomes homogeneous and converts
to a synchronized folder on WidgetsExtension alone.

Per-target exclusion sets cannot express selective sharing (a path
listed in any exception set leaves implicit sync for every attached
target), so folder layout is the mechanism: one folder, one target
set. Verified by symbol checks on both built products.
…torTests

The synchronized MeshtasticTests folder already compiles it; the leftover
explicit entry produced a duplicate-build-file warning.
@coderabbitai

coderabbitai Bot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Review was skipped as selected files did not have any reviewable changes.

💤 Files selected but had no reviewable changes (13)
  • Meshtastic.xcodeproj/project.pbxproj
  • Shared/Assets.xcassets/AccentColor.colorset/Contents.json
  • Shared/Assets.xcassets/AccentColorDimmed.colorset/Contents.json
  • Shared/Assets.xcassets/AppIcon.appiconset/Contents.json
  • Shared/Assets.xcassets/Contents.json
  • Shared/Assets.xcassets/LightIndigo.colorset/Contents.json
  • Shared/Assets.xcassets/LiveActivityBackground.colorset/Contents.json
  • Shared/Assets.xcassets/WidgetBackground.colorset/Contents.json
  • Shared/Assets.xcassets/m-logo-black.imageset/Contents.json
  • Shared/Assets.xcassets/m-logo-white.imageset/Contents.json
  • Shared/BatteryLevel.swift
  • Shared/Constants.swift
  • Shared/MeshActivityAttributes.swift
⛔ Files ignored due to path filters (6)
  • Shared/Assets.xcassets/m-logo-black.imageset/Mesh_Logo_Black.svg is excluded by !**/*.svg
  • Shared/Assets.xcassets/m-logo-black.imageset/Mesh_Logo_Black_Large.svg is excluded by !**/*.svg
  • Shared/Assets.xcassets/m-logo-black.imageset/Mesh_Logo_Black_Small.svg is excluded by !**/*.svg
  • Shared/Assets.xcassets/m-logo-white.imageset/Mesh_Logo_White.svg is excluded by !**/*.svg
  • Shared/Assets.xcassets/m-logo-white.imageset/Mesh_Logo_White_Large.svg is excluded by !**/*.svg
  • Shared/Assets.xcassets/m-logo-white.imageset/Mesh_Logo_White_Small.svg is excluded by !**/*.svg
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 500b925c-bfd3-4cfd-8b05-f39571cd5112

📥 Commits

Reviewing files that changed from the base of the PR and between 8a93640 and a796b51.

⛔ Files ignored due to path filters (6)
  • Shared/Assets.xcassets/m-logo-black.imageset/Mesh_Logo_Black.svg is excluded by !**/*.svg
  • Shared/Assets.xcassets/m-logo-black.imageset/Mesh_Logo_Black_Large.svg is excluded by !**/*.svg
  • Shared/Assets.xcassets/m-logo-black.imageset/Mesh_Logo_Black_Small.svg is excluded by !**/*.svg
  • Shared/Assets.xcassets/m-logo-white.imageset/Mesh_Logo_White.svg is excluded by !**/*.svg
  • Shared/Assets.xcassets/m-logo-white.imageset/Mesh_Logo_White_Large.svg is excluded by !**/*.svg
  • Shared/Assets.xcassets/m-logo-white.imageset/Mesh_Logo_White_Small.svg is excluded by !**/*.svg
📒 Files selected for processing (13)
  • Meshtastic.xcodeproj/project.pbxproj
  • Shared/Assets.xcassets/AccentColor.colorset/Contents.json
  • Shared/Assets.xcassets/AccentColorDimmed.colorset/Contents.json
  • Shared/Assets.xcassets/AppIcon.appiconset/Contents.json
  • Shared/Assets.xcassets/Contents.json
  • Shared/Assets.xcassets/LightIndigo.colorset/Contents.json
  • Shared/Assets.xcassets/LiveActivityBackground.colorset/Contents.json
  • Shared/Assets.xcassets/WidgetBackground.colorset/Contents.json
  • Shared/Assets.xcassets/m-logo-black.imageset/Contents.json
  • Shared/Assets.xcassets/m-logo-white.imageset/Contents.json
  • Shared/BatteryLevel.swift
  • Shared/Constants.swift
  • Shared/MeshActivityAttributes.swift

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@garthvh
garthvh merged commit e2b6cec into main Jul 17, 2026
4 of 5 checks passed
@garthvh
garthvh deleted the chore/buildable-folders-2085 branch July 17, 2026 00:18
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.

2 participants