Skip to content

Releases: cybercore-tech/diagprint

cli-v0.8.0

Choose a tag to compare

@darkstardevx darkstardevx released this 30 Sep 22:23

Full Changelog: v0.8.0...cli-v0.8.0

diagprint v0.8.0

Choose a tag to compare

@darkstardevx darkstardevx released this 30 Sep 22:23

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

Choose a tag to compare

@darkstardevx darkstardevx released this 30 Sep 22:23
c8362db

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

Choose a tag to compare

@darkstardevx darkstardevx released this 30 Sep 22:23

diagprint v0.5.0 — Diagnostic Intelligence and Remediation

diagprint v0.4.0 — Diagnostic Intelligence

Choose a tag to compare

@darkstardevx darkstardevx released this 30 Sep 22:23

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:

  • SUGGESTION
  • PATCH
  • added lines
  • removed lines
  • DOCS
  • COMMAND
  • 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:

  • anyhow integration;
  • expanded thiserror integration;
  • tracing integration;
  • 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

Choose a tag to compare

@darkstardevx darkstardevx released this 30 Sep 22:23

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:

  • Theme
  • Style
  • SeverityTheme

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 cybercore

List available themes:

cargo run --features cybercore --example cybercore -- --list

Render a specific theme:

cargo run --features cybercore --example cybercore -- neon-night

The showcase covers:

  • TRACE
  • DEBUG
  • INFO
  • WARNING
  • ERROR
  • FATAL

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, and HELP presentation
  • Improved metadata rendering
  • Better variable naming and renderer internals
  • Public crate documentation
  • Updated README and changelog
  • Improved package metadata
  • docs.rs metadata added
  • Renderer code formatted and Clippy-clean

Feature Flags

Compression

cargo test --features compression

Enables gzip and Zstandard support.

Cybercore

cargo test --features cybercore

Enables Cybercore theme integration.

Everything

cargo test --all-targets --all-features

Upgrade 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 anyhow integration
  • More thiserror coverage
  • tracing integration
  • Improved std::error::Error adapters
  • 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.