Repository navigation
v0.7.0: Zensical Docs, Engine Hardening, and Astro Expansion
·
684 commits
to main
since this release
Summary
This release introduces a massive architectural shift to Protostar's documentation pipeline, moving deep-dives to a dedicated ReadTheDocs deployment. Under the hood, the core execution engine gets heavily hardened with task-level subprocess timeouts, bulletproof SIGINT handling, and strict tooling boundaries. For the computational crowd, the Astro preset gets a serious "batteries-included" upgrade.
New Official Documentation
Head over to the Official Documentation for:
- Command Reference: Full flags and capabilities for
initandgenerate. - Domain Presets: Matrices for Scientific, Astrophysics, ML, DSP, and Embedded workflows.
- Configuration & Shell Autocomplete: Setting up global defaults, CLI autocompletion, and advanced AST overrides.
- Architecture Mechanics: Deep dives into the Orchestrator, Executor, and Manifest lifecycle.
Core Engine & CLI Mechanics
- Task-Level Timeouts: Subprocess execution is no longer unbounded. Heavy network operations (like
uvorpipdependency resolution) are now capped at a 600s timeout, preventing the orchestrator from hanging indefinitely on dropped connections. - Context-Aware Status Rendering: The TUI now surfaces intelligent, domain-specific status descriptions during the realization phase (e.g., "Installing pre-commit git hooks") instead of dumping raw subprocess arrays to the terminal.
- Strict Tooling Boundaries: Deprecated the hardcoded Python requirement in favor of dynamic language constraints. The CLI and interactive wizard will now actively intercept and block you from scaffolding mismatched toolchains (like trying to drop Ruff onto a Rust-only workspace).
- SIGINT & TTY Routing: Trapped
Ctrl+Cto fail silently and exit cleanly with POSIX code 130, stopping the CLI from spilling raw stack traces or theargparsehelp manual upon cancellation. Additionally, hoisted the--forceflag logic above the TTY environment check, allowing headless scripts to overwrite collisions without hanging on interactive prompts. - AST Merging & Determinism: Squashed a
tomlkitbug that stacked triple-newlines during deep-merge overwrites, localized IDE interpreter settings strictly to Python module generation, and forced.gitignorepayload sorting to eliminate arbitrary diff churn.
Astrophysics & Scientific Stack
- Expanded Astro Preset (
-a): The astrophysics footprint now natively bundles the standard scientific computing matrix (numpy,scipy,pandas,matplotlib) alongsideastropy, meaning you no longer need to stack the-sand-aflags. - Automated Notebook Versioning: Automatically installs and configures
nbdime(nbdime config-git --enable) during post-install tasks, permanently resolving the Jupyter JSON diff nightmare for research repositories.
Documentation & Assets
- Zensical & ReadTheDocs Migration: Evicted the bloated deep-dive documentation from the
README.mdand migrated to a customzensical(Material derivative) framework on ReadTheDocs. Includes a custom Slate dark-mode UI with proper CSS specificity flattening. - Automated SVG Fixtures: The CLI help matrices are now generated programmatically via
rich.consoleinto deterministic SVGs. This process is fully typed, sandboxed, and enforced in CI—if the CLI arguments change but the docs aren't updated, the build fails. - VHS Integration & Static Branding: Swapped the computationally expensive animated Lorenz attractor scripts for clean, lightweight static SVGs, and introduced
vhstapes for programmatic TUI screen recording.
Build System & CI
- Justfile Optimization: Replaced the legacy
Makefilewith ajustfile. All execution targets now trigger a silentuv sync --all-extras --devpre-flight check, guaranteeing sub-millisecond dependency determinism. - Telemetry Parsing: Extracted the inline YAML benchmark script into
scripts/parse_benchmarks.py. Hyperfine results for both headless and interactive paths are now properly routed to the GitHub Pages performance dashboard. - Dependency Trimming: Removed redundant configurations in
pyproject.tomland explicitly excluded internal scripts/assets from the Hatchsdisttarget to keep the PyPI package lean.