All notable changes to DeckProbe are documented here.
- DeckProbe ships an Agent Skill at
skills/deckprobe/, teaching coding agents the target vocabulary, the report contract, and exit-status handling, with progressive-disclosure references for targets, recipes, output, and limits. - New
deckprobe installsubcommand writes support files into conventional local directories and reports one JSON receipt.--skills(the default artifact set) installs the agent skill for--agent-selected agents or an explicit--dir;--manand--completionsinstall the generated manual pages and shell completion source. Every artifact shares the same idempotent created/updated/unchanged policy,--forcegate, and--dry-run. .claude-plugin/manifests publish the repository as a single-plugin Claude Code marketplace, so/plugin marketplace add deckflow/deckprobeworks alongsidenpx skills add deckflow/deckprobe. All three install routes deliver identical bytes, verified by a contract test.
- The subcommand section of
deckprobe --helpis now headedCommandsrather thanDiscovery commands, becauseinstallis not a discovery command.
- Publish a complete
@deckflow/deckprobetarball containing the compileddist/JavaScript andwasm/runtime artifacts. The release gate now rejects an npm package when any required build artifact is absent.
- Node.js is a first-class target for
@deckflow/deckprobe: thenodeexport condition loads WASM from disk,probe()initializes lazily without a custom fetch, andprobeFile(path)returns reports whosesource_kindmatches the native CLI for the same file. - The npm package ships the native
deckprobeCLI on PATH via per-platform optional dependencies. Release CI repackages the same cargo-dist archives that GitHub Releases serve, sonpx @deckflow/deckprobeand the shell installers hand out byte-identical binaries.
- Browser and native WASM paths now report identical
confidence_scorevalues for the same probe. - The browser SDK exposes a stable WASM entry and guards initialization so bundlers and Workers resolve the module reliably.
- Release CI coverage for the
--artifactsplatform-package packaging path (archive discovery, tar/zip extraction, and generated manifests).
- Include WASM artifacts in the published
@deckflow/deckprobepackage.wasm-packemitswasm/.gitignorewith*, which causednpm packto drop the entirewasm/directory; the build now removes that file before packing.
- Reproducible Chromium smoke coverage for all browser input forms, Worker concurrency/lifecycle, structured errors, discovery, and schema validation.
- npm package build, browser-test, dry-pack, promotion, and trusted-publishing release gates.
- Modern iWork producer build, language/locale, external-or-missing-data, Data/ byte/type inventory, preview-dimension, and full-IWA integrity targets.
- Target discovery now reports per-format applicability and supported probe
levels; the TypeScript SDK exposes these fields through
TargetSpecReport.
- Worker probes now move
Blob/Filereads into the Worker and preserve JavaScript error classes across the Worker boundary. - Invalid WASM options reject with
TypeError, while failed WASM initialization can be retried.
- Reject probes immediately after a Worker is failed or terminated instead of leaving their promises pending forever.
- Accept source-independent
source_kindvalues in the schema-v2 contract. - Include the browser SDK source in the isolated release promotion allowlist.
- Preserve
BUDGET_EXCEEDEDwhen ZIP parsers wrap bounded-reader failures as a generic I/O error. - Filter scenario selectors through each driver's executable paths so iWork
@summary,@security,@quality, and@alldo not request phantom common targets. - Read iWork producer builds from
BuildVersionHistory.plistinstead of presentingfileFormatVersionas the application version.
- Source-independent
deckprobe-enginecrate for driver dispatch, target expansion, planning, execution, discovery, error mapping, and schema-v2 report assembly. - Re-openable
ProbeSource/ProbeReader, in-memory sources, serializableProbeOptions, budget overrides, and browser-compatible timeout accounting. - Raw stdin probing with
--stdin-nameand JSONL multi-input processing for local paths or named base64 byte payloads. deckprobe-wasmbrowser binding accepting logical filename,Uint8Array, and JavaScript options.- Independently publishable
@deckflow/deckprobeTypeScript package withFile,Blob,ArrayBuffer,Uint8Array, discovery, and transferable Web Worker APIs.
- Format crates now consume only budgeted source readers and no longer open concrete files.
- The native CLI is a thin path/stdin/JSONL adapter over the shared engine and no longer depends directly on any format crate.
- The Rust workspace version moves to 2.0 because the library-facing crate boundaries and source API are new, while the CLI report schema remains v2.
- Existing 1.1 CLI flags, selectors, stable target IDs, full/values reports, errors, and discovery contracts remain supported.
- Browser and native adapters return the same schema-v2 reports from the same engine.
- Additive CLI aliases for probe level, confidence, driver options, pretty output, strict mode, and plan-only mode, including compact level/confidence values and repeatable target selection.
- Unambiguous short target names plus
@summary,@security,@structure,@assets, and@qualityselector presets. - Compact
--view valuesoutput, positional target discovery, machine-readable target schemas/aliases/cost classes/selector expansions, bundled schema discovery, and generated shell completions. - Per-target confidence overrides and zero-additional-path optional target piggybacking with explicit report attribution.
- PDF security, form, annotation, attachment, and XMP targets; OOXML security inventory and Word/Excel/PowerPoint asset-part summary targets; iWork preview count and readable-package password signal.
- A 1.1 target-shape benchmark and deterministic iWork I/O-cost contracts.
- Modern iWork dispatch now transfers its live validated ZIP session to the selected driver, avoiding a second central-directory scan.
- Target discovery retains the compatibility
value_typewhile adding a JSON Schema fragment suitable for generated callers.
- Existing long options, stable target IDs, schema-v2 full reports, and driver default target sets remain supported. New report fields are omitted when unused.
- Modern Apple Keynote (
.key), Numbers (.numbers), and Pages (.pages) drivers. - Shared bounded iWork ZIP, binary/XML plist, IWA framing, raw Snappy block, and Protobuf wire decoder.
- Keynote slide/master/table component inventory, Numbers ordered sheet names/count, and Pages table component inventory.
- Three local iWork fixtures and synthetic release-gate coverage while retaining the 100-case release contract.
- Project lifecycle moves from MVP to the 1.0 beta series.
- Header budgets now accommodate realistic modern iWork central directories and bounded
Document.iwavalidation. - Format discovery, CLI help, architecture documentation, and fixture policy include Apple iWork.
- Legacy XML iWork packages (
index.apxlorindex.xml) are recognized and returnUNSUPPORTED_FORMAT; they are not parsed or silently treated as malformed modern IWA.
- Agent-friendly schema-v2 JSON envelopes for successful, partial, and failed commands, with stable error codes and tool versioning.
- Deterministic default reports; optional wall-clock telemetry via
--telemetry. - Bounded safe PDF xref normalization and reconstruction, exposed through
pdf.repair_xrefandpdf.repaired. - Legacy DOC/XLS/PPT CFB validation, SummaryInformation metadata, macro inventory, and core format statistics using the same targets as OOXML.
- Tracked JSON Schema and clean-tree integration coverage for deterministic output, routing, budgets, confidence, and structured errors.
- Filename extensions now select the driver path; container signatures and internal Office types are validated and mismatches fail explicitly.
- OOXML identity detection now runs inside physical-byte, archive-entry, expanded-byte, and timeout budgets.
- OOXML entry inventory no longer opens every ZIP member, substantially reducing random reads.
--minimum-confidenceis enforced against returned evidence as well as planned paths.- Minimum supported Rust version is now 1.88.
- Target-driven Rust CLI and JSON report schema MVP.
- Shared Source, Budget, Evidence, Path, and Planner contracts.
- PDF, Word, Excel, PowerPoint, and legacy Office format drivers.
- Shared budgeted OOXML ZIP/OPC/XML paths.
- Format-specific targets, options, and confidence-aware path selection.
- Local fixture integrity checks and CLI route regression tests.