refactor(io): scaffold empty improvise-io sub-crate

Lay groundwork for Phase 3 of the workspace split (improvise-8zh): a new
`crates/improvise-io/` sub-crate that will house the persistence and
import layers once the files move in the next commit.

Only scaffolding here:
- New `crates/improvise-io/Cargo.toml` declares deps on improvise-core,
  improvise-formula, and the external crates persistence+import already
  use: anyhow, chrono, csv, flate2, indexmap, pest, pest_derive, serde,
  serde_json. Dev-deps: pest_meta, proptest, tempfile.
- New `crates/improvise-io/src/lib.rs` re-exports the core modules under
  their conventional names (`format`, `model`, `view`, `workbook`,
  `formula`) so in the next commit the moved code's `crate::model::*`,
  `crate::view::*`, `crate::workbook::*`, `crate::format::*`, and
  `crate::formula::*` paths resolve unchanged.
- Root `Cargo.toml` adds the new crate to workspace members and the main
  crate's `[dependencies]`, ready to receive the move.

No source files change yet; cargo check --workspace still compiles as
before.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Edward Langley
2026-04-15 23:05:17 -07:00
parent 79dc54de21
commit bd17aed169
4 changed files with 63 additions and 1 deletions

View File

@ -0,0 +1,15 @@
//! I/O layer for `improvise`: `.improv` persistence (parse/format, save/load,
//! CSV export) and import (CSV/JSON wizard, field analyzer).
//!
//! Depends on `improvise-core` for the data model (`Model`, `View`,
//! `Workbook`, `CellKey`, `CellValue`, `GridLayout`, `Axis`, `Group`) and on
//! `improvise-formula` for formula parsing. Has no awareness of UI or
//! commands — builds standalone via `cargo build -p improvise-io`.
//!
//! Re-exports the core modules under their conventional names so code in
//! this crate can keep using `crate::model::*`, `crate::view::*`,
//! `crate::workbook::*`, `crate::format::*`, and `crate::formula::*` paths.
//!
//! Scaffolded empty in this commit; the modules land in the next commit.
pub use improvise_core::{format, model, view, workbook};
pub use improvise_formula as formula;