packages feed

tricorder-0.4.1.1: CHANGELOG.md

# Changelog

All notable changes to `tricorder` will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to the [PVP](https://pvp.haskell.org/).

## [Unreleased]

## [0.4.1.1] - 2026-09-21

### Fixed

- Output from eval comments no longer runs outside of the terminal, and instead
  wraps around.
- Component marked as `buildable: False` are not omitted from Tricorder's list
  of targets.
- GHC plugins declared via `-fplugin` are no longer silently skipped on reload
  on GHC 9.14, causing a flood of spurious diagnostics.
- Frequent wakeups while idle caused Tricorder to run GC unnecessarily. The
  length of time between idle checks has now been increased. (Thanks @agentm!)
- Errors and issues that occur when reading from GHCi will now be logged. To
  capture specific parts of the GHCi output, Tricorder makes GHCi echo some
  marker lines around the output of any issued commands from Tricorder. When we
  receive back a reply that ends before seeing the ending marker, something's
  gone awry, and previously Tricorder would just display
  `Unexpected Exit "#~TRI-FINISH-1" Nothing` in a lot of these cases because we
  failed to read from GHCi.

### Changed

- Reduce upper bound on `Cabal` and `Cabal-syntax` dependencies. Version `3.18`
  bring with them breaking changes that Tricorder is not yet compatible with,
  so this is a necessary change.

## [0.4.1.0] - 2026-09-17

### Added

- Proper support for GHC 9.14.

### Fixed

- `tricorder ui` no longer shows "pending test suites" without any test suites.

## [0.4.0.0] - 2026-09-16

### Removed

- Support for GHC 9.14. A faulty CI setup incorrectly stated that we were
  building and testing successfully on GHC 9.14.

## [0.3.0.0] - 2026-09-15

### Added

- Support for GHC 9.14.

### Changed

- `tricorder source` no longer requires the daemon to evaluate source code.

### Fixed

- The daemon did not respect environment variables and configuration options
  that specified minimum logging levels. It was hard-coded to `INFO` by mistake.
- Tricorder did not expand wildcard entries in `cabal.project`'s `packages`
  list. So an entry like `packages/*` resulted in no packages being found.
  Tricorder now correctly mimics Cabal's behavior, and expands wildcards
  properly.

### Removed

- `tricorder log` no longer has the `--follow` option. Use something like
  `tricorder log --print-path | xargs tail -f` instead. There are better tools to
  handle following a text file as it is being written to rather than including
  an extremely simple facsimile of one in Tricorder.

## [0.2.2.3] - 2026-09-11

### Changed

- Require `tricorder-types ^>=0.3`.

## [0.2.2.2] - 2026-09-10

### Changed

- Require `effectful >=2.7 && <2.8`.
- Require `effectful-core >=2.7 && <2.8`.
- Require `effectful-plugin >=2.2 && <2.3`.

## [0.2.2.1] - 2026-09-09

### Fixed

- Build failure due to missing `AsRawUnit` class from `Atelier.Time`.

## [0.2.2.0] - 2026-09-05

### Added

- The daemon now shuts itself down after a period of inactivity, configurable
  with `idle_timeout_seconds` (defaults to 300 seconds; `0` disables it). Any
  client request resets the countdown, and a `tricorder ui` client's
  long-lived watch connection counts as continuous activity for as long as
  it's connected. See [Configuring Tricorder](/docs/configuring-tricorder.md)
  for more information.
- Use the `test_memory_limit` configuration value to specify the maximum memory
  a test suite is allowed to consume. This is enforced through GHC's `-M` RTS
  option.
- Hooks for running arbitrary shell scripts at certain points in time in the
  build process. See [Configuring Tricorder](/docs/configuring-tricorder.md)
  for more information.

### Fixed

- Unable to correctly parse `packages` lists in `cabal.project` files when the
  list was formatted as a single-line, comma-separated list.

## [0.2.1.0] - 2026-08-17

### Added

- Tricorder now respects all forms of `cabal.project` files, like
  `cabal.project.local` for example. See
  [Cabal's documentation on project description files](https://cabal.readthedocs.io/en/stable/cabal-project-description-file.html). ([#73](https://github.com/tweag/tricorder/issues/73))
- With `hpack` in `PATH`, Tricorder will now run `hpack` in the directory of
  any changed `package.yaml` file in the root of the project or any
  subdirectory. Control this behavior with the `generate_with_hpack`
  configuration.
- Tricorder will now restart the GHCi session when detecting changes to a
  project's `stack.yaml`.

## [0.2.0.1] - 2026-08-12

### Fixed

- `tricorder source` does not work without `cabal` in `PATH` (for `stack`
  projects, for example). Tricorder now fetches tarballs for source
  distributions manually with good old-fashioned HTTP instead of relying on
  `cabal fetch`. This means `tricorder source` works regardless whether `cabal`
  or `stack` is in `PATH`. (Still requires `ghc-pkg` to be in `PATH` though to
  resolve the module name to a package.)
- Incorrect repl command used for eval comments. This caused eval comments not
  to be able to use a module's top-level definitions in its expression.
- Auto-resolved targets are not compatible with `stack ghci` (and its alias
  `stack repl`). Targets are now automatically resolved with package name,
  `pkg:kind:name` for multi-package repos and just `name` for single-package
  repos, instead of just with the component name and kind `kind:name`. `stack
ghci` is not compatible with the form `kind:name` (but `cabal repl` is), but
  both of them are compatible with the fully qualified `pkg:kind:name` form. If
  you manually specify a `kind:name` target in your `stack` repo's
  `.tricorder.yaml` though, you are on your own!

## [0.2.0.0] - 2026-08-06

### Added

- The TUI can now restart the daemon — press `R` (the `restart_daemon` key
  event, rebindable like the others). It reconnects automatically once the
  fresh daemon is ready.
- Support for eval comments. See [Features of Tricorder - Eval Comments] for
  more information
- `tricorder eval-comments` subcommand.
- `tricorder log --print-path` prints the path to the current repo's Tricorder
  log file.

### Fixed

- No diagnostics are listed in single-package repos.
- Build loops on startup failure.

### Changed

- `tricorder source` now uses a package's sdist tarball from cabal's global
  cache instead of parsing Haddock-HTML, fetching them if necessary. This
  allows Tricorder to show sources for packages without documentation.

### Removed

- Observability and metrics stack.

## [0.1.1.0] - 2026-06-26

### Added

- Configurable `watch_exclusion_patterns` to exclude paths from the file
  watcher.
- The TUI now presents its different views as tabs.

### Fixed

- Terminate the whole cabal process group on shutdown, so children that trap
  `SIGINT` are no longer left running.
- Correct watch-directory scoping for bare package-name targets in a
  multi-package project.
- Building no longer fails for packages that use a custom prelude.
- Use the correct set of targets when constructing the build command.
- Surface location-less GHCi load failures (e.g. plugin errors) without
  reporting false positives.
- Clear stale diagnostics for failed executable and test `Main` modules.

## [0.1.0.1] - 2026-06-06

### Fixed

- Renamed the installed executable from `tricorder-exe` to `tricorder` so
  `cabal install tricorder` provides a binary matching the package name.

## [0.1.0.0] - 2026-06-05

### Added

- Initial release: daemon-based GHCi build monitor communicating over a Unix
  socket.
- Commands: `start`, `stop`, `status [--wait]`, `watch`.
- `status` outputs structured JSON with build phase, module count, duration,
  and messages; each message includes `severity`, `file`, `line`/`col`,
  `title` (first line), and `text` (full body).
- Auto-detects cabal/stack projects and builds the
  `cabal repl --enable-multi-repl` command.
- Parses `.cabal` files to resolve `hs-source-dirs` for targeted file watching.
- Configurable via `.tricorder.toml` (targets, debounce, log file, etc.).
- File watcher with debouncing; auto-restarts the GHCi session on crash
  (fixes ghcid's crash-on-file-removal bug).

[Features of Tricorder - Eval Comments]: ../docs/features-of-tricorder.md#eval-comments