Releases: Codeplain-ai/codeplain
v0.2.14
Hello everyone, codeplain v0.2.14 is out!
This release focuses on improvements to our code generation pipeline, user experience, and several TUI enhancements. Here's what's new:
- Unit test generation - Unit tests are now generated more consistently improving the production readiness of the code generation
- Memory file handling - Fixed a bug when deleting unresolved memory files, which also makes the conformance testing phase a bit faster.
- TUI enhancements - The functional requirement index is now displayed in the TUI, along with more detailed information about what the conformance testing phase is doing for each individual module.
- Config file resolution - Improved how config files are resolved during rendering. Previously, only the config file at the root location was used; now the config file at the destination of the *.plain file is also taken into account.
- tiktoken fix - Several users reported that tiktoken was preventing them from running the code generation process. This has been resolved.
v0.2.12
Windows Support (Beta)
We're excited to announce beta support for Windows! You can now install via PowerShell:
powershell
https://codeplain.ai/install.ps1 | iex
Windows support is currently in beta. We welcome all feedback as we continue to improve the experience.
Known Limitations (Windows)
Testing scripts are still in progress
The onboarding process for Windows users is not yet finalized
We recommend skipping plainlang-examples for now
Getting Started on Windows
To get started, we've set up a dedicated example repository where you can explore codeplain by building a Java Spring Boot server for a messaging service called Airplain:
Other Changes
- Improved handling of conformance testing memories
- Minor code generation enhancements
v0.2.10
Overview
This release focuses on improving the Terminal User Interface (TUI) experience with smarter navigation, better visual feedback, and enhanced text selection capabilities.
Exit Flow & Navigation:
- Refactored TUI exit keybinding: use Ctrl+D instead of double Ctrl+C for a cleaner exit experience
- Added Enter key support to exit TUI after render completes
Selection & Copy:
- Added mark & copy support
- Fixed the log expand/collapse feature conflicting with text selection
Installation & Setup
- Improved installation flow and messaging
Testing & Environment:
- Fixed preparation environment script handling
- Display dist/ folder location in TUI after successful render
Dependencies
- Upgraded Textual library to v7.5.0 for better TUI performance and features
Introduce ***plain Modules
Overview
We’re introducing support for reusable modules in ***plain.
What’s new
You can now include modules in a ***plain spec using Markdown frontmatter.
Example (hello world React):
---
import:
- typescript-react-app-template
requires:
- typescript-react-app-boilerplate
---
***functional specs***
- Display "hello, world"
- import includes all ***plain primitives except functional specs
- requires can include all primitives
Rendering order
When this spec is rendered:
1. typescript-react-app-boilerplate is resolved and rendered as a dependency.
2. The functional spec (Display "hello, world") is rendered afterwards.
Dedicated Environment-Preparation Script for Conformance Tests
Overview
Conformance tests often spend a lot of their runtime on environment setup rather than actual execution. Previously, each functional requirement ran its conformance test in a fully isolated environment, requiring the setup process to repeat for every test.
What's new
This release introduces support for an optional environment-preparation script that runs once before all conformance tests. The prepared environment is then reused across tests, dramatically reducing redundant setup work and lowering overall test time—while still keeping each conformance test fully end-to-end.
Example use cases
- Compiling the project only when sources have changed (for compiled languages)
- Rebuilding Docker images only when necessary (for Docker-based workflows)
If no preparation script is provided, existing behavior remains unchanged.
Concept rules in ***plain
⚠️ Breaking Change
This update is not backward compatible.
- Pull the latest code from https://github.com/Codeplain-ai/plain2code_client
- Update any existing ***plain specs to align with the new concept formatting rules
- If you need assistance migrating your specs, contact us at support@codeplain.ai
Concept Rules in ***plain
To improve the consistency and clarity of specifications used for code generation, we introduce concept-based definitions with strict formatting rules.
Each definition introduces a single concept, written as:
- :ConceptName: <explanation of the concept>
Concept naming rules
Each concept name must be enclosed in colons (:) at both the beginning and end.
Valid characters for concept name include: Plus sign (+), Minus sign (-), Dot sign (.), Digits (0-9), Uppercase letters (A-Z), Underscore (_), Lowercase letters (a-z).
Examples: :App:, :Tasks:, :ListOfUsers:, :CLI:.
Definition rules
- Each definition must start with the concept name being defined.
- Every concept name must be globally unique.
- Concepts referenced in Functional Requirements, Non-Functional Requirements, Test Requirements, or Acceptance Tests must appear in the Definitions section first.
Migration to *codeplain API keys authentication
*codeplain API keys
This release is introducing migration to internal *codeplain API keys.
The previous CLAUDE_API_KEY authentication method is no longer supported.
To obtain your new API keys, please contact our support team at support@codeplain.ai.
Other changes
- Fixed a bug related to parsing plain source templates.
Improved Templating & Isolated Test Environments
Enhanced templating support
Templating is now more flexible and intuitive.
Before:
- Firstly, ...
{% include "some-template.plain" %}
This required indentation to be managed inside the included file.
Now:
- Firstly, ...
- Secondly, {% include "some-template.plain.plain" %}
Templates can now be included inline or indented naturally within the document — indentation is handled automatically, making templates easier to compose and maintain.
Isolated Test Execution
Test scripts for major languages now execute in isolated environments, ensuring clean runs and consistent results.
Supported languages:
- Python
- Golang
- Node.js
This enhancement improves reproducibility and prevents side effects across tests.
Other improvements
- General improvements and bug fixes
- Enhanced observability and logging
Minor Improvements and Bufixes
This release includes bug fixes and minor improvements.
Destination folder for source and conformance test code
With Plain-Git integration for source and conformance test code set in place, we're introducing the ability to utilize and commit the generated code in the existing repositories.
Destination folder for the generated code
You can copy the source code to source code destination folder
Through the plain2code CLI, you can now set --copy-build (bool) argument, telling if you want to copy the source code into destination folder after a successful rendering. By default, this code is copied into dist/ folder, but you can manage this through --build-dest CLI parameter.
You can copy the conformance tests to source code destination folder
Through the plain2code CLI, you can now set --copy-conformance-tests (bool) argument, telling if you want to copy the conformance test code into conformance test destination folder after a successful rendering. By default, this code is copied into dist_conformance_tests/, but you can manage this through --conformance-tests-dest CLI parameter.
Other Changes
- Raising threshold for max conformance test runs to
20, ensuring smoother code generation - Minor bugfixes