Repository navigation
v0.9.26
Patch release fixing the binary-publish path that v0.9.25 stalled on, plus a release-workflow consolidation. Code surface for the runtime is identical to v0.9.25 plus Windows tiny_c portability fixes, standalone Linux release assets, and a Docker image rework.
CI / build changes (since v0.9.25)
Workflow consolidation
The release workflow's build jobs were collapsed into one job per platform so common Rust dependencies are compiled once per OS instead of once per binary:
build-linux(ubuntu-22.04): one cargo invocation builds praxis_node + praxis_cli + praxis_service; make builds tiny_c.build-macos(macos-26): one cargo invocation builds praxis_node + praxis_cli; make builds tiny_c.build-windows(windows-latest): one cargo invocation builds praxis_node + praxis_cli; msys2 make builds tiny_c.release(depends on the three platforms in parallel): downloads artifacts and repackages the standalone binaries into the Linux server tarball — no extra cargo build needed.
Net effect: each platform shares its cargo dep cache; the longest path is the slowest single platform build instead of (slowest matrix) + build-server.
Windows tiny_c portability
Verified locally with make windows against x86_64-w64-mingw32-gcc 16.1.0 — clean build, zero warnings, ~229 KB binary.
setsockoptcasts:conn.candamqp.ccast&oneto(const char *)because Winsock's argument 4 isconst char *, not POSIX'sconst void *.strndupshim: MinGW's msvcrt-based libc does not shipstrndup;tiny.hnow provides a portable inline implementation, with<string.h>and<stdlib.h>added to the Windows include block.- Zero-init
struct tminmain.candutil.cso the snprintf path is well-defined even ifgmtime()returns NULL. STARTUPINFOAinitializer:praxis.cswitches to{0}; si.cb = sizeof(si);to silence MinGW's-Wmissing-field-initializers.- BearSSL
-Wno-unknown-pragmas: the Makefile passes the flag to the vendored BearSSL build so MinGW does not warn on the MSVC-only#pragma comment(lib, ...)insysrng.c.
Standalone Linux release assets
build-linuxnow uploadspraxis_cli-linux-x86_64andpraxis_service-linux-x86_64as standalone release assets alongside the existing tarball.install.shLinux CLI install switches to the standalone download — no more extracting from the server tarball just to get the CLI.
Docker rework
-
Dockerfiledrops the cargo-chef multi-stage build. Image is nowdebian:bookworm-slim; binaries are downloaded from the GitHub release tarball at build time. New build args:PRAXIS_VERSION(default0.9.26)PRAXIS_RELEASE_BASE(default GitHub releases URL — override for forks/mirrors)
Net effect: Docker builds become much faster and smaller — no Rust/mingw toolchains in the image build.
-
docker-compose.ymldropsSKIP_NODE_BUILDandCARGO_PROFILEbuild args, replaces withPRAXIS_VERSION. -
docs/src/reference/config.mdenv-var table updated to match.
Highlights (carried over from v0.9.24/v0.9.25)
- Pure-C minimal node (
node/tiny_c): ~46 KB stripped on Linux, ~229 KB on Windows (with statically-linked BearSSL TLS), libc-only at runtime. - TUI visual overhaul: opencode-inspired aesthetic (single heavy-bar panels, layered tints, in-place tool entries).
- Stateless orchestrator: service no longer holds session state; the TUI persists each turn under
~/.praxis/sessions/and resumes via--continue/--resume. ~/.praxis/consolidated layout for the operations DB and bridge CA files.- Web UI dropped from the default build.
- macOS prebuilt binaries are arm64-only (Apple Silicon).
Breaking changes (carried over from v0.9.24)
- Service no longer exposes
session/listorsession/load; orchestrator history is client-side only. ~/.praxis_*dotfiles moved under~/.praxis/. No automatic migration.- Default
cargo builddoes not buildpraxis_web. Build it explicitly withcargo build -p praxis_web. - TUI orchestrator is single-session per process. Use
--continue/--resumeto reopen prior conversations. - Node type field renamed from
nativetofull. - macOS prebuilt binaries are arm64-only.
- Docker build args
SKIP_NODE_BUILDandCARGO_PROFILEremoved (replaced byPRAXIS_VERSION+PRAXIS_RELEASE_BASE).
Full Changelog: v0.9.23...v0.9.26