Releases: fmind/fkf
Release list
v6.0.2
Fixed
- Share a fifteen-second deadline across passive-hook children while allowing individual context calls up to ten seconds. Expired budgets prevent new children, and timed-out process groups are terminated.
- Create every missing parent directory with owner-only permissions during atomic writes, without changing existing directory modes.
- Isolate the security-rule checkout from Git environment variables inherited by linked-worktree hooks, while retaining rejection of local rule edits.
v6.0.1
Fixed
- Keep passive hooks compatible with system Python 3.9 and newer, independently of the FKF package’s Python 3.14 environment. The formatter now preserves that syntax boundary and a regression test checks it.
- Consolidate the hook’s validated direct-argv dispatch through the fixed system
envexecutable.
v6.0.0
Breaking changes
- Consolidate source execution and improve offline retrieval. Base-owned helpers now live in
sources/, retrieval evaluations inchecks/queries.yaml, and optional app scripts inclients/. Update declarations and reinstall managed harness hooks, review the resulting execution plan, and renew trust before collecting. Stored evidence remains readable without re-collection.
Changed
- Select a persistent launcher explicitly with
harness print/install --executablewhen package-manager PATH entries disagree. - Reuse status narrative pages for briefing commitments instead of reading and parsing task/project files again.
- Rename base collection helpers from
bin/tosources/and retrieval acceptance tochecks/queries.yaml. - Declare single-script uv app clients under
clients:; hash and disclose their separate execution tree. - Make CLI context receipt persistence opt-in with
--save-receipt, keeping ordinary context reads lock-free. - Surface explicit project next actions, review dates, deadlines, and blockers in the offline brief.
- Improve multi-term lexical ranking and excerpts, reuse Unicode-preserving text analysis, and reduce exact-budget packing work.
- Let retrieval evaluations require answer-bearing excerpts and verified offline reads, beyond URI recall.
- Describe harvested lessons as trace citations rather than a knowledge-quality measure.
Fixed
-
Report exact missing completed dates per enabled event source using the configured collection window, including in briefing attention.
-
Reuse task pages for fallback selection and the global learned backlog, and skip a second Markdown parse when rendered headings contain no Learned section.
-
Keep conjunctions out of question scoring and select commitment and body excerpts independently so metadata cannot displace the answer.
-
Give body-cache manifests an independent 8 MiB bound, retaining the 4,096-entry and 512 MiB content limits.
-
Select prompt transcripts through bounded archive metadata and resolve bodies from stored lineage, generation, and turn provenance without changing evidence IDs or deleting history.
-
Search project commitments and preserve active handoffs in compact identity context; unify indexed and fallback lesson backlog semantics.
-
Compile canonical fragment validation once per process and report hook timeouts without exposing child output.
-
Compare GitHub commit bounds as instants, project safe fallback titles for untitled browser visits, and discard RSS stylesheet metadata without fetching it.
-
Open Chromium-family browser roots and profile directories through retained no-follow descriptors so linked path components cannot redirect local history or bookmark collection.
v5.0.1
Fixed
- Prevent long-lived MCP stdio servers on Python 3.14 from accumulating timeout callbacks during cancellation polling, eliminating age-correlated CPU and memory growth.
- Let local release verification ignore only uv's exact one-byte
dist/.gitignoremarker while continuing to reject every other unexpected asset. - Parse RSS, Atom, and OPML with a DTD-rejecting XML parser so valid CDATA and predefined or numeric references retain their text without enabling entity expansion.
- Preserve provider-formatted Gmail recipient names while continuing to derive normalized participant identities from mailbox addresses.
- Keep agent session hooks non-blocking when invoked with terminal standard input.
v5.0.0
Highlights
- Reimplement FKF as one typed Python 3.14 package while preserving the
fkfcommand,fkf: 1configuration and evidence envelopes, trust digests, rebuildable graph and lexical cache contracts, ranking version 7, offline reads, and bounded read-only MCP surface. - Publish a wheel and source distribution for
uv tool install fkfand one-shotuvx fkfuse, with locked uv development, strict Ruff and ty checks, hermetic branch-coverage tests, PyPI trusted publishing, and GitHub build-provenance attestations. - Consolidate provider execution behind one direct-argv boundary, package presets and skills as runtime resources, and retain deterministic differential coverage against the final Go implementation.
- Load the MCP SDK only for MCP commands so ordinary CLI startup does not pay for its server and transport stack.
- Replace the Hugo module with a locked, self-contained Zensical documentation build while preserving the published Pages routes.
Breaking changes
- Replace native release archives,
install.sh, and the self-replacingfkf upgradecommand with standard Python packaging. Useuv tool upgrade fkffor a persistent uv installation. - Narrow the existing
?jq=and--whereselector spelling to the safe field-path grammar plus optional terminal| length; arbitrary jq programs are rejected instead of running an embedded evaluator.
Upgrade notes
- Existing bases and collected evidence need no migration or re-collection. After installing v5, refresh official helpers, review and renew execution trust, then rebuild derived caches:
fkf config helpers --refresh,fkf trust --all, andfkf build all. - Use a persistent
uv tool install fkflauncher for harness and schedule integrations. Reserveuvxfor one-shot commands.
v4.0.1
Fixed
- Make Ruff linting independent of contributor-level configuration and use the correct exception types in the Gmail body helper, restoring the clean four-platform release gate.
- Keep historical agent-session collection available as the append-only store grows by bounding in-window identities before selecting their newest complete generation, while rejecting a partial manifest scan.
v3.0.2
Fixed
- Keep the cross-process writer-lock test helper alive without triggering Go's deadlock detector, removing a timing-dependent macOS CI failure without changing runtime behavior.
v3.0.1
Fixed
- Make schedule CLI tests select the native fake scheduler and managed-file layout, restoring the hermetic CI contract on macOS without changing runtime behavior.
v3.0.0
Highlights
- Add deterministic
brief,day,timeline,who, andevalworkflows, temporal query grammar, declared identity aliases, and compact text and structured retrieval receipts. - Add digest-bound lexical and constant-time graph caches while keeping durable evidence authoritative, offline reads reproducible, and indexed and fallback retrieval semantically identical.
- Add login-aware opportunistic sync, hourly systemd and launchd scheduling, and idempotent harness integration for Claude Code, Codex, Gemini CLI, Copilot CLI, Antigravity, OpenCode, Grok, Cursor, Kiro, and Cline.
- Add bounded, ignored, manifest-verified body caching with per-source
none,cache, andsyncpolicies; first-class meeting-note and local agent-memory sources can prefetch searchable text without copying it into durable evidence. - Expand and harden the reviewed personal presets, session traces, staged learning workflow, MCP surface, provider pagination, process isolation, trust revalidation, and graph generation consistency.
Breaking changes
- Every collected record must now project one meaningful, control-free
title; update custom source schemas and field mappings before the next sync. - Structured
findandcontextresults omit raw provider records and internal day selections by default; pass--rawonly when those diagnostic fields are required.
Upgrade notes
- Existing evidence remains valid and requires no re-collection. Run
fkf build all --base <base>to create the new derived graph and lexical caches. - Refresh FKF-owned helpers and harness integrations, review the resulting execution plan, and renew trust before running changed collectors:
fkf config helpers --refresh,fkf harness install --all, thenfkf trust --all. - Body caching stays opt-in per source. The default
bodies: nonefetches only on an explicitread --body;cacheretains an explicitly fetched body andsyncprefetches it after evidence is written.
v2.1.0
Highlights
- Add a dedicated base
tests/execution tree for source verification hooks, recursively covered by trust and prepended toPATHonly forfkf test; collection and body commands cannot see test fixtures or shadows. - Report source-hook readiness separately from ordinary
requires:, disclosebin/andtests/as distinct trust items, and carry the new layout through init, permissions, schemas, documentation, and bundled skills. - Preserve v2 compatibility: bases without
tests/keep their existing trust digest, hooks can still resolve frombin/, and an empty optional selection remains a successful 0/0 report. Completion gates should name mandatory sources.
Fixed
- Restrict repository metadata projected by bundled session, Git, and agent-hook helpers to GitHub remotes, while continuing to strip credentials and reject malformed paths.
- Open Atuin history read-only in batch mode, omit deleted rows and command text, and declare the Git dependency used by the agent-sessions preset.
Upgrade notes
- A pre-existing base
tests/directory is now reserved, recursively trust-covered execution material and must contain no symlinks. Move source hooks and their support files there, keep generic repository tests elsewhere, then review and renew trust.