Changelog
v0.2.7 (2025-10-16)
Features
- add debug logging for prune search (3348e3f)
- revert back to using index as storage (7c0e372)
- add icon to OpenSearch Description XML (5cc6ab7)
- serve assets from root (60b8ef0)
- add favicon (43ad85a)
Fixes
v0.2.6 (2025-10-06)
Features
- restart instead of stopping service during generation switches (d94a199)
- use sd_notify for watchdog and status notification (49031e3)
Fixes
- incorrectly selecting too many entities to prune (eeac61c)
- avoid listener error on shutdown (6d79f11)
- CSS not allowed by subresource integrity (disable for now) (c4dc9b2)
v0.2.5 (2025-09-03)
Features
- also prune storage and index on SIGUSR1 (afc540f)
- improve logging of pruning process (dd9ca0b)
- improve logging of errors in source ID handler (7f75159)
- include search query in error messages (77a8dec)
- make manual fetch always update sources (ff56604)
Fixes
- abort pruning if too many entities selected (6ae7560)
v0.2.4 (2025-08-25)
Features
Fixes
- not re-indexing despite –reindex argument (5afd91c)
v0.2.3 (2025-08-25)
Features
Fixes
- always re-index if storage is (re-)created (12a29a5)
- invalid config generated by nixos module (0da8640)
- unable to set log level from nixos module (6d42ad1)
- add missing prefix to version link in footer (5c14549)
v0.2.2 (2025-08-21)
Features
Fixes
v0.2.1 (2025-08-13)
Features
- remove entities not present in current import (d6d0bf3)
- pretty-print schema metadata file (85276e9)
- store import timestamp on entities (35226fd)
Fixes
v0.2.0 (2025-08-13)
⚠ BREAKING CHANGE
- searchix-web requires serveargument
Features
- add check-config command (6196d25)
- split storage import and indexing (40d106a)
- store data separate from search index (520dcca)
- add offline flag to reindex (mostly for dev) (21e9e77)
- improve tracking and display of import runs (faf67ad)
- add –fetch action to populate data/sources (001c5b4)
- make downloaded filenames consistent (a49d405)
- store fetched files in data directory (bdb5a54)
- limit file operations using os.Root (1d518f4)
- switch from errors to fault (3dfbd8d)
Fixes
- update search index as part of update timer (a1bbe1c)
- styles broken after updates due to stale cache/hash mismatch (450ff2d)
- handle missing manpage URL map without aborting (a34ba86)
- set date of files copied from nix store (762d97b)
- don’t try to parse an empty last-modified header (cee1276)
- error saving metadata when re-indexing (3e92836)
- don’t log and exit on graceful shutdown timeout (1db432a)
- import package even with incorrect ‘homePage’ casing (4c66828)
- re-enable margin-top for headers in full page view (7b08d54)
v0.1.46 (2025-07-07)
Features
v0.1.45 (2025-07-07)
Features
- add link to status page (35aa773)
Fixes
- set default values for custom sources (756d8f1)
- avoid panic when rendering combined data (1685f38)
- panic rendering corrupted data (a2b341d)
v0.1.44 (2025-06-25)
Fixes
- descriptions truncated by one character (e7d8aad)
- remove trailing full-stop from single-sentence descriptions (c102058)
v0.1.43 (2025-06-12)
Fixes
- first sentence of some descriptions cut off (f608afd)
v0.1.42 (2025-06-12)
Features
- link man pages like how NixOS does it (2f2d869)
- parse {man} in markdown documentation (813e5a2)
- parse {file} in markdown documentation (a4c441f)
- parse {var} in markdown documentation (d296272)
- parse {env} in markdown documentation (7ab69fb)
- parse {command} in markdown documentation (cb907ad)
- parse {option} in markdown documentation (0ba69e5)
- enable parsing of markdown fences (2d958a5)
- create option link parser (93b800b)
v0.1.41 (2025-06-09)
Features
- improve logging of import process (e0e35b1)
- enable automatic re-indexing on schema version changes (1d4eff7)
Fixes
- matching long prefixes in option names (regression) (d2bc9be)
- don’t quit after generating index for first time (7514e61)
- keep names_with_underscores as single tokens (87f2c60)
v0.1.40 (2025-05-29)
Fixes
- exact/prefix matches for package name/attr not shown (1f7e995)
v0.1.39 (2025-05-29)
Fixes
- match option name prefixes even when len > 25 (61f28d3)
v0.1.38 (2025-04-13)
Features
Fixes
- scroll header nav instead of wrapping words on tablets (8d11809)
v0.1.37 (2025-04-06)
Fixes
- package definition link regressed since v0.1.31 (0cceea8)
- missing base.css in package lib folder (2b50775)
v0.1.36 (2025-04-03)
Features
Fixes
- prioritise exact attribute matches above all (c2bbda8)
- erroneously running importer on every startup (e699eaa)
v0.1.35 (2025-04-02)
Features
- enable searching homepages field (0ceaf8e)
- improve logging of next import time (00b189d)
- make index batch size configurable (f38ccb5)
- list package platforms in detail view (f8f4f74)
Fixes
- importer timeout ignored in scheduler (75c2afd)
v0.1.34 (2025-03-24)
Features
Fixes
- another typo in search markup (efaaf3f)
- typo in indexing status (fecc84f)
- nil pointer panic in importer (0fb48cf)
v0.1.33 (2025-03-24)
Fixes
- build failure due to outdated file reference (dd58d99)
v0.1.32 (2025-03-24)
Features
- improve handling of long option descriptions (4fa3ceb)
- widen body (1c56ff7)
- improve display of indexing times and durations (297a7a2)
- link directly to version changelog in footer (7d4ff28)
- js: allow opening details in new tab/window (03fa0eb)
- promote prefix/exact name/attr matches (1328df9)
Fixes
- missing content of last index run time (0dc2635)
- block single-character queries (0cd9a24)
- don’t attempt to load more than configured number of results (d39204e)
v0.1.31 (2025-03-22)
Features
- nixos-module: allow setting environment variables (e8fbdf3)
- nixos-module: allow setting environment variables (78fc3e6)
- demote NUR results in combined search (782b636)
- promote results with literal or prefix name matches (49a07fb)
- make list of source links dynamic (7247322)
- enable NUR package import (2705e97)
- wrap search form in semantic element (ff1e953)
- show last/next/current indexing run time (383ee78)
- shorten shutdown timeout in development (49e3004)
- Convert templ components to gomponents (896d844)
Fixes
- remove rendering from search timeout restriction (d4ec6e5)
- package programs displayed off-centre (de98780)
- footer spacing (c0c02ac)
- detach version from rest of footer text (6b342b8)
- wrong pagination links for combined results (9102aef)
v0.1.30 (2025-03-18)
Features
- show version number and link in footer (5762645)
- split compound words in names into n-grams (b650b99)
v0.1.29 (2025-03-17)
Fixes
- nil pointer deference in nixpkgs-channel fetcher (573e24b)
- build error (incomplete commit) (d5e1147)
- build error caused by incomplete commit (f775db9)
v0.1.28 (2025-03-12)
Fixes
- js error due to missing class on nav menu item (9af2747)
v0.1.27 (2025-03-11)
Fixes
- sources disabled by default in NixOS module (333bd2f)
v0.1.26 (2025-03-11)
Fixes
- nixos import fails with default settings (5cdcac9)
v0.1.25 (2025-03-11)
Features
- link to referenced projects (cb37af4)
Fixes
- panic when source order > number of sources (d99fb7b)
v0.1.24 (2025-03-11)
Fixes
- js: switching source after reset uses old query (12947e5)
v0.1.23 (2025-03-10)
Fixes
- remove duplicate link to source code (1fe30ce)
v0.1.22 (2025-03-10)
Features
- default to combined search on root path (05a32bd)
v0.1.21 (2025-03-06)
Features
- prioritise exact matches on programs/attr/name field (6c9a3a9)
- improve relevance with compound words (24e3fc9)
Fixes
- re-index refusing to delete data directory with programs.db (3ee8248)
v0.1.20 (2025-01-24)
Fixes
- build failure (bad rebase) (2d6315f)
v0.1.19 (2025-01-24)
Fixes
- import slowdown when querying programs database (1e50453)
v0.1.18 (2025-01-20)
Features
v0.1.17 (2025-01-19)
Fixes
- sentry: report correct HTTP path in traces (eece88d)
- use importer configured timeout for sentry check-ins (b706b5a)
v0.1.16 (2025-01-15)
Features
- enable searching via program names for multi-program packages (7aea6aa)
Fixes
- dev: fix CSP not working in dev mode behind reverse proxy (b26ddba)
v0.1.15 (2025-01-05)
Features
- offer to show all results on one page (if < 10000) (9207642)
Fixes
- dev: overwrite previous asset hash on change (d289e54)
v0.1.14 (2025-01-02)
Features
- show scores in results table in dev mode (58643f3)
Fixes
- boost non-stemmed matches over stemmed matches (797c6e2)
v0.1.13 (2024-12-30)
Features
v0.1.12 (2024-12-04)
Fixes
- use UTC time for fetch/import timer (c92530b)
- enable using module in pure evaluation mode (ec4946e)
- enable using module in pure evaluation mode (174ad04)
v0.1.11 (2024-11-20)
Features
- apply stemming to search index terms (72d56a6)
v0.1.10 (2024-11-10)
Fixes
- search all missing expected results (8656f47)
v0.1.9 (2024-08-17)
Fixes
v0.1.8 (2024-07-13)
Features
Fixes
- nil panics rendering last page of search results (b1fd710)
- panic rendering error pages (ee83dfd)
- opensearch searches not using input query (a5f58bc)
- extra data after error parsing query string (4423458)
- panic rendering search results (5a2d54d)
- panic on search error (f076b5b)
v0.1.7 (2024-06-29)
Features
- add message for users with javascript disabled (e500a10)
Fixes
- blank modal when using browser navigation (8ef4bc9)
- duplicated results tables via JS search (e0d86be)
- panic rendering results (dbeddce)
- incorrect formatting of options results headers (107d54a)
v0.1.6 (2024-06-19)
Features
- add low-memory mode (63599c7)
- enable configuration of flags as environment variables (a495a67)
- display results in a table, showing details on click (408aed0)
- add detail pages for packages/options (d40c0e1)
- use stale-while-revalidate instead of immutable asset paths (872ae5d)
- serve assets via immutable paths (896926a)
- make security headers stricter (b537694)
- enable sub-resource integrity for assets (4698a97)
Fixes
- create index metadata when index exists and meta doesn’t (e665146)
- moving through search history shows no results (66b2556)
- nil pointer exception when (re-)indexing (2c4a19a)
v0.1.5 (2024-05-29)
Features
- improve search relevance by boosting keyword matches (73185e4)
- support cleartext HTTP/2 (i.e. from a reverse proxy) (16b4337)
Fixes
- missing alternate forms of packages with the same name (838e178)
- incorrect (switched) behaviour of –update/–replace (97021f7)
- re-enable exit –update/–replace (a5e3c14)
- check for nil pointers in NewMux (2c1491d)
v0.1.4 (2024-05-23)
Features
- stream files directly from fetcher to importer (0dbfe37)
- add –update flag to force-update index and exit (9c790c1)
- config: use enums’ string representations to print defaults (a90419a)
- config: print durations and URLs with human values (0f55080)
- show default configuration with –print-default-config (60a1569)
Fixes
- abort import of source on batch processing errors (3053e41)
- web: fetch host from request, not header, where it’s expected (e69d785)
- nix: generate default baseURL from listen address and port (027db43)
- make fetcher check on creation that it supports Source.Importer (b77a24f)
- importer: abort import of current source in case of error (c821da1)
- nix cannot read date/time TOML values from default config (202317d)
- duplicate error logging on config parse error (6037d5c)
v0.1.3 (2024-05-17)
Features
- ui: enable resetting form by clicking current source link (6ea953b)
- render markdown in packages’ LongDescription (934a069)
- use attribute instead of name for packages (698881a)
v0.1.2 (2024-05-17)
Fixes
- css: pagination styles not applied (f10543d)
v0.1.1 (2024-05-17)
Fixes
- nix: missing version variable in build (8a1c2e8)
v0.1.0 (2024-05-17)
Features
- display more information about packages (8df293c)
- error on non-matching configuration entries (6488132)
- automatically add/remove sources to/from index (9f241bf)
- support searching packages (05e6197)
- index: enable storage of package data (42611df)
- improve accessibility and browser behaviour (054d2b3)
- exit after rebuilding index if --replaceis specified (d6e117b)
- decode brotli-compressed files (b8da487)
- extract and store package set (e.g. nodePackages) (8b78a98)
- importer: process packages from nixpkgs package.json (51f774a)
- add caching header (except on error pages) (eb88ab1)
- monitor import jobs via sentry (fa97ca8)
- add browser search engines via opensearch description (5521173)
- print clickable URL on startup in dev mode (121ec2b)
- render HTML error pages (2d5ee7b)
- module: add default for Web.Environment (634534d)
- add DownloadOptions importer (fetches pre-built options.json) (df3b6bf)
- log on startup if index doesn’t exist (5f9c7ef)
- rely on system to show log times in production (37afa6c)
- allow adding extra HTML to the body via configuration (7077a37)
- enable using channel URLs if unable to resolve via NIX_PATH (fe79b45)
- nix module (fb25a97)
- clicking another source re-uses query (42bcd10)
- js: save and restore input state with history (b517b1e)
- version search index mapping schema and warn if outdated (76f18d6)
- dynamically link to sources (631c02a)
- format server listen address as URL (f42dfe7)
- enable index path to be configured (0986e86)
- importer: make timeout configurable via command-line (1db7c2a)
- importer: add –replace flag to overwrite existing index (778e1d7)
- allow configuration of log level (99d5507)
- enable setting config file path via command line (14c1dda)
- import sources from configuration in go code and index options (e062ca7)
- make configuration optional (967f6fd)
- improve search by using a custom tokeniser for option names (24b81a6)
- paginate search results (973345a)
- search multiple sources (212e5cf)
- search one set of options (c15b142)
- link to exact commits in NixOS/nixpkgs (8c13320)
- render markdown examples (c0fbf11)
- link to nixpkgs on github for declarations (71de547)
- auto-linkify URLs in markdown (0d65324)
- render markdown in option descriptions (2430f46)
- browser history management (87ec9ec)
- show metadata in grid (b682ed9)
- frontend search implementation (5b9e67f)
- create nixos options.json importer (1fb64b0)
- add basic input frontend (0945da8)
- add css (177c2de)
- watch and live reload in development (8411fb4)
- serve a very basic html template (7360307)
Fixes
- render errors as HTML given correct content-type (2edf3f0)
- missing last page of search results (f9b0340)
- store only data from current entity in index (3b877b3)
- nil pointer when updating all sources (041ebd2)
- don’t panic when re-indexing if fetcher did not update (43fe431)
- css: support browsers without css nesting (29f2099)
- logging: track whether headers are written properly (c5c9f72)
- rebuild index when –replace is specified (d558039)
- bad git conflict resolution (d65d80e)
- flake: remove overlay export (8e22448)
- importer: don’t create duplicate nested directories (a94632e)
- css: barely-visible text in dark mode (3fd832b)
- module: include nix in path (67e1a28)
- config: show read URL on parse failure (45432ae)
- module: allow setting sentry DSN (f700a32)
- don’t panic on TOML decode error (53c9fb2)
- linking to wrong declaration URLs (df77930)
- import: don’t remove index if there are errors (ef50bbf)
- js: make reload after error execute attempted search (84acac6)
- js error when no results found (628c2a8)
- missing menu on search pages (793c89a)
- no results for home-manager search (0eccb18)
- config: add default channel name for home-manager (3554d8a)
- missing menu on search page (42dd2f6)
- pointer type mismatch (8ab9adf)
- js: pushstate also on errors, so that the user can refresh (453ae85)
- js: null value error for pagination (83f6751)
- incorrect default/example values stored after processing (9f1a4aa)
- incorrect data shown for default and example option keys (5e008c2)
- panic on importing darwin options (9b24b80)
- use options exposed via user’s channel instead of ours (1fdd1f8)
- css: first grid row too tall (3c54a3f)