diff --git a/CHANGES.markdown b/CHANGES.markdown
new file mode 100644
--- /dev/null
+++ b/CHANGES.markdown
@@ -0,0 +1,812 @@
+## Changes in 2.11.17 (2026-03-04)
+  - Compatibility with QuickCheck 2.18
+
+## Changes in 2.11.16 (2025-12-12)
+  - Add support for MicroHs
+
+## Changes in 2.11.15 (2025-12-08)
+  - Remove redundant `tf-random` dependency
+
+## Changes in 2.11.14 (2025-09-30)
+  - Make sure that `--pretty` completes in *O(n)* time
+
+## Changes in 2.11.13 (2025-09-15)
+  - Make diff algorithm line based
+  - Improve pretty-printing of nested records
+
+## Changes in 2.11.12 (2025-03-17)
+  - Add `--no-rerun` and `--no-rerun-all-on-success`
+
+## Changes in 2.11.11 (2025-02-17)
+  - Compatibility with GHC 9.12
+
+## Changes in 2.11.10 (2024-11-16)
+  - Add (experimental) extensions API
+  - Handle small terminal sizes more gracefully when reporting progress
+  - Correctly indent multi-line pending messages
+  - Use "erase in line" ANSI sequence to clear transient output (instead of
+    overwriting it with spaces)
+
+## Changes in 2.11.9 (2024-05-24)
+  - Compatibility with GHC 9.10.1
+  - Drop support for GHC 7.10.3
+
+## Changes in 2.11.8 (2024-04-22)
+  - Make the build pass with QuickCheck 2.15
+
+## Changes in 2.11.7 (2023-10-22)
+  - Include `--seed` in the note on how to rurun a failing item.
+
+## Changes in 2.11.6 (2023-10-11)
+  - Compatibility with GHC 9.8.1
+  - Run cleanup actions on `--fail-fast` (see #860)
+
+## Changes in 2.11.5 (2023-09-20)
+  - Add `--show-exceptions` and `--display-exceptions`
+
+## Changes in 2.11.4 (2023-07-20)
+  - Depend on `hspec-expectations-0.8.4`
+
+## Changes in 2.11.3 (2023-07-10)
+  - Suppress informational output from QuickCheck when
+    `Test.QuickCheck.Args.chatty` is `False` (#840)
+
+## Changes in 2.11.2 (2023-07-06)
+  - Add `--expert` mode
+
+## Changes in 2.11.1 (2023-05-28)
+  - Depend on `hspec-expectations-0.8.3`
+
+## Changes in 2.11.0.1 (2023-04-28)
+  - Don't crash when home directories are unsupported (WASM/WASI) (thanks
+    @amesgen)
+
+## Changes in 2.11.0 (2023-04-21)
+  - Drop support for GHC < 7.10.3
+  - Improve coloring of whitespace-only segments on `--diff`
+  - Add `ColorizedReason` constructor to `FailureReason`
+  - Provide a new package `hspec-api`, a stable API that can be used to extend
+    Hspec's functionality.
+  - Deprecate `Test.Hspec.Core.Formatters.V1` in favor of
+    `Test.Hspec.Api.Formatters.V1`
+  - Add `--fail-on=empty-description`
+  - Print slow spec items to `stderr` instead of `stdout`
+  - Handle quoting/escaping in `.hspec` files
+  - Flush output handle after reporting progress on `-fprogress`
+
+## Changes in 2.10.10 (2023-03-07)
+  - Re-export `sequential` from `Test.Hspec`
+  - Rerun `beforeAll` / `afterAll` on `--rerun-all-on-success` (#768)
+
+## Changes in 2.10.9 (2023-01-13)
+  - Print error message on `-—fail-on=empty`
+  - Only fail on `-—fail-on=empty` if at least one spec item has been filtered
+  - Re-export more types from `Test.Hspec.Core.Runner`
+  - Fix a pretty-printing bug where `[]` would be pretty-printed as `""`
+  - Don't pretty-print if the expected and actual value would be equal after
+    pretty-printing
+  - Prevent deadlocks on unguarded exceptions in runner (#771)
+
+## Changes in 2.10.8 (2022-12-19)
+  - Add pretty-printing support for rational numbers
+  - Force / evaluate exceptions recursively (#763)
+  - Add `xprop` and `fprop`, which use `xit` and `fit` (thanks @lehins)
+
+## Changes in 2.10.7 (2022-12-03)
+  - Do not depend on `ghc` for pretty-printing (#750, #752)
+
+## Changes in 2.10.6 (2022-09-13)
+  - Suppress excessive diff output (#449)
+  - Allow the use of an external diff program.  This can e.g. be used by
+    setting `HSPEC_DIFF_COMMAND="diff -u --color -L expected -L actual"` or
+    `HSPEC_DIFF_COMMAND="git diff"`
+  - Do not imply `--fail-on=empty` on `--strict`
+
+## Changes in 2.10.5 (2022-09-09)
+  - Add `--fail-on`.  This subsums `--fail-on-focused` and `--fail-on-pending`.
+  - Add `--fail-on=empty` (#650)
+  - Add `registerFormatter` and `registerDefaultFormatter` to
+    `Test.Hspec.Runner`.
+  - Revert deprecation of `Test.Hspec.Formatters` and
+    `Test.Hspec.Core.Formatters`.  Instead the module documentation now says
+    that they are deprecated in favor of `Test.Hspec.Core.Formatters.V1`.
+
+## Changes in 2.10.4 (2022-09-06)
+  - Make sure that whitespace-only diff output is colorized properly (#660)
+
+## Changes in 2.10.3 (2022-09-05)
+  - Deprecate `Test.Hspec.Formatters` and `Test.Hspec.Core.Formatters`
+  - Disable (most) warnings in files generated by `hspec-discover` (#702)
+
+## Changes in 2.10.2 (2022-09-03)
+  - Add `--strict`
+  - Add `--fail-on-pending`
+  - Do not depend on `clock`
+
+## Changes in 2.10.1 (2022-08-22)
+  - Support for GHC 9.4.1
+  - Generated modules now include an export list
+
+## Changes in 2.10.0.1 (2022-08-06)
+  - Fix a deadlock with nested failed `aroundAll`s (see #679)
+
+## Changes in 2.10.0 (2022-05-12)
+  - Allow to transform the config in `SpecM`
+  - Allow to customize pretty-printing (via `configPrettyPrintFunction`)
+  - Add `getSpecDescriptionPath` (#637, thanks @srid)
+  - Do not treat `afterAll` as another spec item (fixes #414, #364, #363)
+  - Change type of `paramsSmallCheckDepth` to Maybe (see #345)
+
+## Changes in 2.9.7
+  - Ensure that interim output does not interfere with output from tests This
+    facilitates using `print` when debugging test cases.
+
+## Changes in 2.9.6
+  - Ensure color codes don't span newlines (#346, thanks @robx)
+  - Disable progress reporting on Buildkite
+  - Improve error messages on exceptions in hooks
+
+## Changes in 2.9.5
+  - Assume `--color` by default when running on GitHub Actions. Use
+    `HSPEC_COLOR=no` or `--no-color` to opt out of this behavior.
+  - Disable progress reporting on GitHub Actions.
+  - Retain source formatting of numbers when pretty-printing.
+
+## Changes in 2.9.4
+  - Compatibility with GHCJS (see #599)
+
+## Changes in 2.9.3
+  - Pretty-print Haskell values in failure messages
+
+## Changes in 2.9.2
+  - Show multi-line diffs for string literals (disable with `--no-pretty`)
+
+## Changes in 2.9.1
+  - Recover unicode from `ExpectedButGot`
+  - Preserve unicode in `To rerun use: --match ...` output
+
+## Changes in 2.9.0
+  - Add ASCII fallbacks to "checks" formatter (fixes #512)
+  - Use `checks` formatter by default (to restore the old behavior use
+    `--format specdoc`)
+  - Allow to extend the list of available formatters for `--format`
+    (`configAvailableFormatters`)
+  - Add `getExpectedTotalCount` to `Test.Hspec.Core.Formatters.V2`
+  - Rename `formatConfigItemCount` to `formatConfigExpectedTotalCount`
+  - Rename `configFastFail` to `configFailFast`
+
+## Changes in 2.8.5
+  - hspec-core: Include help.txt in package tarball (close #568)
+  - hspec-discover: Require base >=4.5.0.0 (fixes #554)
+
+## Changes in 2.8.4
+  - Better support for GHC 9.2.1
+  - Support for setting options by individual environment variables, e.g.
+    `HSPEC_COLOR=yes` will set `--color`
+
+## Changes in 2.8.3
+  - Better support for `--color=auto` on Windows
+  - Add support for spec hooks to `hspec-discover` (via `SpecHook.hs`)
+  - Propagate exceptions from `Test.Hspec.Core.Format.monadic`
+  - Re-export `aroundAll_` from `Test.Hspec`
+
+## Changes in 2.8.2
+  - Add `mapSubject` and `ignoreSubject`
+
+## Changes in 2.8.1
+  - Take the environment variable `NO_COLOR` into account
+
+## Changes in 2.8.0
+  - Add `--times` to print times for individual spec items
+  - Add `--print-slow-items`
+  - Use `-XNoImplicitPrelude` and do not rely on `base` for `hspec-discover`
+    generated test drivers. This ensures full compatibility with custom
+    preludes.
+  - Add new APIs for formatters `Test.Hspec.Core.Format` and
+    `Test.Hspec.Core.Formatters.V2`
+  - Add `getItemCount` to `Formatter` API
+  - Add `--qc-max-shrinks` (see #380)
+  - Add location information for failing `afterAll`-hooks
+  - hspec-discover: Deprecate `--no-main` and `--formatter` (use
+    `--module-name` instead) (#196)
+  - Remove `--verbose` option (this has been a noop since at least 2013)
+  - Remove `--out` option (use shell output redirection instead)
+
+## Changes in 2.7.10
+  - Add a new formatter (can be used with `--format checks`)
+  - Add `exampleStarted` to `Formatter` API
+
+## Changes in 2.7.9
+  - Re-export `aroundAll` and `aroundAllWith` from `Test.Hspec`
+
+## Changes in 2.7.8
+  - Add `aroundAll` / `aroundAllWith` (see #255)
+
+## Changes in 2.7.7
+  - Add `aroundAll_` (see #255)
+  - Correctly handle pending for `afterAll` actions
+
+## Changes in 2.7.6
+  - Add `beforeAllWith` (see #447)
+
+## Changes in 2.7.5
+  - Extract source locations from `NoMethodError` and `AssertionFailed`
+
+## Changes in 2.7.4
+  - Apply `--randomize` recursively
+
+## Changes in 2.7.3
+  - Add `--randomize`
+
+## Changes in 2.7.2
+  - Interrupt diff calculation if it takes longer than two seconds (see #415)
+
+## Changes in 2.7.1
+  - Add compatibility with QuickCheck 2.13.1 (see #410)
+
+## Changes in 2.7.0
+  - Add `--focused-only` (see #390)
+  - Add `--fail-on-focused` (see #389)
+
+## Changes in 2.6.1
+  - Add `Test.Hspec.Runner.runSpec` (see #216)
+
+## Changes in 2.6.0
+  - Allow to focus individual spec items (see #319)
+  - Do not calculate diff on `--no-diff` (see #332)
+  - Remove deprecated module Test.Hspec.Core
+
+## Changes in 2.5.9
+  - Extract source locations from RecConError (see #375)
+
+## Changes in 2.5.8
+  - Add `modifyArgs` and `modifyMaxShrinks` to `Test.Hspec.QuickCheck` (see #380)
+
+## Changes in 2.5.7
+  - GHC 8.6.1 related changes
+
+## Changes in 2.5.6
+  - Compatibility with `QuickCheck-2.12`
+
+## Changes in 2.5.5
+  - Use `module[line:column]` instead of `module:line:column` as default label
+    for `describe`/`it` (fixes #366)
+
+## Changes in 2.5.4
+  - Show how to rerun individual spec items on test failures (see #205)
+
+## Changes in 2.5.3
+  - Treat character escapes like `\NUL` as single tokens on `--diff` (see #351)
+  - Allow a `/` at the beginning and at the end of an absolute path that is
+    passed to `--match` or `--skip`
+
+## Changes in 2.5.2
+  - Use module:line:column as default label for describe/it (see #250)
+  - Warn if user is affected by https://ghc.haskell.org/trac/ghc/ticket/13285 (see #329)
+
+## Changes in 2.5.1
+  - Disable tests for Test.Hspec.Core.Timer (see #352)
+
+## Changes in 2.5.0
+  - Add `sequential` (see #311)
+  - Add support for `--diff` when `shouldBe` is uesd with
+    `QuickCheck`-properties
+  - Add source locations when `shouldBe` is uesd with `QuickCheck` properties
+  - Print `QuickCheck` labels on success (see #297)
+  - Retain output of `verbose`, `label`, `collect`, `classify`, etc. for
+    `QuickCheck` properties (see #257)
+  - Extract source location from error / undefined (see #316)
+  - Parse source locations from pattern match failures
+  - Include source column when formatting source locations
+  - Colorize whitespaces with background color instead of foreground color with
+    `--diff`
+  - Run `Test.Hspec.Core.Formatters.exampleProgress` in `FormatM` instead of
+    `IO`
+  - Make sure that progress output is always cleared (fixes #301)
+  - Add location information to `pending` (not used by any formatter yet)
+  - Include duration for each spec item in new formatter API (see #315) (not yet exposed)
+  - Removed deprecated module `Test.Hspec.HUnit`, use
+    `Test.Hspec.Contrib.HUnit` instead
+  - Deprecate `--out`
+  - Remove `BestEffort` source locations
+
+## Changes in 2.4.8
+  - compatibility with GHC 8.4.1-alpha3
+
+## Changes in 2.4.7
+  - compatibility with `QuickCheck-2.11.3` and up (note that `QuickCheck`
+    versions `2.11` to `2.11.2` are not fully supported)
+
+## Changes in 2.4.6
+  - compatibility with the upcoming version `4.11.0.0` of `base`
+
+## Changes in 2.4.5
+  - `hspec-discover`: Sort specs using natural sort order
+
+## Changes in 2.4.4
+  - Require quickcheck-io >= 0.2.0
+
+## Changes in 2.4.3
+  - Read command-line options from environment variable `HSPEC_OPTIONS`
+
+## Changes in 2.4.2
+  - Use `--diff` by default
+  - Add `--failure-report` (see #266)
+
+## Changes in 2.4.1
+  - Compatibility with HUnit < 1.3
+
+## Changes in 2.4.0
+  - Read command-line options from config files `~/.hspec` and `.hspec`
+  - Add support for `--diff`
+  - Add `xit`, `xspecify`, `xdescribe` and `xcontext` (see #252)
+  - Add `--rerun-all-on-success`
+  - Report exceptions in `beforeAll` operations only once
+  - Add indentation when actual/expected contain newlines (see #263)
+  - More graceful shutdown on ctrl-c (see #270)
+  - Run around-hook for Bool and Result (see #252)
+  - Include `CHANGES.markdown` in package tarball
+
+Internal changes:
+
+  - Rename `Fail` constructor of `Result`-type to `Failure`
+  - Add `FailureReason` type
+  - Add `Test.Hspec.Core.Spec.safeEvaluateExample`
+
+## Changes in 2.3.2
+  - Compatibility with HUnit 1.5
+
+## Changes in 2.3.1
+  - Fix build for HUnit < 1.4
+
+## Changes in 2.3.0
+  - Proper support for GHC 8 call stacks
+
+## Changes in 2.2.4
+  - Compatibility with QuickCheck-2.9
+
+## Changes in 2.2.3
+  - Make sure that `cabal haddock` works for `hspec-discover`
+  - Forward compatibility for HUnit 1.4
+  - Fix tests for GHC 8.0.1-rc1
+
+## Changes in 2.2.2
+  - Fix compilation for GHC 8.0.1-rc1
+
+## Changes in 2.2.1
+  - Make sure that Vim's default `errorformat` recognizes exact locations
+  - GHCJS compatibility
+
+## Changes in 2.2.0
+  - Add source locations to test `Result`
+
+## Changes in 2.1.10
+  - GHC 7.0.* compatibility
+
+## Changes in 2.1.9
+  - Make use of GHC 7.10.2 source locations
+  - Add `--jobs`
+
+## Changes in 2.1.8
+  - Depend on `hspec-expectations-0.7.0"
+
+## Changes in 2.1.7
+  - Add `beforeAll_`
+
+## Changes in 2.1.6
+  - If there were no previous failures, run all spec items on `--rerun`
+
+## Changes in 2.1.5
+  - Compatibility with QuickCheck-2.8
+
+## Changes in 2.1.4
+  - Make `hspec-discover` ignore modules with invalid module names, this fixes
+    issues with `flycheck`'s temporary files
+
+## Changes in 2.1.3
+  - Format source locations like gcc does
+
+## Changes in 2.1.2
+  - Re-export `before_` from `Test.Hspec`
+
+## Changes in 2.1.1
+  - Add `before_`
+  - Add command-line option `--skip`
+
+## Changes in 2.1.0
+  - Generalize `after_`, `afterAll_` and `around_`
+
+## Changes in 2.0.2
+  - Indent error messages for failed examples (fixes #186)
+  - Export `defaultParams` from `Test.Hspec.Core.Example`
+  - Bring back `Test.Hspec.HUnit` and deprecate it to provide a smother upgrade
+    path
+
+## Changes in 2.0.1
+  - Add missing extra source files to for `hspec-discover`
+
+## Changes in 2.0.0
+  - Split package into `hspec`, `hspec-core` and `hspec-discover`
+  - Allow hooks (`before`, `around`, etc.) to pass arguments to spec items
+  - Do not print `-` in front of spec items with `specdoc` formatter
+  - Move `Test.Hspec.HUnit` to `hspec-contrib`
+
+## Changes in 1.12.4
+  - Add `specGroup` and `specItem` to `Test.Hspec.Core`
+  - Deprecate `Test.Hspec.Core.it` and `Test.Hspec.Core.describe`
+
+## Changes in 1.12.3
+  - Make `hspec-discover` work with `-XNoImplicitPrelude`
+
+## Changes in 1.12.2
+  - Include `IOErrorType` when printing uncaught `IOException`s (see #204)
+
+## Changes in 1.12.1
+  - Add `--module-name` option to `hspec-discover` (see #168)
+
+## Changes in 1.12.0
+  - Add optional source location to spec items
+  - Move item requirement text from `SpecItem` constructor to `Item` data type
+  - Remove `BuildSpecs` constructor from `SpecTree`, having `runIO` this is not
+    really needed
+  - Add `mapSpecTree` to `Test.Hspec.Core`
+  - Add `afterAll` (see #188)
+  - Do not return `Result` from `hspecWith` and accept command-line options
+    (the old behavior is still available as `hspecWithResult`)
+  - Rename `configHandle` to `configOutputFile`
+  - Omit empty `describe` groups from report
+  - Do not pass position to `Formatter.exampleGroupStarted` (we can not support
+    this with the upcomming cleanup actions #188)
+  - Do not print empty lines before/after spec groups
+  - Deprecate `Test.Hspec.Formatters.newParagraph`
+
+## Changes in 1.11.4
+  - Make test suite independent from QuickCheck seed (see #187)
+
+## Changes in 1.11.3
+  - Depend on `hspec-expectations-0.6.1`
+
+## Changes in 1.11.2
+  - Add `beforeAll`
+
+## Changes in 1.11.1
+ - Add `specify` as an alias for `it`
+
+## Changes in 1.11.0
+ - Add `BuildSpecs` constructor to internal `SpecTree` data structure.  This
+   allows you to do `IO` while constructing the spec tree.
+ - Add `runIO`
+
+## Changes in 1.10.0
+ - Do not use exception type to distinguish between synchronous/asynchronous
+   exceptions (thanks to Michael Snoyman)
+ - Remove `Example` instance for `Test.HUnit.Test` (#101), use
+   `Test.Hspec.HUnit.fromHUnitTest` instead.
+ - Do not reexport `property` from `Test.Hspec.QuickCheck`
+ - Move `ProgressCallback` out of `Params`
+ - Add show instance for `Params`
+ - Move requirement text from `Item` to `SpecItem` constructor
+ - Remove deprecated modules and functions
+
+## Changes in 1.9.5
+ - Make sure that ctrl-c works properly with GHC 7.8.* and QuickCheck-2.6
+
+## Changes in 1.9.4
+ - Compatibility with transformers-0.4.0.0
+
+## Changes in 1.9.3
+ - Make internal Tree data structure more strict (#169)
+
+## Changes in 1.9.2
+ - Print type of exceptions that are raised from QuickCheck properties (#94)
+
+## Changes in 1.9.1
+ - Bring back compatibility with older versions of QuickCheck (#166)
+
+## Changes in 1.9.0
+ - Depend on QuickCheck 2.7
+
+## Changes in 1.8.3
+ - Do not use color if `TERM=dumb` (see #158)
+
+## Changes in 1.8.2
+ - `hspec-discover` now accepts `--no-main` which results in a top-level spec
+   being generated instead of a test driver (thanks @DanielG)
+ - Make sure that `after` is run on failing tests (see #159)
+
+## Changes in 1.8.1
+ - Add `shouldMatchList`
+
+## Changes in 1.8.0
+ - Run `before`/`after`/`around` for each single check of a QuickCheck property
+ - Add `Test.Hspec.Core.mapSpecItem`
+ - Add `modifyMaxSuccess`, `modifyMaxDiscardRatio` and `modifyMaxSize` to
+   `Test.Hspec.QuickCheck`
+ - Don't fail if callback is not called in `around`
+ - `hspec-discover`: Remove `--nested` option
+ - `hspec-discover`: Ignore `Spec.hs`/`Spec.lhs`
+
+## Changes in 1.7.2
+ - Add `after` and `around`
+
+## Changes in 1.7.1
+ - Add `shouldContain` (thanks to Alfredo Di Napoli)
+ - When printing progress, skip total if it is 0
+ - Do not colorize the description/requirement in failure list
+
+## Changes in 1.7.0
+ - Add `--depth` for use with `hspec-smallcheck`
+
+## Change in 1.6.2
+ - Add `before`
+ - Add `--qc-max-discard` and `--qc-max-size`
+
+## Changes in 1.6.1
+ - Allow to specify the output file with `--out`
+
+## Changes in 1.6.0
+ - Add support for parallelization
+ - Change license to MIT
+ - Add MonadIO instance for FormatM
+ - Add support for custom formatters to hspec-discover
+ - Add hspecResult
+ - Rename `--re-run` to `--rerun` + add documentation (#95)
+ - Remove `configVerbose`
+ - Use same `--qc-max-success` on `--rerun` (#125)
+ - Add command-line option `--no-color`, `--color` does not accept arguments
+   anymore (#130)
+
+## Changes in 1.5.4
+ - Make sure that QuickCheck is never chatty
+ - Make sure progress for QuickCheck examples is shown
+
+## Changes in 1.5.3
+ - Print "Randomized with seed ..." only once
+
+## Changes in 1.5.2
+ - Add `--seed`, it can be used to specify the seed for QuickCheck properties
+ - Reuse previous seed on `--re-run`
+
+## Changes in 1.5.1
+ - Depend on quickcheck-io
+
+## Changes in 1.5.0
+ - Allow to use expectations as QuickCheck properties (#80)
+ - Do not suppress output to `stdout`
+ - Change type of `pending` to `Expectation`, add `pendingWith` (#121)
+ - Add the `example` function, it fixes the type of an Expectation (#86)
+ - Rename `--fast-fail` to `--fail-fast` (for consistency with RSpec)
+ - Do not clutter Cabal test suite logs with QuickCheck output (#112)
+ - Skip redundant output from QuickCheck failure messages (#102)
+
+## Changes in 1.4.5
+ - hspec-discover now discovers .lhs files, too
+
+## Changes in 1.4.4
+ - Visually distinguish error message from requirements in the summary (#100)
+ - Export `formatException` from `Test.Hspec.Formatters`
+ - Add `--fast-fail` (#82)
+ - Print a summary on UserInterrupt/ctrl-c (#107)
+
+## Changes in 1.4.3
+ - Add `--dry-run` (#111)
+
+## Changes in 1.4.2
+ - Properly handle ctrl-c while running QuickCheck properties (#93)
+ - Default to `--color=always` when `--color` is used without argument (#106)
+ - treat `--qc-max-success` as an alias for `--maximum-generated-tests`
+
+## Changes in 1.4.1
+ - Used CPU time is now only included in the test summary if run with
+   `--print-cpu-time`.
+
+## Changes in 1.4.0
+ - We now have a manual at https://hspec.github.io/.  The sources are in
+   `doc/`.  It's still work in progress.  Contributions are very welcome!
+ - The Haddock documentation now indicates the stability of each exposed
+   module.  `Test.Hspec` is now considered stable.
+ - `hspec` now supports command-line options
+   - `--color` can be used to enable/disable colored output
+   - `--format` can be used to pick a specific formatter
+   - `--html` can be used to produce an HTML report
+   - `--maximum-generated-tests` can be used to specify QuickCheck's
+     `maxSuccess`
+   - `--match` only runs spec items that match a given string
+   - `--re-run` only runs spec items that previously failed.  This is
+     undocumented,
+     experimental and only works within GHCi (use `:reload` / `:main`)!
+ - Runner functions exported from `Test.Hspec.Runner` new expect a monadic
+   spec.
+ - `fromHUnitTest` has been added.  It can be used to run existing HUnit test
+   suites with Hspec.
+ - The `Example` instance for HUnit `Test`s has been deprecated.
+   `fromHUnitTest` can be used instead.  The primary motivation is, that
+   `fromHUnitTest` gives more detailed reporting for nested HUnit test suites.
+ - `Test.Hspec.Monadic` has been deprecated, all functionality is available
+   through one of `Test.Hspec`, `Test.Hspec.Core` or `Test.Hspec.Runner`.
+ - More of Hspec's internals are now exposed from `Test.Hspec.Core`
+ - All runner functions for the core spec type (aka as non-monadic spec) have
+   been deprecated, use e.g. `Test.Hspec.hspec . fromSpecList` instead.  The
+   motivation is to provide an API that does not expose colliding names.
+ - Some other stuff from `Test.Hspec.Core` that collides with other parts of
+   the API has been deprecated.  Compatible alternatives are given in each
+   deprecation message.
+ - The default formatter now produces less whitespace (#73) + other minor
+   improvements
+ - The formatter API has been revamped.
+ - The exception type is now printed if an example fails due to an exception
+   (#50)
+ - The number of pending examples is now printed after each test run (#85)
+ - `--verbose` has been added (#87)
+
+## Changes in 1.3.0
+
+ - `Test.Hspec` now re-exports the monadic API.  If you still use the
+   non-monadic API, you can use `Test.Hspec.Core` as a drop-in replacement.
+
+ - `hspec-expectations`, a set of combinators that allow to express
+   expectations about the outcome of code examples, is now included with Hspec.
+   Have a look at the [README of `hspec-expectations`]
+   (https://github.com/sol/hspec-expectations#readme)
+   for a short introduction.
+
+ - `hspec-discover`, a mechanism for automatic spec discovery, is now an
+   official part of Hspec.
+   Have a look at [`hspec-discover`'s README]
+   (https://github.com/hspec/hspec/tree/main/hspec-discover#readme)
+   for a short introduction.
+
+## Changes in 1.2.0
+
+ - `hspec` has been removed, and `hspecX` has been renamed to `hspec` (see
+   [#71](https://github.com/hspec/hspec/issues/71))
+
+ - `hHspec` now returns a summary of the test run.
+
+ - The time reporting after a test run is not colored anymore.
+
+## Changes in 1.1.3
+
+ - `Test.Hspec` warns now about future changes: It will re-export
+   `Test.Hspec.Monadic` in the future.  If you still use the non-monadic API,
+   you can either use `Test.Hspec.Core` as a drop-in replacement, or migrate your
+   code to the monadic API.
+
+   The monadic API is more stable and easier to use.  Now is a good time to
+   switch!
+
+ - `Test.Hspec.Core` is now a proper superset of `Test.Hspec`
+
+## Changes in 1.1.2
+
+ * All descriptions of nested examples are now included in summary for failing
+   examples
+
+ * `context` is now an alias for `describe`
+
+## Changes in 1.1.1
+
+ * Specs from Test.Hspec.Monadic has been renamed to Spec.  For backward
+   compatibility Specs is still kept as an alias.
+
+## Changes in 1.1.0
+
+### The reason for pending examples is now optional
+
+With this change, both of the following code snippets work.
+
+```haskell
+it "some behavior" $
+  pending  -- no reason given
+```
+
+```haskell
+it "some other behavior" $
+  pending "some reason"
+```
+
+### Hspec does not rely on ExistentialQuantification anymore
+
+### The type used to represent specs is now abstract
+
+This should give more useful error messages when adapting old specs that use
+the non-monadic API for `hspec-1.0`/`hspec-1.1`.
+
+### Several internal types and functions have been deprecated
+
+Those are internal functions, and they will be removed/hidden with the next
+release.  If you use any of those, update your code.  If you really need them,
+[open a ticket](https://github.com/hspec/hspec/issues) and describe your use
+case.
+
+## Changes in 1.0.0
+
+### Hspec now re-uses QuickCheck's property function
+
+`Test.Hspec.QuickCheck.property` is now simply a re-exports of
+`Test.QuickCheck.property`.  This has the advantage that you do not get a name
+collision if you import both, `Test.Hspec.QuickCheck` and `Test.QuickCheck`.
+
+### Better support for nested specs
+
+*NOTE: This is a breaking change to the non-monadic API.  The monadic API is
+not affected.*
+
+In some situations parent descriptions for nested specs were not included in
+the generated report.  Solving this required a change to the data structure
+that is used to represent specs (it was not a proper tree, now it is).
+
+#### Updating specs that use the non-monadic API
+
+The runner functions (`hspec`, `hspecB` and `hspecX`) now take a list of
+descriptions.
+
+The following works with `hspec-0.9`, but not with `hspec-1.0`.
+
+```haskell
+main = hspecX $
+  describe "reverse" [
+    it "reverses a list" $
+      reverse [1, 2, 3] == [3, 2, 1],
+
+    it "gives the original list, if applied twice" $ property $
+      \xs -> reverse (reverse xs) == (xs :: [Int])
+  ]
+
+```
+
+For `hspec-1.0`, you need to wrap it into a list.
+
+```haskell
+main = hspecX [
+    describe "reverse" [
+      it "reverses a list" $
+        reverse [1, 2, 3] == [3, 2, 1],
+
+      it "gives the original list, if applied twice" $ property $
+        \xs -> reverse (reverse xs) == (xs :: [Int])
+    ]
+  ]
+```
+
+Specs consisting of several *describes*, combined with `descriptions`, continue
+to work unchanged.  But `descriptions` is now a noop, and it will be removed in
+a future release.  So it is a good idea to drop it.
+
+The following works with both `hspec-0.9` and `hspec-1.0`.
+
+```haskell
+main = hspecX $ descriptions [  -- descriptions is redundant
+    describe "Foo" [
+      it "has some behavior" True
+    ]
+  , describe "Bar" [
+      it "has some behavior" True
+    ]
+  ]
+```
+
+But the following is recommended instead.
+
+```haskell
+main = hspecX [
+    describe "Foo" [
+      it "has some behavior" True
+    ]
+  , describe "Bar" [
+      it "has some behavior" True
+    ]
+  ]
+```
+
+### A new monadic API for custom Formatters
+
+For all the details, have a look at the [docs]
+(https://hackage.haskell.org/packages/archive/hspec/latest/doc/html/Test-Hspec-Formatters.html).
+
+
+### The total time required to run a spec is now included in the summary
+
+In addition to the used CPU time, the total time required to run a spec is now
+include in the summary.  This is useful for specs that do non-CPU-intensive
+stuff, or fork subprocesses.
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2011-2015 Simon Hengel <sol@typeful.net>
+Copyright (c) 2011-2026 Simon Hengel <sol@typeful.net>
 Copyright (c) 2011-2012 Trystan Spangler <trystan.s@comcast.net>
 Copyright (c) 2011-2011 Greg Weber <greg@gregweber.info>
 
diff --git a/changelog b/changelog
deleted file mode 100644
--- a/changelog
+++ /dev/null
@@ -1,1 +0,0 @@
-See https://github.com/hspec/hspec/blob/master/CHANGES.markdown
diff --git a/hspec.cabal b/hspec.cabal
--- a/hspec.cabal
+++ b/hspec.cabal
@@ -1,21 +1,26 @@
+cabal-version: 1.12
+
+-- This file has been generated from package.yaml by hpack version 0.39.1.
+--
+-- see: https://github.com/sol/hpack
+
 name:             hspec
-version:          2.1.10
+version:          2.11.17
 license:          MIT
 license-file:     LICENSE
-copyright:        (c) 2011-2015 Simon Hengel,
+copyright:        (c) 2011-2026 Simon Hengel,
                   (c) 2011-2012 Trystan Spangler,
                   (c) 2011 Greg Weber
 maintainer:       Simon Hengel <sol@typeful.net>
 build-type:       Simple
-cabal-version:    >= 1.10
 category:         Testing
 stability:        experimental
 bug-reports:      https://github.com/hspec/hspec/issues
-homepage:         http://hspec.github.io/
+author:           Simon Hengel <sol@typeful.net>
+homepage:         https://hspec.github.io/
 synopsis:         A Testing Framework for Haskell
-description:      Hspec is a testing framework for Haskell. It is inspired by
-                  the Ruby library RSpec. Some of Hspec's distinctive features
-                  are:
+description:      Hspec is a testing framework for Haskell.  Some of Hspec's distinctive
+                  features are:
                   .
                   * a friendly DSL for defining tests
                   .
@@ -25,57 +30,33 @@
                   .
                   * automatic discovery of test files
                   .
-                  The Hspec Manual is at <http://hspec.github.io/>.
-
+                  The Hspec Manual is at <https://hspec.github.io/>.
 extra-source-files:
-  changelog
+    version.yaml
+    CHANGES.markdown
 
 source-repository head
   type: git
   location: https://github.com/hspec/hspec
 
 library
-  ghc-options:
-      -Wall
+  ghc-options: -Wall
   hs-source-dirs:
       src
   build-depends:
-      base == 4.*
-    , hspec-core == 2.1.10
-    , hspec-discover == 2.1.10
-    , hspec-expectations == 0.7.1.*
-    , transformers >= 0.2.2.0
-    , QuickCheck >= 2.5.1
-    , HUnit >= 1.2.5
+      QuickCheck >=2.12
+    , base ==4.*
+    , hspec-core ==2.11.17
+    , hspec-discover ==2.11.17
+    , hspec-expectations ==0.8.4.*
   exposed-modules:
       Test.Hspec
-      Test.Hspec.Runner
+      Test.Hspec.Discover
       Test.Hspec.Formatters
       Test.Hspec.QuickCheck
-      Test.Hspec.Discover
-      Test.Hspec.Core
-      Test.Hspec.HUnit
-  default-language: Haskell2010
-
-test-suite spec
-  type:
-      exitcode-stdio-1.0
-  ghc-options:
-      -Wall
-  hs-source-dirs:
-      test
-  main-is:
-      Spec.hs
+      Test.Hspec.Runner
   other-modules:
-      Helper
-      HelperSpec
-      Test.Hspec.DiscoverSpec
-  build-depends:
-      base == 4.*
-    , hspec-core
-    , hspec
-
-    , directory
-    , stringbuilder
-    , hspec-meta >= 2.1.5
+      Paths_hspec
   default-language: Haskell2010
+  if impl(ghc)
+    cpp-options: -DENABLE_SPEC_HOOK_ARGS
diff --git a/src/Test/Hspec.hs b/src/Test/Hspec.hs
--- a/src/Test/Hspec.hs
+++ b/src/Test/Hspec.hs
@@ -4,29 +4,52 @@
 -- Hspec is a testing framework for Haskell.
 --
 -- This is the library reference for Hspec.
--- The <http://hspec.github.io/ User's Manual> contains more in-depth
+-- The <https://hspec.github.io/ User's Manual> contains more in-depth
 -- documentation.
 module Test.Hspec (
 -- * Types
   Spec
 , SpecWith
-, Arg
 , Example
+, Arg
 
 -- * Setting expectations
 , module Test.Hspec.Expectations
 
 -- * Defining a spec
-, describe
-, context
 , it
 , specify
+, describe
+, context
 , example
-, pending
-, pendingWith
 , parallel
+, sequential
 , runIO
 
+-- * Pending spec items
+-- |
+-- During a test run a /pending/ spec item is:
+--
+-- 1. not executed
+--
+-- 1. reported as \"pending\"
+, pending
+, pendingWith
+, xit
+, xspecify
+, xdescribe
+, xcontext
+
+-- * Focused spec items #focus#
+-- |
+-- During a test run, when a spec contains /focused/ spec items, all other spec
+-- items are ignored.
+, focus
+, fit
+, fspecify
+, fdescribe
+, fcontext
+
 -- * Hooks
 , ActionWith
 , before
@@ -34,6 +57,7 @@
 , beforeWith
 , beforeAll
 , beforeAll_
+, beforeAllWith
 , after
 , after_
 , afterAll
@@ -41,6 +65,11 @@
 , around
 , around_
 , aroundWith
+, aroundAll
+, aroundAll_
+, aroundAllWith
+, mapSubject
+, ignoreSubject
 
 -- * Running a spec
 , hspec
@@ -65,11 +94,3 @@
 -- >   putStrLn
 example :: Expectation -> Expectation
 example = id
-
--- | @context@ is an alias for `describe`.
-context :: String -> SpecWith a -> SpecWith a
-context = describe
-
--- | @specify@ is an alias for `it`.
-specify :: Example a => String -> a -> SpecWith (Arg a)
-specify = it
diff --git a/src/Test/Hspec/Core.hs b/src/Test/Hspec/Core.hs
deleted file mode 100644
--- a/src/Test/Hspec/Core.hs
+++ /dev/null
@@ -1,18 +0,0 @@
--- | Stability: unstable
-module Test.Hspec.Core {-# DEPRECATED "use \"Test.Hspec.Core.Spec\" instead" #-} (
-  module Test.Hspec.Core.Spec
--- * Deprecated functions
-, describe
-, it
-) where
-
-import           Test.Hspec.Core.Spec hiding (describe, it)
-
-
-{-# DEPRECATED describe "use `specGroup` instead" #-}
-describe :: String -> [SpecTree a] -> SpecTree a
-describe = specGroup
-
-{-# DEPRECATED it "use `specItem` instead" #-}
-it :: Example a => String -> a -> SpecTree (Arg a)
-it = specItem
diff --git a/src/Test/Hspec/Discover.hs b/src/Test/Hspec/Discover.hs
--- a/src/Test/Hspec/Discover.hs
+++ b/src/Test/Hspec/Discover.hs
@@ -1,3 +1,5 @@
+{-# OPTIONS_GHC -fno-warn-deprecations #-}
+{-# OPTIONS_HADDOCK hide #-}
 {-# LANGUAGE FlexibleInstances #-}
 module Test.Hspec.Discover {-# WARNING
   "This module is used by @hspec-discover@.  It is not part of the public API and may change at any time."
@@ -11,17 +13,9 @@
 , module Prelude
 ) where
 
-import           Prelude hiding (mapM)
-import           Control.Applicative
-import           Data.Maybe
-import           Data.List
-import           Data.Traversable
-import           Control.Monad.Trans.State
-
 import           Test.Hspec.Core.Spec
 import           Test.Hspec.Core.Runner
-import           Test.Hspec.Formatters
-import           Test.Hspec.Core.Util (safeTry)
+import           Test.Hspec.Core.Formatters.V1
 
 class IsFormatter a where
   toFormatter :: a -> IO Formatter
@@ -38,62 +32,4 @@
   hspecWith defaultConfig {configFormatter = Just f} spec
 
 postProcessSpec :: FilePath -> Spec -> Spec
-postProcessSpec = locationHeuristicFromFile
-
-locationHeuristicFromFile :: FilePath -> Spec -> Spec
-locationHeuristicFromFile file spec = do
-  mInput <- either (const Nothing) Just <$> (runIO . safeTry . readFile) file
-  let lookupLoc = maybe (\_ _ _ -> Nothing) (lookupLocation file)  mInput
-  runIO (runSpecM spec) >>= fromSpecList . addLoctions lookupLoc
-
-addLoctions :: (Int -> Int -> String -> Maybe Location) -> [SpecTree a] -> [SpecTree a]
-addLoctions lookupLoc = map (fmap f) . enumerate
-  where
-    f :: ((Int, Int), Item a) -> Item a
-    f ((n, total), item) = item {itemLocation = itemLocation item <|> lookupLoc n total (itemRequirement item)}
-
-type EnumerateM = State [(String, Int)]
-
-enumerate :: [SpecTree a] -> [Tree (ActionWith a) ((Int, Int), (Item a))]
-enumerate tree = (mapM (traverse addPosition) tree >>= mapM (traverse addTotal)) `evalState` []
-  where
-    addPosition :: Item a -> EnumerateM (Int, Item a)
-    addPosition item = (,) <$> getOccurrence (itemRequirement item) <*> pure item
-
-    addTotal :: (Int, Item a) -> EnumerateM ((Int, Int), Item a)
-    addTotal (n, item) = do
-      total <- getTotal (itemRequirement item)
-      return ((n, total), item)
-
-    getTotal :: String -> EnumerateM Int
-    getTotal requirement = do
-      gets $ fromMaybe err . lookup requirement
-      where
-        err = error ("Test.Hspec.Discover.getTotal: No entry for requirement " ++ show requirement ++ "!")
-
-    getOccurrence :: String -> EnumerateM Int
-    getOccurrence requirement = do
-      xs <- get
-      let n = maybe 1 succ (lookup requirement xs)
-      put ((requirement, n) : filter ((/= requirement) . fst) xs)
-      return n
-
-lookupLocation :: FilePath -> String -> Int -> Int -> String -> Maybe Location
-lookupLocation file input n total requirement = loc
-  where
-    loc :: Maybe Location
-    loc = Location file <$> line <*> pure 0 <*> pure BestEffort
-
-    line :: Maybe Int
-    line = case occurrences of
-      xs | length xs == total -> Just (xs !! pred n)
-      _ -> Nothing
-
-    occurrences :: [Int]
-    occurrences = map fst (filter p inputLines)
-      where
-        p :: (Int, String) -> Bool
-        p = isInfixOf (show requirement) . snd
-
-    inputLines :: [(Int, String)]
-    inputLines = zip [1..] (lines input)
+postProcessSpec _ = id
diff --git a/src/Test/Hspec/Formatters.hs b/src/Test/Hspec/Formatters.hs
--- a/src/Test/Hspec/Formatters.hs
+++ b/src/Test/Hspec/Formatters.hs
@@ -1,2 +1,8 @@
-module Test.Hspec.Formatters (module Test.Hspec.Core.Formatters) where
-import           Test.Hspec.Core.Formatters
+{-# OPTIONS_GHC -fno-warn-deprecations #-}
+-- |
+-- Stability: deprecated
+module Test.Hspec.Formatters
+{-# DEPRECATED "Use [Test.Hspec.Api.Formatters.V1](https://hackage.haskell.org/package/hspec-api/docs/Test-Hspec-Api-Formatters-V1.html) instead." #-}
+(module Test.Hspec.Core.Formatters.V1)
+where
+import           Test.Hspec.Core.Formatters.V1
diff --git a/src/Test/Hspec/HUnit.hs b/src/Test/Hspec/HUnit.hs
deleted file mode 100644
--- a/src/Test/Hspec/HUnit.hs
+++ /dev/null
@@ -1,24 +0,0 @@
-module Test.Hspec.HUnit {-# DEPRECATED "use \"Test.Hspec.Contrib.HUnit\" from package @hspec-contrib@ instead" #-}
-(
--- * Interoperability with HUnit
-  fromHUnitTest
-) where
-
-import           Test.Hspec.Core.Spec
-import           Test.HUnit (Test (..))
-
--- |
--- Convert a HUnit test suite to a spec.  This can be used to run existing
--- HUnit tests with Hspec.
-fromHUnitTest :: Test -> Spec
-fromHUnitTest t = case t of
-  TestList xs -> mapM_ go xs
-  x -> go x
-  where
-    go :: Test -> Spec
-    go t_ = case t_ of
-      TestLabel s (TestCase e) -> it s e
-      TestLabel s (TestList xs) -> describe s (mapM_ go xs)
-      TestLabel s x -> describe s (go x)
-      TestList xs -> describe "<unlabeled>" (mapM_ go xs)
-      TestCase e -> it "<unlabeled>" e
diff --git a/src/Test/Hspec/QuickCheck.hs b/src/Test/Hspec/QuickCheck.hs
--- a/src/Test/Hspec/QuickCheck.hs
+++ b/src/Test/Hspec/QuickCheck.hs
@@ -1,22 +1,19 @@
-{-# LANGUAGE CPP #-}
-#if MIN_VERSION_base(4,8,1)
-#define HAS_SOURCE_LOCATIONS
-{-# LANGUAGE ImplicitParams #-}
-#endif
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE ConstraintKinds #-}
 module Test.Hspec.QuickCheck (
 -- * Params
-  modifyMaxSuccess
+  modifyArgs
+, modifyMaxSuccess
 , modifyMaxDiscardRatio
 , modifyMaxSize
+, modifyMaxShrinks
 
 -- * Shortcuts
 , prop
+, xprop
+, fprop
 ) where
 
-#ifdef HAS_SOURCE_LOCATIONS
-import           GHC.Stack
-#endif
-
 import           Test.Hspec
 import           Test.QuickCheck
 import           Test.Hspec.Core.QuickCheck
@@ -27,11 +24,37 @@
 --
 -- is a shortcut for
 --
--- > it ".." $ property $
--- >   ..
-#ifdef HAS_SOURCE_LOCATIONS
-prop :: (?loc :: CallStack, Testable prop) => String -> prop -> Spec
-#else
-prop :: (Testable prop) => String -> prop -> Spec
-#endif
+-- @
+-- `it` ".." $ `property` $
+--   ..
+-- @
+prop :: (HasCallStack, Testable prop) => String -> prop -> Spec
 prop s = it s . property
+
+
+-- |
+-- > xprop ".." $
+-- >   ..
+--
+-- is a shortcut for
+--
+-- @
+-- `xit` ".." $ `property` $
+--   ..
+-- @
+xprop :: (HasCallStack, Testable prop) => String -> prop -> Spec
+xprop s = xit s . property
+
+
+-- |
+-- > fprop ".." $
+-- >   ..
+--
+-- is a shortcut for
+--
+-- @
+-- `fit` ".." $ `property` $
+--   ..
+-- @
+fprop :: (HasCallStack, Testable prop) => String -> prop -> Spec
+fprop s = fit s . property
diff --git a/test/Helper.hs b/test/Helper.hs
deleted file mode 100644
--- a/test/Helper.hs
+++ /dev/null
@@ -1,17 +0,0 @@
-module Helper (
-  module Test.Hspec.Meta
-, withFileContent
-) where
-
-import           Control.Exception (finally)
-import           System.Directory
-import           System.IO
-import           Test.Hspec.Meta
-
-withFileContent :: String -> (FilePath -> IO a) -> IO a
-withFileContent input action = do
-  dir <- getTemporaryDirectory
-  (file, h) <- openTempFile dir "temp"
-  hPutStr h input
-  hClose h
-  action file `finally` removeFile file
diff --git a/test/HelperSpec.hs b/test/HelperSpec.hs
deleted file mode 100644
--- a/test/HelperSpec.hs
+++ /dev/null
@@ -1,18 +0,0 @@
-module HelperSpec (main, spec) where
-
-import           Helper
-import           System.IO.Error (isDoesNotExistError)
-
-main :: IO ()
-main = hspec spec
-
-spec :: Spec
-spec = do
-  describe "withFileContent" $ do
-    it "creates a file with specified content and runs specified action" $ do
-      withFileContent "foo" $ \file -> do
-        readFile file `shouldReturn` "foo"
-
-    it "removes file after action has been run" $ do
-      file <- withFileContent "foo" return
-      readFile file `shouldThrow` isDoesNotExistError
diff --git a/test/Spec.hs b/test/Spec.hs
deleted file mode 100644
--- a/test/Spec.hs
+++ /dev/null
@@ -1,1 +0,0 @@
-{-# OPTIONS_GHC -F -pgmF hspec-meta-discover #-}
diff --git a/test/Test/Hspec/DiscoverSpec.hs b/test/Test/Hspec/DiscoverSpec.hs
deleted file mode 100644
--- a/test/Test/Hspec/DiscoverSpec.hs
+++ /dev/null
@@ -1,74 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-{-# OPTIONS_GHC -fno-warn-deprecations #-}
-module Test.Hspec.DiscoverSpec (main, spec) where
-
-import           Helper
-import           Data.String
-import           Data.String.Builder
-
-import qualified Test.Hspec.Core.Spec as H
-import           Test.Hspec.Core (Tree(..), Item(..), Location(..), LocationAccuracy(..), runSpecM)
-import qualified Test.Hspec.Discover as H
-
-infix 1 `shouldHaveLocation`
-
-shouldHaveLocation :: Item a -> (String, Int) -> Expectation
-item `shouldHaveLocation` (src, line) = itemLocation item `shouldBe` Just (Location src line 0 BestEffort)
-
-removeLocations :: H.SpecWith a -> H.SpecWith a
-removeLocations = H.mapSpecItem_ (\item -> item{H.itemLocation = Nothing})
-
-main :: IO ()
-main = hspec spec
-
-spec :: Spec
-spec = do
-  describe "postProcessSpec" $ do
-    it "adds heuristic source locations" $ do
-      let c = build $ do
-            ""
-            strlit "foo"
-            ""
-            strlit "bar"
-            ""
-            strlit "baz"
-      withFileContent c $ \src -> do
-        [Leaf item1, Leaf item2, Leaf item3] <- runSpecM . H.postProcessSpec src . removeLocations $ do
-          H.it "foo" True
-          H.it "bar" True
-          H.it "baz" True
-        item1 `shouldHaveLocation` (src, 2)
-        item2 `shouldHaveLocation` (src, 4)
-        item3 `shouldHaveLocation` (src, 6)
-
-    context "when same requirement is used multiple times" $ do
-      it "assigns locations sequentially" $ do
-        let c = build $ do
-              strlit "foo"
-              strlit "foo"
-              strlit "foo"
-        withFileContent c $ \src -> do
-          [Leaf item1, Leaf item2, Leaf item3] <- runSpecM . H.postProcessSpec src . removeLocations $ do
-            H.it "foo" True
-            H.it "foo" True
-            H.it "foo" True
-          item1 `shouldHaveLocation` (src, 1)
-          item2 `shouldHaveLocation` (src, 2)
-          item3 `shouldHaveLocation` (src, 3)
-
-      context "when a requirement occurs more often in the spec tree than in the source file" $ do
-        it "assigns Nothing" $ do
-          let c = build $ do
-                strlit "foo"
-                strlit "foo"
-          withFileContent c $ \src -> do
-            [Leaf item1, Leaf item2, Leaf item3] <- runSpecM . H.postProcessSpec src . removeLocations $ do
-              H.it "foo" True
-              H.it "foo" True
-              H.it "foo" True
-            itemLocation item1 `shouldBe` Nothing
-            itemLocation item2 `shouldBe` Nothing
-            itemLocation item3 `shouldBe` Nothing
-  where
-    strlit :: String -> Builder
-    strlit = fromString . show
diff --git a/version.yaml b/version.yaml
new file mode 100644
--- /dev/null
+++ b/version.yaml
@@ -0,0 +1,7 @@
+version: &version 2.11.17
+synopsis: A Testing Framework for Haskell
+author: Simon Hengel <sol@typeful.net>
+maintainer: Simon Hengel <sol@typeful.net>
+category: Testing
+stability: experimental
+homepage: https://hspec.github.io/
