Skip to content

CodeAssist 3.9.4

Choose a tag to compare

@tyron12233 tyron12233 released this 10 Aug 15:46
· 164 commits to main since this release

馃殌 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 reported No ... provided. A theme value declared in a top-level val was 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 Density extension 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/Dp boxing at reflective call boundaries, extension-property overloads, isEmpty/isBlank, Double arguments passed to Float parameters, PascalCase companion 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 View or Button subclass, 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.setText came 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 findViewById and friends never appeared inside an Activity. They do now.
  • A lot of other names were missing too: for and for-each loop variables, catch parameters, try-with-resources variables, lambda parameters, instanceof and switch pattern 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 the Type.class literal.

EDITOR

  • Asset files are no longer reported as broken Java. A file under res/raw (or a stray .txt/.json/.csv/.properties in 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 under res/raw keeps 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