Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 28 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,35 @@ that, minor versions may change interfaces and the manifest format.

## [Unreleased]

### Packaging
- One package, `gridsift`, now carries both binaries: `cargo install
gridsift` installs the desktop application and the command-line tool,
and `cargo run` starts the application (`default-run`). The
`gridsift-desktop` package is gone; the binary names are unchanged.

### Analysis cache
- Whole-file results are kept in the user cache directory beside the index
sidecar: the file-wide column profile and value counts (`*.gsan`) and
the timelines over all records (`*.gstl`, read only when a timeline is
asked for). The next open of the same bytes — same
size, modification time and SHA-256 — shows the dashboard and timeline
at once and starts no profile pass; `freq`, `timeline` and `profile`
report `cached`. Counts over a selection or of derived columns are
always recomputed, and a changed file never uses the cache.

### Files without a header
- The sniffer's reading of the first record can be overridden everywhere:
`--header` / `--no-header` on the desktop launch line as on the command
line, and a click on *header* / *no header* in the sidebar reopens the
file the other way. `--names a,b,c` (command line and desktop launch
line) and the sidebar's *name columns…* dialog name the columns of a
file without a header; the names resolve `-c` and are recorded in the
manifest of every export (`source.dialect.names`), never in the file.

### Desktop (`gridsift-desktop`)
- The analysis dock opens on *Values*, now the first tab and with its own
column picker. The dashboard is built from the file-wide profile and
- The analysis dock is open from the start, on *Values*, now the first tab
and with its own column picker; *Analysis* in the command bar hides and
shows it. The dashboard is built from the file-wide profile and
counted in the background, on screen or not, so opening it shows current
charts at once; the panels are counted one after another (one count's
memory instead of six), and a timeline the analyst moved to another
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ CI runs the same on Linux, macOS and Windows with the stable toolchain and
a `cargo check` on the minimum supported Rust version (1.88). The scanner
is checked against the `csv` crate on a torture corpus and on random input
(`crates/gridsift-core/tests/differential.rs`); the command-line tool has
end-to-end tests (`crates/gridsift-cli/tests/cli.rs`) that run the real
end-to-end tests (`crates/gridsift/tests/cli.rs`) that run the real
binary with the index cache redirected into a temporary home.

Synthetic data for manual testing and benchmarks comes from the tool
Expand Down
18 changes: 5 additions & 13 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
[workspace]
resolver = "3"
members = ["crates/*"]
# `cargo build` / `cargo run` at the root build the application package
default-members = ["crates/gridsift"]

[workspace.package]
version = "0.1.0"
Expand Down
11 changes: 4 additions & 7 deletions NOTICE
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ This project is dual-licensed under the MIT License and the Apache License,
Version 2.0. See LICENSE-MIT and LICENSE-APACHE for the full texts.

Third-party dependencies and their declared licenses (direct dependencies
of the three workspace crates; versions as pinned in Cargo.lock at the time
of the two workspace crates; versions as pinned in Cargo.lock at the time
of writing):

gridsift-core
Expand All @@ -30,19 +30,16 @@ gridsift-core
sha2 0.11 MIT OR Apache-2.0 https://github.com/RustCrypto/hashes
thiserror 2.0 MIT OR Apache-2.0 https://github.com/dtolnay/thiserror

gridsift (command-line tool)
gridsift (the desktop application and the command-line tool)
anyhow 1.0 MIT OR Apache-2.0 https://github.com/dtolnay/anyhow
clap 4.6 MIT OR Apache-2.0 https://github.com/clap-rs/clap
indicatif 0.18 MIT https://github.com/console-rs/indicatif
serde_json 1.0 MIT OR Apache-2.0 https://github.com/serde-rs/json

gridsift-desktop
anyhow 1.0 MIT OR Apache-2.0 https://github.com/dtolnay/anyhow
eframe 0.32 MIT OR Apache-2.0 https://github.com/emilk/egui
egui 0.32 MIT OR Apache-2.0 https://github.com/emilk/egui
egui_extras 0.32 MIT OR Apache-2.0 https://github.com/emilk/egui
egui_plot 0.33 MIT OR Apache-2.0 https://github.com/emilk/egui_plot
indicatif 0.18 MIT https://github.com/console-rs/indicatif
rfd 0.17 MIT https://github.com/PolyMeilex/rfd
serde_json 1.0 MIT OR Apache-2.0 https://github.com/serde-rs/json

Test-only dependencies
proptest 1.11 MIT OR Apache-2.0 https://github.com/proptest-rs/proptest
Expand Down
10 changes: 6 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,16 +33,18 @@ application for Linux, macOS and Windows.

| Interface | Binary | Description |
|-----------|--------|-------------|
| **Desktop** | `gridsift-desktop` | The interactive investigation: instant rows, search and pivot with a visible selection lineage, value counts, dashboard and timeline, enrichment, export with redaction. |
| **CLI** | `gridsift` | Index, search, count, timeline, profile, export, verify; `--json` on every command for scripting and batch use. |
| **Desktop** | `gridsift-desktop` | The interactive investigation: instant rows, search and pivot with a visible selection lineage, timeline and value counts, enrichment, export with redaction. |

Both binaries come from the one `gridsift` package; the desktop application
is what `cargo run` starts.

## Quick install

Rust 1.88 or newer. From crates.io:
Rust 1.88 or newer. From crates.io, one package installs both binaries:

```
cargo install gridsift --locked # command-line tool
cargo install gridsift-desktop --locked # desktop application
cargo install gridsift --locked # gridsift-desktop and gridsift
```

Or build from source:
Expand Down
81 changes: 0 additions & 81 deletions crates/gridsift-cli/NOTICE

This file was deleted.

11 changes: 4 additions & 7 deletions crates/gridsift-core/NOTICE
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ This project is dual-licensed under the MIT License and the Apache License,
Version 2.0. See LICENSE-MIT and LICENSE-APACHE for the full texts.

Third-party dependencies and their declared licenses (direct dependencies
of the three workspace crates; versions as pinned in Cargo.lock at the time
of the two workspace crates; versions as pinned in Cargo.lock at the time
of writing):

gridsift-core
Expand All @@ -30,19 +30,16 @@ gridsift-core
sha2 0.11 MIT OR Apache-2.0 https://github.com/RustCrypto/hashes
thiserror 2.0 MIT OR Apache-2.0 https://github.com/dtolnay/thiserror

gridsift (command-line tool)
gridsift (the desktop application and the command-line tool)
anyhow 1.0 MIT OR Apache-2.0 https://github.com/dtolnay/anyhow
clap 4.6 MIT OR Apache-2.0 https://github.com/clap-rs/clap
indicatif 0.18 MIT https://github.com/console-rs/indicatif
serde_json 1.0 MIT OR Apache-2.0 https://github.com/serde-rs/json

gridsift-desktop
anyhow 1.0 MIT OR Apache-2.0 https://github.com/dtolnay/anyhow
eframe 0.32 MIT OR Apache-2.0 https://github.com/emilk/egui
egui 0.32 MIT OR Apache-2.0 https://github.com/emilk/egui
egui_extras 0.32 MIT OR Apache-2.0 https://github.com/emilk/egui
egui_plot 0.33 MIT OR Apache-2.0 https://github.com/emilk/egui_plot
indicatif 0.18 MIT https://github.com/console-rs/indicatif
rfd 0.17 MIT https://github.com/PolyMeilex/rfd
serde_json 1.0 MIT OR Apache-2.0 https://github.com/serde-rs/json

Test-only dependencies
proptest 1.11 MIT OR Apache-2.0 https://github.com/proptest-rs/proptest
Expand Down
Loading
Loading