CodeAssist 3.9.4
馃殌 CodeAssist 3.9.4
COMPOSE PREVIEW
- Custom-theme previews render again. An app with its own theme (Jetsnack-style
JetsnackTheme.colors) drew a grey or blank surface in the isolated preview process and reportedNo ... provided. A theme value declared in a top-levelvalwas being re-created mid-render, so what the theme provided no longer matched what a composable read back. - First preview on a large project is much faster. Opening a preview used to lower every function in every file it touched. It now pulls only what the preview actually reaches: on a large sample the preparation step went from about 3.5s to under half a second.
- Previews stay fast after a restart. Lowered code is cached on disk per module, so reopening a project decodes it instead of resolving everything again. A file that took 1.4s cold now loads in about 20ms.
- One broken composable no longer blanks the whole preview. A nested composable that throws is contained and reported in place, so the rest of the preview still draws.
- Gradients and other extension-property code resolve. A file-level extension property read inside a receiver scope (a
Densityextension used by a gradient) silently failed, which collapsed the gradient to zero width and drew nothing. - More interpreter fixes found by sweeping a real app's previews: value classes handed to theme providers and returned from lambdas,
Color/Dpboxing at reflective call boundaries, extension-property overloads,isEmpty/isBlank,Doublearguments passed toFloatparameters,PascalCasecompanion factories, SAM constructors, scopes, and default-argument helpers that release builds leave non-public. Dispatch failures now explain themselves instead of failing silently.
JAVA EDITOR
- Member completion no longer hides what you are typing. On a wide receiver such as an Android
VieworButtonsubclass, the popup was capped at 200 entries and then filtered without asking for more, so a member below the cap could never be reached by typing.button.setTextcame up empty. It now refetches as you narrow the prefix. - Inherited members are offered. Bare-name completion inside a subclass did not suggest anything it inherited, so
findViewByIdand friends never appeared inside anActivity. They do now. - A lot of other names were missing too:
forand for-each loop variables,catchparameters, try-with-resources variables, lambda parameters,instanceofandswitchpattern variables, type parameters, and static imports. All of them complete now. - Fewer duplicate rows. An inherited method that a subclass overrides was listed once per level of the class hierarchy; now only the one you would actually call is shown.
- All overloads are shown.
print(int),print(String)and the rest were collapsed into a single row, hiding the signature you wanted. - Completion respects context better: a supertype's inaccessible members stay hidden, and a static method only offers static members.
- New: annotation attribute names inside
@Anno(...), and theType.classliteral.
EDITOR
- Asset files are no longer reported as broken Java. A file under
res/raw(or a stray.txt/.json/.csv/.propertiesin a source folder) was parsed as Java, so its entire contents came back underlined as syntax and unknown-symbol errors. Those files now open as plain text with no diagnostics. XML underres/rawkeeps its well-formedness check but is no longer treated as an Android resource.
AI AGENT
- Model Context Protocol support. The agent can now talk to MCP servers over stdio, so external MCP tools are available to it. (Community contribution, #1482)
Full changelog: https://github.com/tyron12233/CodeAssist/releases/tag/v3.9.4