From 61795dcc8f6cc3aa2be7bc30b41dbbafc117866b Mon Sep 17 00:00:00 2001 From: Daniel Alome Date: Tue, 1 Sep 2026 14:05:52 +0100 Subject: [PATCH 1/2] ADFA-5128 | Rename pair-programming-plugin to Code-Together MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The plugin carried three different names: the directory and .cgp said "pair-programming-plugin", the plugin manager said "Code Together", and the documentation heading said "Pair". Make the src directory the single source of truth and derive the rest: GitHub src directory Code-Together Display name Code Together Plugin manager name Code Together (plugin.name, unchanged) Doc HTML

/ Code Together .cgp filename code-together.cgp Doc HTML filename code-together.html plugin.id, the Kotlin package, and the "Pair" editor-tab label are untouched — plugin.id backs the plugin_<pluginId> tooltip category and on-device install identity, and the tab label is a UI string, not one of the six naming slots. update-libs.yml now derives code-together.cgp mechanically, so no rename map arm is needed; the previously published pair-programming.cgp website link must be repointed. --- .../.gitignore | 0 .../README.md | 16 ++++++++-------- .../build.gradle.kts | 2 +- .../code-together.html | 16 ++++++++-------- .../gradle.properties | 0 .../libs/shared.jar | Bin .../proguard-rules.pro | 0 .../settings.gradle.kts | 2 +- .../src/main/AndroidManifest.xml | 0 .../src/main/assets/docs/index.html | 0 .../src/main/assets/icon_day.png | Bin .../src/main/assets/icon_night.png | Bin .../com/appdevforall/pair/plugin/PairPlugin.kt | 0 .../pair/plugin/PairServiceLocator.kt | 0 .../appdevforall/pair/plugin/PairTooltips.kt | 0 .../pair/plugin/data/DeviceSettingsStore.kt | 0 .../pair/plugin/data/DiscoveredHost.kt | 0 .../pair/plugin/data/FileChunkCodec.kt | 0 .../pair/plugin/data/ManifestEntry.kt | 0 .../pair/plugin/data/MessageCodec.kt | 0 .../pair/plugin/data/PairDiscoveryService.kt | 0 .../pair/plugin/data/PairWebSocketClient.kt | 0 .../pair/plugin/data/PairWebSocketServer.kt | 0 .../pair/plugin/data/PeerSession.kt | 0 .../pair/plugin/data/ProtocolMessage.kt | 0 .../pair/plugin/data/SessionHistoryStore.kt | 0 .../pair/plugin/data/StoredSession.kt | 0 .../pair/plugin/domain/EditApplier.kt | 0 .../pair/plugin/domain/EditBroker.kt | 0 .../pair/plugin/domain/EditObserver.kt | 0 .../pair/plugin/domain/FileSystemApplier.kt | 0 .../pair/plugin/domain/FileSystemObserver.kt | 0 .../pair/plugin/domain/LoopbackSuppression.kt | 0 .../pair/plugin/domain/OutboundSink.kt | 0 .../pair/plugin/domain/PathMapper.kt | 0 .../pair/plugin/domain/PeerRegistry.kt | 0 .../plugin/domain/ProjectManifestBuilder.kt | 0 .../plugin/domain/ProjectSyncCoordinator.kt | 0 .../plugin/domain/RemoteMarkerController.kt | 0 .../pair/plugin/ui/ViewModelFactory.kt | 0 .../pair/plugin/ui/components/ConnectingLine.kt | 0 .../plugin/ui/components/DiscoveredHostRow.kt | 0 .../pair/plugin/ui/components/HistoryRow.kt | 0 .../pair/plugin/ui/components/InviteCard.kt | 0 .../pair/plugin/ui/components/IpHero.kt | 0 .../plugin/ui/components/LabeledSwitchRow.kt | 0 .../plugin/ui/components/LongPressTooltip.kt | 0 .../plugin/ui/components/OutOfSyncBanner.kt | 0 .../pair/plugin/ui/components/PeerRow.kt | 0 .../pair/plugin/ui/components/PluginButton.kt | 0 .../pair/plugin/ui/components/PluginCard.kt | 0 .../plugin/ui/components/PluginTextField.kt | 0 .../plugin/ui/components/ProjectTransferCard.kt | 0 .../pair/plugin/ui/components/RenameDialog.kt | 0 .../pair/plugin/ui/components/SectionLabel.kt | 0 .../pair/plugin/ui/main/GuestSessionScreen.kt | 0 .../pair/plugin/ui/main/HomeScreen.kt | 0 .../pair/plugin/ui/main/HostSessionScreen.kt | 0 .../pair/plugin/ui/main/NearbySection.kt | 0 .../pair/plugin/ui/main/PairIntent.kt | 0 .../pair/plugin/ui/main/PairMainFragment.kt | 0 .../pair/plugin/ui/main/PairRoot.kt | 0 .../pair/plugin/ui/main/PairUiState.kt | 0 .../pair/plugin/ui/main/PairViewModel.kt | 0 .../pair/plugin/ui/main/PeerListSection.kt | 0 .../pair/plugin/ui/main/RecentSection.kt | 0 .../pair/plugin/ui/preview/PreviewSupport.kt | 0 .../appdevforall/pair/plugin/ui/theme/Color.kt | 0 .../appdevforall/pair/plugin/ui/theme/Dimens.kt | 0 .../pair/plugin/ui/theme/HostColors.kt | 0 .../pair/plugin/ui/theme/PeerColors.kt | 0 .../appdevforall/pair/plugin/ui/theme/Theme.kt | 0 .../appdevforall/pair/plugin/ui/theme/Type.kt | 0 .../appdevforall/pair/plugin/util/NetUtil.kt | 0 .../appdevforall/pair/plugin/util/PairLog.kt | 0 .../src/main/res/drawable/ic_close.xml | 0 .../src/main/res/drawable/ic_more_vert.xml | 0 .../src/main/res/drawable/ic_pair.xml | 0 .../src/main/res/values-night/colors.xml | 0 .../src/main/res/values/colors.xml | 0 .../src/main/res/values/dimens.xml | 0 .../src/main/res/values/strings.xml | 0 .../src/main/res/values/styles.xml | 0 README.md | 2 +- 84 files changed, 19 insertions(+), 19 deletions(-) rename {pair-programming-plugin => Code-Together}/.gitignore (100%) rename {pair-programming-plugin => Code-Together}/README.md (75%) rename {pair-programming-plugin => Code-Together}/build.gradle.kts (98%) rename pair-programming-plugin/pair-programming-plugin-documentation.html => Code-Together/code-together.html (97%) rename {pair-programming-plugin => Code-Together}/gradle.properties (100%) rename {pair-programming-plugin => Code-Together}/libs/shared.jar (100%) rename {pair-programming-plugin => Code-Together}/proguard-rules.pro (100%) rename {pair-programming-plugin => Code-Together}/settings.gradle.kts (94%) rename {pair-programming-plugin => Code-Together}/src/main/AndroidManifest.xml (100%) rename {pair-programming-plugin => Code-Together}/src/main/assets/docs/index.html (100%) rename {pair-programming-plugin => Code-Together}/src/main/assets/icon_day.png (100%) rename {pair-programming-plugin => Code-Together}/src/main/assets/icon_night.png (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/PairPlugin.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/PairServiceLocator.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/PairTooltips.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/data/DeviceSettingsStore.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/data/DiscoveredHost.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/data/FileChunkCodec.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/data/ManifestEntry.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/data/MessageCodec.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/data/PairDiscoveryService.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/data/PairWebSocketClient.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/data/PairWebSocketServer.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/data/PeerSession.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/data/ProtocolMessage.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/data/SessionHistoryStore.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/data/StoredSession.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/domain/EditApplier.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/domain/EditBroker.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/domain/EditObserver.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/domain/FileSystemApplier.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/domain/FileSystemObserver.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/domain/LoopbackSuppression.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/domain/OutboundSink.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/domain/PathMapper.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/domain/PeerRegistry.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/domain/ProjectManifestBuilder.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/domain/ProjectSyncCoordinator.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/domain/RemoteMarkerController.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/ui/ViewModelFactory.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/ui/components/ConnectingLine.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/ui/components/DiscoveredHostRow.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/ui/components/HistoryRow.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/ui/components/InviteCard.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/ui/components/IpHero.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/ui/components/LabeledSwitchRow.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/ui/components/LongPressTooltip.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/ui/components/OutOfSyncBanner.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/ui/components/PeerRow.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/ui/components/PluginButton.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/ui/components/PluginCard.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/ui/components/PluginTextField.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/ui/components/ProjectTransferCard.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/ui/components/RenameDialog.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/ui/components/SectionLabel.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/ui/main/GuestSessionScreen.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/ui/main/HomeScreen.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/ui/main/HostSessionScreen.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/ui/main/NearbySection.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/ui/main/PairIntent.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/ui/main/PairMainFragment.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/ui/main/PairRoot.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/ui/main/PairUiState.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/ui/main/PairViewModel.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/ui/main/PeerListSection.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/ui/main/RecentSection.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/ui/preview/PreviewSupport.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/ui/theme/Color.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/ui/theme/Dimens.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/ui/theme/HostColors.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/ui/theme/PeerColors.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/ui/theme/Theme.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/ui/theme/Type.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/util/NetUtil.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/kotlin/com/appdevforall/pair/plugin/util/PairLog.kt (100%) rename {pair-programming-plugin => Code-Together}/src/main/res/drawable/ic_close.xml (100%) rename {pair-programming-plugin => Code-Together}/src/main/res/drawable/ic_more_vert.xml (100%) rename {pair-programming-plugin => Code-Together}/src/main/res/drawable/ic_pair.xml (100%) rename {pair-programming-plugin => Code-Together}/src/main/res/values-night/colors.xml (100%) rename {pair-programming-plugin => Code-Together}/src/main/res/values/colors.xml (100%) rename {pair-programming-plugin => Code-Together}/src/main/res/values/dimens.xml (100%) rename {pair-programming-plugin => Code-Together}/src/main/res/values/strings.xml (100%) rename {pair-programming-plugin => Code-Together}/src/main/res/values/styles.xml (100%) diff --git a/pair-programming-plugin/.gitignore b/Code-Together/.gitignore similarity index 100% rename from pair-programming-plugin/.gitignore rename to Code-Together/.gitignore diff --git a/pair-programming-plugin/README.md b/Code-Together/README.md similarity index 75% rename from pair-programming-plugin/README.md rename to Code-Together/README.md index 89bf36fd..fa6935bb 100644 --- a/pair-programming-plugin/README.md +++ b/Code-Together/README.md @@ -1,4 +1,4 @@ -# Pair +# Code Together A plugin for [CodeOnTheGo](https://github.com/appdevforall/CodeOnTheGo) that turns the IDE into a real-time collaborative editor. Two phones on the same WiFi share one editing session: one device **hosts**, others **join** by typing the host's `ip:port` or scanning its QR code, and from then on edits, cursors, and file opens flow between devices as they happen — no server, no cloud, no signup. @@ -7,8 +7,8 @@ It surfaces as a **Pair** tab in the editor. Host a session and an invite card s ## Building ```sh -cd pair -./gradlew clean assemblePlugin +cd Code-Together +../gradlew clean assemblePlugin ``` The `.cgp` lands in `build/plugin/`. Install it from inside CodeOnTheGo via the Plugin Manager. Always `clean` first — the plugin builder copies the built APK into the `.cgp` and then deletes the source APK, so an incremental build can package an empty artifact. @@ -26,7 +26,7 @@ The `.cgp` lands in `build/plugin/`. Install it from inside CodeOnTheGo via the ## Source layout ``` -pair/ +Code-Together/ ├── build.gradle.kts, settings.gradle.kts, proguard-rules.pro └── src/main/ ├── AndroidManifest.xml plugin id, main class, icons, permissions @@ -43,13 +43,13 @@ pair/ - `../libs/plugin-api.jar` — the plugin API surface (`IPlugin`, extensions, `Ide*Service`); `compileOnly`, provided by the IDE at runtime. - `../libs/gradle-plugin.jar` — the `com.itsaky.androidide.plugins.build` Gradle plugin that packages the `.cgp`. -- `../libs/eventbus-events.jar` — the editor and file `*Event` types Pair subscribes to on the EventBus. -- `../libs/shared.jar` — `com.itsaky.androidide.models.Range`, the type of `DocumentChangeEvent.changeRange` that Pair reads. +- `../libs/eventbus-events.jar` — the editor and file `*Event` types Code Together subscribes to on the EventBus. +- `libs/shared.jar` — `com.itsaky.androidide.models.Range`, the type of `DocumentChangeEvent.changeRange` that Code Together reads. Jetpack Compose is linked `compileOnly` (host-provided), not bundled. -> **Note:** Pair requires an extended `plugin-api` beyond the current `stage` baseline — `IdeProjectService.openProject(File)` (open a project after a pull-model sync) and `IdeEditorService.showPeerCursor` / `hidePeerCursor` / `clearPeerCursors` (inline remote-cursor decoration). These land on the `feat/ADFA-4419-remote-peer-editor-decoration` branch. If `assemblePlugin` fails with unresolved references to those symbols, the shared `libs/` jars are older than the API Pair needs; refresh them from a CodeOnTheGo build that includes the extensions (`../scripts/update-libs.sh --local <path-to-CodeOnTheGo> --ref feat/ADFA-4419-remote-peer-editor-decoration`). +> **Note:** Code Together requires an extended `plugin-api` beyond the current `stage` baseline — `IdeProjectService.openProject(File)` (open a project after a pull-model sync) and `IdeEditorService.showPeerCursor` / `hidePeerCursor` / `clearPeerCursors` (inline remote-cursor decoration). These land on the `feat/ADFA-4419-remote-peer-editor-decoration` branch. If `assemblePlugin` fails with unresolved references to those symbols, the shared `libs/` jars are older than the API Code Together needs; refresh them from a CodeOnTheGo build that includes the extensions (`../scripts/update-libs.sh --local <path-to-CodeOnTheGo> --ref feat/ADFA-4419-remote-peer-editor-decoration`). ## License -Pair is an open-source example plugin for Code on the Go. Its source is licensed per the surrounding `plugin-examples` repository (see `LICENSE` at the repo root). It makes no cloud calls — all traffic stays on the local network between the paired devices. +Code Together is an open-source example plugin for Code on the Go. Its source is licensed per the surrounding `plugin-examples` repository (see `LICENSE` at the repo root). It makes no cloud calls — all traffic stays on the local network between the paired devices. diff --git a/pair-programming-plugin/build.gradle.kts b/Code-Together/build.gradle.kts similarity index 98% rename from pair-programming-plugin/build.gradle.kts rename to Code-Together/build.gradle.kts index d763c3a0..6167494a 100644 --- a/pair-programming-plugin/build.gradle.kts +++ b/Code-Together/build.gradle.kts @@ -6,7 +6,7 @@ plugins { } pluginBuilder { - pluginName = "pair-programming-plugin" + pluginName = "code-together" } android { diff --git a/pair-programming-plugin/pair-programming-plugin-documentation.html b/Code-Together/code-together.html similarity index 97% rename from pair-programming-plugin/pair-programming-plugin-documentation.html rename to Code-Together/code-together.html index ca001b9f..9adf0465 100644 --- a/pair-programming-plugin/pair-programming-plugin-documentation.html +++ b/Code-Together/code-together.html @@ -3,7 +3,7 @@ <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> -<title>Pair Plugin Documentation +Code Together