Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ This is intentional — the `application`-as-library packaging trips those check

### Asset downloads (rare)

Some plugins (`ndk-installer-plugin`, `ai-literacy-course`) register a `downloadAssets` task that fetches large files at build time with pinned-MD5 verification. These assets are **not committed to git** (e.g. `ai-literacy-course` pulls a ~110 MB course ZIP plus `pdfjs.zip`). `scripts/update-libs.sh` runs `downloadAssets` automatically before `assemblePlugin` when the build file references it.
Some plugins (`ndk-installer`, `ai-literacy-course`) register a `downloadAssets` task that fetches large files at build time with pinned-MD5 verification. These assets are **not committed to git** (e.g. `ai-literacy-course` pulls a ~110 MB course ZIP plus `pdfjs.zip`). `scripts/update-libs.sh` runs `downloadAssets` automatically before `assemblePlugin` when the build file references it.

**Gotcha: a bare `./gradlew assemblePlugin` does NOT run `downloadAssets` and does not warn when the assets are missing** — it silently packages a broken `.cgp` (e.g. a course with no PDF viewer). When building such a plugin by hand, run `./gradlew downloadAssets assemblePlugin` (or the script), and confirm the expected files exist under `src/main/assets/` (or `unzip -l` the `.cgp`) before trusting it.

Expand Down
4 changes: 2 additions & 2 deletions ai-agent-gemini/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

Google Gemini API inference for CodeOnTheGo's AI plugins. Registers itself as the
`gemini` backend with [`ai-core`](../ai-core/)'s `LlmInferenceService`, which is
what `ai-core`'s Agent chat, `code-suggestions-plugin`, `speech-to-text-plugin` and
`vector-search-plugin` actually talk to.
what `ai-core`'s Agent chat, `Code-Suggestions`, `Speech-to-Text` and
`Vector-Search` actually talk to.

Calls the Generative Language REST API directly over `HttpURLConnection` rather
than the google-genai SDK: the SDK bundles OkHttp 4.x, but plugins run in the
Expand Down
4 changes: 2 additions & 2 deletions ai-agent-local/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

On-device GGUF inference for CodeOnTheGo's AI plugins. Registers itself as the
`local` backend with [`ai-core`](../ai-core/)'s `LlmInferenceService`, which is
what `ai-core`'s Agent chat, `code-suggestions-plugin`, `speech-to-text-plugin` and
`vector-search-plugin` actually talk to.
what `ai-core`'s Agent chat, `Code-Suggestions`, `Speech-to-Text` and
`Vector-Search` actually talk to.

Runs `.gguf` models through a bundled, prebuilt **llama.cpp** AAR. Declares no
INTERNET permission — prompts and code never leave the device. Requires a 64-bit
Expand Down
4 changes: 2 additions & 2 deletions ai-agent-openai/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

OpenAI-compatible inference for CodeOnTheGo's AI plugins. Registers itself as the
`openai` backend with [`ai-core`](../ai-core/)'s `LlmInferenceService`, which is
what `ai-core`'s Agent chat, `code-suggestions-plugin`, `speech-to-text-plugin`
and `vector-search-plugin` actually talk to.
what `ai-core`'s Agent chat, `Code-Suggestions`, `Speech-to-Text`
and `Vector-Search` actually talk to.

**One backend, many servers.** It speaks `POST {baseUrl}/chat/completions`, and
the base URL is a setting. Across OpenAI, Ollama, LM Studio, OpenRouter and
Expand Down
6 changes: 3 additions & 3 deletions ai-core/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ Two things in one plugin, and **mandatory for every AI feature**:
the open project behind an approval gate, contributed as an editor tab plus a
settings screen.
2. The **LLM inference router** — publishes `LlmInferenceService` through
`SharedServices`, which [`code-suggestions-plugin`](../code-suggestions-plugin/),
[`speech-to-text-plugin`](../speech-to-text-plugin/) and
[`vector-search-plugin`](../vector-search-plugin/) consume at runtime.
`SharedServices`, which [`Code-Suggestions`](../plugins/Code-Suggestions/),
[`Speech-to-Text`](../plugins/Speech-to-Text/) and
[`Vector-Search`](../plugins/Vector-Search/) consume at runtime.

The Agent and the router shipped as separate `ai-assistant` and `ai-core` plugins
until they were merged here; an existing install's settings and chat history are
Expand Down
2 changes: 1 addition & 1 deletion ai-literacy-course/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ tasks.matching {
enabled = false
}

