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

Lay the groundwork for Phase B of improvise-36h: a new
`crates/improvise-core/` sub-crate that will house the pure-data core
(model, view, workbook, format) once the files move in the next commit.

Only scaffolding here:
- New `crates/improvise-core/Cargo.toml` mirroring improvise-formula's
  structure; declares deps on improvise-formula, anyhow, indexmap, serde.
- New `crates/improvise-core/src/lib.rs` with the single re-export
  `pub use improvise_formula as formula;` so that in the next commit the
  moved code's `crate::formula::*` paths resolve unchanged.
- Root `Cargo.toml` adds the new crate to the 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 22:21:58 -07:00
parent a22478eb87
commit 0d75c7bd0b
4 changed files with 36 additions and 1 deletions

12
Cargo.lock generated
View File

@ -737,6 +737,7 @@ dependencies = [
"dirs", "dirs",
"enum_dispatch", "enum_dispatch",
"flate2", "flate2",
"improvise-core",
"improvise-formula", "improvise-formula",
"indexmap", "indexmap",
"pest", "pest",
@ -751,6 +752,17 @@ dependencies = [
"unicode-width", "unicode-width",
] ]
[[package]]
name = "improvise-core"
version = "0.1.0-rc2"
dependencies = [
"anyhow",
"improvise-formula",
"indexmap",
"proptest",
"serde",
]
[[package]] [[package]]
name = "improvise-formula" name = "improvise-formula"
version = "0.1.0-rc2" version = "0.1.0-rc2"

View File

@ -1,5 +1,5 @@
[workspace] [workspace]
members = [".", "crates/improvise-formula"] members = [".", "crates/improvise-formula", "crates/improvise-core"]
[package] [package]
name = "improvise" name = "improvise"
@ -18,6 +18,7 @@ name = "improvise"
path = "src/main.rs" path = "src/main.rs"
[dependencies] [dependencies]
improvise-core = { path = "crates/improvise-core" }
improvise-formula = { path = "crates/improvise-formula" } improvise-formula = { path = "crates/improvise-formula" }
ratatui = "0.30" ratatui = "0.30"
crossterm = "0.29" crossterm = "0.29"

View File

@ -0,0 +1,16 @@
[package]
name = "improvise-core"
version = "0.1.0-rc2"
edition = "2024"
description = "Pure-data model, views, and workbook for improvise"
license = "Apache-2.0"
repository = "https://github.com/fiddlerwoaroof/improvise"
[dependencies]
improvise-formula = { path = "../improvise-formula" }
anyhow = "1"
indexmap = { version = "2", features = ["serde"] }
serde = { version = "1", features = ["derive"] }
[dev-dependencies]
proptest = "1"

View File

@ -0,0 +1,6 @@
//! Pure-data core of the `improvise` project: `Model`, views, `Workbook`,
//! and number formatting. Depends on `improvise-formula` for AST types;
//! has no awareness of UI, I/O, or commands.
//!
//! Scaffolded empty in this commit; the modules land in the next commit.
pub use improvise_formula as formula;