|
1 | 1 | # Changelog |
2 | 2 |
|
| 3 | +## 2026-08-13 |
| 4 | + |
| 5 | +`find()` can be restricted to one observe-source, so a small source is no |
| 6 | +longer buried by a large one. |
| 7 | + |
| 8 | +- **`--source <id>[,<id>]` / `find(source=...)`** filters on the |
| 9 | + `observed/<source-id>/…` namespace as a `WHERE` condition -- before the |
| 10 | + ranking, and in all three stages of `find()`: exact FTS, the multi-word OR |
| 11 | + fallback, and the LIKE fallback. Wiring it into only the first stage would |
| 12 | + have dropped the filter silently on any multi-word query. |
| 13 | + - Why it was needed: source sizes differ by three orders of magnitude. On |
| 14 | + the reporting machine `codex-sessions` holds 260,623 transcript lines |
| 15 | + against 518 in `usmc-working`, out of 290,902 `observed` entries total. |
| 16 | + BM25 hands the entire first page to the transcripts, so a subject-matter |
| 17 | + search returns nothing usable and reads as "not in the index". |
| 18 | + - A source id matches a whole path segment, so `--source usmc` does not |
| 19 | + pull in `usmc-working`. A leading `observed/` is optional, several ids |
| 20 | + are OR-ed, and `_`/`%` in an id are escaped instead of acting as LIKE |
| 21 | + wildcards. |
| 22 | +- **`--source` without a query lists the source**, newest first. FTS5 needs a |
| 23 | + term to match; "show me everything from this source" has none, so that case |
| 24 | + takes a plain `WHERE`/`ORDER BY updated` path instead of returning nothing. |
| 25 | +- **`--type` and `--limit` are now reachable from the CLI.** `find()` already |
| 26 | + accepted both; only the command line did not pass them through. |
| 27 | +- **The `find` command parses its own flags.** The CLI has no argparse and |
| 28 | + joined everything after `find` into the query, so `--source` would have |
| 29 | + become a search word. `_parse_find_args()` splits options from search terms, |
| 30 | + accepts `--flag value` and `--flag=value`, and reports unknown options and |
| 31 | + missing values instead of silently searching for them. |
| 32 | +- Documented in `README.md` and `README_de.md`, including the pre-existing |
| 33 | + workaround for older versions (pass the source id as a search word -- entry |
| 34 | + names are in the full-text index) and the boundary against `extra_tags`, |
| 35 | + which labels a source at registration time rather than narrowing one search. |
| 36 | +- Test suite grew from 86 to 108 tests. |
| 37 | + |
| 38 | +Read-only change: no schema migration, no new index, `recall()` untouched, and |
| 39 | +existing `find()` callers keep their behaviour (the new parameter is appended |
| 40 | +and defaults to `None`). |
| 41 | + |
3 | 42 | ## 2026-08-05 |
4 | 43 |
|
5 | 44 | Fixed: the never-index list missed Windows paths on non-Windows hosts. |
|
0 commit comments