// --- Build-time asset downloads (mirrors ndk-installer-plugin) ---------------
// --- Build-time asset downloads (mirrors ndk-installer) ---------------
//
// Neither the 110 MB course ZIP nor the PDF.js viewer is committed to git. This
// task pulls each from its source and verifies a pinned MD5. scripts/update-libs.sh
Expand Down
6 changes: 3 additions & 3 deletions plugins/Code-Suggestions/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@ Prerequisites: Android SDK (API 33+), JDK 17. Create `local.properties` with
`sdk.dir=...`. No NDK or native toolchain.

```bash
cd code-suggestions-plugin
../gradlew assemblePlugin # release -> build/plugin/code-suggestions-plugin.cgp
cd Code-Suggestions
../gradlew assemblePlugin # release -> build/plugin/code-suggestions.cgp
../gradlew assemblePluginDebug # debug variant
```

Expand All @@ -57,7 +57,7 @@ The build resolves `plugin-api.jar` from the repo-root `../libs/`.
## Installation

1. Build and install **`ai-core` first** (see [`../ai-core/README.md`](../ai-core/README.md)).
2. Build this plugin, install `build/plugin/code-suggestions-plugin.cgp` via
2. Build this plugin, install `build/plugin/code-suggestions.cgp` via
CodeOnTheGo's Plugin Manager, and restart the IDE.
3. Configure a model in **AI Assistant → AI Settings**.

Expand Down
2 changes: 1 addition & 1 deletion plugins/Code-Suggestions/settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,4 @@ dependencyResolutionManagement {
repositories { google(); mavenCentral() }
}

rootProject.name = "code-suggestions-plugin"
rootProject.name = "code-suggestions"
2 changes: 1 addition & 1 deletion plugins/Flutter-Templates/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ cd flutter-template
../gradlew clean assemblePlugin
```

The `.cgp` lands in `build/plugin/fluttertemplate.cgp`. Install it from inside Code on the Go via
The `.cgp` lands in `build/plugin/flutter-templates.cgp`. Install it from inside Code on the Go via
the Plugin Manager, then open **New Project** to see the Flutter templates.

## Note on the Flutter SDK
Expand Down
2 changes: 1 addition & 1 deletion plugins/Flutter-Templates/flutter-templates.html
Original file line number Diff line number Diff line change
Expand Up @@ -294,7 +294,7 @@ <h2>7. Credits</h2>
</section>

<footer>
Flutter Template Plugin Documentation &middot; Version 2.0.0 &middot; com.ali.fluttertemplate
Flutter Templates Documentation &middot; Version 2.0.0 &middot; com.ali.fluttertemplate
</footer>

</body>
Expand Down
2 changes: 1 addition & 1 deletion plugins/Flutter-Templates/settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,4 @@ dependencyResolutionManagement {
}
}

rootProject.name = "fluttertemplate"
rootProject.name = "flutter-templates"
2 changes: 1 addition & 1 deletion plugins/Get-AI-Models/settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,4 @@ dependencyResolutionManagement {
}
}

rootProject.name = "GetAiModelsPlugin"
rootProject.name = "get-ai-models"
4 changes: 2 additions & 2 deletions plugins/Icons-Repository/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
### **IconsRepository-Plugin**
### **Icons Repository**

**Version:** 1.0.1

Expand Down Expand Up @@ -34,7 +34,7 @@ Build command:
./gradlew assemblePlugin
```

The signed `.cgp` artifact is written to `build/plugin/IconsRepository-Plugin.cgp`. Use `./gradlew assemblePluginDebug` for the debug variant.
The signed `.cgp` artifact is written to `build/plugin/icons-repository.cgp`. Use `./gradlew assemblePluginDebug` for the debug variant.

### **Usage**

Expand Down
4 changes: 2 additions & 2 deletions plugins/Icons-Repository/icons-repository.html
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ <h1>Icons Repository</h1>

<h2 id="executive-overview">Executive overview</h2>
<p>
IconsRepository-Plugin is a sidebar extension for the Code On The Go IDE that lets developers browse a bundled library of Material-style icons and import any of them into the current Android project as a Vector Drawable XML. The plugin replaces the manual "find an SVG, convert it, copy it into <code>res/drawable</code>, fix the colors" loop with a single dialog: pick an icon, optionally pick a tint, hit Import. The result is committed-ready XML in the project's <code>res/drawable</code> directory with no external network calls and no SDK changes required.
Icons Repository is a sidebar extension for the Code On The Go IDE that lets developers browse a bundled library of Material-style icons and import any of them into the current Android project as a Vector Drawable XML. The plugin replaces the manual "find an SVG, convert it, copy it into <code>res/drawable</code>, fix the colors" loop with a single dialog: pick an icon, optionally pick a tint, hit Import. The result is committed-ready XML in the project's <code>res/drawable</code> directory with no external network calls and no SDK changes required.
</p>
<p>
The plugin targets Code On The Go versions <strong>26.17 through 26.22</strong> and runs on Android API 26 and above.
Expand Down Expand Up @@ -110,7 +110,7 @@ <h3>Installation</h3>
<ol>
<li>Open Code On The Go.</li>
<li>Open the Plugin Manager.</li>
<li>Install <strong>IconsRepository-Plugin</strong>.</li>
<li>Install <strong>Icons Repository</strong>.</li>
</ol>

