| .. |
|
bombadil-spec.ts
|
Odysseus v1.0
|
2026-05-31 23:58:26 +09:00 |
|
conftest.py
|
Odysseus v1.0
|
2026-05-31 23:58:26 +09:00 |
|
test_action_intents.py
|
Route calendar action requests to tools
|
2026-06-01 14:32:41 +09:00 |
|
test_admin_wipe_gallery.py
|
Admin: wipe gallery albums with images
|
2026-06-02 20:35:57 +09:00 |
|
test_agent_loop.py
|
fix(agent): extract web search sources from output key
|
2026-06-02 13:06:09 +09:00 |
|
test_api_key_manager_resilience.py
|
API keys: skip undecryptable entries on load
|
2026-06-02 20:28:26 +09:00 |
|
test_api_token_routes.py
|
tests: cover API token CRUD routes
|
2026-06-02 20:42:32 +09:00 |
|
test_app.py
|
Fix fresh checkout test failures
|
2026-06-01 02:22:17 +00:00 |
|
test_app_static_mime.py
|
fix: normalize JS static MIME types on Windows
|
2026-06-02 01:32:00 +02:00 |
|
test_auth_event_loop.py
|
Stabilize security regression tests
|
2026-06-02 05:48:59 +09:00 |
|
test_auth_regressions.py
|
Add tests for open-signup endpoint
|
2026-06-02 20:42:10 +09:00 |
|
test_auth_session_revocation.py
|
Stabilize auth session revocation tests
|
2026-06-02 06:02:49 +09:00 |
|
test_backup_cli_security.py
|
Harden backup restore tar extraction
|
2026-06-02 05:55:03 +09:00 |
|
test_builtin_memory_consolidation.py
|
Scope memory consolidation by owner group
|
2026-06-02 12:40:28 +09:00 |
|
test_calendar_event_contrast.py
|
Improve calendar event text contrast (#1184)
|
2026-06-02 23:14:52 +09:00 |
|
test_calendar_owner_scope.py
|
tests: cover calendar route owner gates
|
2026-06-02 20:42:37 +09:00 |
|
test_calendar_recurrence.py
|
Fix YEARLY recurring CalDAV events only showing on DTSTART year (#179)
|
2026-06-01 13:42:44 +09:00 |
|
test_chat_attachment_picker.py
|
Chat attachments: allow picker to choose any file type
|
2026-06-02 20:55:30 +09:00 |
|
test_chat_cached_model_normalization.py
|
Chat: use cached endpoint model ids before probing
|
2026-06-02 21:00:58 +09:00 |
|
test_chat_image_routing.py
|
Chat: route image sessions only to matching image endpoints
|
2026-06-02 20:52:03 +09:00 |
|
test_chat_metrics.py
|
Chat metrics: surface backend generation speed
|
2026-06-02 20:52:08 +09:00 |
|
test_chat_stream_scope.py
|
Fix chat stream recovery and PDF library indexing (#468)
|
2026-06-01 22:33:35 +09:00 |
|
test_chroma_client.py
|
fix: ChromaDB unreachable blocks app startup for 30-60s (#326) (#476)
|
2026-06-01 22:22:41 +09:00 |
|
test_cleanup_owner_scope.py
|
tests: cover cleanup owner scope
|
2026-06-02 20:42:21 +09:00 |
|
test_companion_pairing.py
|
Companion: fix pairing admin guard import
|
2026-06-02 20:29:37 +09:00 |
|
test_companion_readonly.py
|
Tests: companion model JSON resilience
|
2026-06-02 13:15:22 +09:00 |
|
test_compare_js.py
|
Fix duplicate compare modal on repeated clicks (#491)
|
2026-06-01 22:24:27 +09:00 |
|
test_context_compactor.py
|
Preserve large pasted messages in context
|
2026-06-01 12:38:35 +09:00 |
|
test_cookbook_dependency_completion_regression.py
|
Fix Cookbook dependency install completion state
|
2026-06-02 12:59:29 +09:00 |
|
test_cookbook_helpers.py
|
feat: add vllm kv cache dtype option (#1185)
|
2026-06-02 23:17:16 +09:00 |
|
test_cookbook_package_detection.py
|
fix(cookbook): detect llama-cpp-python via its real distribution name (#1020) (#1167)
|
2026-06-02 22:52:37 +09:00 |
|
test_ddg_redirect_resolution.py
|
Match host, not substring, when resolving DuckDuckGo redirects (#886)
|
2026-06-02 12:25:56 +09:00 |
|
test_deep_research_extraction_controls.py
|
Allow longer deep research extraction timeouts (#651)
|
2026-06-02 11:50:03 +09:00 |
|
test_deep_research_search_error.py
|
Research: report empty search provider results clearly
|
2026-06-02 20:34:25 +09:00 |
|
test_dialog_aria.py
|
Add dialog accessibility semantics
|
2026-06-02 12:41:25 +09:00 |
|
test_document_deeplink.py
|
fix: open #document deep-links on refresh and surface load errors (#631)
|
2026-06-02 11:48:54 +09:00 |
|
test_document_pdf_marker.py
|
Documents: strip PDF marker without corrupting text
|
2026-06-02 20:35:27 +09:00 |
|
test_document_tool_owner_scope.py
|
Scope document tools to caller owner
|
2026-06-02 06:00:02 +09:00 |
|
test_email_imap_timeout.py
|
Use shared IMAP timeout for account tests (#1088)
|
2026-06-02 23:11:04 +09:00 |
|
test_email_library_bulk_actions.py
|
Email: persist bulk read state to provider
|
2026-06-02 20:28:01 +09:00 |
|
test_email_smtp_security.py
|
Email: add explicit SMTP security mode
|
2026-06-02 13:15:06 +09:00 |
|
test_email_split_border_css.py
|
fix(ui): contain email split divider (#1194)
|
2026-06-02 23:28:24 +09:00 |
|
test_endpoint_probing.py
|
Add endpoint probing behavior tests
|
2026-06-02 20:42:48 +09:00 |
|
test_endpoint_resolver.py
|
Never resolve to a disabled endpoint model (#861)
|
2026-06-02 11:10:43 +09:00 |
|
test_esc_menu_stack_js.py
|
fix: make transient dropdown/popup menus close on Escape
|
2026-06-01 14:23:22 -04:00 |
|
test_extract_quotes.py
|
fix: extract_quotes accepts mismatched opening/closing quotes (#1113)
|
2026-06-02 22:34:52 +09:00 |
|
test_extract_statistics.py
|
fix: extract_statistics drops large numbers and trailing % signs (#1153)
|
2026-06-02 22:35:30 +09:00 |
|
test_forwarded_message_divider.py
|
Email: recognize forwarded message dividers
|
2026-06-02 20:32:56 +09:00 |
|
test_gallery_endpoint_matching.py
|
Gallery: match image endpoint URLs with exact v1 suffix
|
2026-06-02 20:34:05 +09:00 |
|
test_gallery_image_privileges.py
|
Gate image editor AI endpoints by privilege (#447)
|
2026-06-01 22:35:24 +09:00 |
|
test_history_topics_owner_scope.py
|
fix(history): scope topic analysis to authenticated owner only (#744)
|
2026-06-02 11:36:01 +09:00 |
|
test_hwfit_amd.py
|
Cookbook fit: steer consumer AMD to GGUF recommendations
|
2026-06-02 21:01:42 +09:00 |
|
test_hwfit_macos.py
|
fix: require GGUF sources for llama downloads (#368)
|
2026-06-01 22:47:47 +09:00 |
|
test_hwfit_manual_backend.py
|
fix(hwfit): honor manual "metal" backend in the hardware simulator (#1090)
|
2026-06-02 23:12:34 +09:00 |
|
test_hwfit_quant_formats.py
|
Fix native Cookbook quant classification
|
2026-06-02 13:07:20 +09:00 |
|
test_ics_escape.py
|
fix: ICS export doesn't escape commas/semicolons in event fields (#1161)
|
2026-06-02 22:36:12 +09:00 |
|
test_ics_export_escaping.py
|
fix: ICS export — escape X-WR-CALNAME and honour is_utc on DTSTART/DTEND (#1174)
|
2026-06-02 23:02:28 +09:00 |
|
test_keybind_altgr_js.py
|
Ignore AltGr keystrokes in Ctrl+Alt keyboard shortcuts (#825)
|
2026-06-02 11:12:54 +09:00 |
|
test_llm_core_anthropic_cache.py
|
Add Anthropic prompt caching to the agent loop (#812)
|
2026-06-02 11:14:31 +09:00 |
|
test_llm_core_concurrency.py
|
Make LLM host health maps thread-safe
|
2026-06-02 05:54:23 +09:00 |
|
test_llm_core_fallback.py
|
Surface silent model fallback instead of masking it (#868)
|
2026-06-02 11:37:25 +09:00 |
|
test_llm_core_ollama.py
|
Ollama: pass discovered num_ctx in chat requests
|
2026-06-02 20:27:24 +09:00 |
|
test_llm_core_reasoning.py
|
Support vLLM 0.20.2 / NIM reasoning-parser output end-to-end (surface + agent context + render) (#602)
|
2026-06-02 11:48:17 +09:00 |
|
test_llm_core_sanitize_tool_calls.py
|
Chat: merge consecutive user messages for strict providers
|
2026-06-02 20:44:13 +09:00 |
|
test_llm_core_streaming.py
|
Fix native tool-calling follow-up round on Gemini and Ollama (#867)
|
2026-06-02 11:39:40 +09:00 |
|
test_llm_core_temperature.py
|
Providers: omit temperature for OpenAI reasoning models
|
2026-06-02 20:58:33 +09:00 |
|
test_lmstudio_discovery.py
|
Discover LM Studio via host/port scanning and native-API fingerprint (#1126)
|
2026-06-02 23:04:58 +09:00 |
|
test_lmstudio_vision.py
|
Use LM Studio-reported vision capability for image passthrough (#1130)
|
2026-06-02 23:01:04 +09:00 |
|
test_local_endpoint_api_key_js.py
|
Models: allow API keys for local endpoints
|
2026-06-02 20:36:54 +09:00 |
|
test_local_endpoint_js.py
|
fix: don't bill self-hosted models reached by a container/service hostname (#596)
|
2026-06-02 11:47:58 +09:00 |
|
test_markdown_rendering_js.py
|
Fix ordered list rendering in markdown preview (#645)
|
2026-06-02 11:49:44 +09:00 |
|
test_markdown_table_row_js.py
|
fix: markdown tables drop empty cells and misalign columns (#1164)
|
2026-06-02 22:41:27 +09:00 |
|
test_markitdown_runtime.py
|
Add optional markitdown extraction for Office/EPUB documents (#766)
|
2026-06-02 11:28:52 +09:00 |
|
test_mcp_manager.py
|
fix: add Browser MCP connection diagnostics (#662)
|
2026-06-02 11:50:17 +09:00 |
|
test_memory_bullet_extraction.py
|
Fix AttributeError on bullet lines in extract_memory_from_chat (#873)
|
2026-06-02 11:46:06 +09:00 |
|
test_memory_extractor_vector_degraded.py
|
fix: data integrity — deep-research result parsing + memory-extraction durability (#808)
|
2026-06-02 11:27:31 +09:00 |
|
test_modal_dock_composer_clearance.py
|
fix(ui): keep minimized windows above composer (#1197)
|
2026-06-02 23:31:09 +09:00 |
|
test_model_context.py
|
Models: prefer longest known context match
|
2026-06-02 20:33:09 +09:00 |
|
test_model_routes.py
|
fix(models): clear deleted endpoint fallback refs (#1207)
|
2026-06-02 23:41:04 +09:00 |
|
test_new_chat_model_preference.py
|
Chat: prefer active model for new desktop chats
|
2026-06-02 21:00:50 +09:00 |
|
test_notes_update_due_date.py
|
Notes: parse natural-language due dates on update
|
2026-06-02 20:51:16 +09:00 |
|
test_null_owner_gates.py
|
Security: owner-scope v1 chat endpoint fallback
|
2026-06-02 20:31:35 +09:00 |
|
test_og_image_extraction.py
|
fix: source thumbnails dropped for http-only og:image URLs (#667)
|
2026-06-02 11:41:33 +09:00 |
|
test_ollama_port_detection.py
|
Add Ollama port path detection regressions (#883)
|
2026-06-02 12:24:18 +09:00 |
|
test_pdf_runtime.py
|
Show a clear message when PyMuPDF is missing
|
2026-06-01 18:27:17 +09:00 |
|
test_personal_docs_exclusions.py
|
Docs: respect path boundary when clearing exclusions
|
2026-06-02 20:35:44 +09:00 |
|
test_personal_docs_office_index.py
|
Add optional markitdown extraction for Office/EPUB documents (#766)
|
2026-06-02 11:28:52 +09:00 |
|
test_personal_docs_pdf_index.py
|
Fix chat stream recovery and PDF library indexing (#468)
|
2026-06-01 22:33:35 +09:00 |
|
test_personal_upload_isolation.py
|
Scope personal RAG uploads by owner (#446)
|
2026-06-01 22:36:53 +09:00 |
|
test_platform_compat.py
|
Windows: improve Git Bash detection
|
2026-06-02 20:45:48 +09:00 |
|
test_preset_fill_missing_defaults.py
|
Presets: fill missing built-in defaults on load
|
2026-06-02 20:32:08 +09:00 |
|
test_prompt_bar_manual_resize.py
|
fix(ui): allow manual prompt bar resize (#1201)
|
2026-06-02 23:43:53 +09:00 |
|
test_provider_classification.py
|
Add provider classification and upstream-error tests
|
2026-06-02 20:42:43 +09:00 |
|
test_provider_detection.py
|
Provider detection: match by hostname instead of substring (re #768) (#815)
|
2026-06-02 11:11:17 +09:00 |
|
test_provider_endpoints.py
|
Add provider endpoint resolver tests
|
2026-06-02 12:53:50 +09:00 |
|
test_rag_vector_id_stability.py
|
fix(rag): use a stable hash for document IDs so dedup survives restarts (#1098)
|
2026-06-02 22:42:23 +09:00 |
|
test_rate_limiter.py
|
Odysseus v1.0
|
2026-05-31 23:58:26 +09:00 |
|
test_readiness.py
|
feat: add /api/ready readiness probe (DB, data dir, local-first) (#1200)
|
2026-06-02 23:33:22 +09:00 |
|
test_rename_user_case_insensitive.py
|
fix(auth): case-insensitive owner migration on username rename (#1183)
|
2026-06-02 23:18:15 +09:00 |
|
test_reply_recipients_js.py
|
fix: reply-all Cc's the user's own other addresses (multi-account) (#672)
|
2026-06-02 11:42:20 +09:00 |
|
test_research_owner_scope_routes.py
|
tests: cover research route owner gates
|
2026-06-02 20:42:15 +09:00 |
|
test_research_probe_errors.py
|
Surface deep research probe errors (#1086)
|
2026-06-02 22:51:25 +09:00 |
|
test_research_query_fallback.py
|
Deep research: don't treat a bare 'yes' as the research topic (#858)
|
2026-06-02 11:30:53 +09:00 |
|
test_research_service.py
|
fix: data integrity — deep-research result parsing + memory-extraction durability (#808)
|
2026-06-02 11:27:31 +09:00 |
|
test_research_session_id_validation.py
|
fix(research): validate session_id to block path traversal
|
2026-06-01 23:25:38 +01:00 |
|
test_research_utils.py
|
fix: deep research discards valid sources mentioning cookies/copyright (#481)
|
2026-06-01 22:26:37 +09:00 |
|
test_reserved_username_admin_escalation.py
|
Reserve internal sentinel usernames
|
2026-06-02 05:58:58 +09:00 |
|
test_resolve_endpoint_fallbacks.py
|
Add resolve_endpoint fallback chain regressions (#890)
|
2026-06-02 12:24:50 +09:00 |
|
test_review_regressions.py
|
Models: avoid hidden models in default fallback
|
2026-06-02 20:37:14 +09:00 |
|
test_scheduler_restart_doublefire.py
|
fix(scheduler): push next_run forward on startup to stop restart double-fire (#708)
|
2026-06-02 11:43:30 +09:00 |
|
test_search_cache_invalidation.py
|
Fix invalidate_search_cache using a key that never matches stored entries (#852)
|
2026-06-02 10:53:33 +09:00 |
|
test_search_config_provider_key.py
|
Report provider-specific search API keys correctly (#1202)
|
2026-06-02 23:37:15 +09:00 |
|
test_search_content_extraction_parity.py
|
Search: align service content extraction
|
2026-06-02 20:53:07 +09:00 |
|
test_search_module_consolidation.py
|
Search: consolidate core and provider implementations
|
2026-06-02 21:02:26 +09:00 |
|
test_search_query.py
|
Fix year extraction in research queries
|
2026-06-01 23:09:41 +09:00 |
|
test_search_ranking.py
|
Odysseus v1.0
|
2026-05-31 23:58:26 +09:00 |
|
test_security_regressions.py
|
Security: sanitize export and gallery filenames
|
2026-06-02 20:29:56 +09:00 |
|
test_select_dropdown_theme_css.py
|
Normalize native select option theming (#1178)
|
2026-06-02 23:09:15 +09:00 |
|
test_serve_profiles.py
|
Cookbook serve profiles and engine filter
|
2026-06-02 12:34:42 +09:00 |
|
test_service_search_provider_guards.py
|
Search: consolidate core and provider implementations
|
2026-06-02 21:02:26 +09:00 |
|
test_session_ghost_delete.py
|
Sessions: allow deleting memory-only ghost sessions
|
2026-06-02 20:51:26 +09:00 |
|
test_session_mode_helpers.py
|
Fix database stubs in regression tests (#301)
|
2026-06-01 16:55:09 +09:00 |
|
test_session_owner_attribution.py
|
Attribute API-token sessions to the token owner (effective_user) (#871)
|
2026-06-02 11:39:01 +09:00 |
|
test_settings_scrub.py
|
Deep-scrub secrets from public settings
|
2026-06-01 23:11:50 +09:00 |
|
test_setup_admin_user.py
|
Normalize setup admin username (#448)
|
2026-06-01 22:38:56 +09:00 |
|
test_shell_routes.py
|
fix: distinguish external cookbook runtimes (#1188)
|
2026-06-02 23:20:00 +09:00 |
|
test_skill_index_prompt_injection.py
|
fix(agent-loop): wrap matched skills + skill index in untrusted user-role message (#788)
|
2026-06-02 11:15:45 +09:00 |
|
test_skills_delete_owner.py
|
Skills: delete owner-scoped skills with owner
|
2026-06-02 20:28:36 +09:00 |
|
test_skills_manager_owner_isolation.py
|
fix(skills): scope skill reads to caller owner (#777)
|
2026-06-02 11:21:27 +09:00 |
|
test_speech_service_toggles.py
|
Honor disabled speech service toggles (#814)
|
2026-06-02 10:44:39 +09:00 |
|
test_sqlite_foreign_keys.py
|
DB: enable SQLite foreign key cascades
|
2026-06-02 20:36:13 +09:00 |
|
test_strip_think.py
|
Text: strip dangling think blocks after visible text
|
2026-06-02 20:36:37 +09:00 |
|
test_stt_leak.py
|
STT: clean temp audio files on transcription failure
|
2026-06-02 20:43:24 +09:00 |
|
test_task_scheduler_cancel.py
|
Tasks: clean up queued cancellation state
|
2026-06-02 20:51:21 +09:00 |
|
test_task_scheduler_session_delivery.py
|
Fix test suite: ESM module loading and stub isolation (#844)
|
2026-06-02 11:29:29 +09:00 |
|
test_tool_index_keyword_boundaries.py
|
Tools: match keyword hints on word boundaries
|
2026-06-02 20:32:20 +09:00 |
|
test_tool_path_confinement.py
|
fix(tools): strict path confinement with sensitive-subpath deny list (#1072)
|
2026-06-02 23:13:30 +09:00 |
|
test_tool_support_heuristic.py
|
fix: deepseek-r1 on Ollama returns HTTP 400 when tool schemas are sent (#1169)
|
2026-06-02 23:22:57 +09:00 |
|
test_topic_analyzer.py
|
Topics: hydrate session history before analysis
|
2026-06-02 20:44:27 +09:00 |
|
test_tts_cache_stats.py
|
TTS: include mp3 files in cache stats
|
2026-06-02 20:43:29 +09:00 |
|
test_unknown_tool_calls.py
|
fix(agent): map native google_search and surface empty rounds
|
2026-06-02 12:57:45 +09:00 |
|
test_upload_handler_atomicity.py
|
Uploads: write uploads index atomically
|
2026-06-02 20:51:39 +09:00 |
|
test_upload_routes_owner_scope.py
|
tests: cover upload route owner gates
|
2026-06-02 20:42:26 +09:00 |
|
test_vault_password_not_in_argv.py
|
fix(security): stop leaking the vault master password via process argv (#879)
|
2026-06-02 12:25:43 +09:00 |
|
test_venice_hosts.py
|
Treat Venice as a tool-capable SOTA cloud provider (#1173)
|
2026-06-02 23:03:46 +09:00 |
|
test_vision_model_detection.py
|
Recognize local vision models so their images aren't dropped (#185)
|
2026-06-01 13:09:21 +09:00 |
|
test_visual_report.py
|
Fix visual report chapter navigation (#505)
|
2026-06-01 22:26:13 +09:00 |
|
test_webhook_ssrf_resilience.py
|
Webhook: block IPv6 SSRF bypasses
|
2026-06-02 20:28:12 +09:00 |
|
test_webhook_trigger_auth_exempt.py
|
Exempt task webhook trigger from session auth (#784)
|
2026-06-02 11:23:40 +09:00 |
|
test_windows_update_script.py
|
Windows: add Docker update script
|
2026-06-02 20:45:32 +09:00 |
|
test_youtube_comments_timeout.py
|
YouTube: enforce comment fetch timeout while waiting
|
2026-06-02 20:44:24 +09:00 |