Skip to content

Releases: Korrnals/bathys

v0.14.1 — Hotfix: pymupdf in core dependencies

Choose a tag to compare

@Korrnals Korrnals released this 15 Sep 18:37

v0.14.1 — Hotfix: pymupdf in core dependencies

A pinpoint hotfix, caught during live verification of a fresh install.

Fixed

  • pymupdf was missing from dependencies: the PDF text layer has been a core feature since v0.9, but the dependency was optional and never declared — a clean install broke PDF reading, with the tool pointing to "pip install pymupdf". pymupdf>=1.24 is now in the core dependencies.

QA audit status

No new audit was run for this patch release. The previous full pass (v0.13.0, independent pre-release audit): 14 live checks through the real pipeline — 11 PASS / 3 PARTIAL / 0 FAIL, verdict "ready for release".

Assets

This release ships the package builds: bathys-0.14.1-py3-none-any.whl and bathys-0.14.1.tar.gz.


Install: pip install bathys==0.14.1
Changelog: CHANGELOG.md

Backlog Closed

Choose a tag to compare

@Korrnals Korrnals released this 15 Sep 12:43

v0.14.0 — Backlog Closed

Both MINOR findings of the v0.13.0 QA audit are resolved.

Added

  • Junk-gate in web_search (QA MINOR): meaningless queries no longer flood the context with username echoes ("Qwjk Qwjk", x.com/qwjk). Rule v4: a hit is valid if it covers ≥50% of the meaningful query terms in title+snippet (the URL is excluded — echoes live there as false positives); when everything is filtered out, an honest No results is returned (the empty-result retry path, F-101, gets its chance). Live: gibberish → No results ✓; EN/RU/short-title/niche-library queries — no false positives (5/5). The iterations that led to Rule v4 are recorded as a lesson: username echoes live in the title, the snippet and the URL alike — a plain "no term" check never holds; the coverage threshold is what does.
  • Definitional markers in source_check (QA MINOR): "X is a/are/was/является Y" — the most common form of direct confirmation — no longer falls through to UNCLEAR: copulas added to the SUPPORT markers (RU and EN). Live: "SearXNG is an open-source metasearch engine" → SUPPORTED (0.65).

Tests

+2 junk-gate (gibberish filtering + partial-coverage survival). Suite: 194 OK.


Install: pip install bathys==0.14.0
Changelog: CHANGELOG.md

GitHub Tier & Deep Audit

Choose a tag to compare

@Korrnals Korrnals released this 15 Sep 12:43

v0.13.0 — GitHub Tier & Deep Audit

GitHub-specialized extraction plus closure of a MAJOR finding from an independent QA audit.

Added

  • GitHub extraction tier (the last feature borrowed from pi-web-access): github.com/{owner}/{repo}/(pull|issues)/{N} and repository roots are served through the gh API instead of scraping — prioritized markdown for PRs (title/status/author/body/files/reviews/checks/comments), issues, and repos (description/root tree/README, 8k chars). Page.tier = "github"; a missing gh, a failure or a 15 s timeout — any of these falls back silently to the HTTP tier; older gh versions retry with a reduced field set. Live: PR searxng#1 → 2,290 characters of a structured document; the bathys repo → README + tree. The tier is independent of BATHYS_BROWSER (API vs scraping is a source choice, not browser policy; documented in docs/contracts/config.md).
  • library_docs disambiguation (closing the QA audit's MAJOR finding): search resolution of ambiguous names scores candidates against query terms + host match (the library's own domain) + a software-dictionary prior (python/async/api/readthedocs…). The live audit case is closed: trio + "structured concurrency" → trio.readthedocs.io (python-trio), not the medical app triodocs.org.

QA audit (independent, pre-release)

14 live checks through the real pipeline: 11 PASS / 3 PARTIAL / 0 FAIL; verdict — ready for release. Findings: (1) MAJOR disambiguation — closed in this release; (2) MINOR: junk fuzzy hits from engines on nonsense queries mask the No-results branch (accepted: engine behavior, not our defect; junk-gate queued for the backlog); (3) MINOR: source_check is conservative on "X is a Y" patterns (markers did not include definitional copulas — accepted as an honest no-LLM-scoring boundary, documented).