<h3>Importing an icon</h3>
Expand Down
2 changes: 1 addition & 1 deletion plugins/Icons-Repository/settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,4 @@ dependencyResolutionManagement {
}
}

rootProject.name = "IconsRepository-Plugin"
rootProject.name = "icons-repository"
2 changes: 1 addition & 1 deletion plugins/Icons-Repository/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">

<application
android:label="IconsRepository-Plugin"
android:label="Icons Repository"
android:theme="@style/PluginTheme">

<!-- Plugin metadata -->
Expand Down
2 changes: 1 addition & 1 deletion plugins/Jetpack-Compose-Preview/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Surfaces as a preview action in the editor toolbar, shown only when a Kotlin fil
## Building

```sh
cd compose-preview
cd Jetpack-Compose-Preview
./gradlew assemblePlugin
```

Expand Down
2 changes: 1 addition & 1 deletion plugins/Jetpack-Compose-Preview/settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,4 @@ dependencyResolutionManagement {
}
}

rootProject.name = "compose-preview"
rootProject.name = "jetpack-compose-preview"
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package org.appdevforall.composepreview
/**
* Hands the current file + source from the toolbar/menu action to [ComposePreviewFragment]
* across the openPluginScreen boundary (which carries no Bundle). Mirrors the
* SketchToUiState pattern used by sketch-to-ui-plugin.
* SketchToUiState pattern used by Sketch-to-UI.
*/
object ComposePreviewState {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import java.io.File
*
* Surfaces a content-aware menu item (visible only when an Android layout `.xml` file is open)
* that opens the editor full-screen via [IdeUIService.openPluginScreen], handing the target
* layout over through [LayoutEditorState]. Mirrors sketch-to-ui-plugin's proven pattern; the
* layout over through [LayoutEditorState]. Mirrors Sketch-to-UI's proven pattern; the
* host's built-in PreviewLayout action is removed separately when the editor leaves the host build.
*/
class LayoutEditorPlugin : IPlugin, UIExtension, DocumentationExtension, BuildStatusListener {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package org.appdevforall.codeonthego.layouteditor

/**
* Hands the current layout file from the toolbar action to [LayoutEditorFragment] across the
* openPluginScreen boundary (which carries no Bundle). Mirrors compose-preview's
* openPluginScreen boundary (which carries no Bundle). Mirrors Jetpack-Compose-Preview's
* ComposePreviewState / sketch-to-ui's SketchToUiState pattern.
*
* The two values mirror the Intent extras the in-app EditorActivity used to receive:
Expand Down
2 changes: 1 addition & 1 deletion plugins/NDK-Installer/settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
rootProject.name = "ndk-installer-plugin"
rootProject.name = "ndk-installer"

pluginManagement {
repositories {
Expand Down
8 changes: 4 additions & 4 deletions plugins/Rainbow-Brackets/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# rainbow-on-the-go
# Rainbow Brackets

A Code On The Go plugin that colors matching parentheses, brackets, and braces by
nesting depth — an opening delimiter and its match share a color, cycling through six
Expand All @@ -18,8 +18,8 @@ no permissions, makes no network calls, and reads no files.
## Build

```sh
cd rainbow-on-the-go
./gradlew assemblePlugin # release .cgp -> build/plugin/rainbow-on-the-go.cgp
cd Rainbow-Brackets
./gradlew assemblePlugin # release .cgp -> build/plugin/rainbow-brackets.cgp
```

The plugin compiles against `../libs/plugin-api.jar`. If the `EditorDecorationProvider` API
Expand All @@ -33,6 +33,6 @@ cd ..
## In-IDE help

A walkthrough is served by the host IDE at
`http://localhost:6174/plugin/org.appdevforall.rainbowonthego/index.html` once installed
`http://localhost:6174/plugin/org.appdevforall.rainbowbrackets/index.html` once installed
(source: `src/main/assets/docs/index.html`). Long-press is wired through
`DocumentationExtension` for the three-tier tooltip help.
6 changes: 3 additions & 3 deletions plugins/Rainbow-Brackets/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@ pluginBuilder {
}

android {
namespace = "org.appdevforall.rainbowonthego"
namespace = "org.appdevforall.rainbowbrackets"
compileSdk = 36

defaultConfig {
applicationId = "org.appdevforall.rainbowonthego"
applicationId = "org.appdevforall.rainbowbrackets"
minSdk = 26
targetSdk = 36
versionCode = 1
Expand Down Expand Up @@ -62,7 +62,7 @@ tasks.wrapper {
}

// Disable AAR metadata checks that fail under the plugin-builder
// pipeline (Beepy + Forms use the same workaround).
// pipeline (Voice Alerts + Forms use the same workaround).
tasks.matching {
it.name.contains("checkDebugAarMetadata") ||
it.name.contains("checkReleaseAarMetadata")
Expand Down
2 changes: 1 addition & 1 deletion plugins/Rainbow-Brackets/proguard-rules.pro
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Add project specific ProGuard rules here.

# Keep plugin classes — the IDE loads them by reflection via plugin.main_class.
-keep class org.appdevforall.rainbowonthego.** { *; }
-keep class org.appdevforall.rainbowbrackets.** { *; }
2 changes: 1 addition & 1 deletion plugins/Rainbow-Brackets/rainbow-brackets.html
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ <h2>Contents</h2>

<section id="overview">
<h2>1. Executive Overview</h2>
<p>RainbowOnTheGo makes nested code easier to read by coloring each pair of
<p>Rainbow Brackets makes nested code easier to read by coloring each pair of
brackets according to how deeply it is nested. An opening delimiter and its matching
closing delimiter share the same color, so you can see at a glance which <code>(</code>
pairs with which <code>)</code>, even in deeply nested expressions.</p>
Expand Down
2 changes: 1 addition & 1 deletion plugins/Rainbow-Brackets/settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,4 @@ dependencyResolutionManagement {
}
}

rootProject.name = "rainbow-on-the-go"
rootProject.name = "rainbow-brackets"
4 changes: 2 additions & 2 deletions plugins/Rainbow-Brackets/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<!-- Plugin metadata -->
<meta-data
android:name="plugin.id"
android:value="org.appdevforall.rainbowonthego" />
android:value="org.appdevforall.rainbowbrackets" />

<meta-data
android:name="plugin.name"
Expand Down Expand Up @@ -38,7 +38,7 @@

<meta-data
android:name="plugin.main_class"
android:value="org.appdevforall.rainbowonthego.RainbowOnTheGoPlugin" />
android:value="org.appdevforall.rainbowbrackets.RainbowBracketsPlugin" />

<!-- Plugin Manager icons. Required for debug builds; release builds
skip this check. Paths are inside the .cgp (APK) zip — assets/
Expand Down
10 changes: 5 additions & 5 deletions plugins/Rainbow-Brackets/src/main/assets/docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>RainbowOnTheGo — How it works</title>
<title>Rainbow Brackets — How it works</title>
<link rel="stylesheet" href="css/walkthrough.css">
</head>
<body>

<h1>RainbowOnTheGo</h1>
<p>RainbowOnTheGo colors matching parentheses, brackets, and braces by how deeply they
<h1>Rainbow Brackets</h1>
<p>Rainbow Brackets colors matching parentheses, brackets, and braces by how deeply they
nest, so a delimiter and its match share a color. It colors <b>Java and Kotlin</b> files and adds
color only — your normal syntax highlighting is untouched, and other languages are left alone.</p>

Expand Down Expand Up @@ -37,11 +37,11 @@ <h2>Strings and comments</h2>
does not affect nesting depth.</p>

<h2>Turning it off</h2>
<p>Disable RainbowOnTheGo in the Plugin Manager to return all brackets to the editor's normal
<p>Disable Rainbow Brackets in the Plugin Manager to return all brackets to the editor's normal
color. The change applies immediately to open editors.</p>

<h2>How it's built</h2>
<p>RainbowOnTheGo implements <code>EditorDecorationProvider</code>, a generic Code On The Go
<p>Rainbow Brackets implements <code>EditorDecorationProvider</code>, a generic Code On The Go
plugin API. Its <code>decorate</code> method scans a region of text for bracket characters,
tracks the running nesting depth, skips brackets inside strings and comments, and returns a
foreground-color span per bracket. The editor merges those spans on top of the normal
Expand Down
Loading
Loading