Skip to content

Commit 282a608

Browse files
ADFA-5598 | Addons fixes: product name, AI Code Suggestions rename, AI Core statements (#94)
* ADFA-5598 | Write "Code On The Go" in full in the READMEs The product name appeared as CodeOnTheGo, CoGo, and several capitalization variants of "Code on the Go". Normalize every occurrence to "Code On The Go", the form tools/addons check.py demands on a published gallery page. Repository URLs, checkout paths (../CodeOnTheGo, .cache/CodeOnTheGo/, <path-to-CodeOnTheGo>), and the literal GitHub Action name "Update libs from CodeOnTheGo" keep the old spelling: they name a repository or a workflow, not the product. Directories on tools/addons/skip.txt are untouched, so that the pull requests in flight against the AI addons do not conflict. Claude-Session: https://claude.ai/code/session_01WTwoSBqWoqAmb8vSGjodHD * ADFA-5598 | Rename Code Suggestions to AI Code Suggestions and skip it The addon needs AI Core for inference, so the name now says so. The directory name drives the slug (ai-code-suggestions) and the display name (AI Code Suggestions); rootProject.name, pluginName, plugin.name, the gallery page filename, its title and heading, and the README table row all follow. Add it to tools/addons/skip.txt: AI Core is held back for the pull requests in flight against it, so the pair must reach the gallery together. The Java package, applicationId, plugin.id and plugin.main_class do not change. Every install is keyed on plugin.id, and a new id orphans the installs that already exist. Claude-Session: https://claude.ai/code/session_01WTwoSBqWoqAmb8vSGjodHD * ADFA-5598 | Move AI Code Suggestions to its own package, state the AI Core need Rename the Java package to com.itsaky.androidide.plugins.aicodesuggestions and follow it through namespace, applicationId, plugin.id and plugin.main_class. getTooltipCategory() moves with plugin.id: the host derives the same string to resolve a lookup, so a category that lags behind the id renders "n/a" at runtime while the build stays green. This changes plugin.id, so an existing install of the old id does not upgrade to this one. The addon is on skip.txt and has never reached the gallery, so there is nothing published to orphan. State the AI Core requirement at the top of the README and the gallery page. The plugin holds no model; it asks AI Core for every completion and shows nothing until AI Core is installed and a model is selected. Correct the build instructions: the addon carries its own Gradle wrapper, so the commands are ./gradlew from plugins/AI-Code-Suggestions, and plugin-api.jar resolves from ../../libs/. Verified: ./gradlew assemblePlugin succeeds and packages both icons and assets/docs/index.html. Not verified on a device. Claude-Session: https://claude.ai/code/session_01WTwoSBqWoqAmb8vSGjodHD * ADFA-5598 | Correct the AI Core statement in the Speech to Text README The README said "Requires the AI Core plugin." three lines below a blockquote that said the opposite, and the architecture diagram, the feature list, and addon.json all call AI Core optional. The code agrees with them: when LlmInferenceService is absent, handleTranscript falls back to the raw transcript so speech is never dropped. Delete the false line and lead with what the plugin does with AI Core and without it. Correct the build instructions as well: the addon carries its own Gradle wrapper, so the commands are ./gradlew from plugins/Speech-to-Text, and plugin-api.jar resolves from ../../libs/. Documentation only. The name, the slug, plugin.id and the gallery status do not change, so existing installs still upgrade in place. Claude-Session: https://claude.ai/code/session_01WTwoSBqWoqAmb8vSGjodHD * ADFA-5598 | Say the AI Core requirement in the AI Code Suggestions summary summary is the only addon.json text a browsing user reads: the gallery card renders it and nothing else in prose. Someone who installs from the card without opening the details page is exactly the person who ends up with a plugin that appears to do nothing, so the card has to carry the requirement. 64 of the 120 characters the schema allows. Claude-Session: https://claude.ai/code/session_01WTwoSBqWoqAmb8vSGjodHD * ADFA-5598 | Write the product name as "Code on the Go" The earlier commits on this branch used "Code On The Go". That form is wrong. The app itself writes "Code on the Go" -- the About entry, the terminal banner, and the editor's own help text all use it. Correct every file this branch touched. Also rename the strings the plugin shows at runtime. The tooltip summary, the tooltip detail and the Tier 3 button still said "Code Suggestions" after the addon was renamed; the on-device Tooltips table showed the stale text. Verified on emulator-5554 against Code on the Go C-r-0908-1128: the plugin installs, the Extensions Manager lists it as "AI Code Suggestions", it stays enabled across a restart, and the documentation.db row now reads plugin_com.itsaky.androidide.plugins.aicodesuggestions with the corrected summary -- so the tooltip category tracks the new plugin.id. Claude-Session: https://claude.ai/code/session_01WTwoSBqWoqAmb8vSGjodHD * ADFA-5598 | Sweep "Code On The Go" out of plugins, the site, and the tooling The app writes "Code on the Go". Correct every remaining occurrence under plugins/ -- READMEs, gallery pages, in-app help, addon.json, manifests and Kotlin sources alike -- plus: * check.py, whose own message told contributors to write the wrong form, so the lint taught the error it exists to catch. * The gallery site's title, meta description and page-template title. Their body links already said "Code on the Go", so each page contradicted itself. * The README that tarball.py generates into every published source tarball, and its test. * model.py's docstring, the last one left in that package. Verified: 88 tests pass and addons check is clean. Claude-Session: https://claude.ai/code/session_01WTwoSBqWoqAmb8vSGjodHD * ADFA-5598 | Write "Code on the Go" in the skill, the records and the scripts Finish the sweep. The plugin-review skill and its rubric mattered most: they are the live instructions a review follows, so they would have kept putting "Code On The Go" into every new plugin. The design records are corrected at the source of the error too. The addon distribution plan states the naming rule in rule 6, and it stated the rule in the wrong form, which is where this branch first took it from. The rest are comments in .githooks/pre-push and scripts/check-toolchain.sh, plus two operator messages the toolchain script prints. Verified: both shell files parse, and the 88 addons tests still pass. Claude-Session: https://claude.ai/code/session_01WTwoSBqWoqAmb8vSGjodHD
1 parent 44aa624 commit 282a608

81 files changed

Lines changed: 255 additions & 240 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.claude/skills/plugin-review/SKILL.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
name: cogo-plugin-review
3-
description: Review a Code on the Go (CoGo or cotg) plugin project for submission readiness — verify the assemblePlugin build, audit actual security risks, and score the code against the submission rubric (compatibility, resource discipline, build reproducibility, native binaries, reflection ban, html documentation, tooltips and in-app help, manifest completeness, icons and imagery). Use when the user asks to review, audit, or check a Code On The Go plugin repo.
3+
description: Review a Code on the Go (CoGo or cotg) plugin project for submission readiness — verify the assemblePlugin build, audit actual security risks, and score the code against the submission rubric (compatibility, resource discipline, build reproducibility, native binaries, reflection ban, html documentation, tooltips and in-app help, manifest completeness, icons and imagery). Use when the user asks to review, audit, or check a Code on the Go plugin repo.
44
metadata:
55
author: Hal Eisen
66
keywords:
@@ -100,7 +100,7 @@ Search the source tree:
100100
- Must be at the top-level of the plugin folder, named after the **plugin folder** (kebab-case) with a `.html` extension: `template-manager/``template-manager.html`. The short folder-name form is preferred; a `-documentation` suffix (`random-xkcd-documentation.html`) is also acceptable. Do **not** name it after the lowercase `pluginBuilder { pluginName }` when that differs from the folder (i.e. not `templatemanagerplugin.html`).
101101

102102
#### 6.7 Tooltips and in-app help
103-
Code On The Go has a three-tier in-IDE help model: Tier 1 (brief) and Tier 2 (more detail) are tooltips; Tier 3 is a full offline web page reached from a button on the tooltip. Plugins participate through `DocumentationExtension` (all symbols verifiable in `plugin-api.jar`). This is separate from the 6.6 install-decision page — grade them independently.
103+
Code on the Go has a three-tier in-IDE help model: Tier 1 (brief) and Tier 2 (more detail) are tooltips; Tier 3 is a full offline web page reached from a button on the tooltip. Plugins participate through `DocumentationExtension` (all symbols verifiable in `plugin-api.jar`). This is separate from the 6.6 install-decision page — grade them independently.
104104

105105
- **Implements the extension**: confirm the main class (or one of the plugin's classes) implements `DocumentationExtension`. `grep -rlE 'DocumentationExtension' src --include='*.kt' --include='*.java'`. Absent → **Fail** (no in-app help at all).
106106
- **Every UI element has a tooltip**: reuse the extension enumeration from *Manifest completeness* below. For each contributed `NavigationItem` / `MenuItem` / `TabItem` / FAB / toolbar action, confirm `tooltipTag` is set; for each `EditorTabItem`, confirm `tooltip` is set. Any custom `View` the plugin shows (dialog, fragment, bottom sheet) must be wired to the tooltip system (`IdeTooltipService.showTooltip(...)` or `View.displayTooltipOnLongPress(...)`). One or more contributed elements with no tooltip → **Fail** ("all UI elements" is the bar); a stray non-interactive view missing one → **Partial**.

.claude/skills/plugin-review/references/RUBRIC.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ Helps potential users of the plugin to decide if they want to download and insta
3131

3232
## 6.7 Tooltips and in-app help
3333

34-
Help must be available *inside* the running IDE, not only in the standalone 6.6 page. Code On The Go uses a three-tier help model and plugins are expected to participate fully:
34+
Help must be available *inside* the running IDE, not only in the standalone 6.6 page. Code on the Go uses a three-tier help model and plugins are expected to participate fully:
3535

3636
- **Tier 1 (brief)** and **Tier 2 (more detail)** are delivered as tooltips. A user long-presses any UI element and sees a brief summary, then "See More" for detail.
3737
- **Tier 3 (full)** is an exhaustive in-app web page reached from a button on the tooltip, served from the bundled documentation database — no network required.

.githooks/pre-push

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
#
33
# pre-push nudge (ADFA-4678)
44
#
5-
# Reminds the developer to run the Code On The Go plugin-review skill
5+
# Reminds the developer to run the Code on the Go plugin-review skill
66
# (/plugin-review) before finishing a PR, so peer review isn't spent on
77
# issues the skill catches automatically.
88
#

README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# plugin-examples
22

3-
Reference plugins for [CodeOnTheGo](https://github.com/appdevforall/CodeOnTheGo). Each folder is a fully self-contained Gradle project that builds to a `.cgp` installable plugin file.
3+
Reference plugins for [Code on the Go](https://github.com/appdevforall/CodeOnTheGo). Each folder is a fully self-contained Gradle project that builds to a `.cgp` installable plugin file.
44

55
See the official [plugin documentation](https://www.appdevforall.org/codeonthego/help/exp-plugins-top.html) for concepts, the plugin API surface, and install workflow.
66

@@ -11,7 +11,7 @@ See the official [plugin documentation](https://www.appdevforall.org/codeonthego
1111
| [`plugins/APK-Analyzer/`](plugins/APK-Analyzer/) | Inspects the structure of an APK file inside the editor. |
1212
| [`plugins/Bookshelf/`](plugins/Bookshelf/) | Offline reference textbooks inside the in-app help. |
1313
| [`plugins/Client-Time-Tracker/`](plugins/Client-Time-Tracker/) | Tracks billable time for each project and creates invoices. |
14-
| [`plugins/Code-Suggestions/`](plugins/Code-Suggestions/) | Shows inline code completions as you type. |
14+
| [`plugins/AI-Code-Suggestions/`](plugins/AI-Code-Suggestions/) | Shows inline code completions as you type. |
1515
| [`plugins/Code-Together/`](plugins/Code-Together/) | Pair programming between two devices on the same network. |
1616
| [`plugins/Favorite-Snippets/`](plugins/Favorite-Snippets/) | Saves your own code snippets and inserts them in the editor. |
1717
| [`plugins/Flutter-Templates/`](plugins/Flutter-Templates/) | Adds five Flutter starter projects to the New Project screen. |
@@ -43,7 +43,7 @@ cd plugins/Voice-Alerts
4343
./gradlew assemblePlugin
4444
```
4545

46-
The resulting `.cgp` file lands under the plugin's `build/plugin/` directory. Install it from inside CodeOnTheGo via the Plugin Manager.
46+
The resulting `.cgp` file lands under the plugin's `build/plugin/` directory. Install it from inside Code on the Go via the Plugin Manager.
4747

4848
## Git hooks
4949

@@ -65,7 +65,7 @@ when your push doesn't touch any plugin folder.
6565

6666
## The `libs/` folder
6767

68-
Every plugin depends on two jars produced by the CodeOnTheGo source tree:
68+
Every plugin depends on two jars produced by the Code on the Go source tree:
6969

7070
- **`plugin-api.jar`** — the interface surface a plugin implements (`IPlugin`, `BuildStatusListener`, etc.). Used as `compileOnly` at build time; provided by the IDE at runtime.
7171
- **`gradle-plugin.jar`** — the custom Gradle plugin (`com.itsaky.androidide.plugins.build`) that packages a compiled Android library into a `.cgp` file. Applied via `classpath` in each plugin's `settings.gradle.kts`.
@@ -74,11 +74,11 @@ Both jars live in `libs/` at the repo root; each plugin references them via `../
7474

7575
## Refreshing `libs/`
7676

77-
Whenever CodeOnTheGo changes the plugin API or the build plugin, the jars need to be rebuilt. Two ways to do that:
77+
Whenever Code on the Go changes the plugin API or the build plugin, the jars need to be rebuilt. Two ways to do that:
7878

7979
### GitHub Action (normal path)
8080

81-
Go to [Actions → **Update libs from CodeOnTheGo**](../../actions/workflows/update-libs.yml) and click **Run workflow**. It will clone CodeOnTheGo at the branch or tag you specify (default: `stage`), build both jars, and commit them directly to the default branch.
81+
Go to [Actions → **Update libs from CodeOnTheGo**](../../actions/workflows/update-libs.yml) and click **Run workflow**. It will clone Code on the Go at the branch or tag you specify (default: `stage`), build both jars, and commit them directly to the default branch.
8282

8383
### Locally
8484

@@ -88,7 +88,7 @@ Go to [Actions → **Update libs from CodeOnTheGo**](../../actions/workflows/upd
8888
./scripts/update-libs.sh --local ../CodeOnTheGo # use an existing local checkout instead of cloning
8989
```
9090

91-
First local run clones CodeOnTheGo into `.cache/CodeOnTheGo/` (gitignored); subsequent runs `git pull` in place. Review the diff in `libs/` and commit if you're happy with it.
91+
First local run clones Code on the Go into `.cache/CodeOnTheGo/` (gitignored); subsequent runs `git pull` in place. Review the diff in `libs/` and commit if you're happy with it.
9292

9393
## Adding a new plugin example
9494

docs/process/learnings.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ Cross-session gotchas, discoveries, and patterns worth not re-deriving.
99
## Android / adb
1010

1111
- Pulling SQLite databases out of an emulator-installed app:
12-
- First try `adb -s <device> shell run-as <pkg> cat databases/<file> > local.db`. This only works if the app's APK has `android:debuggable="true"`. Code On The Go's release builds do not, so `run-as` returns "package not debuggable" and writes that error string to your output file.
12+
- First try `adb -s <device> shell run-as <pkg> cat databases/<file> > local.db`. This only works if the app's APK has `android:debuggable="true"`. Code on the Go's release builds do not, so `run-as` returns "package not debuggable" and writes that error string to your output file.
1313
- On an emulator (root-capable), the fallback is `adb root` (one-time per boot) followed by `adb pull /data/data/<pkg>/databases/<file> .`. This bypasses the debuggable check entirely. Reach for `adb root` early when inspecting/clearing on-device app data — it's far more reliable than fighting `run-as`'s working-directory quirks.
14-
- **Launching Code On The Go via adb — don't use `monkey`.** CoGo *debug* builds bundle **LeakCanary**, which registers its own launcher activity, so `adb shell monkey -p com.itsaky.androidide -c android.intent.category.LAUNCHER 1` (or any bare LAUNCHER intent) may open LeakCanary's "Leaks" screen or a disambiguation chooser instead of the IDE, and the IDE's own activities are not exported (direct `am start` on them is denied). Launch the explicit launcher component: `adb shell am start -n com.itsaky.androidide/.activities.SplashActivity`.
14+
- **Launching Code on the Go via adb — don't use `monkey`.** CoGo *debug* builds bundle **LeakCanary**, which registers its own launcher activity, so `adb shell monkey -p com.itsaky.androidide -c android.intent.category.LAUNCHER 1` (or any bare LAUNCHER intent) may open LeakCanary's "Leaks" screen or a disambiguation chooser instead of the IDE, and the IDE's own activities are not exported (direct `am start` on them is denied). Launch the explicit launcher component: `adb shell am start -n com.itsaky.androidide/.activities.SplashActivity`.
1515
- **Plugin Manager icons are Glide-cached.** CoGo loads plugin icons through Glide's disk cache (`/data/data/com.itsaky.androidide/cache/image_manager_disk_cache`), keyed by path without mtime invalidation. Reinstalling a plugin under the same `plugin.id` with changed `icon_day/night.png` keeps showing the **old** icon (the on-disk extracted icon under `app_plugin_icons/<id>/` updates correctly, but the rendered bitmap is stale). Clear that cache dir (via `adb root`) and restart, or install on a clean device, to confirm an icon change. Template *thumbnails* are not affected — they're re-read from the `.cgt` each time.
1616

1717
## Plugin build & install gotchas

docs/superpowers/plans/2026-09-04-addon-distribution.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
44
5-
**Goal:** Publish Code On The Go addons to Cloudflare R2 directly from the build job, and stop all use of GitHub Actions artifact storage.
5+
**Goal:** Publish Code on the Go addons to Cloudflare R2 directly from the build job, and stop all use of GitHub Actions artifact storage.
66

77
**Architecture:** A small Python tool owns addon identity. It derives names from directory names, builds source tarballs, generates a catalog, and uploads to R2. The workflows only call the tool. The tool runs offline against test data, so a pull request can check names and metadata.
88

@@ -21,7 +21,7 @@ Every task must obey this section.
2121
3. Python version is 3.11 or later.
2222
4. Do not change `plugin.id`, `namespace`, or `applicationId` in any addon.
2323
5. The directory name is the only source of addon identity. Do not add an override.
24-
6. Write "Code On The Go" in full in all text that a user reads. Do not write "CoGo", "CotG", or "CodeOnTheGo".
24+
6. Write "Code on the Go" in full in all text that a user reads. Do not write "CoGo", "CotG", or "CodeOnTheGo".
2525
7. Every catalog field is always present. Write `""` or `[]` for an empty value. Never write `null`. Never omit a field.
2626
8. Upload `v1/catalog.json` last, after all other objects.
2727
9. Do not add `actions/upload-artifact` or `actions/download-artifact` to any workflow.
@@ -889,7 +889,7 @@ from addons import model
889889

890890
README = """# {name}
891891
892-
Source for the {name} addon for Code On The Go.
892+
Source for the {name} addon for Code on the Go.
893893
894894
## Build
895895
@@ -1328,11 +1328,11 @@ cat > site/page.template.html <<'EOF'
13281328
<head>
13291329
<meta charset="utf-8">
13301330
<meta name="viewport" content="width=device-width, initial-scale=1">
1331-
<title>{{title}} — Code On The Go</title>
1331+
<title>{{title}} — Code on the Go</title>
13321332
<link rel="stylesheet" href="/assets/styles.css">
13331333
</head>
13341334
<body>
1335-
<header class="chrome"><a href="/">Code On The Go addons</a></header>
1335+
<header class="chrome"><a href="/">Code on the Go addons</a></header>
13361336
<main class="page">{{body}}</main>
13371337
<footer class="chrome"><a href="/">Back to all addons</a></footer>
13381338
</body>
@@ -1621,11 +1621,11 @@ cat > site/index.html <<'EOF'
16211621
<head>
16221622
<meta charset="utf-8">
16231623
<meta name="viewport" content="width=device-width, initial-scale=1">
1624-
<title>Addons for Code On The Go</title>
1624+
<title>Addons for Code on the Go</title>
16251625
<link rel="stylesheet" href="/assets/styles.css">
16261626
</head>
16271627
<body>
1628-
<header class="chrome"><h1>Addons for Code On The Go</h1></header>
1628+
<header class="chrome"><h1>Addons for Code on the Go</h1></header>
16291629
<main>
16301630
<div class="controls">
16311631
<input id="q" type="search" placeholder="Search addons" aria-label="Search addons">
@@ -2151,7 +2151,7 @@ mkdir -p snippets
21512151
cat > snippets/README.md <<'EOF'
21522152
# Snippets
21532153
2154-
Snippet addons for Code On The Go. This directory is empty for now.
2154+
Snippet addons for Code on the Go. This directory is empty for now.
21552155
EOF
21562156
```
21572157

0 commit comments

Comments
 (0)