Version 4.0.0
-------------
- 2026-10-11
- Breaking (MCP): `kitconc-mcp` now exposes a curated, agent-oriented tool set instead of one tool per
  `KitconcActions` method. Tools are grouped and renamed (`analyze_wordlist`, `corpus_create`, `result_export`...),
  take an explicit `corpus` instead of a selected corpus, and return a `result_id` with one page of rows. Run
  `kitconc-mcp --tool-set legacy` to keep the 3.x tools; see "Migrating from 3.x" in docs/MCP.md. The Python API
  (`Corpus`, `KitconcActions`) is unchanged.
- MCP: analysis results are stored on the server (persisted in `<workspace>/.kitconc_results`) and can be paged,
  filtered, derived with a safe expression language (`per_million`, `log_likelihood`, `log_ratio`, `c_value`...),
  joined, combined, aggregated, enriched with corpus evidence (examples, definitions, dispersion, collocates) and
  exported without sending rows through the conversation.
- MCP: new tools `corpus_tagset`, `corpus_qa`, `subcorpus_create`, `term_candidates` (tagset-agnostic term
  extraction for Brown/Penn, Universal POS/spaCy, Mac-Morpho and untagged corpora), `context_mine` and `text_stats`.
- MCP: declarative pipelines (`pipeline_run`), 11 built-in editable recipes (glossary candidates, domain-specific
  glossaries, corpus comparison, word profiles, near-synonyms, collocation entries, lexical bundles, keyword report,
  corpus profile, word frequencies across corpora, corpus QA), user recipes and background jobs with progress and
  cancellation.
- MCP: tool annotations, structured errors with hints, server instructions, resources (`kitconc://...`), one prompt
  per recipe plus `plan-analysis`, argument completion, built-in guides, `--read-only`, `--disk-capacity` and
  `--job-workers` options.
- Agents: `kitconc-tool` runs every agent tool from the command line (JSON in, JSON out), and
  `kitconc-skill install` installs the Kitconc skill for Claude (~/.claude/skills) and Codex (~/.agents/skills).
- Redesigned README with the new logo and a guide to using Kitconc with AI assistants.
- Fixed corpus creation tokenizing binary files found in the source folder (e.g. SQLite databases); they are now
  skipped with a warning.
- Fixed info.tab metadata written without a final newline, which merged fields such as
  "encoding: utf-8Textfiles: 98"; existing files are repaired when read.
- Tabular `KitconcActions` methods also return `columns`.
- Updated pyjwt, pypdf, torch (optional "full" extra) and urllib3.
- Added a test workflow on every push and pull request (Ubuntu and Windows, Python 3.10 and 3.12).
- Added advanced analysis options (all optional; default results are unchanged):
  - Keywords against another corpus of the workspace (`ref_corpus`), effect sizes (Log Ratio, Dice, LogDice, MI, MI3,
    RRF, DRF, z, t, %DIFF, odds ratio), negative keywords (`polarity`), p-value thresholds with optional Bonferroni
    correction, two-term log-likelihood, chi-square with Yates correction and Text Dispersion Keyness.
  - Collocates with 13 association measures (`measure`), extra measure columns (`extra_measures`), `min_freq`,
    stoplists and allowlists.
  - KWIC/concordance wildcards (`* ? + | [a,b]`), context search (AND/OR, exclusion), random samples and KWIC
    pattern frequency (`Kwic.kpf()`); `Kwic.hide_node()` for gap-fill exercises.
  - Clusters of any size with the search word on the left or right (`position`).
  - N-gram search filter and p-frames (n-grams with open slots, with variants, TTR and entropy).
  - Dispersion statistics (Range, SD, CV, Juilland's D, Gries' DP) in `dispersion()` and `dispersion_measures()`;
    optional RANGE/JUILLAND_D/DP columns in `wordlist(dispersion=True)`.
  - Lemma lists (`lemmalist()`), file view (`fileview()`) and word clouds (`wordcloud()`).
  - Stoplists/allowlists (lists, files or 'default') in wordlist, keywords, collocates, clusters and n-grams.
  - New CLI commands `pframes`, `lemmalist`, `dispersion_measures`, `fileview` and `wordcloud`, new flags for existing
    commands, and matching MCP tools.
- Corpus creation converts DOCX, ODT, EPUB, HTML/XHTML and XML files to text.
- Fixed `wordlist(lowercase=False)`, which raised an error.
- Fixed `dispersion()` for search terms without hits, which raised an error.
- Fixed the CLI/GUI `keywords --measure tf-idf`, which silently used log-likelihood.
- Added an MCP export tool for analysis results in `.tab`, `.tsv`, and `.xlsx` formats.
- Added MCP tools to build per-corpus semantic embedding indexes and inspect their status; semantic search now selects the active corpus index by default.
- Improved filesystem-based corpus creation for source paths containing spaces and rejected unsafe or colliding corpus names.
- Corpus processing now checks tagging and indexing process results, restores existing indexes after failure, cleans temporary files, and records text counts without duplicate metadata rows.
- Corpus imports now validate ZIP contents and extract through a temporary directory; remote imports enforce timeouts and download limits.
- Corpus exports are written atomically, and Tkinter corpus and analysis tasks now deliver results to the main UI thread.

Version 3.5.1
-------------
- 2026-09-05
- Migrated dependency management, development setup, CI, and Docker workflows to uv with a committed uv.lock file.

Version 3.5.0
2026-09-05
- Replaced the NLTK-based tokenization and POS-tagging runtime with built-in components and converted bundled models.
- Added dependency-free NLP regression tests.

Version 3.4.6
2026-09-05
- Updated Pillow and cryptography dependency floors to security-fixed releases.
- Replaced the NLTK-based corpus tokenization and tagging pipeline with built-in components.

Version 3.4.5
2026-09-05
- Fixed MCP stdio regression coverage for Windows and other platforms.
- Declared the supported Python version in package metadata.
- Removed NumPy scalar-conversion deprecation warnings from n-gram processing.
- Added automated test execution to the release workflow.

Version 3.4.4
2026-04-10
- Added Docker installation/runtime option (`Dockerfile` and `.dockerignore`).
- Expanded README with complete MCP tools reference, prompt suggestions, and usage flows.

Version 3.4.3
2026-04-06
- Updated README requirements to match setup.py package dependencies.
- Documented additional full-environment dependencies from requirements.txt.

Version 3.0.3
2025-04-21
- Added examples.
