[workspace]
resolver = "2"
members = [
    "crates/quicksearch-core",
    "crates/quicksearch-gui",
]
# The `vendor/` crates are deliberately NOT members: they are third-party code which we patched
exclude = ["vendor/pdf-extract", "vendor/rtf-parser"]

[patch.crates-io]
pdf-extract = { path = "vendor/pdf-extract" } # Patched unbounded reads which could blow up on malformed files
rtf-parser = { path = "vendor/rtf-parser" } # Patched a parsing error which occurs on UTF-16 characters

[workspace.package]
version = "1.1.4"
edition = "2021"
license = "GPL-3.0-or-later"
authors = ["Jeremy <jeremy@karsttech.com>"]
repository = "https://code.karsttech.com/jeremy/quick_search.git"

# Fat LTO + cgu=1: -14% stripped size (24.3 MB vs 28.2 MB), search within noise
# (read as "3-4% faster or even"), +127 s on a clean CI build. Measure CLEAN —
# an incremental rebuild is nearly all link and made LTO look ~20x worse than
# it is. `lto = "thin"` alone is worth nothing (0.1%); cgu=1 alone is worth
# 2.3 MB. Deliberately unset: `strip` (packaging/CI strip the staged copy,
# keeping target/release symbolised); `panic = "abort"` (extract/pdf.rs needs
# catch_unwind for malformed PDFs, and it forces a full second dependency
# rebuild under `cargo test --release`); non-PIE (ASLR — this parses untrusted
# PDFs). The vendored OpenSSL's ~1.3 MB is unreachable by any profile knob.
[profile.release]
lto = "fat"
codegen-units = 1
