# pensar 0.4.2

* CRAN review compliance.
* `default_vault()` and `default_site_dir()` no longer fall back to
  `tools::R_user_dir()`. Per CRAN policy pensar will not silently
  write to the user's home filespace; if no vault is configured via
  `PENSAR_VAULT`, walk-up `schema.md`, or `options("pensar.vault")`,
  the call errors with a setup hint. Pass `vault =` (or `path =` for
  `init_vault()`) explicitly to write to a one-off path. **Breaking
  for users who relied on the implicit `~/.local/share/R/pensar/`
  fallback** -- run `use_vault('/path/to/vault')` once or set
  `PENSAR_VAULT` to restore the previous behavior.
* `vault_export()` now requires either `PENSAR_SITE_DIR` or an
  explicit `out_dir =`; the cache fallback is gone for the same
  reason.
* Title shortened to `LLM Wiki Engine`. Description tidied. Added
  `SystemRequirements: pandoc, git`. Dropped unused `jsonlite` from
  Suggests.
* Every exported function now has a runnable `@examples` block,
  using `tempdir()` / `tempfile()` so nothing leaks into the user's
  home filespace at example time.
* `vault_graph()` and `ingest_briefing()` error messages reworded
  to drop the GitHub install URL.

# pensar 0.4.1

* `default_vault()` resolution order changed so project-local vaults
  beat a global `.Rprofile` default. New order: `PENSAR_VAULT` env
  var > walk-up from `getwd()` for a `schema.md` marker > the
  `options("pensar.vault")` value set by `use_vault()` > the
  `R_user_dir()` fallback. Previously the option won over the env
  var, which made `PENSAR_VAULT=...` ineffective once `use_vault()`
  ran in `.Rprofile`. Walk-up is new: `cd` into a project vault and
  the CLI Just Works without unsetting your global default.

# pensar 0.4.0

* New `vault_graph()` renders the vault's wikilink graph as static
  SVG via `saber::graph_svg()`. Tooltips carry title, type, date,
  tags, and a lede from the first meaningful body line. Broken
  wikilinks appear as separate nodes. Default viewport 1600x1200 for
  denser vaults.

# pensar 0.3.1

* `default_vault()` now honors `options("pensar.vault")` and the
  `PENSAR_VAULT` environment variable before falling back to
  `tools::R_user_dir("pensar", "data")`. Previously, the vault path
  was hardcoded to the `R_user_dir()` path with no escape hatch, so
  a nicer path like `~/wiki` required passing `vault =` to every
  call.
* New `use_vault()` sets `options("pensar.vault")` for the session,
  mirroring `hacer::use_repo()`.

# pensar 0.3.0

* New `ingest_briefing()` generates a saber briefing via
  `saber::briefing()` and ingests it into the vault. Replaces the
  direct cache-file read in `inst/scripts/session-start.R` with a real
  function call, so briefings refresh on ingest instead of depending
  on saber's hook having run first.
* `saber` added to Suggests (previously coupled only via filesystem).

# pensar 0.2.0

* Initial release: LLM wiki engine with `init_vault()`, `ingest()`,
  `update_index()`, `log_entry()`, `status()`, `backlinks()`,
  `outlinks()`, `show_page()`, `lint()`, and `vault_export()`.
