Releases: apurvsinghgautam/robin
Release list
Release v2.8
Release v2.8 — conversational memory, one-click pivots, reasoning-model fix
Merges feature/v2.8:
- Session-scoped follow-up chat grounded in each investigation
- One-click suggested pivots that launch a new investigation
- Fix blank Findings for reasoning models (o1 / DeepSeek-R1) — #137
- Strict-grounding rule on summary presets
- Investigation output reformatted as Markdown headings + bullets
- Prompt-template brace-injection hardening
Release v2.7
fix: resolve config shadowing crash for custom/LM Studio models
In resolve_model_config(), the local variable 'config' shadowed the
imported config module. For models not in _llm_config_map (LM Studio,
custom API), the local was None, causing AttributeError on
config.CUSTOM_API_MODEL. Rename local to 'cfg' to fix the crash.
Release v2.6
docs: update README for v2.6 (OpenAI-compatible API, Custom API Provider sidebar)
llama.cpp fix, generic OpenAI-compatible API, Ollama Docker hint, provider prefix dropdown
-
Fix llama.cpp/LM Studio thinking models (Qwen3.5, Gemma 4): auto-append /v1 to
LLAMA_CPP_BASE_URL in resolve_model_config, set streaming=False to avoid
'No generations found in stream' from reasoning_content chunks -
Add localhost bypass in _ensure_credentials so local model users aren't
incorrectly prompted for OPENAI_API_KEY -
Add generic OpenAI-compatible provider via CUSTOM_API_BASE_URL + CUSTOM_API_KEY:
fetch_custom_api_models() auto-discovers models, resolve_model_config routes
them through ChatOpenAI with the custom base URL -
Log actionable Docker hint when Ollama is unreachable at localhost/127.0.0.1
(use host.docker.internal instead) -
Add get_model_display_names() and format_func to model selectbox so the
dropdown shows [provider] model_name labels without changing underlying keys
Release v2.5
chore: CI run for recent merged PRs (#116, #118)
PR #116 — Harden scraping pipeline (Chintanpatel24)
- Thread-local reusable HTTP sessions with retry + connection pooling
- Response size limit (1MB cap) to prevent memory exhaustion
- Content-type allowlist — only text/HTML responses parsed
- Worker concurrency clamped to safe range
PR #118 — Config, error UX, and scraper polish (Chintanpatel24)
- _clean_env(): strips whitespace and accidental quotes from .env values
- OpenRouter 401 error hints: specific guidance for invalid/expired keys
- st.stop() when no models are configured — prevents silent continuation
- scrape.py: deduplication, streaming download, URL scheme validation, debug logging
Release v2.4
Add UI enhancements: organized sections, save/load investigations, result limits
- Replace stat cards with Notes/Sources/Findings sections after pipeline run
- Sources expander shows all filtered .onion links with titles
- Notes expander shows refined query, model, domain, and result counts
- Findings section replaces Investigation Summary heading
- Auto-save completed investigations as JSON to investigations/ directory
- Past Investigations sidebar panel to load and re-display saved runs
- Max Results to Filter slider (10-100, default 50) caps results before LLM filter
- Max Pages to Scrape slider (3-20, default 10) caps filtered results before scraping
- README: add tip for mounting investigations/ volume in Docker
Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com
Release v2.3
Add custom prompts, domain presets, and provider config check
- Add PRESET_PROMPTS dict to llm.py with 4 research domain variants:
threat intel, ransomware/malware, personal identity, corporate espionage - Update generate_summary() to accept preset and custom_instructions params;
custom instructions append to the base prompt (never replace) - Add Prompt Settings sidebar expander with domain preset selector,
live system prompt viewer (read-only), and custom instructions textarea
with domain-specific placeholder examples - Add Provider Configuration sidebar section that auto-checks all 6
LLM providers (OpenAI, Anthropic, Google, OpenRouter, Ollama, llama.cpp)
on page load with clear set/missing/optional status indicators - Show prominent error banner when no models are available due to missing
env vars, surfacing the root cause of issue #99
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Release v2.2
Remove CLI mode, make Robin UI-only
Robin now runs exclusively through the Streamlit web UI. The Click-based CLI
router (main.py) is removed, Docker entrypoint launches Streamlit directly,
and the binary build workflow is replaced with a release-only workflow.
- Delete main.py (Click CLI router)
- Update entrypoint.sh to exec streamlit run ui.py directly
- Update Dockerfile to expose port 8501
- Remove yaspin (CLI-only dep) from requirements.txt
- Replace binary.yml with release.yml (keep versioning, remove PyInstaller build)
- Update README to reflect UI-only usage
Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com
Release v2.1
Add health check feature - LLM API and search engine connectivity checks in UI
Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com
Release v2.0
Major Updates - added new openrouter models, llama.cpp support, and improved error handling - version bump to v2
Release v1.15
Added 2 new Tor Search Engines