Skip to content

ADFA-174: Rename packages to org.appdevforall.codeonthego (Phase 2) - #2136

Draft
jimturner-adfa wants to merge 11 commits into
stagefrom
ADFA-174-change-to-org-appdevforall-codeonthego
Draft

jimturner-adfa wants to merge 11 commits into
stagefrom
ADFA-174-change-to-org-appdevforall-codeonthego

Conversation

@jimturner-adfa

@jimturner-adfa jimturner-adfa commented Oct 13, 2026 •

Copy link
Copy Markdown
Collaborator

ADFA-174

Important

Merge together with the terminal change. This must land at the same time as the matching change in appdevforall/terminal-packages#3 (ADFA-6386). The terminal bootstrap packages have the package name baked in, so the two cannot ship independently - see ADR 0017.

Renames the Kotlin/Java packages and source directories from com.itsaky.androidide to org.appdevforall.codeonthego (Phase 2 of ADR 0017).

Scope

Not changed - these stay com.itsaky.androidide until the identity flip (Phase 3):

  • BuildConfig.PACKAGE_NAME, applicationId, the AGP namespace, and the provider authority.
  • Generated classes tied to that namespace: R, BuildConfig, data-binding, and the eventbus index classes.
  • Vendored build logic and forks in composite-builds/ (ADR 0003), :gradle-plugin, android-tree-sitter.
  • Test fixtures that simulate an external project.

Review by commit

Commit What it is
76bea7d8b ADR 0017 supersedes ADR 0008
6ecf001ac annotations package rename
f6c382770 mechanical rename (~2,600 files)
a0cdedab0 merge of stage; stage's new and edited files get the same rename
206059696 spotlessApply on every file the rename pulled under the ratchet - formatting only
b9e6916dc fixes the 50 ktlint errors that blocked Spotless
6666c8878 fully qualifies manifest class names - fixes an app crash at launch
6179a5fb9 points testInstrumentationRunner at the renamed class - instrumentation tests could not start
b9a9050c0 regenerates plugin-api.api for the moved packages - :plugin-api:apiCheck (run by debug.yml) failed
0d28ff3e5 points 84 doc paths and a test's sample Maven path at the moved source directories
8c0549f3e fixes the last stale source path in quickbuild/docs/debugging.md

Notes for reviewers:

  • 6179a5fb9: AndroidModuleConf still named com.itsaky.androidide.testing.android.TestInstrumentationRunner, which f6c382770 moved. The merged test manifest now names org.appdevforall.codeonthego.testing.android.TestInstrumentationRunner. A sweep of the other quoted class names in composite-builds and gradle-plugin found no other stale one.
  • b9a9050c0: the API dump still listed com/itsaky/androidide/plugins/.... The regenerated dump has the same declarations with the package renamed; one method's position changes with the sort order. The BuildConfig exclusion in plugin-api/build.gradle.kts also named the old package, which would have published the generated class as API.
  • 0d28ff3e5, 8c0549f3e: each path was rewritten only where the new location exists and the old one doesn't. Dated plans and specs under docs/superpowers are left as written.
  • 6666c8878: relative manifest names like .app.IDEApplication resolve against the namespace, which stays com.itsaky.androidide until Phase 3. After f6c382770 they pointed at classes that no longer existed, so the app couldn't start. This commit writes out 30 entries across 7 manifests in full; those names work under either namespace. A sweep found no other text references (layouts, ProGuard rules, META-INF/services, other manifest attributes) to moved classes.
  • a0cdedab0: each conflict was resolved by re-running the rename on stage's version of the file. The scripted rename reproduces f6c382770 exactly for 2,451 of its 2,516 renamed Kotlin/Java files; the rest are string literals and :gradle-plugin, none of which the merge touched.
  • 206059696: about 45 files that used 2-space indentation come out flat in this commit. b9e6916dc re-indents them.
  • b9e6916dc: naming-rule violations are suppressed, following the repo's existing @Suppress convention, rather than renamed. Ten files carry @file:Suppress("ktlint:standard:max-line-length") for the same tab-measurement problem documented in OfflineGuard.kt.

