Skip to content

CodeAssist 3.10.0

Latest

Choose a tag to compare

@tyron12233 tyron12233 released this 30 Aug 21:27
· 1 commit to main since this release

🚀 CodeAssist 3.10.0

A project you build here can now leave as a real Gradle project, Kotlin compiles in its own process instead of fighting the editor for memory, and the dependency, sharing and module screens have been rebuilt.

EXPORT AS A GRADLE PROJECT

  • Your project can now leave as a Gradle build. Export it and you get a .zip holding your sources plus generated settings.gradle.kts, a build.gradle.kts per module, gradle.properties and the Gradle wrapper settings. Open it in Android Studio or run gradle build on it.
  • It is on the export screen as a Format choice, next to the CodeAssist package you already had.
  • What you configured comes with it: modules and how they depend on each other, every dependency (including BOMs, exclusions, and debug-only entries), namespace, SDK levels, version code and name, manifest placeholders, build types, flavors, build features and packaging rules.
  • Compose, parcelize and serialization are switched on for you in the exported build, even though CodeAssist itself never needed a flag for them.
  • A Java or Kotlin module with a main gets the application plugin wired up, so gradle run works.
  • Anything Gradle cannot express is listed rather than quietly dropped: a signing keystore (it lives in the app, not the project), the annotation processors CodeAssist bundles, and any library with no Maven coordinate. You get the list on screen and as GRADLE-EXPORT.md inside the archive.

BUILD

  • Kotlin compiles in its own process now. Android caps every app's memory no matter how much RAM the phone has, and compilation was sharing that cap with the editor and index. A compiler process starts once, keeps its state warm, and runs with a much larger heap: after the first compile of a session, later ones land in around 150 to 200ms, faster than before and without starving the editor.
  • Settings ▸ Build Runtime carries the controls: Kotlin compiler execution (Compiler VM or In-process), the heap it may use, and how many run at once. Anything that goes wrong falls back to compiling in-process rather than failing your build.
  • Shrinking with R8 no longer trips over a missing class from its own toolchain.

DEPENDENCIES

  • Add Dependency is search-first. The five rows of chips and fields above the results are gone: it is a search box, one options line, then results. No more choosing Library or Platform before you can type. A BOM is recognised on its own and labelled where it appears.
  • Results are two lines now, artifact and version first with the group underneath, so a dozen same-named artifacts are actually distinguishable.
  • With an empty box you get the menu: the quick adds, plus Module and Local file.
  • Scope and variant read as one line ("implementation, All variants") and expand to a wrapped set of chips, so nothing hides behind a horizontal swipe.
  • The version-conflicts banner no longer opens itself on a project that resolves and builds perfectly well.
  • Adding a repository actually works now. Adding one and re-adding the dependency it carries did nothing at all: the failed lookup was remembered by coordinate, with no memory of which repositories produced it, so nothing went back to the network for the rest of the session. Adding, removing or reordering repositories now re-probes what did not resolve.

PROJECTS

  • One Import project action covering both a project folder and a .caproj package.
  • A CodeAssist project folder can be imported. It could not before: a folder moved from another device, restored from a backup, or orphaned when app data went missing was rejected as "not an importable Gradle project" and there was no way to get it back into the picker.
  • The folder is picked first and inspected, so the compatibility-or-convert question only shows for a Gradle build, where it means something.
  • Export and import were rebuilt on Material 3, with the action pinned at the bottom instead of hidden below the form.
  • An import preview now describes the project by its modules (app, Android app, 84 files, 3.0 MB) instead of a wall of file paths, with the full list one tap away.
  • You can name a project as you import it, and see the folder it will land in. Importing the same package twice used to silently produce "Foo 2".
  • Export lets you leave modules out, and keeps the selection buildable by taking dependants with them.

ANDROID

  • The API levels are current: 21 through 36 (Android 16), and new projects target the newest by default. Everything sat at 34, which was not just cosmetic: a modern AndroidX library declares the compile level it needs and the build failed below it, so ordinary dependencies could not be used out of the box.
  • minSdk now defaults to 26, matching what the templates already documented.
  • manifestPlaceholders are supported, in the module settings and read from a Gradle import. A library whose manifest requires one (billing clients commonly do) merges instead of failing at packaging.
  • The build warns when the installed platform it resolved is older than your compileSdk, instead of failing later on a missing symbol.

COMPOSE PREVIEW

  • A preview running out of process now reports partially rendered the same way the in-process one does, instead of claiming everything was fine.
  • The preview sandbox is enforced out of process. Since isolated previews became the default, the sandbox settings were being applied only on the fallback path, and blocked calls are now reported in the usual chip.
  • A stock Material 3 Type.kt using Google Fonts rendered as "Can't instantiate abstract class FontFamily". Both defects behind it are fixed: a function that shares a name with a type is now called rather than constructed, and a font implementation reaching Compose from the interpreter answers for the methods its abstract parent left unimplemented.

EDITOR AND UI

  • Module settings moved to Material 3, with a save bar that appears when you change something. Editing a field like namespace or minSdk previously left the form looking untouched.
  • The Icon Manager scrolls smoothly. Artwork was resolved one icon at a time through the same single worker the editor uses for completion, so a typed keystroke could cancel it and leave tiles permanently blank, and every visible icon's paths were re-parsed on every frame.
  • Apostrophes render as apostrophes. 47 strings showed a stray backslash.

RUN

  • Console runs ship coroutines 1.11.0, so runBlocking works, and a version mismatch explains itself instead of failing with an unrelated error.
  • A background thread that throws in your program no longer takes the whole build process down with it.

Full changelog: https://github.com/tyron12233/CodeAssist/releases/tag/v3.10.0