Tests

+33 (192 OK): 30 GitHub tier (URL detection / renderers / fallbacks / retries / timeouts, with subprocess mocks), 3 for disambiguation.


Install: pip install bathys==0.13.0
Changelog: CHANGELOG.md

Deep Verdicts — source_check + Phase 3

Choose a tag to compare

@Korrnals Korrnals released this 15 Sep 12:43

v0.12.0 — Deep Verdicts

library_docs Phase 3 plus source_check. A team release: two systems engineers worked in parallel, with briefs and reviews by the tech lead.

Added

  • source_check(claim, urls?) — the 6th MCP tool: deterministic claim verification without an LLM (mechanics dissected from pi-web-access and rebuilt on our architecture). Sources → parallel dives with query=claim → passages with passage_id and sha256 hashes → verdict SUPPORTED/CONTRADICTED/UNCLEAR/MISSING-EVIDENCE with confidence; polarity markers in RU+EN with negation checks; source classes (official_docs / forum / news / blog / repo_issue, RU forums). Our edge over the reference: domain independence — a verdict backed by a single domain is capped at 0.65 and flagged (the two-independent-sources rule).
  • library_docs Phase 3: (a) version — pin releases via GitHub tags (raw.githubusercontent.com/{owner}/{repo}/{tag}/README.md, trying v prefixes; docs sites get an honest "latest" note); (b) a self-growing user index BATHYS_DOCS_INDEX (~/.local/share/bathys/docs-index.json): successful search resolutions are remembered, and the next call for the same library resolves instantly with status user-index; priority seed → user-index → search; atomic writes, idempotent.
  • Tests: +51 (159 OK): 28 source_check (polarity / negation / term filtering / independence / full pipeline on fakes) + 21 library_docs Phase 3 + config.
  • Contracts: library_docs (phases 1–3) and source_check sections in docs/contracts/mcp-tools.md, footers in docs/contracts/output-format.md; env BATHYS_DOCS_INDEX in the tables.

Team

Scouting and briefs — tech lead; implementation — two senior systems engineers in parallel, no conflicts; spot-check reviews, documentation updates and shipping — tech lead.


Install: pip install bathys==0.12.0
Changelog: CHANGELOG.md

Library Docs Phase 2 — subpage follow-loading

Choose a tag to compare

@Korrnals Korrnals released this 15 Sep 12:43

v0.11.0 — Library Docs Phase 2

Subpage follow-loading: Context7-grade quality without their database.

Added

  • Subpage follow-loading in library_docs (subpages=3, 0 = off): after the landing page, same-site links are extracted, ranked by overlap with the query (y/ies morphology — "dependency" matches "dependencies"), and the top pages are loaded in parallel through the dive semaphore, merged into one digest. Live: fastapi "dependency injection" — 4,383 characters of content vs 1,951 of navigation in Phase 1; the site-search fallback found the exact tutorial/dependencies/, classes-as-dependencies/, advanced-dependencies/ pages on a linkless landing (the HTTP tier had stripped the nav markup).
  • Site-search discovery fallback: when the landing source carries no links (the HTTP tier cut the nav markup), subpages are located with one targeted web_search "{library} {query} site:{host}" through our own engine.
  • Unit tests: seed index (internal-key filtering), same-site logic, extractor (ranking / asset filtering / limit), morphology.

Changed

  • Architectural: dictionary-based "navigation" heuristics (link density / word variety) proved brittle at the TOC/prose boundary and were removed — follow-loading is now unconditional for a purpose-built tool; the decision is recorded in a code comment.

Install: pip install bathys==0.11.0
Changelog: CHANGELOG.md

Library Docs — Context7 functionality, local and unlimited

Choose a tag to compare

@Korrnals Korrnals released this 15 Sep 12:43

v0.10.0 — Library Docs

Context7 functionality — local and unlimited. A live scouting pass through Bathys showed Context7 keeps its parsing/crawling engines private, its free tier is capped at ~1,000 requests/month, and there is no offline mode. Our answer: documentation sources are open by nature, and our pipeline already contains the "parsing engine" — two-tier extraction + BM25 distillation + source caching.

