All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
First alpha of the Rust Morphir CLI with run-time extensions. The previous alpha, 0.4.0-alpha.5, only moved the release pipeline to the Rust binary.
- Extensions:
morphir extensionmanages Morphir Extension Protocol (MEP) providers.install,update,uninstall,list, andsearchacquire verified process and WASM extensions from configured repositories with SHA-256 content verification, exact lock files, and offline activation (#729, #765, #770) - Extension repositories:
morphir extension repositoryadds, lists, enables, disables, inspects, verifies, and removes repositories, andinitpluspublishauthor a local repository from a release bundle (#765, #770) - WASM backends:
morphir generateroutes to installed WASM backends. Apache Avro (avro), OpenAPI (openapi), and JSON Schema (json-schema) targets are served by themorphir-avroandmorphir-openapiextensions released from finos/morphir-rust. Backend options come from[codegen.<target>]inmorphir.tomland repeatable--option KEY=VALUEflags (#745, #766) - Compile providers:
morphir compilecompiles Elm through an installed Morphir Elm or Morphir Scala process extension, selectable with--provider(#726, #733, #736) - Gleam: the Gleam backend ships as a built-in provider
- Migrate:
morphir migrateconverts Morphir IR between format versions, with YAML as the primary output format (#720, #732) - Knowledge base:
morphir kbchecks, scaffolds, indexes, syncs, and renders Open Knowledge Format bundles (#722) - Desktop:
morphir desktopacquires, installs, and launches verified Morphir Desktop packages, including unsigned local packages, with correlated launch logs (#741, #746, #773, #777, #779, #782, #784) - Playground:
morphir playgroundserves the vendored Playground client over the Morphir Playground protocol and reuses one extension session across invocations (#778, #783) - Web workbench:
morphir uiserves the connected web workbench with workspace navigation and the Insight and XRay views (#756, #757, #790) - Cache:
morphir cache statusandmorphir cache cleaninspect and prune the content-addressed store (#753) - Home:
MORPHIR_HOMErelocates the Morphir home directory (#712) - Config: secret values can come from commands and the system keyring (#710)
- Out directory: every task writes under
.morphir/outand records a task result;-oinstalls the declared outputs into the requested directory (#789)
- Breaking: compile and generate always write under the workspace out root (
<workspace>/.morphir/out/<module>/<task>.dest) and write a<task>.jsonresult record.-onow installs the task's declared outputs to the given directory after the run instead of redirecting the task; on the single-file Elm compile path,-oused to take a file path and write the IR there directly, and now takes a directory like every other command.--out-dirandMORPHIR_OUT_DIRrelocate the root. Config:[workspace].output_diris now[workspace].out_dir(default.morphir/out),[project].output_directoryis removed,[ir].modeis replaced by[ir].layoutand[ir].format(ir.modestill works for one release as a deprecated alias, with a warning). Generate reads compile output through the record, so[ir]YAML and document-tree storage now flow through to backends, andgenerate -ialso accepts a compile-output directory in addition to an IR file or a document-tree directory. The single-file Elm compile path still always writes classic v3 JSON regardless of[ir]; it now warns when a given--config's[ir].layoutor[ir].formatasks for something else, since those settings do not apply to it.output_pathin a command's JSON result is the task's canonical.destdirectory for every command, not an artifact file inside it. (#789) - Morphir IR v4 name canonicalization and initialism encoding follow the accepted conformance corpus (#744)
- The v3 and later
formatVersioncontract is defined and enforced (#738) - The CLI reference under
docs/cliis generated from the CLI usage spec and checked in CI (#714)
- Installed extensions no longer fail at initialize when the display name in the repository record differs from the name the guest reports.
extension repository publishderived "Morphir Openapi" from the identifier while the guest reports "Morphir OpenAPI", so every published OpenAPI bundle failed with "initialization metadata disagreed with discovery". A release bundle may now declare itsnameinrelease.json
morphir-liveis retired. The web workbench inmorphir uireplaces it (#739, #740)
- Release workflow builds the CLI for six targets and uploads only assets whose checksum changed (#703, #704)
- CI builds the Morphir Elm and Morphir Scala process extensions and runs the installed-extension integration tests against them; it now also builds the Avro and OpenAPI WASM guests and runs the WASM backend tests (#754)
- The release pipeline now packages the Rust
morphirCLI for Linux, macOS, and Windows on x86_64 and aarch64 (#703, #704)
0.4.0-alpha.4 - 2026-01-13
- CLI Logging Integration: Structured logging now available throughout CLI (#555)
- Global logging flags:
--log-level,-v/--verbose,-q/--quiet,--log-file - Log level resolution: CLI flags > Environment variables > Config file > Defaults
GetLogger()function for commands to access configured loggervalidatecommand updated as reference implementation
- Global logging flags:
- Pipeline Logging Support: Logger propagation through pipeline execution (#555)
- Added
Loggerfield topipeline.Context WithLogger()method for immutable logger propagation- Default noop logger when not configured
- Added
- Upgraded charmbracelet/lipgloss to v2.0.0-beta.3 (#556)
- Updated all imports to
github.com/charmbracelet/lipgloss/v2 - Using
compat.AdaptiveColorfor backward-compatible adaptive colors - Theme colors now use
lipgloss.Color()withcolor.Colorinterface
- Updated all imports to
- Updated all internal module dependencies to v0.4.0-alpha.3
- Enhanced release validation with module consistency checks (#554)
- Validates all modules have corresponding
go mod tidyentries in.goreleaser.yaml - Checks that hook scripts referenced in
.goreleaser.yamlexist
- Validates all modules have corresponding
- Added new Go module checklist documentation in DEVELOPING.md (#554)
- Workspace setup now resilient to unpublished module versions
go work syncfailures no longer block workspace setup- Enables CI to work with release PRs that bump cross-module versions
- External consumption test now handles cross-module release changes
- Detects release branches and allows expected cross-module dependency failures
- Provides clear messaging when code uses unreleased internal module features
0.4.0-alpha.3 - 2026-01-13
- Structured Logging: New
pkg/loggingmodule with zerolog wrapper (#549)- Logger type with functional options pattern (
WithLevel,WithFormat,WithFile) - Multi-writer support for simultaneous stderr and file logging
- Configurable log levels (trace, debug, info, warn, error, fatal, disabled)
- Text format (colored, human-readable) and JSON format for log aggregation
- Log files written to
.morphir/logs/directory Noop()logger for testing and disabled logging scenarios
- Logger type with functional options pattern (
- Removed
-vshort flag from--versioncommand (reserved for future--verboseflag) - Use
morphir --versionormorphir versionfor version information
- Migrated mise tasks to TypeScript/Python with pinned tool versions (#548)
- Tasks now use Bun for TypeScript execution
- Improved cross-platform compatibility
- Better error handling and output formatting
- Updated charmbracelet/lipgloss dependency to v2 (#546, #547)
0.4.0-alpha.2 - 2026-01-13
- Decoration System: New decoration infrastructure for metadata enrichment
morphir decorateCLI command for applying decorations- Type registry for decoration types with validation
- BDD tests for decoration workflows
- Toolchain Integration Phase 2: Major expansion of toolchain adapters
- Go Toolchain Adapter: Complete Go code generation support (#529)
morphir golang makecommand to generate Go modules from IRmorphir golang buildcommand for full IR→Go pipeline- IR to Go module/workspace generator (#515)
- Comprehensive tests and fixtures (#524)
- WIT Toolchain Adapter: WebAssembly Interface Types Phase 2 (#526)
- morphir-elm Integration: NPX backend for morphir-elm tooling (#530)
- Integration tests validating morphir-elm interoperability (#534)
- Toolchain Enablement Design: Framework for toolchain discovery and enablement (#538)
- Go Toolchain Adapter: Complete Go code generation support (#529)
- Workflow Planning System: New workflow orchestration capabilities (#533)
- Workflow plans with dependency resolution
- Workspace doctor command for environment validation (#531)
- Website Improvements:
- Upgrade Docusaurus from 2.4.3 to 3.9.2 (#523)
- Contributing companies panel (#514)
- Restructured documentation hierarchy for newcomers (#379)
- Decorations CI issues (#541)
- Docusaurus config for morphir.finos.org deployment (#517)
- Updated lipgloss dependency to v2 (#512)
- Updated npm to v19 (#444)
- Updated TypeScript to ~5.9.0 (#525)
- Updated doublestar to v4.9.2 (#490)
- Added golangci-lint to mise tools
- Comprehensive documentation improvements and tooling (#527)
- Security dependency updates for website
0.4.0-alpha.1 - 2026-01-08
- WIT Pipeline (CLI Preview): WebAssembly Interface Types support for Morphir
morphir wit makecommand to compile WIT files to Morphir IRmorphir wit gencommand to generate WIT from Morphir IRmorphir wit buildcommand for full WIT→IR→WIT pipeline- JSONL batch processing mode for streaming/CI workflows (
--jsonlflag) - Type mapping infrastructure with diagnostics for lossy transformations
- WIT parser adapter and emitter with round-trip support
- BDD tests with scenario outlines for comprehensive coverage
- Virtual File System (VFS): New
pkg/vfsmodule for filesystem abstraction- Core VFS implementation with virtual paths (
VPath) - Traversal helpers for entry tree manipulation
- Shadowing support for overlaying file systems
- Sandbox policy hooks for write operations
- Path manipulation helpers
- Core VFS implementation with virtual paths (
- Task Execution Engine: New
pkg/taskmodule for build orchestration- Task/target execution with dependency tracking
- Pipeline integration for task configuration
morphir task listcommand to display configured tasks
- Pipeline Enhancements: Major improvements to
pkg/pipeline- Core pipeline types and composition framework
- Validation step with improved diagnostics
- Comprehensive unit tests for composition and error handling
- Document Processing: New
pkg/docling-docmodule- Functional document processing with efficient builder pattern
- BDD tests integrated into release process
- Jupyter Notebook Support: New
pkg/nbformatmodule- Support for reading and processing
.ipynbfiles
- Support for reading and processing
- IR Visitor Framework: New visitor pattern for Morphir IR
- Type and Pattern traversal helpers
- Extensible visitor infrastructure
- Type Mapping Infrastructure: New
pkg/bindings/typemapmodule- Registry for bidirectional type mappings
- Support for multiple binding targets (WIT, Protocol Buffers, etc.)
- Migrated task runner from Justfile to
misetasks across scripts, docs, and CI - Removed outdated morphir-elm subtree and related Elm code
- Upgraded Docusaurus from 2.0.0-beta.15 to stable 2.4.3
- Updated lipgloss dependency to v2
- Added CLI Preview documentation for v0.4.0-alpha.1
- Improved code coverage documentation and module tracking
- Added module and package documentation for
pkg/models
- Comprehensive code coverage and test reporting in CI/CD
- Node.js 24 configured for Docusaurus website builds
- Updated GitHub Actions (checkout v6, artifact actions, create-issue-from-file v6)
- Security dependency updates for website
0.3.3 - 2026-01-05
morphir aboutcommand: Display version, platform information, and embedded changelog- Shows version, git commit, build date, Go version, and platform details
--changelogflag displays full embedded CHANGELOG.md with colorful markdown rendering by default--no-colorflag andNO_COLORenvironment variable support for plain text output--jsonflag for programmatic access to version information- Embedded CHANGELOG synced automatically during build process
- Glamour-powered markdown rendering with automatic dark/light theme detection
- Install script enhancements: Support for installing specific versions
install.sh <version>andinstall.ps1 <version>now accept version argument- Still defaults to latest release if no version specified
- Downloads pre-built binaries from GitHub releases (no Go required)
- Release script CI wait logic: Improved automation and reliability
- Now actively polls and waits for CI to complete (10 minute timeout)
- Shows progress indicators during wait
- Prevents releases when CI is still running or failed
- Reduces manual intervention needed for releases
- Build process: CHANGELOG.md now automatically synced to cmd directory
- Added
sync-changelogmise task with dependency tracking - GoReleaser hooks updated to include changelog sync
.gitignoreupdated to exclude generatedcmd/morphir/cmd/CHANGELOG.md
- Added
0.3.2 - 2026-01-05
- CRITICAL: Remove replace directives from source code for go install compatibility
- Removed all
replacedirectives from cmd/morphir/go.mod - Removed all
replacedirectives from pkg/tooling/go.mod - Removed all
replacedirectives from tests/bdd/go.mod go install github.com/finos/morphir/cmd/morphir@v0.3.2now works correctly
- Removed all
- Documented workflow trigger limitations for re-pushed tags
- morphir-developer skill: Comprehensive development workflow assistant
- go.work management and verification
- Branch/worktree setup with issue tracking
- Pre-commit checks and best practices
- Integration with beads and GitHub issues
- TDD/BDD workflow guidance
- Release automation script:
scripts/release.shfor automated releases- Complete pre-flight checks
- Automated tag creation and pushing
- Workflow triggering and monitoring
- Post-release verification
- go install compatibility testing
- Workspace setup scripts: Dynamic go.work configuration
scripts/setup-workspace.shfor Linux/macOSscripts/setup-workspace.ps1for Windows- Automatically discovers all Go modules
- Used by CI and local development
- CI enhancements: go.work setup for all build/test jobs
- All CI jobs now use go.work for local module resolution
- External consumption test for release PRs
- Verifies module versions are correct before release
- Development workflow: Use
go workfor local development instead of replace directives - Release process: Source code in tags no longer contains replace directives
- Release process: Automated with
scripts/release.shfor consistency - CI workflow: All jobs now set up go.work automatically
- Ensures consistent behavior between local dev and CI
- Release PRs get additional external consumption test
0.3.1 - 2026-01-05
- Complete module version references for all internal dependencies
- Updated pkg/tooling/go.mod to reference v0.3.0 for pkg/config and pkg/models
- Updated tests/bdd/go.mod to reference v0.3.0 for pkg/models
- Fixed release workflow to handle existing tags with
-fflag
- Release workflow now supports manual re-triggering for failed releases
0.3.0 - 2026-01-04
- Interactive TUI Framework: Full-featured terminal UI with vim-style navigation
- Modern terminal interface using Bubbletea and Lipgloss
- Vim-style keybindings (h/j/k/l navigation, gg/G, Ctrl+d/u)
- Three-panel layout: sidebar, content viewer, and status bar
- Markdown rendering support with syntax highlighting
- Collapsible sections and tree navigation
- Demo application showcasing TUI capabilities
- Markdown Rendering: Rich markdown support in terminal
- Headings, lists, code blocks with syntax highlighting
- Links, emphasis (bold, italic), blockquotes
- Horizontal rules and inline code
- Configurable color themes
- Enhanced Validation: Improved
morphir validatecommand- Better error reporting and diagnostics
- JSON output support for programmatic use
- Validation of Morphir IR structure
- Layered Configuration System: Complete configuration management with multiple sources
- TOML file support (
morphir.toml,.morphir/morphir.toml) - XDG-compliant path resolution for global config (
~/.config/morphir/) - System-wide configuration (
/etc/morphir/morphir.toml) - User override file (
.morphir/morphir.user.toml, gitignored) - Environment variable overrides with
MORPHIR_*prefix - Priority-based merging (env > user > project > global > system > defaults)
- TOML file support (
- Workspace Management: Discovery and initialization of Morphir workspaces
morphir workspace initcommand with--hiddenand--nameflags- Automatic workspace discovery walking up directory tree
- Standard directory structure (
.morphir/out/,.morphir/cache/)
- Configuration CLI Commands:
morphir config show- Display resolved configurationmorphir config path- Show configuration file locations and status--jsonflag on all commands for programmatic access
- Schema Validation: Configuration validation with errors and warnings
- Validates log levels, formats, paths, numeric ranges
- Distinguishes fatal errors from non-fatal warnings
- New Packages:
pkg/config- Public configuration API with immutable typespkg/tooling/workspace- Workspace discovery and initializationpkg/tooling/markdown- Markdown rendering for terminal outputcmd/morphir/internal/tui- Reusable TUI framework components
- Documentation:
- Comprehensive configuration guide (
docs/configuration.md) - TUI framework documentation and examples
- Package documentation (
doc.gofiles) - Example configurations (
examples/morphir.toml,examples/morphir.minimal.toml) - Updated README with Configuration section
- New DEVELOPING.md and INSTALLING.md guides
- Comprehensive configuration guide (
- Release Infrastructure:
- GoReleaser configuration for automated releases
- GitHub Actions CI workflow for format, lint, test, and build checks
- GitHub Actions release workflow for automated releases on tags
- Release preparation scripts with multi-module tagging support
go installsupport with proper module structure
- Development Tools:
- Installation scripts for Linux/macOS and Windows (PowerShell)
- Development setup scripts
- Changelog suggestion script
- Enhanced Justfile with new development targets
morphir workspace initnow fully functional (was stubbed)- Migrated morphir-go codebase into main morphir repository
- Updated module paths from
github.com/finos/morphir-gotogithub.com/finos/morphir - Enhanced build system with workspace-based development support
- Improved CLI architecture for better extensibility
- Module path resolution for
go installcompatibility - Replace directives handling in multi-module workspace
0.1.0 - 2026-01-01
- Initial Go monorepo structure with
go.workworkspace - CLI application built with Cobra and Bubbletea
- Root command that launches interactive TUI
workspace initcommand (stubbed implementation)validatecommand for validating Morphir IR (stubbed implementation)- Library modules:
models,tooling,sdk,pipeline - Build orchestration with Justfile
- Cross-platform scripts directory with bash and PowerShell versions
- OS detection infrastructure for Windows, Linux, macOS support
- Development build targets (
build-dev,install-dev) - CI check script for running all validation tasks
- AGENTS.md with development guidelines and project principles
- CLI development guidelines for stdout/stderr separation and JSON output support
- Functional programming principles and TDD/BDD practices documentation
- Updated to Go 1.25.5
- Refactored Justfile with proper OS detection and readable formatting
- Improved command registration consistency
- Duplicate help command registration in CLI