Verification

  • spotlessCheck and :plugin-api:apiCheck pass.
  • Main and unit-test sources compile for all modules, including the app's profileable variant.
  • Unit tests: testV8DebugUnitTest in every module, :plugin-api:testDebugUnitTest, and test in the 7 JVM modules - 6,046 tests.
    • Before 6666c8878: 566 :app tests failed, all from the manifest bug.
    • After the fix, :app:testV8DebugUnitTest: 1,461 tests, 0 failures. The full sweep has not been re-run since the fix.
    • lsp/kotlin GoToDefinitionTest failed once in the full sweep and passes on its own, so it depends on test order rather than on this change.
    • :gradle-plugin tests were not run. The rename deliberately didn't touch that module.
  • Device: fresh install of :app:assembleV8Debug on a Pixel 6 Pro (arm64-v8a, API 37). The app launches to onboarding; the front screen is com.itsaky.androidide/org.appdevforall.codeonthego.activities.OnboardingActivity, and logcat shows no crash or ClassNotFoundException. As intended for Phase 2, the app ID and data directory stay com.itsaky.androidide. Setup past the Permissions screen was not exercised.
  • Not yet done: running the instrumentation tests (they could not start before 6179a5fb9).

Phase 3 (the application id / namespace flip) is stacked on this branch as #2179.

🤖 Generated with Claude Code

jimturner-adfa and others added 7 commits October 6, 2026 12:32
…l.codeonthego)

Phase 1 of the rename plan: record the decision to reverse ADR 0008 and
rename the application id / namespace, instead of silently editing the
original decision.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…l.codeonthego.annotations

Phase 2 pilot slice: the `annotations` module and every file that
references it (annotation-processors, annotation-processors-ksp,
uidesigner, xml-inflater). Package declarations, imports, KDoc links,
the FQN annotation usage, and the KSP service-provider descriptor all
moved together.

Does not touch BuildConfig.PACKAGE_NAME, applicationId, or AGP
namespace - those stay com.itsaky.androidide until Phase 3 (ADR 0017),
which is gated on the terminal-packages cross-repo coordination.

Verified: :annotations, :annotation-processors,
:annotation-processors-ksp, :uidesigner, :xml-inflater compile, and
xml-inflater/uidesigner unit tests (which exercise the ViewAdapter/
IncludeInDesigner path end-to-end through KSP) pass.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…devforall.codeonthego

Renames Kotlin/Java package declarations, directory layout, manifest
strings, and build-script references across the tree. Does not touch
BuildConfig.PACKAGE_NAME, applicationId, or AGP namespace - those stay
com.itsaky.androidide until Phase 3 (ADR 0017), which is gated on the
terminal-packages cross-repo coordination tracked in ADFA-6386.

Deliberately left at the old namespace, since each is tied to that
same deferred constant or an external identity:
- Generated classes (R, BuildConfig, the per-module eventbus index
  classes, data-binding Binding classes) - these live wherever AGP's
  namespace currently points, which hasn't moved.
- composite-builds/ (vendored build-logic, ADR 0003) and the
  :gradle-plugin module (its generated init-script string is a
  literal FQN baked in by composite-builds).
- The vendored fork packages inside composite-builds/build-deps
  (desugaring, diffutils, fuzzysearch, javac.config, layoutlib,
  zipfs2) and the external android-tree-sitter library
  (com.itsaky.androidide.treesitter).
- Cross-app identity checks: Firebase's google-services.json,
  logsender's and termux's manifest <package> references, and the
  literal applicationId strings in tests/docs that describe the
  currently-running app.
- testing/resources/sample-project and
  gradle-plugin/src/test/resources (fixtures simulating an external
  project, not our own identity).

:plugin-api/:plugin-manager (com.itsaky.androidide.plugins.*) are
included in this pass per team decision, despite being a published
surface for third-party IDE plugins - plugin-builder's own group was
already migrated to org.appdevforall.codeonthego.plugins before this
branch existed.

One real bug fixed along the way: common's FileProviderUtilsTest had
a test fixture whose expected-output literal was swept along with
production code, even though the test's whole point is exercising
today's real (unflipped) package name as input.

