Analyze a GitHub repository
Give it a repo address and it reads the README, directory layout, language mix and commit history, then reports what the project does, how solid it looks and where the risks are.
- Fetch repo
- Read structure
- Write report
Understands your codebase, reads and writes files, runs terminal commands and calls tools until the job is done. Bring your own API key, run cloud models, or go fully offline with local GGUF.
Give it one instruction, a repo address or a link, and it breaks the task down, calls tools and checks its own results. Three real scenarios:
Give it a repo address and it reads the README, directory layout, language mix and commit history, then reports what the project does, how solid it looks and where the risks are.
Give it a URL and it extracts the body text, images and code blocks, then summarizes them. Long articles, docs and tutorials all work.
Large tasks are split across sub-agents running in parallel, handling research, code reading and reporting. The whole execution chain stays visible, so any stall can be traced to the exact step.
Cloud: three protocols — OpenAI-compatible, Claude and Codex. Local: GGUF, fully offline. DeepSeek, Kimi, Qwen, GLM and Doubao ship as presets.
Every one of them is already shipped in the current build.
Reads and writes files, runs terminal commands, greps code by content, fetches web pages and reads images. Every step is logged, permissions come in three tiers, and nothing runs before you confirm it.
An Alpine container via proot, no root required. One tap on Configure installs Node.js, Python 3, Git and other everyday tooling — and the AI can drive the same terminal.
Chat data lives in an on-device SQLite database. Exported archives have API keys stripped automatically. The in-app browser blocks JavaScript by default and follows a URL allowlist.
OpenAI-compatible, Claude and Codex protocols, with ready-made presets for DeepSeek, Kimi, Qwen and GLM. Local GGUF runs fully offline with zero API cost.
When the request is ambiguous it pauses the task and raises a confirmation card in the chat, then continues once you have answered — no wasted work.
Driven by the accessibility service, the AI can tap, swipe and take screenshots across apps. Handy for automated cleanup and bulk operations.
Context is compressed automatically as it approaches the model limit, so long tasks finish. Memory persists across sessions — no re-briefing from scratch.
Ships with assistant, catgirl, virtual companion and reverse-engineering personas, switchable at any time — or write your own and choose an avatar.
Supports MCP-HTTP tools, Skills and custom Agent extensions. Install them and they are callable.
Free, no ads, no sign-up. Add your model key and go — or run local models entirely offline.
Verify the package has not been modified before installing.
computing…
What we collect: the public IP and User-Agent at download time; an anonymous in-app account (random UID, custom nickname and avatar); online status from heartbeat reports.
What it is used for: used only for download and activity statistics and abuse prevention. Not shared with third parties, and not linked to your real identity.
How long we keep it: raw IPs are kept for 90 days, then redacted and archived; account data is deleted immediately when the account is deleted.
Your rights: in the app, go to "Settings → User Info → Delete Account"; a 5-second countdown, then all data is deleted.
File card open-with options + sub-agent freeze fix. ① File cards now offer open-with options: view/share/copy path, with "just once" or "always" memory (per extension), plus recommendations by type; ② fixed "AI says it generated a file but no card is visible" — files whose write failed now show a card too; ③ fixed the app freezing when invoking a sub-agent: safe tools run automatically, and the capability surface is constrained three ways by an allowlist, a write scope, and a dangerous-command gate; delete operations are refused and dangerous shell commands are blocked.
Timed questions + late-answer injection. ① AI question timer: the dialog shows the remaining mm:ss, and after timeout the AI continues with a pending flag; ② late answers are not lost — you can submit them from the "Answer again" entry in the message stream, and the answer is injected into the next round; ③ file cards now show +N/-N line add/delete counts (green/red); ④ fixed submissions at the timeout instant being overwritten and late answers crossing sessions when switching conversations.
Question dialog deduplication + generated files as cards. ① Fixed AI question dialogs and inline cards appearing twice: each question now has only one interactive entry point, the inline card takes over after the dialog is closed, and submitted questions do not come back to life; ② generated/modified files are upgraded to cards with type icons — APK, archive, image, video, and document types are colored by extension, multiple edits to the same path merge into one card, and tapping expands the diff; ③ fixed file cards not showing when the AI answers first and calls tools afterwards, and rolled-back changes are still displayed.
Marker leak fix + per-turn file list. ① Fixed the internal <LEOF "…"> marker leaking at the end of replies — it is now stripped adaptively by marker position and no longer damages unclosed text; ② the attachment panel no longer reports an English error when the terminal is disconnected: it reconnects automatically and gives Chinese guidance; ③ the file list below AI answers is upgraded, newly created files are counted too, and the header line shows the paths generated/modified this turn.
Long-press fix + dialogs fully app-native. ① Fixed long-press on messages being hit-or-miss — code blocks and link paragraphs were taken over by system gestures so the menu would not open; long-press now always works; ② system dialogs across the app are uniformly replaced with app components for consistent visuals and interaction; ③ AI questions automatically pop a numbered choice card, and tapping 1/2/3 sends the answer back; fixed the answer channel not being wired up and not pausing in permission mode; ④ corrected the semantics of the line-number window for file reads. The website launched a National Day theme the same day.
Stronger question handling and code search. ① ask_user_question now supports asking several questions at once (each with an id), options can carry descriptions and allow multi-select, and answers are returned as JSON; questions automatically pop a choice card, and tapping 1/2/3 sends the answer back, working in any permission mode; fixed questions not returning answers and questions being echoed back verbatim as errors; ② grep output gains a Found K of N header and groups by file with line numbers, include accepts only a single positive glob; glob includes hidden and ignored files (excluding only VCS directories) and sorts by modification time; ③ added six tools: calculator, http_request, device_info, clipboard, current_time, apk_inspect.
Fixed long-conversation export crashes and lost reply text. ① Exporting oversized content (~1MB) via "copy to clipboard" triggered TransactionTooLargeException and crashed outright — content over the limit now automatically falls back to sharing a temporary txt file, and clipboard write failures get the same fallback; ② fixed reply bodies being swallowed by internal marker parsing: when the body contained a code tag starting with <L (such as LinearLayout) or the word tool_call, the whole body could be cleared, leaving only the thinking process; ③ the rare empty reply now writes a diagnostic log, making it easier to pinpoint gateway empty responses and truncation.
Chengxinjian reverse-engineering workflow v2: stronger report quality and closed-loop execution.Comprehensive hardening against the three classes of problems found when reviewing real-world reports — ① execution layer: fixed the no-progress spin loop where the agent "repeatedly restored state without advancing" (restore attempt cap + idle circuit breaker + enforced phase gates); tool errors no longer leak into the report stream, and complex regexes now prefer the native filtering interface; ② reasoning layer: added an evidence-boundary comparison table to eliminate over-claims such as "no plaintext = no detection", "stripped = not hardened", and "identical strings = unmodified"; architectural facts carry risk notes, each high-risk permission is annotated with its purpose and risk points, and profile wording must be cross-checked against evidence; ③ report layer: raw output (hexdump/readelf/symbol tables) always goes into an appendix; added an "Outstanding items" section to force closure of pending verification items; intermediate conclusions explicitly mark phase boundaries.
Long-conversation export fix + reverse-engineering workflow stability upgrade.Fixed the share crash when exporting extremely long conversations: text over 256KB is automatically shared as a .txt file (via FileProvider), no longer hitting the system 1MB transaction limit. The Chengxinjian reverse-engineering workflow adds three hard rules: analysis profiles and phase conclusions must be persisted to the workspace (PROFILE.md / FINDINGS.md), and after context compression the agent restores from those files instead of re-fetching everything; listing queries must include filters, and any single output over 150 lines is automatically converted into a statistical summary, preventing a thousand lines of raw data from being dumped in at once; when an MCP session expires it is automatically reopened and the run resumes from the files instead of starting over.
Fixed conversation-history work status.Fixed the sidebar session entries' left icon and the "generating" spinner not showing: the container hosting them had never been attached to the view tree since it was implemented; this release adds the missing mount and fixes the whole generation-status pipeline along with it — generating sessions show a spinner in real time, it disappears when generation finishes, and parallel sessions are each marked independently.
Avatar system overhaul + work status visualization.Fixed custom persona avatars failing: refreshing built-in persona data no longer overwrites the avatar the user set; all avatars are uniformly cropped with a 30% corner radius, and the transparent ring behind the default avatar is gone; user avatars now use the same framing page as persona avatars — square rounded guide, drag to position, pinch to zoom, WYSIWYG. In the sidebar conversation list, sessions generating content show a spinner in real time, and parallel tasks are marked independently per session. Phase two of the UI design system wraps up: leftover corner radii and font sizes in the terminal, share, container install, and Agent task screens are all converged onto design tokens (zero violations remaining in live code).
Fixed shell system command routing + UI design system refactor (phase one). Fixed Android commands such as am/pm being misclassified into the container and rejected by the system when run as the app: the old detection logic only looked at the last segment of the command, so compound commands like "am start … && echo ok" and "pm list packages | grep x" were all missed (a probe measured 9 wrong out of 30 cases); it now scans segment by segment and supports sh -c/su/busybox/absolute-path wrapping, with 0 detection errors; when unauthorized it no longer silently falls back, but clearly reports the executor and how to fix it. On the UI side, phase one of the design system is complete: 247 corner radii across the project converged to 6 tiers and 62 font sizes to 5 tiers (0 non-standard values remaining), user bubbles changed from high-saturation blue to a low-saturation neutral, AI bubbles gain a mirrored 4dp corner radius and an 85% width cap, the top bar changed from a color block to surface color + outline, and the drawer's selected state became a background tint + left indicator bar.
Floating-window task progress: pipeline rebuilt per the audit findings. Audited layer by layer a comparable implementation that works correctly and found that its floating-window progress is "a single data stream + automatic UI subscription", with no event pushes or gates anywhere; this project had implemented it as a seven-layer event chain, where a failed check at any layer silently dropped the event and the UI stayed on "running" forever. This version removes all gates in favor of unconditional writes and adds a 500ms fixed-rate polling fallback — even if notifications fail completely, progress self-heals within half a second, downgrading "stuck forever" to "at most half a second late". Also fixed the final state being discarded when a task ends.
Fixed context-compression HTTP 400 (invalid reasoning-toggle parameter): when reasoning was off, the thinking.type=disabled parameter was sent, yet the internal value "off" was used as reasoning_effort, while the gateway only accepts "none" — one string was never converted, so context compression failed consistently and retries had no effect. Legal values are now sent in valid pairs per the gateway rules (disabled⇔none, enabled⇔a specific level), and all 8 values pass validation. Also added pipeline instrumentation for floating-window progress, so it can directly distinguish "never called" from "blocked by a gate".
Diagnostic logs now land in public storage, plus a crash hazard cleaned up along the way: floating-window progress logs have moved from the private Android/data directory (unreachable from the phone's file manager, inaccessible without root) to /sdcard/Ccode/logs/, no root or computer needed to open or export them; the error log page gains a "Floating-window progress logs" entry at the top — one tap to share, and if sharing fails it falls back to copying to the clipboard. Also removed a duplicate ShareFileProvider that was never registered in the manifest — its authority does not exist, so calling it means yet another "No content provider" crash.
Internal file access crash fix + one-tap Shizuku self-check: fixed the crash reporting "No content provider" when opening error logs, sharing, or accessing workspace files. The root cause was that the build step never replaced the ${applicationId} placeholder in the manifest, so the authorities registered by the three file providers did not match the real ones. Also added a one-tap Shizuku self-check: it actually runs a system command and reports a verdict, listing permission, service, and execution chain item by item, and the result can be copied straight into feedback — no more guessing at the problem from a text description.
Fixed Shizuku authorization state detection: Fixed the issue where the app still reported "not authorized" when the AI ran system commands such as pm / am, even though authorization had already been granted in Shizuku. The root cause was that if the Shizuku service was not yet ready at app startup, the app would never proactively re-check the authorization state again, leaving it stuck at unauthorized forever. It now checks immediately at startup and re-checks automatically shortly after, and also confirms with a delay once authorization succeeds; Sui backend detection was added as well. The authorization page now shows the specific reason for failure (service not running / not authorized / binder error) and provides a "Copy diagnostic info" button so it can be sent back directly for troubleshooting.
Floating window progress pipeline completed + field diagnostics: Filled in the progress push at the exact moment a tool finishes executing — previously only "started executing" was pushed, while "finished/failed" had no trigger at all, so steps on the floating card would sit at "running…" forever. Every tool now pushes immediately as it wraps up, so steps advance correctly to "✓ done / ✗ failed". A progress-pipeline diagnostic log was also added (written to both logcat and the app's external private directory overlay_progress.log); if anything still misbehaves, the log pinpoints the break directly instead of leaving you to guess.
Floating window task progress genuinely wired up: Fixed the issue in v3.6.4 where progress data was generated but the floating window still showed only "AI task / tap to open chat". The root cause was that both rendering gates required a precondition belonging to in-conversation tool cards (a non-empty tool call ID), which the top-level Agent does not satisfy, so progress was blocked before it could be pushed. The two gates are now decoupled and floating window pushes are no longer constrained by in-conversation rendering conditions; the floating card title now shows the real goal of the current task (falling back by task type when there is no goal), instead of always being the vague "AI task".
Floating window shows real-time task progress: Once the floating bubble is expanded it no longer shows just a vague "AI task" — it now shows what the AI is doing right now, for example "using shell_execute…", and lays out the full progression as a step stream (tool running → done / failed), showing at most the latest 4 entries. Progress text is now synthesized from real tool execution data instead of depending on whether the model fills in a description parameter.
Fixed broken Agent online analysis: Fixed the issue where, with some reasoning-type models, the Agent made 0 tool calls for the entire run and the report came back empty or showing null. The root cause was that when the model put its main text in the reasoning field and left content empty, the tool loop judged the run "complete" on the very first step. It now falls back to reading the reasoning text when content is empty, and empty replies keep the run going instead of ending it early. Tool call parsing is also more compatible (supporting JSON argument bodies, arguments written as properties, and OpenAI's native JSON format). When no data really was collected, the report page now gives a clear reason and model suggestions, so users no longer assume the feature is broken.
Fixed temperature-parameter HTTP 400 errors + Agent button drag bounds: Some OpenAI-compatible gateways reject custom temperature values, which previously returned HTTP 400 and made the conversation fail outright. This is now detected automatically: the request is retried without temperature / top_p and the gateway is remembered, on both the streaming (Agent) and non-streaming paths; the model editing page's "Advanced" section also gains a manual "Disable temperature / top_p" toggle. Also fixed the chat page's floating Agent button being draggable off-screen and then unrecoverable — it is now bounds-constrained while dragging, on release, and when restored at startup.
Floating bubble interaction fixes + scheduled tasks in history: Fixed the expanded task card being impossible to collapse (the bubble stays visible at all times, and the card has a new "Collapse" button); the bottom of the task card gains an "Open Ccode" button that takes you straight to the corresponding page in the app. Scheduled tasks moved into the chat history drawer (the middle "Scheduled" tab), where you can create, enable/disable, change the time (daily at H:mm / every N minutes, switchable with one tap), run now, delete; conversations produced by scheduled tasks are clearly labeled in history as "Scheduled task · name".
Floating bubble rebuilt + scheduled tasks: The floating layer is no longer "open/close app" — it shows the real-time progress of the task currently running (AI task / environment install / scheduled task), the bubble carries a progress ring, and a single tap expands the task card; tapping the task text jumps straight back to the corresponding page in the app, so long-running tasks don't require switching back to check on them. Added a "Scheduled task" module (Settings → Tools): at the appointed time it automatically sends preset prompts to the AI for execution — while the app is running it executes silently in the background, and if it gets killed a notification reminds you to run it with one tap. It supports one-shot / daily / interval triggers plus automatic rescheduling on boot.
Agent entry point can be dragged: The "Agent" button pinned to the bottom-right corner can be held and dragged anywhere on screen, and its position is remembered on release (it stays there on the next launch); a single tap still opens Agent Center, and it no longer covers the chat content above the input box.
Fixed Ccode not appearing in Shizuku's authorization list: The previous APK build was missing the API_V23 permission declaration that Shizuku requires (because our in-house build chain does not merge the manifests bundled inside dependency libraries), which meant Ccode was absent from Shizuku's app authorization list and authorization could not proceed. This release adds the declaration; after upgrading, just turn on the Ccode toggle in Shizuku's authorization list to complete authorization. Shizuku is an ADB privilege tool: once authorized, the AI's shell command capability matches adb shell — launching third-party apps, managing applications, simulating taps, reading system state and more; when not authorized, the relevant commands automatically fall back and show guidance.
Emergency fix for environment management freeze + reverse-engineering Agent retrained on "business architecture first": Two things. First, a severe bug fix — after filling up an environment, tapping "Environment management" crashed and froze the app outright: the status bar needs to measure container size, which means recursively walking tens of thousands of files across the entire Ubuntu rootfs, and that step ran on the main thread, so the bigger the environment the worse the freeze. This release adds a 10-minute cache to size measurement (invalidated automatically on reinstall/delete), makes UI buttons respond instantly, moves all status text computation to a background thread to be filled back in, and warms up in the background after installation completes — it now opens instantly with no stutter, and the terminal's environment status and container diagnostics benefit too. Second, the reverse-engineering Agent misjudged this app's own APK as having "anti-debugging" — it took the proot container's ptrace (the mechanism that implements system call interception) for anti-debugging, bash/busybox's initArray (standard libc initialization) for detection initialization, and its own workflow's prompt text for detection evidence, then reran like a broken record when challenged. This release injects a zeroth principle into "Chengxinjian": business architecture first — produce an app profile before analysis, keep a built-in table of common components (with proot/bash/busybox/loader each properly named), strip out any hit that comes from the app's own documentation, and when the user challenges a conclusion, no repeating — answer directly, and force report numbers to stay consistent; it also abolishes the rigid "initArray is always P0" rule.
Major agent workflow overhaul (battle-tested in real reverse-engineering analysis): A single APK reverse-engineering session exposed five major Agent flaws — after a string search returned zero hits it spun idly forever; structured data returned by tools, such as import tables and initialization functions, was discarded the moment it arrived; phases printed only a title with no deliverables; a sub-agent filled its context and blew straight past the model limit; and the session ended with an advertising tagline instead of a real wrap-up. This release fixes it on two levels. At the prompt level, the "Chengxinjian" reverse-engineering workflow was rewritten as an executable state machine (mandatory phase deliverables, structured data must be interpreted, two consecutive zero-hit string searches force a switch to import table / DEX native method analysis, and the run must end with an "Analysis Summary Report"), and every sub-agent role template was rewritten to "deliver conclusions only, don't haul the source text over". At the framework level, sub-agents gained a context-bloat safety net — when a long loop pushes the history to the model limit, it now automatically compresses early tool results and retries once instead of erroring out and giving up, and importing attachments now also comes with MCP virtual path guidance to cut detours. The old built-in "override the safety rules" clause was removed as well, replaced by an explicit authorized-use boundary statement.
Fixed environment installation (real culprit located, reproduced and verified across the full x86 chain): We finally caught the real culprit behind installation errors reporting 126 — during container extraction some key programs lost their executable bit, the most critical being the perl interpreter that the debconf interactive framework depends on: the install scripts of packages like libssl3 / ca-certificates execute it right at the start, and when that fails they report "post-installation script ... exit status 126" with apt exit code 100. The ldconfig replacement and pre/post-install permission fixes in earlier releases never hit it, and even after the fix the missing step of "reconfiguring half-installed packages" meant partially installed packages stayed stuck forever. This release attacks it on three fronts: ① during container extraction it restores each file's permission bits directly from the image metadata (including files copied as a hardlink fallback), so new environments are healthy from the ground up; ② after an install failure it automatically restores the executable bit → reconfigures half-installed packages → retries the install automatically, until every target package is fully configured (old environments need no reset — just retry the install after upgrading); ③ it no longer overwrites the system's built-in ldconfig protection shim (Ubuntu's official one is itself designed for proot compatibility, so the earlier change was collateral damage), and it now also automatically recovers legacy self-written scripts.
Fixed environment installation (critical patch): On some ROMs the system's chmod permission interface is blocked by a security policy, so the install scripts dpkg writes when unpacking new software lack the executable bit (reporting "post-installation script ... exit status 126" with apt exit code 100, usually dying on libssl3) — earlier package repository and ldconfig fixes could not get around it. Now, every time the container is entered, and before and after every installation, the app restores the executable bit on all files directly from the host side (automatically using the fchmod path when chmod is unavailable), which unlocks half-configured packages on the spot and lets newly installed commands like node / python3 actually run. Environments where installation previously failed need no reset — just retry the install after upgrading.
Full dpkg hardening coverage: Container compatibility hardening now extends from the "Environment Setup" entry to running automatically on every container start (host-side direct write, idempotent) — AI running apt-get install straight from the chat and manual installs in the terminal are protected just the same; if a libc6 upgrade overwrites the hardening script it is automatically restored, and libssl3 half-configured problems are eliminated at the source.Fixed terminal version display: The version number in the terminal startup banner now reads the app's real version dynamically (it was hard-coded to v3.5.1, out of sync with the APK version).
Fixed environment installation (important): Tracked down the real root cause of apt exit code 100 — the ldconfig called by libssl3's install script cannot execute inside the proot container (script exit code 126), so libssl3 is stuck forever in a "half-configured" state and every package installed afterwards fails on it. Now container compatibility hardening runs automatically before every environment setup (ldconfig blanked out + services blocked from starting during install), the half-configured state clears on the spot, and nodejs / npm / python3-pip and friends install normally; environments that failed before need no reset — just retry the install and they recover.
Environment installation, fully fixed: apt install is now a four-step repair chain (repair package state → refresh source index → install → final configuration), completely resolving the "dpkg returned an error code (1)" (exit code 100) cascade failures caused by the half-configured libssl3; failed installs are automatically classified and retried (lock conflict / corrupted package state / bad software source).Environment setup progress bar: The whole install is visible — progress bar, current step, live log, error reason, with one-tap retry on failure.Card-based AI replies: AI replies are rendered with a card component (brightened background + thin border + large rounded corners), clearly separated from user bubbles so the conversation is easy to scan.Fixed broken long-press menu: "Delete" and "Regenerate" on AI messages now actually work (before they only worked on user messages).Fixed chat lag and text flicker: Streaming render throttling cuts the load + unchanged content skips rebuilding + stable message view binding, so opening the chat page while an AI reply is generating no longer flickers back and forth.
Reverse-engineering tool fixes: APK reverse engineering now returns a complete list of .so files and supports batch extraction by directory (lib / lib/arm64-v8a) — extract every .so at once without typing entry names, no more spinning on "entry does not exist".Terminal branding and layout fixes: The startup banner now uses a strict monospace ASCII-art logo, so every environment (container / system shell / SSH) shows the Ccode branding without overlapping or garbled output.Fixed interrupted input: Terminal output scrolling no longer steals keyboard focus, output refreshes are merged, and typing commands is no longer forcibly interrupted.Fixed broken working directory: When the working directory for an AI command is unavailable it falls back automatically with a clear notice; imported APKs and reverse-engineering output directories are directly usable at the same path inside the container.
Parallel sessions: While AI is thinking in session A you can switch to session B and keep chatting — both stream at once without interrupting each other, and switching back to A still shows the complete result.Tool-call display reworked: While AI works, the tool stream expands automatically (tool name, parameters and result status for each step at a glance) and collapses when it finishes; tap any step to see the full input and output, with copy support.Transition animations: Fade-in when switching sessions, message fade-in, folding-arrow rotation.Fixed unstable AI identity after switching persona(it sometimes called itself by the persona character and sometimes Ccode — now it is always consistent). Fixed Agent page switch crashes and container archive extraction misalignment (if installation failed on your device before, please retry). The AI terminal now enters the Ubuntu container by default, with /root as the default working directory.
Fixed container download "archive truncated": integrity is verified immediately after the download completes (byte count + gzip header), and an incomplete download automatically switches mirror and retries. Terminal "Diagnostics" now shows the full text of the latest crash log, one tap to copy. Fixed crashes when switching back and forth between the Agent page and the History page.
Emergency fix release: fixed container install reporting "extraction failed EISDIR" — archive entries like "./" no longer abort extraction when they conflict with an identically named path; together with the built-in extractor in v3.1, devices that could not install before should delete the old environment and download/install again. Fixed the crash/hang when tapping the Agent button (a view-mount bug when switching back and forth between the task page and the history page, plus crash fallback logging). The About page and website now credit the original project LineCodePro (GPL-3.0).
Fixed container install failures: on some devices (vivo and others) the system sandbox rejects hard-link operations, so rootfs extraction now uses the built-in extractor and hard links automatically degrade to copies — devices that could not install before can now install. The system shell now auto-detects root authorization: when su is available commands run as root, and without root it clearly states the permission boundary. The terminal startup banner now shows Ccode. Fixed built-in personas not taking effect on older devices (the catgirl and others kept answering "I am Ccode"). The reverse-engineering workflow now automatically degrades to static dump analysis when IDA is not available in the environment (readelf/objdump/strings cross-referencing), with the workflow steps unchanged. Fixed the input box on the Agent analysis page being completely covered by the keyboard. Switching conversations no longer interrupts AI thinking: generation continues in the background, the matching session in the sidebar shows a spinner, and switching back restores it; merely browsing conversations no longer changes the list order. Fixed crashes on some devices caused by the floating bubble's foreground service timing out.
AI terminal access fully wired up: the shell tool now allows local execution, so AI can run container commands straight from the chat; built-in personas are no longer suppressed by the system prompt. The container is upgraded to Ubuntu 22.04 with apt software installation, the terminal enters the container by default and shows the Ccode welcome banner at startup. The terminal UI is pure black with colored ANSI output (directories highlighted in blue), plus a new settings panel: turn on the SSH remote terminal and adjust font size; long conversations are compressed automatically so things stay stable the longer you chat. Fixed three issues: the input box on the Agent page being covered by the full-screen keyboard, .so extraction failing in APK reverse engineering, and infinite thinking loops on long tasks.
The default workspace has moved to the phone's public Downloads directory: /storage/emulated/0/Download/Ccode, and it is selected by default — files produced by AI are immediately visible in the system file manager. Storage permission is requested on first launch; the same path is mounted inside the container, so AI commands behave the same inside and outside the workspace. Existing users' default workspace migrates there automatically, and self-built projects are unaffected.
Multi-window terminal: the "+" at the top opens a new window, the window bar at the bottom switches on tap, and windows are kept after you back out of the app — re-entering does not lose output. Environment install progress shows live in the terminal and the notification bar, no more waiting on a black box. The AI system prompt now spells out the device's terminal capabilities (Alpine container + shell_execute), so AI actively gets work done with the terminal. Added APK signature verification: repackaged/modified builds are refused at startup. Ccode's default avatar is now the app icon, and the launcher icon composition is scaled down a notch. Workspaces are explicitly local by default; SSH only connects when you actively choose it.
A brand-new app icon: a C-shaped whale, used on the launcher, settings page and notification bar, with support for Android 8+ adaptive icons (no white edges on circular or rounded-square launchers). No functional changes.
Fixed environment setup lock conflicts: tapping install twice, or a previous install process not exiting cleanly, made apk report "Unable to lock database" (exit code 99). Now only one install task runs at a time, leftover apk processes are cleaned up before installing, and on a lock conflict it waits 2 seconds and retries automatically; apk run by AI through the terminal also queues mutually exclusively with manual installs.
Fixed several regressions from v2.4: chat page layout restored; the terminal page now handles the status bar and keyboard itself (the shortcut row sits above the keyboard, output scrolls freely); the container's PATH being overwritten by the host environment, which made apk add report not found, is fixed so environment setup genuinely works; the reverse-engineering persona is restored; fixed false update prompts (the local version number is now read from the installed package info).
Floating bubble: a small bubble stays when the app goes to the background to keep it from being killed (can be turned off); account deletion now uses a 5-second countdown and wipes all data; fixed three avatar bugs (switching persona changed every avatar, avatars not showing on the chat page, crop snapping back); fixed the slash popup coming back to life and missing entries in the tool list; fixed the proot temp directory so the container starts normally.
Built-in personas: catgirl, virtual companion, reverse-engineering analyst; one-tap terminal environment setup (nodejs/python3/git and more, multiple mirrors); AI can call the local terminal; added APK reverse-engineering parsing and the PLAN.md planning tool; fixed the model test popup not closing and user center crashes.
Build pipeline and dependency fixes, crash reports can be copied in full, stability hardening.
Agent analysis reports are now generated by the model you configured (GitHub repository / web page parsing / multi-agent collaboration); when no model is configured it falls back to a rule-based summary and says so.
Task logs pushed over SSE in real time, on screen within a second; multi-agent execution chain timeline visualization; hardened authorization checks on the SSE endpoint.
Smart GitHub analysis, in-depth web page parsing, multi-agent collaboration; backend task queue and streaming logs.
Multi-model support, agent tool loop, phone control, dynamic context compression, multi-persona system, MCP/Skills extensions, custom themes.
Background thinking, multi-select message export, SSH remote workspace, in-app browser, key stripping on exported archives.