Added

  • library_docs(library, query) — the 5th MCP tool: up-to-date library documentation fetched from the primary source, distilled against your question. Resolution: seed index (docs_index.json, 30+ libraries: react, fastapi, pytorch, kubernetes, searxng, crawl4ai…) → live web_search for "official documentation" → GitHub repo slug (owner/repo). Follow-up questions on the same library are instant, offline and free — the source cache is exactly what Context7 does not have. Live: trio resolved via search (triodocs.org), fastapi from the index; 153k characters distilled into a query-focused digest.
  • Initiative write-up docs/product/library-docs-initiative.md: architecture, an honest comparison table against Context7 (no quotas / offline / any docs site), phases 2–3 (version pinning via GitHub tags, subpage follow-loading, a self-growing index).
  • Phase 2 groundwork: the Phase 1 limitation is stated honestly — a docs landing page is often pure navigation; completeness arrives with follow-loading of relevant subpages.

Install: pip install bathys==0.10.0
Changelog: CHANGELOG.md

v0.8.0 — Engine Orchestration

Choose a tag to compare

@Korrnals Korrnals released this 15 Sep 18:37

v0.8.0 — Engine Orchestration

Architecture committee verdict No. 4 plus keyless engine orchestration: API engines behind env vars, a self-chosen set of keyless engines activated by one variable, and F-101 retry sets re-tiered against live data.

Fixed (critical)

  • render_settings rendered the wrong engine: engine: brave pointed at the scraping module, which ignores api_key (the key went nowhere); corrected to engine: braveapi (the official API module). Found by architecture committee No. 4 while cross-checking against the live upstream pin.