Verified: a full-tree compile (every module, every flavor/build-type,
including a sweep for bare R/BuildConfig/databinding usage in files
sitting at a module's namespace root) is clean, and the full unit test
suite is green except a pre-existing lsp:java `refactor` test family
(ExtractMethodPlanTest, ExtractMethodEditTest,
ExtractVariableSoundnessTest, RegionAnalysisPrimitivesTest,
ExtractMethodSignatureTest, ExtractionRegionSoundnessTest) - confirmed
by stashing this entire change and re-running against the untouched
baseline: identical failures, unrelated to this rename.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Conflicts were all rename-vs-edit. Resolved by taking stage's version
of each file and reapplying the Phase 2 mechanical rename (same keep
rules: R, BuildConfig, databinding, treesitter, vendored forks, eventbus
indexes, build-logic). The scripted rename reproduces the original
Phase 2 commit for 2451 of 2516 renamed Kotlin/Java files; the misses
are string literals and :gradle-plugin, none of which were touched here.

- 41 files stage added under com/itsaky/androidide (memprof, terminal,
  new tests) moved to org/appdevforall/codeonthego and renamed.
- Stage-side imports of old FQNs in cleanly merged files renamed
  (jvm-symbol-index, termux clients, profileable manifest).
- ProjectManagerImpl keeps the explicit com.itsaky.androidide.projects.R
  import added in Phase 2.
- BuildInProgressException deleted, as on stage.

Verified with unit-test compiles of app, lsp/{java,kotlin,xml,
jvm-symbol-index}, plugin-manager, projects, shared, javac-services,
tooling-api-impl, termux-app, and the app's profileable variant.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Phase 2 rename touched ~2,700 files, pulling each under the
file-level spotless ratchet. This applies spotlessApply to them as-is.
Compiles cleanly (main + unit-test sources, all modules).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The rename pulled ~2,700 files under the spotless ratchet; 50 of them
had pre-existing ktlint errors that block spotlessApply. No behaviour
change.

- Naming rules (backing-property, property, function naming):
  @Suppress per the existing repo convention, rather than renaming
  public/internal API.
- Wildcard imports expanded; mixed &&/|| parenthesised; comments moved
  off code lines or out of if/else and import lists; duplicate license
  header removed; orphan KDoc in IdeTooltipService removed; empty
  EditorRightSidebarActions.kt deleted.
- 10 files get @file:Suppress("ktlint:standard:max-line-length"):
  ktlint measures tab-indented input short, joins lines, then fails
  the 140 limit on its own output (same formatter interaction noted in
  OfflineGuard.kt).
- Re-indents files the previous commit left flat: spotless converted
  their 2-space indent to tabs even though ktlint had bailed on them.

spotlessCheck passes; main + unit-test sources compile for all modules.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Relative android:name values (".app.IDEApplication") resolve against
the module namespace, which stays com.itsaky.androidide until Phase 3.
After the package rename they pointed at classes that no longer exist,
so the app could not start: 565 :app Robolectric tests failed with
ClassNotFoundException for com.itsaky.androidide.app.IDEApplication.

Fully qualified names hold regardless of namespace, so Phase 3 does not
need to touch them. 30 entries across 7 manifests (app main/debug/
androidTest, floating-window, logsender, logsender-sample, uidesigner).
Swept layouts, ProGuard rules, META-INF/services and other manifest
attributes for old FQNs of moved classes; none found.

:app:testV8DebugUnitTest: 1461 tests, 0 failures (was 566).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
AndroidModuleConf still named com.itsaky.androidide.testing.android.
TestInstrumentationRunner, which the Phase 2 rename moved to
org.appdevforall.codeonthego.testing.android, so instrumentation tests
could not start. Checked the other quoted class names in composite-builds
and gradle-plugin; this was the only stale one.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
yaturner and others added 3 commits October 22, 2026 13:52
plugin-api.api still described the classes under com/itsaky/androidide,
which the Phase 2 rename moved, so :plugin-api:apiCheck (run by the debug
workflow) failed. Its BuildConfig exclusion also still named the old package,
so the regenerated dump would have published the generated BuildConfig as
API; point it at org.appdevforall.codeonthego.plugins.api.BuildConfig.

The new dump has the same declarations as the old one with the package
renamed; one method's position changes with the new sort order.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Phase 2 rename moved com/itsaky/androidide/... source directories to
org/appdevforall/codeonthego/..., but 84 path references in the quickbuild
docs, PLUGIN_AUTHORING.md, ARCHITECTURE.md and ADR 0015 still named the old
locations. Each was rewritten only where the new path exists and the old one
does not. Dated plans/specs under docs/superpowers are left as written.

ExtractZipToDirMergeTest's sample plugin-api entry now uses the
org/appdevforall/codeonthego Maven layout the shipped repo uses.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A grep example still pointed at app/src/main/java/com/itsaky/androidide,
which the Phase 2 rename moved; the earlier sweep only matched paths with a
trailing slash.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@hal-eisen-adfa

hal-eisen-adfa commented Oct 27, 2026 •

Copy link
Copy Markdown
Collaborator

Filed ADFA-6791 (subtask of ADFA-174): migrate the appdevforall/addons repo in lockstep with this PR's package and Gradle plugin id rename.

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.

3 participants