Skip to content

refactor: keep each plugin's panel, iOS and Android code in one folder - #39

Merged
heoblitz merged 1 commit into
feature/android-supportfrom
feature/android-shared-plugin-layout
Nov 12, 2026
Merged

heoblitz merged 1 commit into
feature/android-supportfrom
feature/android-shared-plugin-layout

Conversation

@heoblitz

Copy link
Copy Markdown
Collaborator

Summary

Follows #38. The built panels lived inside the iOS source tree
(SDK/iOS/Sources/<Module>/Panels/<id>), and the Android build reached into that
tree to package them. A panel is platform neutral, so each plugin now has one
folder that holds everything it ships:

SDK/Plugins/<Name>/
  Panel/      the built panel, committed and shared
  iOS/        Swift sources
  Android/    Gradle module
  • SDK/iOS and SDK/Android keep the bridge. Plugins without a panel
    (ProcessMetric, URLSessionCapture, OkHttpCapture) move too, so every plugin
    is found in one place.
  • Swift targets point at the plugin folder with sources: ["iOS"] and
    resources: [.copy("Panel")]. Panel is the directory NectoPluginPanel looks
    up by default, so the plugins no longer name a subdirectory.
  • Gradle modules keep their names and coordinates; settings.gradle.kts only maps
    them to the new directories. NectoPanelResources takes the panel directory
    beside the module instead of searching the iOS tree.
  • The panel vite.config.ts files build into SDK/Plugins/<Name>/Panel.
  • Product names, module names and Maven coordinates are unchanged.

Test Plan

  • swift test for the SDK package and the SDK consumer fixture pass, including
    the check that each selected plugin product provides its panel.
  • swift test --package-path NectoMac passes.
  • NectoThemeTests, which reads the panel styles from their new location, passes.
  • node script/check-panel-assets.mjs passes.
  • All twelve Gradle projects configure, and the JVM modules build, generate their
    panel resources and pass their tests.
  • JitPack built commit 552213d55f and published all eleven modules.

Not run locally, covered by this PR's CI:

  • The Android library modules and the sample, script/test-android-artifacts and
    script/test-android-consumer.
  • The web build. Only the output paths changed; the committed panels are the
    existing build output, moved.

Not verified:

  • An iOS device or simulator build, and the Android device checks.

The built panels lived inside the iOS source tree, and the Android build reached
into it to package them. A plugin now has one folder, SDK/Plugins/<Name>, with
the built panel in Panel, the Swift sources in iOS and the Gradle module in
Android, so both platforms package the same directory. SDK/iOS and SDK/Android
keep the bridge.

Swift targets point at the plugin folder and copy Panel, which is the default
directory NectoPluginPanel looks up. Gradle modules keep their names and only
map to the new directories.
@heoblitz
heoblitz merged commit b3903f8 into feature/android-support Nov 12, 2026
6 checks passed
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