Added

  • API engines behind one env each: BATHYS_ENGINE_EXA_KEY, BATHYS_ENGINE_YANDEX_KEY + BATHYS_ENGINE_YANDEX_FOLDER (yandex_api is already in the upstream of our pin, RU localization out of the box) — in addition to Brave. A single engines: block.
  • BATHYS_ENGINES — activation of a custom set of keyless engines. Live audit 2026-09-09: mwmbl,mojeek,brave → 40+ results with zero captchas; duckduckgo/qwant/startpage/baidu — CAPTCHA; mojeek alone — 0 (works within the set).
  • F-101 retry sets re-tiered against live data: the first fallback is brave,mwmbl,mojeek,wikipedia; captcha-prone engines are demoted to last.
  • The engine_set metric in metrics.jsonl (default/retry#N) — committee gate G1 becomes verifiable.
  • Architecture committee No. 4: gates G1–G4 for "our own engine" (Phase C); Bing v7 struck out (shut down by Microsoft on 11.08.2025); an own index — rejected permanently.

This GitHub release was created retroactively; the version shipped on PyPI on 2026-09-09.


Assets

Shipped with the signature set from the release conveyor (attached retroactively): bathys-0.8.0-py3-none-any.whl, bathys-0.8.0.tar.gz, checksums-sha256.txt, sbom.spdx.json, and cosign/GPG signatures for both artefacts.


Install: pip install bathys==0.8.0
Changelog: CHANGELOG.md

v0.7.2 — Uninstall & Version Pinning

Choose a tag to compare

@Korrnals Korrnals released this 15 Sep 18:37

v0.7.2 — Uninstall & Version Pinning

Installation symmetry and operational control: a clean uninstall that touches only bathys entries, a doctor that can start the backend itself, and one-env version pinning for install.sh.

Added

  • bathys uninstall [HARNESS…] [--purge] — the mirror of installation: removes only the bathys entries from configs (other servers, backups and subagents are untouched), creates a backup before writing; --purge additionally removes the venv/cache/data. The live cycle was verified: uninstall hermes → backup → reinstall.
  • bathys-doctor --start-backend — the SearXNG backend is started before the check (live: native mode, 6/6 checks passed); the previous behavior (an honest FAIL on a stopped backend + a hint) is preserved as the default.
  • BATHYS_INSTALL_VERSION in install.sh — pin or roll back to a specific package version with a single env variable.
  • CI: a shellcheck job — install.sh is linted on every push (shellcheck is absent locally — CI will be its first run).

Changed

  • The bathys --help reference now covers uninstall; the README Quick start gained version rollback and removal.

This GitHub release was created retroactively; the version shipped on PyPI on 2026-09-08.


Assets

Shipped with the signature set from the release conveyor (attached retroactively): bathys-0.7.2-py3-none-any.whl, bathys-0.7.2.tar.gz, checksums-sha256.txt, sbom.spdx.json, and cosign/GPG signatures for both artefacts.


Install: pip install bathys==0.7.2
Changelog: CHANGELOG.md

v0.7.1 — One-Line Installer

Choose a tag to compare

@Korrnals Korrnals released this 15 Sep 18:37

v0.7.1 — One-Line Installer

The one-line install.sh becomes the main installation path: a private venv, pip bootstrap for minimal images, PATH wiring, then bathys setup and a final bathys-doctor.

Added

  • One-line installer install.sh — the main installation path: curl -fsSL https://raw.githubusercontent.com/Korrnals/bathys/main/install.sh | bash. A private venv in ~/.local/share/bathys/venv (a fix for the fragility of pip --user across containers and PEP 668), pip bootstrapped via get-pip.py for minimal images, PATH written to .profile/.bashrc, then bathys setup and a final bathys-doctor. Idempotent (a rerun is an update), no sudo, nothing outside $HOME. Live runs: a double run (creation + idempotent update), setup wired zcode + hermes with backups, doctor 5/6 (the backend starts on the first call — expected).
  • README: the one-liner is the main Quick start path; pip install + bathys setup is an equal "no script" alternative; npm/sources moved under folds.

This GitHub release was created retroactively; the version shipped on PyPI on 2026-09-08.


Assets

Shipped with the signature set from the release conveyor (attached retroactively): bathys-0.7.1-py3-none-any.whl, bathys-0.7.1.tar.gz, checksums-sha256.txt, sbom.spdx.json, and cosign/GPG signatures for both artefacts.


Install: pip install bathys==0.7.1
Changelog: CHANGELOG.md

v0.7.0 — Ship & Setup

Choose a tag to compare

@Korrnals Korrnals released this 15 Sep 18:37

v0.7.0 — Ship & Setup

Two-tier extraction without a mandatory browser, plus modular setup. Pages read in milliseconds over HTTP by default; headless Chromium engages only when a page is a JS shell — the browser is no longer a required runtime dependency.

Added

  • Two-tier extraction (crawler.py): by default pages are read by our own HTTP engine (httpx, milliseconds, zero browser); headless Chromium is switched on automatically only when the page is a JS shell (detection: app-root markup, empty body, content escaping) or when the HTTP tier fails. Measurements: Wikipedia 0.61 s, GitHub 1.0 s over HTTP versus ~4–5 s with the browser. BATHYS_BROWSER=off|auto|always controls the mode; the browser is no longer a required launch dependency — bathys setup installs it for JS pages, but the server works without it.
  • bathys setup — full installation in one call: the browser engine (skipped with --skip-browser) → integration into every detected harness → the subagent → final hints. Idempotent; after pip install bathys the user only needs bathys setup.
  • Targeted installation bathys install <HARNESS>: bathys install hermes writes only Hermes; a missing target harness config is created from scratch (verified: an opencode config was created in its own format); --list prints all targets with their paths and status; an unknown name produces a clear error.

Changed

  • README: the identity rewritten ("a standalone product, not a wrapper over other services: it implements the entire pipeline itself"); the main installation path is pip install bathys + bathys setup; alternatives (npm, sources, minimal images) and manual connection moved under <details> folds.
  • Dispatcher call syntax: bathys (server) / bathys setup / bathys install [targets] / bathys doctor; the --help reference updated.

This GitHub release was created retroactively; the version shipped on PyPI on 2026-09-08.


Assets

Shipped with the signature set from the release conveyor (attached retroactively): bathys-0.7.0-py3-none-any.whl, bathys-0.7.0.tar.gz, checksums-sha256.txt, sbom.spdx.json, and cosign/GPG signatures for both artefacts.


Install: pip install bathys==0.7.0
Changelog: CHANGELOG.md