Releases: cybercore-tech/diagprint
Release list
cli-v0.8.0
Full Changelog: v0.8.0...cli-v0.8.0
diagprint v0.8.0
diagprint v0.8.0
Release date: 2026-09-17
diagprint v0.8.0 turns the completed M4, E1, and M5 development trains into one
coherent public release.
Published package matrix
diagprint 0.8.0
diagprint-derive 0.8.0
diagprint-bridge 0.8.0
diagprint-error-stack 0.8.0
diagprint-lsp 0.8.0
diagprint-async 0.8.0
diagprint-otel 0.8.0
diagprint-test 0.8.0
diagprint-bridge and diagprint-error-stack are new in v0.8.
Diagnostic graph and forensics
v0.8 adds typed diagnostic relationships, separate evidence provenance,
deterministic graph verification, cycle-safe traversal, causal-cascade analysis
over recorded causal edges, and diagprint graph.
The evidence doctrine remains explicit:
provenance != causation
association != causation
Git provenance and blame
v0.8 adds diagprint.forensics.git-provenance/v1 and diagprint blame.
History runs can be bound to exact Git commit/tree/parent identities. Forensic
output verifies history and Git identity before presenting repository context.
Repository association is evidence, not proof of causation.
Ecosystem interoperability
The new diagprint-bridge SDK centralizes reusable adapter mechanics,
canonical logical identity, report/graph assembly, builder-scoped construction
handles, and shared validation while remaining ecosystem-neutral.
The new diagprint-error-stack crate supports single and grouped reports,
typed context mapping, stable source-frame traversal, source-chain relationship
evidence, and privacy-aware attachments. Printable attachment text is omitted
by default; opaque attachment values are never exported.
Remediation evidence and replay
v0.8 adds:
diagprint.remediation.evidence/v1
diagprint.forensics.remediation-replay/v1
and:
diagprint replay <HISTORY> <FINGERPRINT>
diagprint history replay <HISTORY> <FINGERPRINT>
diagprint history remediation-verify <HISTORY>
Replay is read-only. A later reappearance is labeled a regression after
verified remediation only when declared verification passed, the diagnostic
was observed resolved immediately afterward, and the same canonical
fingerprint later reappeared.
Even then:
remediation-caused-resolution: NOT ESTABLISHED
recurrence-root-cause: NOT ESTABLISHED
git-causation: NOT ESTABLISHED
Upgrade
[dependencies]
diagprint = "0.8"With derive:
[dependencies]
diagprint = { version = "0.8", features = ["derive"] }For adapter authors:
[dependencies]
diagprint = "0.8"
diagprint-bridge = "0.8"For error-stack integration:
[dependencies]
diagprint = "0.8"
diagprint-error-stack = "0.8"Compatibility
Rust edition: 2024
MSRV: Rust 1.85
default features: empty
diagprint v0.7.1
diagprint v0.7.1
The v0.7 release expands diagprint from structured diagnostic rendering into a
full diagnostics lifecycle framework.
Published crates
- diagprint 0.7.1
- diagprint-derive 0.7.0
- diagprint-lsp 0.7.0
- diagprint-async 0.7.0
- diagprint-otel 0.7.0
- diagprint-test 0.7.0
Highlights
Canonical diagnostic identity
Introduces schema-versioned diagnostic fingerprints, content digests, and
order-independent report digests.
Semantic report deltas classify diagnostics as new, resolved, persisting, or
changed while preserving duplicate diagnostic instances.
Baseline-aware CI
Delta policies can distinguish newly introduced failures and severity
regressions from existing diagnostic debt.
GitHub Actions and SARIF integrations support structured CI presentation.
Artifact integrity
Exact-byte artifact digests and receipts bind exported diagnostic artifacts to
their encoded bytes and policy metadata.
Transactional artifact persistence and append-only artifact generations provide
durable local storage primitives.
Diagnostic capsules
Diagnostic capsules bundle reports, rendered artifacts, receipts, remediation
records, provenance, policy metadata, and optional source snapshots with
verification metadata.
Diagnostic history
Adds hash-chained diagnostic history, mutable-head verification, diagnostic
lineage, transitions, severity evolution, and CLI history inspection.
These mechanisms provide local integrity evidence rather than authenticated
tamper-proof storage.
Project scanning
Adds static, standard, and deep scan profiles with analyzers for workspace,
manifest, source, dependency, unsafe, documentation, license, security, Git,
compiler, Clippy, test, and remediation evidence.
The core scanner consumes captured evidence and does not itself execute
arbitrary project commands.
Guarded remediation
Structured machine-applicable edits remain fail-closed.
Fix plans support multi-file remediation, rollback, post-fix verification, and
remediation receipts. Suggested shell commands remain informational and are
never automatically executed.
Editor integration
diagprint-lsp provides revision-aware LSP diagnostics, UTF-8/UTF-16/UTF-32
position handling, grouped publishing, and guarded versioned CodeActions.
Async diagnostics
diagprint-async provides bounded Tokio-backed delivery with explicit Block,
Reject, and severity-aware DropNewest backpressure behavior.
Telemetry
diagprint-otel provides privacy-aware OpenTelemetry and tracing integration with
explicit controls over exported text, locations, and structured attributes.
Testing
diagprint-test provides structured diagnostic/report assertions, canonical
identity checks, semantic delta assertions, and deterministic snapshot helpers.
Compatibility
- Rust edition: 2024
- MSRV: Rust 1.85
- Default features remain empty
- Companion crates use the compatible diagprint 0.7.x core line
diagprint v0.5.0 — Diagnostic Intelligence and Remediation
diagprint v0.5.0 — Diagnostic Intelligence and Remediation
diagprint v0.4.0 — Diagnostic Intelligence
diagprint v0.4.0 — Diagnostic Intelligence
v0.4 evolves diagprint from a diagnostic presentation engine into a
structured diagnostic assistance system.
Diagnostics can now explain a problem, link to authoritative documentation,
propose structured edits, validate those edits against the current filesystem,
and optionally apply them.
Highlights
Structured Suggestions
Diagnostics can carry first-class suggestions with:
- explanations;
- documentation links;
- structured text edits;
- suggested follow-up commands;
- applicability classifications.
Suggestion::new("Enable chrono's serde feature")
.applicability(Applicability::MachineApplicable)
.documentation(
DocumentationLink::docs_rs(
"chrono",
"latest",
"",
),
)
.edit(...);Guarded Automatic Fixes
Fixer supports:
- previewing fixes;
- dry-run validation;
- automatic application;
- interactive application;
- optional backups.
Before editing a file, diagprint verifies that:
- the suggestion is machine-applicable;
- the edit range is valid;
- edit offsets are UTF-8 boundaries;
- edits do not overlap;
- the file still contains the expected original text.
Stale edits fail closed rather than guessing.
Interactive Fix Workflow
FIX Enable chrono's serde feature
APPLICABILITY machine-applicable
VERIFY current file contents match the proposed edit
[A]pply [S]kip [D]ocs [Q]uit >
If validation fails, the apply action is not offered.
Documentation in the Terminal
The new optional terminal-docs feature can display linked documentation
directly in the terminal.
It provides:
- HTML-to-terminal conversion;
- Markdown rendering;
- extracted code examples;
- syntax highlighting;
- HTTP/HTTPS URL validation;
- document-size limits;
- terminal control-character sanitization.
Interactive fixes can open documentation with [D]ocs.
Documentation Helpers
Convenience constructors are available for:
- docs.rs
- Rust compiler error documentation
- The Cargo Book
DocumentationLink::docs_rs("chrono", "latest", "");
DocumentationLink::rust_error("E0277");
DocumentationLink::cargo_book("reference/features.html");Suggested Commands Stay Advisory
A diagnostic may recommend:
COMMAND cargo check
but diagprint never automatically executes suggested shell commands.
Terminal Renderer
The existing themed diagnostic renderer now supports:
SUGGESTIONPATCH- added lines
- removed lines
DOCSCOMMAND- applicability
- fix status
Cybercore themes automatically map these new semantic roles into the active
Cybercore palette.
Safety Hardening
v0.4 also adds:
- stale-edit rejection;
- stale-insert rejection;
- overlapping-edit detection;
- UTF-8 boundary validation;
- unique atomic temporary files;
- optional backups;
- remote terminal-control sanitization;
- remote-document size limits;
- offline terminal-doc rendering tests;
- action-aware interactive prompts.
Feature Flags
| Feature | Purpose |
|---|---|
compression |
gzip and Zstandard report compression |
cybercore |
Cybercore theme integration |
terminal-docs |
terminal documentation and syntax highlighting |
All optional features remain disabled by default.
Compatibility
There are no intentional breaking changes to the core v0.3 diagnostic
construction workflow.
v0.4 primarily adds new structured capabilities.
Registry Status
GitHub releases are supported normally.
crates.io publication is intentionally disabled for this release while the
optional Cybercore integration is sourced from GitHub. Registry publishing
will be enabled after the matching Cybercore crate is available from the
target registry.
Verification
The release gate covers:
cargo fmt- default-feature check
- default-feature Clippy with warnings denied
- default-feature tests
- rustdoc tests
- all-feature check
- all-feature Clippy with warnings denied
- all-feature tests
- all-feature rustdoc tests
- examples
- package-content inspection
Next
Potential future work includes:
anyhowintegration;- expanded
thiserrorintegration; tracingintegration;- asynchronous report output;
- async documentation retrieval;
- richer unified diff presentation;
- additional renderers.
Full changelog: v0.3.1...v0.4.0
diagprint v0.3.1 — Renderer & Theme System
diagprint v0.3.1 — Renderer & Theme System
diagprint v0.3.1 — Renderer & Theme System
v0.3.1 is a major terminal-rendering and theming upgrade for diagprint.
This release takes the terminal renderer from a functional prototype to a much more polished diagnostic UI with Unicode-aware layout, intelligent source clipping, wrapped annotations, regression tests, a public theme API, and optional Cybercore integration.
Highlights
Smarter terminal rendering
The terminal renderer now handles real-world diagnostic output much more gracefully:
- Unicode-aware display width
- Automatic terminal-width detection
- Message wrapping instead of blind truncation
- Wrapped causes, notes, help text, and metadata
- ANSI-safe width calculations
- Long unbroken tokens wrap correctly
- Better diagnostic box alignment
Intelligent source diagnostics
Long source lines no longer hide the actual error location.
diagprint now keeps the highlighted region visible and clips the surrounding source intelligently:
│ --> src/config.rs:42:18 │
│ 41 │ let mode = read_mode(); │
│ > 42 │ …configuration.set_mode(invalid_mode); │
│ │ ^^^^^^^^ │
│ │ └─ invalid configuration value │
│ 43 │ start_runtime(); │
Source rendering now includes:
- Highlight-following source windows
- Left/right ellipsis markers
- Target-line
>gutter marker - Unicode-aware caret placement
- Tab expansion
- Wrapped multiline source labels
- Cleaner source gutters
Public theme system
diagprint now exposes a reusable theme API:
use diagprint::{Style, Theme};
let theme = Theme {
border: Style::rgb(0, 255, 255).dim(),
source_caret: Style::rgb(255, 0, 128).bold(),
note: Style::rgb(255, 180, 0).bold(),
help: Style::rgb(120, 255, 120).bold(),
..Theme::default()
};New public types:
ThemeStyleSeverityTheme
Style supports:
- True-color RGB foregrounds
- True-color RGB backgrounds
- ANSI-256 colors
- Hex RGB colors
- Bold
- Dim
- Italic
- Underline
Calling .color(false) still suppresses all ANSI styling regardless of the selected theme.
Cybercore Integration
Cybercore support is now available behind the optional cybercore feature.
Use the active Cybercore theme:
let theme = Theme::cybercore();Load a named theme:
let theme = Theme::cybercore_named("neon-night");Safely fall back to the active theme:
let theme = Theme::cybercore_or_default("possibly-missing-theme");Theme discovery is also available:
let names = Theme::cybercore_theme_names();
let active = Theme::cybercore_active_theme_name();
if Theme::cybercore_theme_exists("neon-night") {
// ...
}Cybercore remains the source of truth for palette data; diagprint does not maintain a duplicate palette registry.
Cybercore showcase
A new example renders all diagnostic severities using the selected Cybercore theme:
cargo run --features cybercore --example cybercoreList available themes:
cargo run --features cybercore --example cybercore -- --listRender a specific theme:
cargo run --features cybercore --example cybercore -- neon-nightThe showcase covers:
TRACEDEBUGINFOWARNINGERRORFATAL
Testing Improvements
The renderer now has dedicated regression coverage for:
- Unicode box alignment
- Long message wrapping
- Long unbroken tokens
- Cause/note/help wrapping
- Long source-line clipping
- Highlight visibility
- Multiline source labels
- Theme ANSI output
- Global
color(false)behavior - Cybercore theme discovery
- Golden terminal output
The repository CI gate now includes strict Clippy checks with warnings treated as errors.
Other Improvements
- Cleaner
CAUSE,NOTE, andHELPpresentation - Improved metadata rendering
- Better variable naming and renderer internals
- Public crate documentation
- Updated README and changelog
- Improved package metadata
docs.rsmetadata added- Renderer code formatted and Clippy-clean
Feature Flags
Compression
cargo test --features compressionEnables gzip and Zstandard support.
Cybercore
cargo test --features cybercoreEnables Cybercore theme integration.
Everything
cargo test --all-targets --all-featuresUpgrade Notes
There are no intentional breaking API changes from v0.3.0.
The main API addition is theme support through:
Reporter::builder()
.theme(Theme::default())Existing code that does not use themes should continue to work unchanged.
What’s Next
The next development cycle will focus on integrations and richer diagnostic metadata, including:
- Dedicated
anyhowintegration - More
thiserrorcoverage tracingintegration- Improved
std::error::Erroradapters - Custom diagnostic metadata
- Nonblocking / async output
- Additional renderers
Thanks for testing and pushing diagprint forward.
v0.3.1 gives the project a much stronger terminal-rendering foundation and a theme architecture that can grow without turning the renderer into a pile of hardcoded ANSI sequences.