Skip to content

Releases: iblameandrew/deepsearch-academic

academic-deepsearch 0.1.2

Choose a tag to compare

@iblameandrew iblameandrew released this 14 Aug 00:04

Changelog

0.1.2 — 2026-08-14

  • Align Ruff isort sections (academic_deepsearch / tests as first-party) so Linux CI lint matches local formatting.

0.1.1 — 2026-08-14

  • Fix CI collection: put the repo root on pytest pythonpath and ship tests as a package so tests.fakes imports on Linux runners.

0.1.0 — 2026-08-13

First packaged release.

Added

  • Installable academic_deepsearch library with a Streamlit-free public API (ResearchPipeline, RAPTOR, filters, reports, QA).
  • llama.cpp llama-server backend via the OpenAI-compatible /v1 API (langchain-openai). Separate chat and embedding base URLs are supported.
  • Extensive offline pytest suite (unit, integration, contract) with coverage gate.
  • Multi-stage Dockerfile (base / test / runtime) and docker-compose.yml.
  • GitHub Actions CI (lint, Python 3.11/3.12 tests, Docker builds) and a tag-driven release workflow that publishes to GHCR.

Changed

  • Streamlit app.py is now a UI shell over the library.
  • Model discovery uses llama.cpp GET /v1/models and GET /health instead of a local model manager.

Fixed

  • PDF report generation no longer raises when a pipeline diagram is omitted.
  • An empty publisher filter now keeps papers (counted as Uncategorized) instead of dropping them.
  • Live search logs papers that have no journal name into the publisher discard log.
  • Missing abstracts are labeled Missing abstract rather than a PDF-corruption message.

Removed

  • Ollama client, langchain-ollama, and all :11434 integration.

academic-deepsearch 0.1.1

Choose a tag to compare

@iblameandrew iblameandrew released this 14 Aug 00:02

Changelog

0.1.1 — 2026-08-14

  • Fix CI collection: put the repo root on pytest pythonpath and ship tests as a package so tests.fakes imports on Linux runners.

0.1.0 — 2026-08-13

First packaged release.

Added

  • Installable academic_deepsearch library with a Streamlit-free public API (ResearchPipeline, RAPTOR, filters, reports, QA).
  • llama.cpp llama-server backend via the OpenAI-compatible /v1 API (langchain-openai). Separate chat and embedding base URLs are supported.
  • Extensive offline pytest suite (unit, integration, contract) with coverage gate.
  • Multi-stage Dockerfile (base / test / runtime) and docker-compose.yml.
  • GitHub Actions CI (lint, Python 3.11/3.12 tests, Docker builds) and a tag-driven release workflow that publishes to GHCR.

Changed

  • Streamlit app.py is now a UI shell over the library.
  • Model discovery uses llama.cpp GET /v1/models and GET /health instead of a local model manager.

Fixed

  • PDF report generation no longer raises when a pipeline diagram is omitted.
  • An empty publisher filter now keeps papers (counted as Uncategorized) instead of dropping them.
  • Live search logs papers that have no journal name into the publisher discard log.
  • Missing abstracts are labeled Missing abstract rather than a PDF-corruption message.

Removed

  • Ollama client, langchain-ollama, and all :11434 integration.

academic-deepsearch 0.1.0

Choose a tag to compare

@iblameandrew iblameandrew released this 13 Aug 23:59

Changelog

0.1.0 — 2026-08-13

First packaged release.

Added

  • Installable academic_deepsearch library with a Streamlit-free public API (ResearchPipeline, RAPTOR, filters, reports, QA).
  • llama.cpp llama-server backend via the OpenAI-compatible /v1 API (langchain-openai). Separate chat and embedding base URLs are supported.
  • Extensive offline pytest suite (unit, integration, contract) with coverage gate.
  • Multi-stage Dockerfile (base / test / runtime) and docker-compose.yml.
  • GitHub Actions CI (lint, Python 3.11/3.12 tests, Docker builds) and a tag-driven release workflow that publishes to GHCR.

Changed

  • Streamlit app.py is now a UI shell over the library.
  • Model discovery uses llama.cpp GET /v1/models and GET /health instead of a local model manager.

Fixed

  • PDF report generation no longer raises when a pipeline diagram is omitted.
  • An empty publisher filter now keeps papers (counted as Uncategorized) instead of dropping them.
  • Live search logs papers that have no journal name into the publisher discard log.
  • Missing abstracts are labeled Missing abstract rather than a PDF-corruption message.

Removed

  • Ollama client, langchain-ollama, and all :11434 integration.

v0.2.0 — Exhaustive bug fix release

Choose a tag to compare

@iblameandrew iblameandrew released this 06 Jun 20:08

Exhaustive bug hunt & fixes

Critical fixes

  • Missing dependency: added semanticscholar to requirements.txt (app would fail to install from a clean env)
  • Broken search loop: semantic_scholar_search_node was re-calling sch.search_paper(query, bulk=True) inside a while loop, which re-creates the same paginated iterator each iteration; seen_urls then drops all duplicates and the loop never makes real progress (and would hammer the rate limiter). Now iterates PaginatedResults directly.
  • Broken LangChain imports: migrated to non-deprecated packages for LangChain 1.x:
    • langchain.text_splitter -> langchain_text_splitters
    • langchain_community.chat_models.ChatOllama -> langchain_ollama.ChatOllama
    • langchain_community.embeddings.OllamaEmbeddings -> langchain_ollama.OllamaEmbeddings

Cleanup

  • Removed unused imports (numpy as np, random, fpdf, PyPDFLoader, langchain_community.document_loaders)
  • Hoisted import tempfile to module top
  • Removed leftover debug print() statements in filter_by_relevance_node
  • Tightened relevance LLM check: was "yes" in answer.content.lower() (matches "yesterday", "yellowness"); now exact Yes/No match
  • Dropped dead deps from requirements.txt: arxiv, pypdf, langchain-google-genai, duplicate python-dotenv
  • Added langchain-text-splitters and langchain-ollama to requirements.txt

PDF report generation

  • Moved temp-PNG cleanup in generate_pdf_report to after pdf.output() (was deleting the file before the PDF was finalized, fragile on Windows)
  • Wrapped os.remove in try/except OSError

Diagram & chat

  • Replaced non-standard Mermaid self-loop edge (B -- label --> B) with a single labeled node (renders correctly)
  • Wrapped chat LLM call in try/except so a model failure surfaces a graceful error in chat history instead of NameError
  • Strip <think>...</think> blocks from chat responses (already done for the academic report; now consistent for chat)