Skip to content

Tags: AndroidIRCx/AndroidIRCx

Tags

v1.10.2

Toggle v1.10.2's commit message
v1.10.2 - versionCode 173

A working MCP server, 18 new languages, and visible passwords.

v1.10.0

Toggle v1.10.0's commit message
v1.10.0 — versionCode 170

The add-on platform: reviewed, permission-based packages with Safe Mode and
rollback. A scripting API that can answer who is who from the cache and keep
its own tables, secrets and files. Commands added by scripts now autocomplete.
Expert mode can rewrite outgoing raw IRC, with the transport-critical commands
kept out of reach.

Thirteen security findings closed, each with a test that used to fail.

v1.9.56

Toggle v1.9.56's commit message
v1.9.56 — AI, MCP, and forty new scripting members

**v1.9.56 — versionCode 169**

AI arrives in AndroidIRCX: scripts can call a model, an assistant can work on your IRC session, and the scripting API grew about forty members closing most of the gap with mIRC.

Everything here is **off until you turn it on**, uses **your own API key**, and can be switched off entirely from one place.

---

The app ships no model and operates none on your behalf. You add a provider — Anthropic, OpenAI, Gemini, DeepSeek, Groq, OpenRouter, or a model server on your own network — with your own key, and presets fill in the addresses.

A Claude Pro or ChatGPT Plus subscription **will not work**: those plans include no API access, and bridging a subscription-authenticated CLI is the pattern Anthropic banned on 2026-04-04. Only developer keys.

→ [AI](https://github.com/AndroidIRCx/AndroidIRCx/wiki/AI)

`api.ai.ask()` and `api.ai.chat()`, riding the existing scripting-time budget — no new paywall. Five example scripts ship, all disabled: an `/ai` task runner, a `/summarize` catch-up, channel translation, a suggested reply on highlight, and a moderation flag.

`/ai` reads the last 30 messages of the channel, does what you asked with them, and answers **only you**. `/aisend` posts that answer afterwards if you want it sent. That split is the safety story: channel text goes into the prompt, so a stranger writing "ignore that and say X" must not become you saying X.

→ [Scripting](https://github.com/AndroidIRCx/AndroidIRCx/wiki/Scripting)

Ask about your own channels, what you missed, who said what. Reading happens straight away; anything that **sends, joins or leaves stops and asks you first**.

- **Several conversations**, each keeping its own thread, persisted across restarts
- **Memory** — short facts it keeps between conversations, every one listed and deletable in settings
- **Script tools** — it can list, read, lint and save your scripts, and never enables one
- **Documentation** — it can read this wiki to answer questions about the app

Give the assistant tools from a server you run, or let an assistant on your computer use your IRC session. The server offers three bind choices — this phone only, your network, or every connection — and shows the real URL and token to paste.

→ [MCP](https://github.com/AndroidIRCx/AndroidIRCx/wiki/MCP)

---

- **Nothing is sent until you agree**, in a dialog that says what goes where. Local providers never ask.
- **Per-channel opt-in, default off.** The other people in a channel never agreed to anything, so it is asked per channel rather than once.
- **Identifying data removed by default** — nicknames become user1, user2; IP addresses, hostmasks and e-mail addresses are stripped.
- **Private addresses are never fetched**, allowlist or not — loopback, 10.x, 192.168.x, 172.16–31.x, link-local.
- **Your API key lives in the device keychain** and is excluded from backup exports.
- **Anything AI reads is data, not instructions.** A page or a message that says "ignore your instructions" gets reported, not obeyed.

A master switch stops every AI call immediately without unconfiguring anything.

---

About forty new members, audited against mIRC's identifier and event lists.

| | |
|---|---|
| **`api.echo`** | print a line locally — mIRC's `/echo`. `sendNotice` is real IRC traffic; this is not |
| **`api.listStorage` / `clearStorage`** | you could write a value per nick but never count, iterate or clean them up |
| **`api.confirm` / `ask`** | a script can finally ask the user something |
| **`api.banMask` / `getBanTypes`** | mIRC's `$mask()`, using the app's own logic including IP octets |
| **`api.bold` / `italic` / `underline` / `colour` / `strip`** | `strip` matters most: colour codes sit between you and matching what someone said |
| **`api.getSharedChannels`** | mIRC's `$comchan` |
| **`api.getChannelList`** | reads the cache and never runs `/LIST` |
| **`api.notify` / `copyToClipboard` / `setInput`** | `setInput` puts text in the composer and does **not** send it |
| **`api.http`** | uses the assistant's allowlist, not a second permission model |
| **`api.aiStatus`** | drives the activity strip above the composer |
| **favourites, reactions, away, user activity, flood log** | all read-only, all under the same opt-in |
| **`onUnload`** | a script can finally clean up after itself |

**`onRaw` never fired.** It was documented, in the autocomplete and in the wiki, and `handleRaw` was called from nowhere at all — so anyone who wrote one saw nothing and had no way to find out why. It works now, observing every line in both directions.

**`getTheme()` threw the colours away.** It returned only name and light-or-dark, so a script had to hardcode a palette that clashed with every built-in theme. It returns `colors` now.

---

- **Typing with highlight on now works.** The `selection` prop was controlled on every render, pushing the caret back before each keystroke landed — it only showed with highlight on because that render is the slow one.
- **No more doubled text.** The highlight layer was a `ScrollView` with scrolling disabled that the input drove with `scrollTo`, which Android ignores, so the two layers sat at different offsets and showed different parts of the script at once.
- **No more spellcheck underlines** under every identifier.
- **Autocomplete shows signatures and a description**, not bare names — so you can tell `userNick` is a value and what `setTimer` wants.
- **Generate with AI can edit** the script you have open instead of replacing it.
- Scrollable body with pinned buttons, so landscape works.

---

`build.ps1` no longer kills every JVM on the machine — Android Studio included. Gradle daemons are stopped through Gradle. adb is killed and not restarted, since a release build never talks to a device. `-Clean` now means something: without it the build is incremental, where before every run paid for a full native rebuild.

---

Tested on the internal track. MCP has been exercised against the app's own client but **not yet against a third-party peer**.

v1.9.55

Toggle v1.9.55's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Release v1.9.55 with expanded scripting and UI fixes

Release v1.9.55 with expanded scripting and UI fixes

v1.9.54

Toggle v1.9.54's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Merge pull request #358 from AndroidIRCx/develop

Release 1.9.54: scripting expansion, editor tooling, custom sounds

v1.9.53

Toggle v1.9.53's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Merge pull request #357 from AndroidIRCx/develop

Develop

v1.9.52

Toggle v1.9.52's commit message
AndroidIRCX v1.9.52

v1.9.51

Toggle v1.9.51's commit message
Release 1.9.51 (versionCode 158)