odysseus/tests
Alexandre Teixeira f74a262f73 merge: reconcile PR 40 with current lab
Integrate lab fff55a78 into PR #40 (cc25d5ba). Lab's modular email
backend/frontend, modular settings, split stylesheets (static/style.css
stays deleted), procfs compatibility, and request-scoped TurnContract
authority win; PR #40's routing classifiers, editor/email/task features,
and style.css changes are ported into lab's module and stylesheet homes.

Integration fixes:
- settings/api.js imports ui.js under its canonical versioned URL
- browser observations keep legacy CAPTCHA/access-block evidence
- artifact turns do not re-trigger broad-web research recovery
- env reference documents PR test-tool variables; page regenerated

PR #40 defects surfaced by lab gates and fixed here:
- web_fetch generic schema drops top-level anyOf (OpenAI contract);
  the compact preview contract still requires url or urls
- get_weather registered as a brokered network read
- new lazy editor modules precached for offline use
- SearXNG pin mirrored into GPU standalone compose files
- image model picker again skips offline endpoints

Tests updated where PR #40 changed behaviour on purpose, and PR tests
moved onto lab's document_source helpers.
2026-10-01 05:03:58 +01:00
..
cli feat(scripts): add odysseus-dev, a per-worktree isolated boot 2026-09-25 17:35:47 +02:00
css_snapshot Merge lab into refactor/split-style-css 2026-10-01 00:48:58 +01:00
e2e merge: reconcile PR 40 with current lab 2026-10-01 05:03:58 +01:00
fixtures Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
helpers merge: reconcile PR 40 with current lab 2026-10-01 05:03:58 +01:00
smoke test(smoke): add a release smoke suite over every advertised feature area 2026-09-30 12:12:58 +02:00
streaming test(harness): isolate imports and stabilize browser and DNS fixtures 2026-09-22 23:27:08 +01:00
tools merge: reconcile PR 40 with current lab 2026-10-01 05:03:58 +01:00
_taxonomy.py test(taxonomy): auto-mark tests by area and sub-area (#3491) 2026-06-09 01:13:28 +02:00
backgroundToolJobs.test.mjs Squash Odysseus development history 2026-09-11 06:04:19 +00:00
bombadil-spec.ts Odysseus v1.0 2026-05-31 23:58:26 +09:00
chatEditorProgress.test.mjs Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
chatImageDeletion.test.mjs Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
chatProcessingHandoff.test.mjs Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
conftest.py test: fail the test that leaks a bare src/core module stub 2026-09-30 13:02:34 +02:00
documentSelectionCaret.mjs merge: reconcile PR 40 with current lab 2026-10-01 05:03:58 +01:00
editor-ai-cancel.mjs Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
editor-layer-styles.mjs merge: reconcile PR 40 with current lab 2026-10-01 05:03:58 +01:00
editorRichUpdate.mjs merge: reconcile PR 40 with current lab 2026-10-01 05:03:58 +01:00
editorSuggestionApply.mjs merge: reconcile PR 40 with current lab 2026-10-01 05:03:58 +01:00
editorSuggestionButtons.mjs merge: reconcile PR 40 with current lab 2026-10-01 05:03:58 +01:00
emailReplyBrowser.test.mjs Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
emailReplyStream.test.mjs Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
generatedImageResult.test.mjs Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
historyResumeRendering.test.mjs merge: reconcile PR 40 with current lab 2026-10-01 05:03:58 +01:00
KNOWN_FAILURES.md fix(tests): bind the docker-socket fixtures somewhere sun_path fits 2026-09-30 17:35:06 +02:00
LAYOUT_INVENTORY.md fix(devops): harden docker config defaults (#4349) 2026-06-16 04:03:43 +01:00
live_thinking_scheduler.test.mjs perf(chat): batch live thinking rendering and bound timer updates (#5931) 2026-08-10 20:11:48 +01:00
markdown_codefence_placeholder_regression.mjs Render emoji shortcodes as icons in chat (#345) (#629) 2026-06-05 02:28:42 +02:00
notesDraftAutosave.test.mjs Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
noteTestOracle.test.mjs Squash Odysseus development history 2026-09-11 06:04:19 +00:00
OVERSIZED_TEST_SPLIT_PLAN.md test: add oversized test split plan (#3987) 2026-06-16 02:28:03 +00:00
README.md Merge lab into test/95-release-smoke-suite 2026-10-01 02:45:49 +01:00
researchMobileButtons.test.mjs Merge lab into refactor/split-style-css 2026-10-01 00:48:58 +01:00
run_focus.py test: split service health tests (#4972) 2026-07-03 20:50:49 +02:00
run_order_report.py test: add report-only order-sensitivity runner (#3982) 2026-06-15 15:49:47 +09:00
schemaThinkingProbe.test.mjs Squash Odysseus development history 2026-09-11 06:04:19 +00:00
sidebarNewChat.test.mjs Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
skillsApproval.test.mjs Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_action_intents.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_action_intents_calendar.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_action_intents_shell_verbs.py Anchor shell-verb intent patterns to imperative or can-you position (#1664) 2026-06-03 14:23:10 +09:00
test_action_menu_order.py Merge lab into refactor/email-library-package 2026-10-01 02:22:23 +01:00
test_active_document_clear.py refactor(tools): extract document tools to handle registry (#3666) 2026-06-10 10:41:52 +02:00
test_active_document_mutation_guard.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_active_document_visibility_contract.py Merge lab into refactor/email-library-package 2026-10-01 02:22:23 +01:00
test_active_email_reply_guard.py Polish mobile UI and editor workflows 2026-06-27 13:05:44 +00:00
test_add_directory_event_loop.py fix(personal): run directory indexing off the event loop (#5634) 2026-08-15 10:12:47 +01:00
test_admin_device_flow_static.py feat(provider): support multiple ChatGPT subscriptions with usage 2026-09-22 13:12:19 +01:00
test_admin_tools_registry.py fix(tools): handle non-dict JSON values in _parse_tool_args (closes #5043) (#5064) 2026-07-03 13:07:44 +01:00
test_admin_wipe_gallery.py Admin: wipe gallery albums with images 2026-06-02 20:35:57 +09:00
test_admin_wipe_routes_shim.py refactor(routes): move admin_wipe domain into routes/admin_wipe/ subpackage (#5659) 2026-07-21 12:39:27 +02:00
test_agent_bash_tmux_env.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_agent_bash_windows.py fix(agent): use Git Bash for Windows workspace shell 2026-08-07 23:46:48 +03:00
test_agent_continuation_routing.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_agent_evidence.py exclude known inputs from completion artifacts 2026-09-19 00:08:57 +00:00
test_agent_evidence_loop.py test(agent): restore exact turn-policy regressions 2026-09-23 00:14:30 +01:00
test_agent_external_tool_schemas.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_agent_loop.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_agent_loop_tool_output_truncation.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_agent_migration_manifest.py docs: add agent migration manifest helper (#3028) 2026-06-15 15:57:33 +09:00
test_agent_render_ownership.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_agent_round_model_provenance_ui.py refactor(model-routing): centralize explicit foreground fallback policy (#6020) 2026-08-14 08:10:30 +01:00
test_agent_rounds_exhausted.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_agent_runs_terminal_order.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_agent_runtime_context.py fix(agent): preserve focused turn contracts and verified completion 2026-09-22 23:26:16 +01:00
test_agent_search_dedupe.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_agent_thread_chevron_static.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_agent_thread_dot_alignment_css.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_agent_tool_budget_nonnumeric.py fix(chat): guard non-numeric agent tool budget setting 2026-06-27 19:20:48 +01:00
test_agent_tools_import_isolation.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_agent_tools_truncate_nonstring.py fix: agent_tools._truncate crashes on non-string input (#1624) 2026-06-03 14:06:39 +09:00
test_agent_trace.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_agent_turn_contract_boundaries.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_ai_image_url_safety.py fix(ai): validate generated image result URLs (#4289) 2026-06-15 16:40:49 +02:00
test_ai_interaction_owner_scope.py fix(ai): offload model resolution from async paths 2026-06-28 00:48:35 +01:00
test_ajax_default_tools.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_ajax_email_live.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_amd_gpu_check_args.py Parse all AMD GPU check args (#1586) 2026-06-03 08:56:48 +09:00
test_anthropic_response_parse.py fix: Anthropic responses with multiple text blocks lose all but the first (#1255) 2026-06-03 00:57:20 +09:00
test_api_call_integration_routing.py fix(agent): index api_call so RAG tool selection can retrieve it (#3923) 2026-06-18 08:43:25 +00:00
test_api_chat_security.py refactor(routes): move webhook domain into routes/webhook/ subpackage (#5781) 2026-08-03 20:44:31 +02:00
test_api_key_file_permissions.py fix(security): restrict API-key encryption key file to 0o600 2026-06-15 15:00:11 +09:00
test_api_key_manager_atomic_save.py fix: use atomic write in APIKeyManager.save() to prevent credential data loss (#4591) (#4597) 2026-06-23 23:28:53 +02:00
test_api_key_manager_corrupt_load.py fix: APIKeyManager.load crashes app startup on a corrupt/wrong-shape api_keys.json (#1565) 2026-06-03 08:11:37 +09:00
test_api_key_manager_resilience.py fix(api-keys): preserve encrypted keys when saving providers (#1920) 2026-06-11 18:23:54 +01:00
test_api_token_routes.py fix(api): normalize non-object JSON bodies to empty dict in token PATCH (#3976) 2026-06-15 18:05:15 +01:00
test_api_token_user_route_gate.py fix(auth): gate api tokens from user routes (#2992) 2026-06-07 12:55:01 +02:00
test_app.py Fix fresh checkout test failures 2026-06-01 02:22:17 +00:00
test_app_config_shared_fetch_js.py perf(frontend): share one cached fetch for /api/auth/settings and /api/tools (#5997) 2026-08-16 21:03:05 +01:00
test_app_db_permissions.py fix(db): restrict data/app.db to 0600 (#4420) 2026-07-11 21:15:49 +02:00
test_app_initializer_memory_vector_degraded.py fix(health): report unhealthy memory vector store as degraded 2026-06-27 22:25:13 +01:00
test_app_static_mime.py fix: normalize JS static MIME types on Windows 2026-06-02 01:32:00 +02:00
test_apply_patch_transaction.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_approved_replay_message_shape.py fix(agent): drop the empty assistant turn from an approved-action replay (#6124) 2026-08-20 13:06:22 +02:00
test_archived_sessions_model_filter.py fix(tests): make archived session filter test multipart-independent 2026-06-05 10:12:47 +01:00
test_ask_user_persistence.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_ask_user_tool.py fix(agent): close untrusted-context gate bypasses 2026-08-15 01:58:32 +00:00
test_atomic_io.py fix(core): clean up orphaned temp files on atomic write failure (#6068) 2026-08-19 17:38:24 +02:00
test_attachment_refs.py fix(stabilization): harden attachment lifecycle and agent guard signals (#5420) 2026-07-11 15:14:14 +01:00
test_auth_config_lock_concurrency.py fix(auth): fail closed when deleting user tokens fails (#3733) 2026-06-10 16:24:27 +02:00
test_auth_disabled_document_access.py fix: document read fails with 403 when auth is disabled (#4623) 2026-06-22 21:01:11 +02:00
test_auth_event_loop.py fix(auth): derive the session cookie Secure flag from the request scheme (#6048) 2026-08-16 22:56:36 +01:00
test_auth_policy.py fix(auth): derive the session cookie Secure flag from the request scheme (#6048) 2026-08-16 22:56:36 +01:00
test_auth_regressions.py fix(tests): stop test_auth_regressions leaking stub modules 2026-09-30 10:36:00 +02:00
test_auth_require_privilege_nondict.py fix: require_privilege 500s on a non-dict privileges blob from auth.json (#1693) 2026-06-03 13:37:54 +09:00
test_auth_root_path.py fix(auth): normalize mounted request paths (#5807) 2026-08-15 18:55:15 +01:00
test_auth_session_revocation.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_aux_llm_owner_scope.py refactor(routes): move task domain into routes/task/ subpackage 2026-08-17 10:07:17 +08:00
test_background_chat_completion_ui_static.py merge: reconcile PR 40 with current lab 2026-10-01 05:03:58 +01:00
test_background_tool_jobs.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_backup_cli_security.py Skip vanished backup list entries (#2006) 2026-07-11 05:26:42 +01:00
test_backup_import_cross_user_dedup.py fix(memory): don't let an unreadable store get overwritten with an empty one (#5831) 2026-08-06 02:33:50 -06:00
test_backup_import_skills.py fix: restore backup import after skills migration (#2980) 2026-06-06 21:46:32 +01:00
test_backup_import_skills_dedup.py fix: backup import dropping a user's skill on cross-tenant title/id collision (#2057) 2026-06-09 08:04:22 +02:00
test_bg_job_tools.py feat(agent): add manage_bg_jobs tool to inspect and kill background bash jobs (#4577) 2026-06-19 00:28:22 -07:00
test_bg_jobs_store.py Ignore invalid background job store rows (#1261) 2026-06-03 14:07:14 +09:00
test_bg_monitor_stream.py fix(agent): close approval continuation gaps 2026-08-15 06:14:37 +00:00
test_blind_compare_redaction.py refactor(tests): add import-state isolation helper 2026-06-05 07:30:14 +01:00
test_boundary_tool_routing.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_browser_observation.py merge: reconcile PR 40 with current lab 2026-10-01 05:03:58 +01:00
test_browser_progress.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_browser_screenshot_artifact_safety.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_browser_target_correction.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_browser_transport_recovery.py merge: reconcile PR 40 with current lab 2026-10-01 05:03:58 +01:00
test_budget_auto_sentinel.py fix(agent): don't let a materialized default budget defeat context-window scaling (#4122) 2026-06-15 15:17:28 +09:00
test_buffered_terminal_answer.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_build_historical_harness_queue.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_build_odysseus_sft_repair_manifest.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_build_user_content_pdf_marker.py fix(documents): restore PDF library metadata and preview (#2483) 2026-06-07 23:23:27 +02:00
test_builtin_actions_cookbook_serve_state.py fix(cookbook): preserve scheduled serve server metadata (#4545) 2026-06-27 16:48:53 +01:00
test_builtin_actions_nonstring.py fix: builtin_actions heuristics crash on a truthy non-string input (#1639) 2026-06-03 08:59:16 +09:00
test_builtin_actions_owner_scope.py fix(email): use UID commands instead of sequence numbers in IMAP fetches (#5149) 2026-07-11 14:06:40 +01:00
test_builtin_mcp_bg_tasks.py fix(mcp): retain builtin startup tasks and reap npx probe 2026-06-28 01:18:17 +01:00
test_builtin_mcp_npx_cache.py Merge verified Odysseus fixes 2026-07-23 14:49:02 +00:00
test_builtin_mcp_pythonpath.py fix: preserve pythonpath for built-in mcp servers (#5117) 2026-07-11 14:34:42 +01:00
test_builtin_memory_consolidation.py Merge verified Odysseus fixes 2026-07-23 14:49:02 +00:00
test_builtin_skills.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_builtin_skills_startup_order.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_builtin_themes_static.py test(baseline): align UI and model profile expectations 2026-09-22 23:27:17 +01:00
test_cache_affinity_local_only.py fix(endpoints): normalize URL handling (#4338) 2026-06-16 03:59:18 +01:00
test_cached_model_scan_failures.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_caldav_bidirectional_sync.py refactor(tools): split tool_implementations.py into src/tools/ package (#4423) 2026-06-26 15:40:04 +01:00
test_caldav_client_cleanup.py CalDAV: close the DAVClient on sync and write-back paths (#4793) 2026-07-11 13:03:24 +01:00
test_caldav_google_principal_url.py CalDAV: close the DAVClient on sync and write-back paths (#4793) 2026-07-11 13:03:24 +01:00
test_caldav_prune_parse_failure.py fix(caldav): skip the prune when any object fails to parse (#3454) 2026-06-08 18:59:14 +02:00
test_caldav_redirect_hardening.py fix(caldav): disable redirects on the sync/write-back DAVClient (SSRF) (#2663) 2026-06-07 05:05:24 +01:00
test_caldav_sync_prune_local_events.py fix(caldav): don't prune locally-created events on sync (#2706) 2026-06-05 02:48:03 +02:00
test_caldav_sync_uid_scope.py fix(calendar): scope CalDAV event lookup by calendar 2026-06-04 04:01:21 +01:00
test_caldav_test_connection_ssl.py fix(calendar): trust operator CA bundle in CalDAV test_connection (#4796) 2026-07-11 13:25:16 +01:00
test_caldav_url_hardening.py fix(caldav): disable redirects on the sync/write-back DAVClient (SSRF) (#2663) 2026-06-07 05:05:24 +01:00
test_caldav_url_nonstring.py Harden DAV outbound URL validation (#2819) 2026-06-05 13:22:21 +02:00
test_caldav_writeback.py Harden CalDAV write-back with retries (#1193) 2026-06-15 15:59:31 +09:00
test_caldav_writeback_route.py Harden CalDAV write-back with retries (#1193) 2026-06-15 15:59:31 +09:00
test_calendar_batch_events.py fix: handle batch events format in manage_calendar tool (#3503) 2026-06-10 19:13:08 +02:00
test_calendar_cli_overlap.py Fix odysseus-calendar list dropping in-progress / multi-day events (#2065) 2026-06-16 14:04:56 +02:00
test_calendar_css_url_escape_js.py fix(security): escape backslashes in calendar bg-image CSS url() (#4712) 2026-06-22 21:17:52 +02:00
test_calendar_default_transaction.py fix(calendar): keep default creation transactional (#5806) 2026-08-12 04:51:52 +01:00
test_calendar_event_contrast.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_calendar_explicit_timezone.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_calendar_import_zero_duration.py fix(calendar): keep imported events with non-positive duration visible (#4484) 2026-06-27 16:52:40 +02:00
test_calendar_list_range_aliases.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_calendar_ordinal_date_guard.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_calendar_owner_scope.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_calendar_parse_dt_naive.py test: localize calendar recurrence helper import (#4944) 2026-06-28 19:04:15 +02:00
test_calendar_parse_dt_time_first.py fix(calendar): accept time-first datetimes in _parse_dt 2026-06-27 18:51:18 +01:00
test_calendar_parse_dt_tonight.py fix: _parse_dt does not understand 'tonight' so event start/end breaks (#1488) 2026-06-03 14:14:41 +09:00
test_calendar_recurrence.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_calendar_reminder_minutes_parsing.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_calendar_retiming_routing.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_calendar_rrule.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_calendar_rrule_until_utc.py test: localize calendar recurrence helper import (#4944) 2026-06-28 19:04:15 +02:00
test_calendar_stream_links.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_calendar_tool_card_static.py refactor(email): move emailLibrary.js into static/js/emailLibrary/ 2026-09-30 09:08:21 +02:00
test_calendar_update_event_tz.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_calendar_utils_dates_js.py Ignore non-string calendar date inputs (#1649) 2026-06-03 14:16:58 +09:00
test_calendar_visual_static.py refactor(email): move emailLibrary.js into static/js/emailLibrary/ 2026-09-30 09:08:21 +02:00
test_canvas_coords_empty_touches_js.py fix: canvasCoords crashes on empty touch list (mobile race) (#2045) 2026-06-17 10:25:39 +02:00
test_card_menu_style_contract.py Merge lab into refactor/email-library-package 2026-10-01 02:22:23 +01:00
test_carddav_password_encryption.py fix(security): encrypt CardDAV password at rest in settings.json (#1741) 2026-06-15 15:58:14 +09:00
test_censor_pref_js.py Ignore censor preference storage errors (#1652) 2026-06-03 14:16:55 +09:00
test_cerebras_cache_affinity.py fix(llm-core): prevent cache-affinity fields from reaching Cerebras 2026-06-27 18:07:12 +01: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_background_stream_isolation.py Squash Odysseus development history 2026-09-11 06:04:19 +00: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_helpers.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_chat_helpers_bg_tasks_tracked.py fix(chat): track chat hot-path background tasks for strong references (#4443) (#4444) 2026-06-18 21:26:11 +02:00
test_chat_image_preservation.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_chat_image_routing.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_chat_metrics.py fix(chat): show requested and actual reply models 2026-06-06 04:30:16 -06:00
test_chat_mode_pill_static.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_chat_model_provenance_js.py refactor(model-routing): centralize explicit foreground fallback policy (#6020) 2026-08-14 08:10:30 +01:00
test_chat_preprocess_tool_policy.py fix(agent): enforce guide-only tool policy (#3088) 2026-06-06 18:48:24 -06:00
test_chat_processor_pinned_memory.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_chat_processor_web_search.py fix(search): use generated query for chat mode web search #4547 (#4557) 2026-06-27 19:04:46 +01:00
test_chat_route_tool_policy.py test(agent): restore exact turn-policy regressions 2026-09-23 00:14:30 +01:00
test_chat_spinner_completion_js.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_chat_stream_errors_js.py refactor(model-routing): centralize explicit foreground fallback policy (#6020) 2026-08-14 08:10:30 +01:00
test_chat_stream_scope.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_chat_tool_screenshot_xss.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_chat_ttft_timer_static.py merge: reconcile PR 40 with current lab 2026-10-01 05:03:58 +01:00
test_chat_upload_limit_config.py fix(upload): configure chat attachment size limit (#2439) 2026-06-07 22:42:24 +02:00
test_chat_url_prefetch_failure_context.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_chatgpt_reasoning_and_grouping.py merge: reconcile PR 40 with current lab 2026-10-01 05:03:58 +01:00
test_chatgpt_session_binding.py feat(provider): support multiple ChatGPT subscriptions with usage 2026-09-22 13:12:19 +01:00
test_chatgpt_subscription_device_flow_multi_account.py feat(provider): support multiple ChatGPT subscriptions with usage 2026-09-22 13:12:19 +01:00
test_chatgpt_subscription_routes.py feat(provider): support multiple ChatGPT subscriptions with usage 2026-09-22 13:12:19 +01:00
test_chatgpt_subscription_usage.py feat(provider): support multiple ChatGPT subscriptions with usage 2026-09-22 13:12:19 +01:00
test_chatgpt_subscription_usage_js.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_chatgpt_zero_native_tools.py feat(ui): refine subscription model and usage controls 2026-09-22 13:12:19 +01:00
test_check_outbound_url_nonstring.py fix: check_outbound_url crashes on a truthy non-string URL (#1623) 2026-06-03 08:59:49 +09:00
test_checkin_digest_owner_scope.py fix: check-in calendar digest leaks every user's events (missing owner scope) (#1925) 2026-06-16 02:42:41 +01: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_ci_authoritative_validation.py ci: make Python validation authoritative (#5940) 2026-08-12 03:35:09 +01:00
test_claim_ownerless_json.py Reject blank ownerless claim owner (#4929) 2026-06-28 10:57:11 +01:00
test_classify_events_memory_text.py fix(tasks): read Memory.text in classify_events personal context (#3640) 2026-06-10 19:03:45 +02:00
test_clawmm_r44_pdf_visual_recovery.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_clawmm_r44_short_title.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_clawmm_r45_duplicate_recovery.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_clawmm_r46_verified_artifacts.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_clawmm_r47_malformed_write_body.py test(baseline): align UI and model profile expectations 2026-09-22 23:27:17 +01:00
test_clean_agent_preview.py merge: reconcile PR 40 with current lab 2026-10-01 05:03:58 +01:00
test_clean_tool_loop.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_clean_v3_native_workspace.py fix(agent): preserve focused turn contracts and verified completion 2026-09-22 23:26:16 +01:00
test_clean_v3_route_ownership.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_cleanup_owner_scope.py tests: cover cleanup owner scope 2026-06-02 20:42:21 +09:00
test_cleanup_routes_shim.py refactor(routes): move cleanup domain into routes/cleanup/ subpackage (#5658) 2026-07-21 12:38:32 +02:00
test_cleanup_service_utcnow.py Replace cleanup service datetime.utcnow calls (#1494) 2026-06-03 14:14:27 +09:00
test_client_tool_contract.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_client_tool_routing.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_code_editor_routing.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_code_nav_tools.py fix(tests): resolve temp paths consistently on macOS 2026-09-30 10:56:58 +02:00
test_codex_cookbook_admin_gate.py fix(security): gate codex cookbook routes behind admin check for cookie sessions (#4554) 2026-06-27 14:09:32 +01:00
test_codex_ssh_host_validation.py test(cookbook): cover adopt remote host validation (#5225) 2026-07-18 12:07:48 +01:00
test_compact_calendar_create.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_compact_core_contract_path.py Unify compact runtime core tools with shared contract inventory 2026-09-18 05:43:20 +00:00
test_compact_email_editor.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_compact_memory_context.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_compact_todo_notes.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_compact_truncate_tool_call_args.py fix(compactor): shrink oversized tool_calls arguments so trim_for_context can fit a tool-only turn (#2949) 2026-06-05 20:23:38 +02:00
test_compaction_summary_failure.py fix(test): tolerate owner kwarg in compaction summary resolve_endpoint mock (#3304) 2026-06-07 17:23:06 +02:00
test_companion_pairing.py fix(companion): honor configured pairing address (#6060) 2026-08-15 21:11:10 +02:00
test_companion_readonly.py fix(companion): preserve models with auth disabled (#5797) 2026-08-15 19:47:51 +01:00
test_compare_ask_user_routing.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_compare_endpoint_owner_scope.py fix(tests): isolate compare endpoint owner-scope test 2026-06-04 19:17:15 +01:00
test_compare_js.py Fix duplicate compare modal on repeated clicks (#491) 2026-06-01 22:24:27 +09:00
test_compare_mobile_tabs_static.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_compare_routes_shim.py refactor(routes): move compare domain into routes/compare/ subpackage (#5660) 2026-07-21 12:40:09 +02:00
test_compare_shuffle_visual_static.py refactor(css): split style.css into ordered fragments 2026-09-29 17:37:25 +02:00
test_compare_stop_disconnect_poll.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_completion_verifier_request.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_composer_arrow_up_recall_js.py fix(chat): stop ArrowUp from eating an unsent multi-line prompt (#5875) 2026-08-07 19:34:50 +02:00
test_compute_next_run_monthly_clamp.py fix: monthly tasks scheduled for day 29-31 skip every short month (#1668) 2026-06-03 14:23:01 +09:00
test_config_file_settings_routing.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_consolidate_memory_explicit_drops.py test(harness): isolate imports and stabilize browser and DNS fixtures 2026-09-22 23:27:08 +01:00
test_contact_tool_output.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_contact_tool_partial_update.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_contacts_add_null_name.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_contacts_carddav_security.py Harden DAV outbound URL validation (#2819) 2026-06-05 13:22:21 +02:00
test_contacts_import_nonstring.py fix(contacts): tolerate non-string body in /api/contacts/import (#3638) 2026-06-10 17:50:22 +02:00
test_contacts_routes_shim.py refactor(routes): move contacts domain into routes/contacts/ subpackage (#5227) 2026-07-05 03:58:34 +02:00
test_contacts_vcard_parse.py fix(contacts): parse Apple/iCloud item-grouped vCard EMAIL/TEL properties (#1438) 2026-06-03 14:24:04 +09:00
test_context_budget.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_context_cache_per_endpoint.py fix(agent): don't let a materialized default budget defeat context-window scaling (#4122) 2026-06-15 15:17:28 +09:00
test_context_compactor.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_context_compactor_nonstring.py fix: context_compactor token helpers crash on non-string message text (#1634) 2026-06-03 14:12:14 +09:00
test_contract_explicit_fallback.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_contract_prompt_conversation.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_cook_sft_alex_conversations.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_cookbook_agent_tool_ssh_validation.py fix(cookbook): validate agent SSH targets (#4429) 2026-06-18 21:41:33 +02:00
test_cookbook_cache_scan_isolation.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_cookbook_cached_scan_refresh.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_cookbook_chat_deeplinks_static.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_cookbook_cpu_only_serve.py Fix merged test regressions 2026-07-01 11:12:55 +00:00
test_cookbook_dead_download_status.py fix(cookbook): report dead finished downloads as completed instead of stopped (#4025) 2026-06-15 15:26:55 +09:00
test_cookbook_dependency_completion_regression.py refactor(css): move document, gallery and image-editor styles to their own file 2026-09-23 16:12:51 +02:00
test_cookbook_deps_recipes.py fix(cookbook): pull llama.cpp from the ggml-org GHCR namespace (#4457) (#4490) 2026-06-18 21:29:47 +02:00
test_cookbook_diagnosis.py Stabilize local dev merge 2026-07-07 01:15:20 +00:00
test_cookbook_diagnosis_js.py Stabilize local dev merge 2026-07-07 01:15:20 +00:00
test_cookbook_docker_access.py fix(tests): bind the docker-socket fixtures somewhere sun_path fits 2026-09-30 17:35:06 +02:00
test_cookbook_download_toast_duration.py Keep Cookbook download-failure toasts visible long enough to read (#1412) 2026-06-03 03:48:25 +09:00
test_cookbook_endpoint_registration.py Fix Cookbook container-local model endpoints (#1223) 2026-06-03 00:09:48 +09:00
test_cookbook_error_feedback.py fix(cookbook): surface backend diagnosis when serve fails in background (#1636) 2026-06-05 09:52:07 +01:00
test_cookbook_error_tail_lines.py fix: expand cookbook error output tail from 12 to 50 lines (#1538) 2026-06-11 17:55:33 +01:00
test_cookbook_finished_download_label.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_cookbook_gemma4_thinking_template.py feat(cookbook): add Gemma4 thinking chat template (#2955) 2026-06-05 22:43:31 +02:00
test_cookbook_helpers.py fix(cookbook): activate local Windows venv in bash runner (#5734) 2026-08-18 16:19:33 +02:00
test_cookbook_hf_token.py fix: detect HuggingFace token when downloading cookbook models (#3459) 2026-06-11 21:53:16 +01:00
test_cookbook_local_serve_pid_winpid.py fix(cookbook): record real Windows pid for local serve so Stop kills the model (#5912) 2026-08-12 10:32:24 +01:00
test_cookbook_official_trending_filter.py refactor(css): move document, gallery and image-editor styles to their own file 2026-09-23 16:12:51 +02:00
test_cookbook_package_detection.py fix(cookbook): allow local Windows Diffusers serving (#4077) 2026-06-15 15:21:01 +09:00
test_cookbook_port_parsing_js.py fix(cookbook): only block model launch on real port collisions (#4760) 2026-06-24 19:44:09 +02:00
test_cookbook_progress_signal_js.py Don't falsely declare a dependency build stale (#1568) (#1768) 2026-06-03 13:23:35 +09:00
test_cookbook_remote_windows_diffusers.py fix(cookbook): harden remote serve host handling (#4345) 2026-06-16 03:46:32 +01:00
test_cookbook_same_host_server_profiles_js.py Stabilize local dev merge 2026-07-07 01:15:20 +00:00
test_cookbook_serve_lifecycle.py fix(cookbook): only persist successfully stopped scheduled serves (#4267) 2026-06-15 17:30:18 +02:00
test_cookbook_stop_without_procfs.py fix(cookbook): skip the pid sweep when the host has no procfs 2026-09-30 12:13:04 +02:00
test_cookbook_tool_dry_run.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_cookbook_windows_stop_tree_js.py fix(cookbook): stop Windows process trees (#4283) 2026-06-19 00:28:25 -07:00
test_copilot.py fix(copilot): guard request_flags against a non-dict last message (#5274) 2026-07-08 23:57:23 +02:00
test_copilot_routes.py feat(provider): add GitHub Copilot provider with device-flow auth (#1480) 2026-06-04 21:13:14 +02:00
test_copy_message_strips_thinking_js.py test(harness): isolate imports and stabilize browser and DNS fixtures 2026-09-22 23:27:08 +01:00
test_core_agent_tool_floor.py Unify compact runtime core tools with shared contract inventory 2026-09-18 05:43:20 +00:00
test_cors_preflight.py Fix: CORS preflight 401'd by AuthMiddleware before CORSMiddleware (#3262) 2026-06-07 15:23:23 +02:00
test_cost_tracking.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_creation_container_routing.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_css_computed_style_snapshot.py Merge lab into refactor/split-style-css 2026-10-01 00:48:58 +01:00
test_curate_sft_trace_run.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_database_utcnow.py Replace core database utcnow defaults (#1457) 2026-06-04 02:50:19 +01:00
test_db_stubs_helper.py test: pilot core database stub helper (#3685) 2026-06-09 22:23:33 +02: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_action_planning.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_deep_research_browser_fallback.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_deep_research_date_context.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_deep_research_extraction_controls.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_deep_research_full_loop_navigation.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_deep_research_parse_json_array_echo.py fix: deep research runs the prompt's example queries when the model echoes them (#1666) 2026-06-03 14:23:07 +09:00
test_deep_research_search_error.py Research: report empty search provider results clearly 2026-06-02 20:34:25 +09:00
test_deep_research_synthesis_resilience.py Don't lose deep-research findings when synthesis times out (#1551) (#1562) 2026-06-03 08:11:44 +09:00
test_delete_message_no_session.py Let the output "x" delete work when no model/session exists (#1431) 2026-06-03 04:20:48 +09:00
test_delete_user_invalidates_token_cache.py fix(auth): fail closed when deleting user tokens fails (#3733) 2026-06-10 16:24:27 +02:00
test_delete_user_revokes_api_tokens.py fix(auth): fail closed when deleting user tokens fails (#3733) 2026-06-10 16:24:27 +02:00
test_deleted_session_sidebar_regression.py Fix stale deleted sessions in sidebar (#1203) 2026-06-02 23:52:22 +09:00
test_derive_title_nonstring.py fix: _derive_title crashes on non-string content instead of returning Untitled (#1751) 2026-06-03 13:25:41 +09:00
test_device_flow_routes.py feat: add ChatGPT Subscription provider (#2876) 2026-06-08 10:19:18 +02:00
test_diagnostics_logs.py feat(ui): add real-time diagnostic logs console (#974) 2026-06-15 10:32:51 +02:00
test_diagnostics_service_route.py feat(diagnostics): add consolidated service health endpoint for degraded-state reporting (#964) 2026-06-09 16:00:24 +01:00
test_dialog_aria.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_diffusion_server_security.py test(diffusion-server): exercise security middleware wiring (#3214) 2026-06-07 23:42:11 +02:00
test_digest_windows.py fix: calendar check-in digest drops events 7-8 days out (#1249) 2026-06-03 01:03:58 +09:00
test_direct_upload_limits.py refactor(routes): move the email modules into routes/email/ 2026-09-29 18:21:18 +02:00
test_doc_library_open_orphaned.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_docker_agent_network_tools.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_docker_devops_hardening.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_docs_no_orphan_images.py docs: generate the ODYSSEUS_* configuration reference from the source 2026-09-30 15:11:19 +02:00
test_docs_query_nondict_rows.py fix(docs): map live VectorRAG result shapes (#5960) 2026-08-17 00:07:12 +01:00
test_document_actions_nonstring.py fix: document_actions title/content helpers crash on non-string input (#1621) 2026-06-03 08:59:55 +09:00
test_document_active_restore.py test(document): read the editor through a module-set helper before it is split 2026-09-30 09:39:05 +02:00
test_document_ai_preview_refresh_js.py merge: reconcile PR 40 with current lab 2026-10-01 05:03:58 +01:00
test_document_close_clears_active_route.py refactor(tools): extract document tools to handle registry (#3666) 2026-06-10 10:41:52 +02:00
test_document_deeplink.py test(document): read the editor through a module-set helper before it is split 2026-09-30 09:39:05 +02:00
test_document_diff_discard_on_update_js.py merge: reconcile PR 40 with current lab 2026-10-01 05:03:58 +01:00
test_document_edit_reference_js.py merge: reconcile PR 40 with current lab 2026-10-01 05:03:58 +01:00
test_document_editor_background_static.py refactor(css): move document, gallery and image-editor styles to their own file 2026-09-23 16:12:51 +02:00
test_document_editor_scroll.py Merge lab into test/document-module-set-helper 2026-09-30 22:56:56 +01:00
test_document_followup_integrity.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_document_history_controls.py Merge lab into test/document-module-set-helper 2026-09-30 22:56:56 +01:00
test_document_library_delete_counters.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_document_library_expanded_export.py test(baseline): align UI and model profile expectations 2026-09-22 23:27:17 +01:00
test_document_library_export_formats_static.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_document_library_language_facet.py fix: document library language facet undercounts text documents (#1758) 2026-06-03 13:28:38 +09:00
test_document_library_mobile_footer.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_document_library_pdf_metadata.py fix(documents): restore PDF library metadata and preview (#2483) 2026-06-07 23:23:27 +02:00
test_document_markup_repair.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_document_module_api.py test(document): read the editor through a module-set helper before it is split 2026-09-30 09:39:05 +02:00
test_document_outline.py Merge lab into test/document-module-set-helper 2026-09-30 22:56:56 +01:00
test_document_pdf_marker.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_document_preview_edit_button.py Merge lab into test/document-module-set-helper 2026-09-30 22:56:56 +01:00
test_document_processor_attachment_budget.py Cap inline attachment context across files (#1498) 2026-06-03 14:23:43 +09:00
test_document_processor_empty_media_subtype.py fix(chat): give extensionless image/audio uploads a valid MIME subtype (#5205) 2026-07-08 21:04:15 +02:00
test_document_processor_text_formats.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_document_render_pdf_iframe.py fix(document): allow render-pdf to be framed and 503 cleanly on missing PyMuPDF (#2103) 2026-06-18 06:25:26 +00:00
test_document_rich_checklist_enter.py Merge lab into test/document-module-set-helper 2026-09-30 22:56:56 +01:00
test_document_rich_color_reset_and_contrast.py Merge lab into test/document-module-set-helper 2026-09-30 22:56:56 +01:00
test_document_rich_docx_export.py Merge lab into test/document-module-set-helper 2026-09-30 22:56:56 +01:00
test_document_rich_find_boundaries.py Merge lab into test/document-module-set-helper 2026-09-30 22:56:56 +01:00
test_document_rich_font_color_controls.py Merge lab into test/document-module-set-helper 2026-09-30 22:56:56 +01:00
test_document_rich_heading_enter.py Merge lab into test/document-module-set-helper 2026-09-30 22:56:56 +01:00
test_document_rich_image_caption.py Merge lab into test/document-module-set-helper 2026-09-30 22:56:56 +01:00
test_document_rich_input_rules.py Merge lab into test/document-module-set-helper 2026-09-30 22:56:56 +01:00
test_document_rich_keyboard_shortcuts.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_document_rich_selection_toolbar.py Merge lab into test/document-module-set-helper 2026-09-30 22:56:56 +01:00
test_document_rich_slash_menu.py Merge lab into test/document-module-set-helper 2026-09-30 22:56:56 +01:00
test_document_rich_smart_link_paste.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_document_rich_structure_tools.py Merge lab into test/document-module-set-helper 2026-09-30 22:56:56 +01:00
test_document_rich_table_cell_alignment.py Merge lab into test/document-module-set-helper 2026-09-30 22:56:56 +01:00
test_document_rich_table_header_preservation.py Merge lab into test/document-module-set-helper 2026-09-30 22:56:56 +01:00
test_document_rich_table_headers.py Merge lab into test/document-module-set-helper 2026-09-30 22:56:56 +01:00
test_document_rich_table_merge_split.py Merge lab into test/document-module-set-helper 2026-09-30 22:56:56 +01:00
test_document_rich_table_tab_history.py Merge lab into test/document-module-set-helper 2026-09-30 22:56:56 +01:00
test_document_rich_text_tools.py test(document): read the editor through a module-set helper before it is split 2026-09-30 09:39:05 +02:00
test_document_rich_toolbar_menus.py Merge lab into test/document-module-set-helper 2026-09-30 22:56:56 +01:00
test_document_routes_shim.py refactor(routes): move document domain into routes/document/ subpackage (#5885) 2026-08-04 03:54:55 -06:00
test_document_run_format_switch.py test(document): read the editor through a module-set helper before it is split 2026-09-30 09:39:05 +02:00
test_document_save_shortcut.py Merge lab into test/document-module-set-helper 2026-09-30 22:56:56 +01:00
test_document_save_status.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_document_session_owner_scope.py fix(auth): clean up rename and null-owner ownership (#4340) 2026-06-16 03:33:02 +01:00
test_document_source_test_hygiene.py merge: reconcile PR 40 with current lab 2026-10-01 05:03:58 +01:00
test_document_stats.py test(document): read the editor through a module-set helper before it is split 2026-09-30 09:39:05 +02:00
test_document_suggestion_highlight.py Merge lab into test/document-module-set-helper 2026-09-30 22:56:56 +01:00
test_document_suggestion_reopen_static.py test(document): read the editor through a module-set helper before it is split 2026-09-30 09:39:05 +02:00
test_document_tidy_null_timestamp.py fix: document tidy crashes on a duplicate with NULL timestamps (#1772) 2026-06-03 13:23:01 +09:00
test_document_tool_owner_scope.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_document_toolbar_arrow_offset.py Merge lab into test/document-module-set-helper 2026-09-30 22:56:56 +01:00
test_document_toolbar_order.py Merge lab into test/document-module-set-helper 2026-09-30 22:56:56 +01:00
test_draft_contact_evidence.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_edit_file.py fix(agent): close untrusted-context gate bypasses 2026-08-15 01:58:32 +00:00
test_edit_file_preservation.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_edit_image_tool.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_editor_adjustment_layers_js.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_editor_ai_tool_runner_static.py merge: reconcile PR 40 with current lab 2026-10-01 05:03:58 +01:00
test_editor_brush_engine_js.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_editor_canvas_navigation_js.py test(baseline): align UI and model profile expectations 2026-09-22 23:27:17 +01:00
test_editor_clone_sampling_js.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_editor_compare_mode.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_editor_direct_manipulation_session_js.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_editor_document_codec_js.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_editor_document_geometry_js.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_editor_draft_payload.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_editor_escape_cancel.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_editor_export_dialog_js.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_editor_first_save.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_editor_gradient_lifecycle.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_editor_history_budget_js.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_editor_keyboard_shortcuts.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_editor_layer_clipping_js.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_editor_layer_geometry_js.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_editor_layer_groups_js.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_editor_layer_masks_js.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_editor_layer_selection_js.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_editor_layer_thumbnail_render.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_editor_marquee_selection_js.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_editor_multi_transform_js.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_editor_persistence_session.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_editor_placed_layers_js.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_editor_precision_guides_js.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_editor_quick_edit_static.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_editor_refresh_session.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_editor_render_cancellation_js.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_editor_research_completion.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_editor_saved_observation.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_editor_shape_layers_js.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_editor_text_layers_js.py test(baseline): align UI and model profile expectations 2026-09-22 23:27:17 +01:00
test_editor_topbar_static.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_editor_transform_drag_js.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_editor_transform_frame_geometry_js.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_editor_transform_snap_js.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_editor_writing_action_routing.py merge: reconcile PR 40 with current lab 2026-10-01 05:03:58 +01:00
test_email_account_default_serialization.py fix(email): serialize default-account mutations (#5805) 2026-08-12 04:59:46 +01:00
test_email_account_port_validation.py fix(email): validate IMAP/SMTP ports instead of crashing with 500 (#4464) 2026-06-26 20:32:56 +02:00
test_email_ai_reply_context_draft_static.py Merge lab into refactor/email-library-package 2026-10-01 02:22:23 +01:00
test_email_attachment_search.py Merge lab into refactor/email-library-package 2026-10-01 02:22:23 +01:00
test_email_attachment_text.py merge: reconcile PR 40 with current lab 2026-10-01 05:03:58 +01:00
test_email_decode_header.py fix(email): guard _decode_header against unknown MIME charset (#1354) 2026-06-03 14:24:20 +09:00
test_email_envelope_recipients.py fix: SMTP envelope recipients split on commas inside display names (#1464) 2026-06-03 14:23:58 +09:00
test_email_fact_lookup_completion.py skip redundant synthesis after email actions 2026-09-17 13:21:11 +00:00
test_email_fallback_reconnect.py Reconnect after a failed SEARCH ALL so the email poller doesn't desync IMAP (#1613) (#1748) 2026-06-03 13:28:53 +09:00
test_email_fixture_reply_account.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_email_folder_chip_static.py Merge lab into refactor/email-library-package 2026-10-01 02:22:23 +01:00
test_email_gmail_fetch_flags.py fix(email): keep FETCH attributes Gmail sends after the header literal (all Gmail mail showed as unread) (#3785) 2026-06-11 16:12:39 +02:00
test_email_helpers_decode_header_spaces.py fix(email): decode headers without injected spaces (#2433) 2026-06-07 16:56:20 +02: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 Merge lab into refactor/email-library-package 2026-10-01 02:22:23 +01:00
test_email_library_module_graph_js.py merge: reconcile PR 40 with current lab 2026-10-01 05:03:58 +01:00
test_email_library_prewarm.py refactor(email): split the email library into seven modules 2026-09-30 09:26:34 +02:00
test_email_linkify_security_js.py Harden email HTML URL sanitization (#2496) 2026-06-04 20:47:47 +02:00
test_email_oauth.py fix(email): derive the Google OAuth redirect URI scheme from the request (#5995) 2026-08-12 00:04:32 +01:00
test_email_oauth_connect_smtp_security.py fix(email): preserve OAuth SMTP security (#5802) 2026-07-30 12:24:39 +01:00
test_email_oauth_docker_config.py fix(config): forward Google email OAuth settings through Compose (#5650) 2026-07-22 12:59:22 +02:00
test_email_oauth_settings_redirect.py refactor(settings): move the shell out of settings.js into settings/ 2026-09-30 09:45:23 +02:00
test_email_open_dedup_js.py Merge lab into refactor/email-library-package 2026-10-01 02:22:23 +01:00
test_email_owner_scope.py test(email): cover agent draft owner isolation (#5226) 2026-07-18 11:30:28 +01:00
test_email_ownerless_account_owner_scope.py fix(security): scope owner-less email accounts to a mailbox match in route guards (#5238) 2026-07-05 12:50:32 +01:00
test_email_package_compatibility.py Merge lab into refactor/routes-email-subpackage 2026-10-01 02:15:36 +01:00
test_email_picker_exclusivity_static.py refactor(email): move emailLibrary.js into static/js/emailLibrary/ 2026-09-30 09:08:21 +02:00
test_email_polly_imap_leak.py fix(tests): allow multiple logout calls when IMAP fallback reconnects (#1976) 2026-06-04 02:56:05 +01:00
test_email_read_mark_seen.py fix(email): make unread opens one authoritative IMAP operation (#5923) 2026-08-10 18:45:34 +01:00
test_email_reader_handoff.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_email_registry_sync.py Merge verified Odysseus fixes 2026-07-23 14:49:02 +00:00
test_email_reply_stream.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_email_scope_routing.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_email_search_folder_contract.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_email_search_recovery.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_email_send_only_no_inbox.py fix(email): don't probe IMAP for send-only (SMTP-only) accounts (#4830) 2026-06-27 21:52:26 +01:00
test_email_send_target_guard.py test(document): read the editor through a module-set helper before it is split 2026-09-30 09:39:05 +02: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 refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_email_summary_error_ui_js.py fix(email): route summaries through shared LLM adapter (#5841) 2026-08-08 23:06:41 +02:00
test_email_summary_llm.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_email_targeted_edit_scope.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_email_task_intent.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_email_test_connection_oauth.py fix(email): test saved OAuth accounts through shared transports (#5653) 2026-07-22 14:54:38 +02:00
test_email_thread_parser_nonstring.py Ignore non-string email thread bodies (#1654) 2026-06-03 14:06:31 +09:00
test_email_tool_deeplink_static.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_email_ui_async_identity.py Merge lab into refactor/email-library-package 2026-10-01 02:22:23 +01:00
test_email_uid_no_seqno_fallback.py fix(email): never fall back to sequence-number IMAP ops for move/flag (#2732) 2026-07-11 03:27:28 +01:00
test_email_unsubscribe_candidates.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_email_urgency_checkpoint.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_embedding_cache_confinement.py Constrain embedding model cache paths (#2849) 2026-06-05 10:46:48 +02:00
test_embedding_endpoint_config.py Ignore non-object embedding endpoint config (#1260) 2026-06-03 14:12:41 +09:00
test_embedding_lane_ndarray_restore.py test: split embedding lane tests (#4389) 2026-06-26 18:28:40 +02:00
test_embedding_lanes.py test: split embedding lane tests (#4389) 2026-06-26 18:28:40 +02:00
test_embedding_lanes_legacy.py test: split embedding lane tests (#4389) 2026-06-26 18:28:40 +02:00
test_embedding_lanes_memory.py test: split embedding lane tests (#4389) 2026-06-26 18:28:40 +02:00
test_embedding_lanes_rag.py test: split embedding lane tests (#4389) 2026-06-26 18:28:40 +02:00
test_embedding_lanes_tool_index.py test: split embedding lane tests (#4389) 2026-06-26 18:28:40 +02:00
test_embeddings.py Add support for EMBEDDING_API_KEY (#2691) 2026-06-05 14:47:24 +02:00
test_embeddings_client.py Retry oversized embedding requests (#1106) 2026-06-26 14:21:27 +01:00
test_embeddings_thread_limit.py Harden maintainer-preview harness and review fixes 2026-09-21 06:54:03 +00:00
test_emoji_shortcodes_js.py Render emoji shortcodes as icons in chat (#345) (#629) 2026-06-05 02:28:42 +02:00
test_emoji_svg_hardening.py Harden emoji SVG proxy responses (#2842) 2026-06-05 10:31:58 +02:00
test_endpoint_card_ui_polish.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_endpoint_owner_scope_followup.py refactor(routes): move compare domain into routes/compare/ subpackage (#5660) 2026-07-21 12:40:09 +02:00
test_endpoint_probing.py fix(model-routes): harden _probe_endpoint against malformed model-list responses (#4789) 2026-06-24 19:05:31 +02:00
test_endpoint_resolver_headers.py test: split endpoint resolver tests (#4957) 2026-06-28 00:49:43 +02:00
test_endpoint_resolver_models.py test: split endpoint resolver tests (#4957) 2026-06-28 00:49:43 +02:00
test_endpoint_resolver_urls.py test: split endpoint resolver tests (#4957) 2026-06-28 00:49:43 +02:00
test_env_reference.py docs: generate the ODYSSEUS_* configuration reference from the source 2026-09-30 15:11:19 +02:00
test_esc_menu_stack_js.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_escape_inner_layers.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_estimate_tokens_tool_calls.py fix(model-context): count tool_calls in estimate_tokens so compaction sees real size (#2751) 2026-06-05 15:56:54 +02:00
test_eval_script_contract.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_event_bus_fixture_isolation.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_exact_file_edit_routing.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_execution_bridge.py enforce binary write guard before execution bridges 2026-09-18 15:39:10 +00:00
test_execution_capabilities.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_explicit_personal_tool_routing.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_explicit_personal_turn_contract.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_external_context_tool_gate.py Merge lab into refactor/email-library-package 2026-10-01 02:22:23 +01:00
test_extract_quotes.py fix: extract_quotes accepts mismatched opening/closing quotes (#1113) 2026-06-02 22:34:52 +09:00
test_extract_skill_json_nonstring.py fix: _extract_skill_json crashes on a truthy non-string teacher response (#1630) 2026-06-03 08:59:36 +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_extract_text_tool.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_extract_urls.py fix(chat): keep balanced trailing ')' when extracting URLs (#3406) 2026-06-08 21:33:29 +02:00
test_failed_call_correction.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_failed_tool_completion_preamble.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_fastembed_cache_path.py fix(embeddings): fall back to default cache dir when FASTEMBED_CACHE_PATH is empty (#3434) 2026-06-16 03:11:48 +01:00
test_featherless_provider.py feat(provider): add lazy Featherless model discovery 2026-09-22 13:12:19 +01:00
test_fenced_example_not_executed_for_native_models.py fix(agent): preserve tool evidence through final synthesis 2026-09-18 13:29:54 +00:00
test_fenced_inline_args.py test(harness): isolate imports and stabilize browser and DNS fixtures 2026-09-22 23:27:08 +01:00
test_fenced_invoke_no_raw_xml.py test(harness): isolate imports and stabilize browser and DNS fixtures 2026-09-22 23:27:08 +01:00
test_filesystem_tool_argument_validation.py fix workspace write path disclosure 2026-09-18 14:36:09 +00:00
test_focused_test_guidance.py ci: add focused test guidance signal (#4982) 2026-07-03 21:17:28 +02:00
test_font_routes.py Keep compact font family names together (#1263) 2026-06-03 14:24:30 +09:00
test_foreground_model_routing.py test(agent): restore exact turn-policy regressions 2026-09-23 00:14:30 +01:00
test_fork_session_metadata.py feat(provider): support multiple ChatGPT subscriptions with usage 2026-09-22 13:12:19 +01:00
test_form_markdown_roundtrip.py fix(forms): keep PDF-form export from dropping values when the label has '*' (#1407) 2026-06-03 14:24:07 +09:00
test_forwarded_message_divider.py Email: recognize forwarded message dividers 2026-06-02 20:32:56 +09:00
test_frontend_module_graph.py test(document): read the editor through a module-set helper before it is split 2026-09-30 09:39:05 +02:00
test_frontend_module_version_parity.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_function_call_non_object_args.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_function_model_tool_call.py Parse local function_model tool wrappers 2026-07-03 03:54:59 +00:00
test_gallery_album_owner_scope.py refactor(routes): move gallery domain into routes/gallery subpackage (#4903) 2026-06-28 10:40:34 +01:00
test_gallery_cloud_inpaint.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_gallery_delete_file_ordering.py test(gallery): point delete-ordering tests at the tmp image dir (#4300) 2026-06-15 14:07:49 +00:00
test_gallery_detail_actions.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_gallery_detail_stage_static.py refactor(css): move document, gallery and image-editor styles to their own file 2026-09-23 16:12:51 +02:00
test_gallery_editor_history_static.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_gallery_endpoint_hardening.py fix(security): harden gallery endpoint URL checks (#4981) 2026-06-30 19:16:34 +02:00
test_gallery_endpoint_matching.py Scope gallery image endpoints by owner (#3001) 2026-06-07 12:51:21 +02:00
test_gallery_endpoint_ssrf.py refactor(routes): move gallery domain into routes/gallery subpackage (#4903) 2026-06-28 10:40:34 +01:00
test_gallery_exif_orientation.py refactor(routes): move gallery domain into routes/gallery subpackage (#4903) 2026-06-28 10:40:34 +01:00
test_gallery_filename_confinement.py refactor(routes): move gallery domain into routes/gallery subpackage (#4903) 2026-06-28 10:40:34 +01:00
test_gallery_image_endpoint_owner_scope.py Scope gallery image endpoints by owner (#3001) 2026-06-07 12:51:21 +02:00
test_gallery_image_privileges.py refactor(routes): move gallery domain into routes/gallery subpackage (#4903) 2026-06-28 10:40:34 +01:00
test_gallery_model_input_device.py fix(gallery): handle MPS float64 mask inputs (#5903) 2026-08-12 01:23:43 +01:00
test_gallery_null_user_routes.py fix(gallery): fail closed for null-user owner scope (#3613) 2026-06-09 20:20:21 +02:00
test_gallery_owner_filter_single_user.py fix(gallery): fail closed for null-user owner scope (#3613) 2026-06-09 20:20:21 +02:00
test_gallery_result_image_ssrf.py fix(gallery): validate upstream result image URLs 2026-06-15 15:01:28 +09:00
test_gallery_routes_shim.py refactor(routes): move gallery domain into routes/gallery subpackage (#4903) 2026-06-28 10:40:34 +01:00
test_gallery_selection_feedback_static.py refactor(css): move document, gallery and image-editor styles to their own file 2026-09-23 16:12:51 +02:00
test_gallery_visual_static.py refactor(css): split style.css into ordered fragments 2026-09-29 17:37:25 +02:00
test_gemma_tool_call_parsing.py Checkpoint Odysseus local update 2026-07-07 00:50:07 +00:00
test_generated_image_confinement.py Constrain generated-image paths to image root (#2837) 2026-06-05 10:33:47 +02:00
test_generation_budget.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_gmail_quote_attribution_js.py Parse standard Gmail quote attribution dates 2026-06-03 13:45:56 +09:00
test_gpu_compose_standalone.py fix(docker): make host Docker socket opt-in (#4902) 2026-06-30 19:54:51 +02:00
test_grep_followup_integrity.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_group_character_dropdown.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_group_chat_storage.py Keep group chat session cache loading (#1418) 2026-06-03 04:05:40 +09:00
test_harmonize_masks_invalid_layers_js.py Ignore invalid harmonize mask layers (#1829) 2026-06-29 19:16:26 +01:00
test_harmony_tool_aliasing.py fix(llm): alias tool names that collide with gpt-oss built-ins (#5878) 2026-08-12 02:01:52 +01:00
test_harness_version.py test(baseline): align UI and model profile expectations 2026-09-22 23:27:17 +01:00
test_helpers_import_state.py refactor(tests): centralize fake endpoint resolver cleanup 2026-06-05 13:23:46 +01:00
test_hex_to_rgb_js.py fix: theme color parsing breaks on #rgb shorthand hex (#1213) 2026-06-03 00:30:03 +09:00
test_history_compact_tool_calls.py Scope auxiliary LLM endpoints by owner (#2996) 2026-06-07 14:47:44 +02:00
test_history_db_fallback_hidden.py fix(history): defer full transcript hydration to model sends (#5929) 2026-08-10 19:39:21 +01:00
test_history_display_model_hydration.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_history_order_by_timestamp_regression.py refactor(routes): move history domain into routes/history/ subpackage (#5090) 2026-07-04 13:36:35 +02:00
test_history_resume_rendering_js.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_history_routes_shim.py refactor(routes): move history domain into routes/history/ subpackage (#5090) 2026-07-04 13:36:35 +02: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_host_shell_polling.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_hwfit_amd.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_hwfit_apple_bandwidth.py test(hwfit): fix non-Apple guard to assert the Apple matcher (unblocks pytest gate) (#4303) 2026-06-15 14:01:05 +00:00
test_hwfit_bandwidth_nonstring.py fix: _lookup_bandwidth crashes on a truthy non-string gpu_name (#1641) 2026-06-03 14:11:10 +09:00
test_hwfit_container_visibility_warning.py feat(cookbook): surface Docker hardware visibility warnings (#3658) 2026-06-15 15:51:04 +09:00
test_hwfit_cpu_arch_detection.py fix(hwfit): normalize CPU arch for fallback estimates (#4441) 2026-06-18 20:26:22 +02:00
test_hwfit_cpu_only_fallback.py fix(hwfit): normalize CPU arch for fallback estimates (#4441) 2026-06-18 20:26:22 +02:00
test_hwfit_gemma4_12b.py feat(catalog): add Gemma 4 12B/QAT entries and RTX 3050 bandwidth (#4728) 2026-06-23 18:23:46 +02:00
test_hwfit_gpu_count_nonnumeric.py fix(hwfit): tolerate non-numeric gpu_count in /api/hwfit/models (#3639) 2026-06-11 01:01:58 +02:00
test_hwfit_macos.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_hwfit_manual_backend.py Stabilize local dev merge 2026-07-07 01:15:20 +00:00
test_hwfit_models_nonstring_fields.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_hwfit_native_quant_labels.py fix: hwfit native quant labels miss the cost maps and over-estimate VRAM (#1690) 2026-06-03 14:22:42 +09:00
test_hwfit_params_b_malformed.py fix: params_b crashes the whole ranking on a malformed parameter_count (#1550) 2026-06-03 14:23:30 +09:00
test_hwfit_quant_formats.py Fix native Cookbook quant classification 2026-06-02 13:07:20 +09:00
test_hwfit_remote_validation.py test(hwfit): cover SSH target validation regressions (#4279) 2026-06-16 04:18:21 +01:00
test_hwfit_unified_nvidia.py fix(platform): Improve WSL SSH remote compatibility (#3316) 2026-06-08 00:33:50 +02:00
test_hwfit_windows.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_icloud_imap_full_fetch.py Fetch full messages with BODY.PEEK[] so read_email works on iCloud IMAP (#1961) (#1963) 2026-06-04 03:53:14 +01:00
test_ics_escape.py test: localize calendar recurrence helper import (#4944) 2026-06-28 19:04:15 +02: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_ics_import_dedup_tz.py fix: re-importing an ICS file duplicates every tz-aware timed event (#1683) 2026-06-03 14:22:49 +09:00
test_image_creation_routing.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_image_models_nondict_system.py Merge verified Odysseus fixes 2026-07-23 14:49:02 +00:00
test_image_models_nonstring_search.py Merge verified Odysseus fixes 2026-07-23 14:49:02 +00:00
test_image_provider_transport.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_image_research_settings_static.py merge: reconcile PR 40 with current lab 2026-10-01 05:03:58 +01:00
test_imap_leak_fixes.py fix(email): close IMAP socket when connect/login fails (#3174) (#3363) 2026-06-08 21:21:41 +02:00
test_imap_mailbox_quoting.py refactor(routes): move the email modules into routes/email/ 2026-09-29 18:21:18 +02:00
test_imap_move_uid.py fix: auto-spam move/delete targets the wrong message (seqnum vs UID) (#1874) 2026-07-02 10:40:19 +01:00
test_imap_uid_commands.py fix(email): use UID commands instead of sequence numbers in IMAP fetches (#5149) 2026-07-11 14:06:40 +01:00
test_implicit_notes_routing.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_inline_review_scope.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_inside_base_dir_nonstring.py fix: inside_base_dir raises TypeError on a non-string path instead of failing closed (#1619) 2026-06-03 09:00:04 +09:00
test_inspect_media_percent_ranges.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_inspect_media_probe_recovery.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_inspect_media_tool.py test(media): detect ffmpeg encoders by codec alias 2026-09-30 19:16:29 +01:00
test_inspect_media_truncated_tail.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_integration_api_call_ssrf.py fix(integrations): pin api_call to the SSRF-validated IP (#5727) 2026-08-04 04:17:41 -06:00
test_integrations_api_call_truncation.py fix(integrations): pin api_call to the SSRF-validated IP (#5727) 2026-08-04 04:17:41 -06:00
test_integrations_store_shape.py fix(endpoints): normalize URL handling (#4338) 2026-06-16 03:59:18 +01:00
test_integrations_url_join.py test(harness): isolate imports and stabilize browser and DNS fixtures 2026-09-22 23:27:08 +01:00
test_interactive_gate_passive_paths.py fix(scheduler): treat /api/email/unread-state as passive UI poll (#6009) 2026-08-14 10:22:27 +01:00
test_internal_api_base.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_interrupted_resume_label_static.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_interrupted_thinking_context.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_is_youtube_url_nonstring.py fix: is_youtube_url crashes on a non-string url (#1752) 2026-06-03 13:24:33 +09:00
test_is_youtube_url_nonstring_svc.py fix: is_youtube_url (services) crashes on a non-string url (#1753) 2026-06-03 13:24:24 +09:00
test_issue_description_check.py fix(issues): require exact bug-report revisions (#5984) 2026-08-16 23:04:23 +01:00
test_keybind_altgr_js.py Ignore AltGr keystrokes in Ctrl+Alt keyboard shortcuts (#825) 2026-06-02 11:12:54 +09:00
test_kimi_code_hosts.py fix(kimi): resolve Kimi Code API 403 errors and User-Agent restrictions (#3549) 2026-06-15 15:56:54 +09:00
test_kimi_code_user_agent.py fix(llm): avoid blocking Kimi Code async header probes (#5231) 2026-07-11 15:06:15 +01:00
test_kimi_thinking_toggle.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_kokoro_optional_requirements.py refactor(docs): separate Pages site source (#6176) 2026-08-27 10:20:36 +02:00
test_kv_cache_invalidation_2927.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_lang_icon_null_opts_js.py fix: langIcon throws on an explicit null opts argument (#1740) 2026-06-03 13:29:21 +09:00
test_launcher.py feat(launcher): add portable windows launcher (#976) 2026-06-16 04:58:16 +01:00
test_legacy_default_fallback_ui.py refactor(model-routing): centralize explicit foreground fallback policy (#6020) 2026-08-14 08:10:30 +01:00
test_legacy_word_reader.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_list_models_hardware_fit.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_live_fallback_round_attribution.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_live_strip_email_tool_fences.py Merge verified Odysseus fixes 2026-07-23 14:49:02 +00:00
test_live_thinking_chat_integration.py test(baseline): align UI and model profile expectations 2026-09-22 23:27:17 +01:00
test_live_thinking_scheduler_js.py perf(chat): batch live thinking rendering and bound timer updates (#5931) 2026-08-10 20:11:48 +01:00
test_llama_server_models_url.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_llamacpp_discovery.py feat(discovery): detect llama.cpp servers and label local providers (#4729) 2026-06-23 23:39:56 +02: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_anthropic_temp_clamp.py Clamp Anthropic temperature to [0.0, 1.0] in _build_anthropic_payload (#1737) 2026-06-03 13:29:36 +09:00
test_llm_core_anthropic_temp_omit.py fix(llm): omit temperature for major-only Opus ids (claude-opus-5) (#5761) 2026-07-30 11:30:00 +01:00
test_llm_core_async_mistral_content.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_llm_core_concurrency.py Make LLM host health maps thread-safe 2026-06-02 05:54:23 +09:00
test_llm_core_connect_timeout.py fix(llm): make connect timeout configurable 2026-06-15 15:11:38 +09:00
test_llm_core_fallback.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_llm_core_mistral_content.py fix(llm): detect mistral.ai provider and support reasoning_effort (#4698) 2026-06-23 10:28:17 +02:00
test_llm_core_ollama.py fix(llm): normalize OpenAI-compatible chat URLs 2026-06-28 15:30:15 +01:00
test_llm_core_ollama_thinking.py test(baseline): align UI and model profile expectations 2026-09-22 23:27:17 +01:00
test_llm_core_openai_reasoning_tools.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_llm_core_reasoning.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_llm_core_reasoning_content_fallback.py fix: surface reasoning_content when content is empty (thinking models) (#1233) 2026-06-03 01:41:24 +09:00
test_llm_core_sanitize_tool_calls.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_llm_core_sse_no_space.py fix: streaming drops providers that emit SSE data lines with no space (#1701) 2026-06-03 13:37:14 +09:00
test_llm_core_streaming.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_llm_core_system_msg_missing_content.py fix: degrade missing/None content key in system messages to empty string (#2570) 2026-06-05 00:10:11 +02:00
test_llm_core_temperature_anthropic.py test: split llm-core temperature tests (#4935) 2026-06-27 22:02:41 +02:00
test_llm_core_temperature_moonshot.py test: split llm-core temperature tests (#4935) 2026-06-27 22:02:41 +02:00
test_llm_core_temperature_reasoning.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_llm_core_thinking_models.py fix(thinking): add deepseek-v4 to thinking model patterns (#6000) 2026-08-12 04:26:13 +01:00
test_llm_core_usage_finish_delta.py refactor(model-routing): centralize explicit foreground fallback policy (#6020) 2026-08-14 08:10:30 +01: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_models_url.py fix(endpoints): normalize URL handling (#4338) 2026-06-16 03:59:18 +01:00
test_lmstudio_vision.py Harden maintainer-preview harness and review fixes 2026-09-21 06:54:03 +00:00
test_load_features_permission_error.py fix(settings): degrade load_features to defaults on PermissionError 2026-06-11 21:20:10 +01: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_local_fixture_domain_isolation.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_log_safety.py fix(security): redact credential-bearing URLs and PII from logs (#4750) 2026-06-22 23:12:39 +02:00
test_login_whirlpool_static.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_loop_breaker_runaway.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_manage_mcp_command_allowlist.py refactor(tools): migrate config/integration admin tools to the registry (#4742) 2026-06-24 09:29:10 +02:00
test_manage_memory_json_contract.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_manage_memory_list.py fix(memory): return complete memory lists (#3885) 2026-06-15 20:28:25 +09:00
test_manage_notes_owner_gate.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_manage_notes_search_contract.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_manage_settings_token_budget.py refactor(tools): migrate config/integration admin tools to the registry (#4742) 2026-06-24 09:29:10 +02:00
test_manage_sft_fixture_state.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_manage_skills_action_required.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_manage_tasks_cron.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_manage_tasks_owner_scope.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_markdown_dom_xss_helpers.py test(document): read the editor through a module-set helper before it is split 2026-09-30 09:39:05 +02:00
test_markdown_lazy_lib_loading_js.py test(document): read the editor through a module-set helper before it is split 2026-09-30 09:39:05 +02:00
test_markdown_rendering_js.py merge: reconcile PR 40 with current lab 2026-10-01 05:03:58 +01:00
test_markdown_table_row_js.py Ignore non-string markdown table rows (#1648) 2026-06-03 14:17:02 +09:00
test_markitdown_format_nonstring.py fix: is_markitdown_format crashes on a non-string path (#1618) 2026-06-03 09:00:10 +09:00
test_markitdown_runtime.py Add optional markitdown extraction for Office/EPUB documents (#766) 2026-06-02 11:28:52 +09:00
test_match_model_key_js.py fix: model cost/info matches first substring key (gpt-4o-mini billed as gpt-4o) (#1439) 2026-06-04 03:05:37 +01:00
test_matchescombo_nonstring_js.py fix: _matchesCombo crashes on non-string keybind from server (#2049) 2026-07-11 03:15:19 +01:00
test_mcp_add_server_args_validation.py fix(mcp): show the route's rejection reason on the Integrations form too 2026-09-30 17:15:52 +02:00
test_mcp_cache_invalidation.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_mcp_common_truncate.py refactor(tools): consolidate duplicated _truncate and get_mcp_manager into src/tool_utils (#3478) 2026-06-09 01:05:30 +02:00
test_mcp_dependency_compatibility.py fix(mcp): keep built-in servers on SDK v1 (#5820) 2026-07-28 18:11:34 +01:00
test_mcp_email_decode_header_spaces.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_mcp_email_index_search.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_mcp_email_list_cache.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_mcp_email_search_dates.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_mcp_email_search_error_transport.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_mcp_manager.py feat(mcp): add Streamable HTTP transport with OAuth 2.0 (#1033) 2026-06-05 02:40:52 +02:00
test_mcp_memory_owner_scope.py fix(mcp): scope memory server by owner (#4315) 2026-06-16 03:18:17 +01:00
test_mcp_oauth.py fix(mcp): stop assuming http://localhost:7000 for the OAuth callback (#6032) 2026-08-15 23:09:01 -06:00
test_mcp_param_hint_hardening.py fix(mcp): sanitize and cap rendered MCP tool param hints (#2682) 2026-06-05 03:00:22 +02:00
test_mcp_reconnect_args.py refactor(tools): migrate config/integration admin tools to the registry (#4742) 2026-06-24 09:29:10 +02:00
test_mcp_routes_shim.py refactor(routes): move mcp domain into routes/mcp/ subpackage (#5899) 2026-08-11 02:24:55 -06:00
test_mcp_text_error_normalization.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_mcp_tool_params_in_prompt.py fix(mcp): expose MCP tool input parameters to the agent 2026-06-04 12:51:31 +00:00
test_media_export_mutation_classification.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_media_ingress.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_memory_add_submit_regression.py fix(brain): give the Add Memory form a submit button and reliable Enter handling (#5830) 2026-08-07 22:07:07 +02:00
test_memory_audit_timeout.py fix(memory): exempt audits from request timeout (#3886) 2026-06-15 20:27:46 +09:00
test_memory_bullet_extraction.py Fix memory bullet extraction in service copy 2026-06-03 13:41:46 +09:00
test_memory_cli_add_nondict.py fix: odysseus-memory cmd_add crashes on non-dict existing memory row (#2091) 2026-07-11 03:05:17 +01:00
test_memory_extract_chat_nondict.py fix: chat memory extraction crashes on a non-dict message (#1749) 2026-06-03 13:25:48 +09:00
test_memory_extraction_parse.py fix(memory): make auto-memory extraction reliable for reasoning models (#3190) 2026-06-08 19:57:44 +02:00
test_memory_extractor_rows.py Skip invalid memory extractor rows (#1535) 2026-06-03 14:07:00 +09:00
test_memory_extractor_vector_cross_tenant.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_memory_extractor_vector_degraded.py Update degraded-vector dedup test for owner-scoped vector match 2026-06-04 23:45:13 +01:00
test_memory_fallback_dislike.py fix(memory): record dislikes as dislikes, not preferences (#2435) 2026-06-07 16:36:07 +02:00
test_memory_imports.py refactor(memory): canonicalize memory imports (#50) 2026-06-04 05:31:15 +01:00
test_memory_owner_isolation.py test(memory): cover owner isolation for memory search 2026-06-11 22:21:30 +01:00
test_memory_provider.py feat(memory): add provider interface (#72) 2026-06-04 16:26:11 +01:00
test_memory_recall_nondict_rows.py fix: memory recall crashes on a non-dict row from the vector store (#1705) 2026-06-03 13:35:09 +09:00
test_memory_routes_session_owner.py fix(routes): normalize session owner fallback helpers (#4313) 2026-06-16 06:07:42 +01:00
test_memory_routes_shim.py refactor(routes): move memory domain into routes/memory/ subpackage (#5007) 2026-06-30 17:52:14 +02:00
test_memory_skills_sidebar_split.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_memory_store_unreadable_no_wipe.py fix(memory): don't let an unreadable store get overwritten with an empty one (#5831) 2026-08-06 02:33:50 -06:00
test_memory_tool_contract.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_memory_validate_entries_nondict.py fix: memory entry validation crashes on a non-dict row from memory.json (#1691) 2026-06-03 13:38:02 +09:00
test_merge_last_assistant_rows.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_migrate_faiss_to_chroma.py Skip invalid FAISS migration JSON (#1547) 2026-06-03 14:11:49 +09:00
test_minimal_native_tool_prompt.py fix(agent): preserve focused turn contracts and verified completion 2026-09-22 23:26:16 +01:00
test_misfenced_media_tool_call.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_misfenced_read_file_tool_call.py fix(agent): parse misfenced read_file calls (#4799) 2026-06-23 23:20:13 +02:00
test_mlx_image_server_security.py Merge commit from fork 2026-08-24 17:38:40 +02:00
test_mobile_search_position_static.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_mobile_welcome_keyboard_static.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_modal_dock_composer_clearance.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_model_capabilities.py feat(models): define capability schema and readers (#2739) 2026-07-18 09:40:58 +01:00
test_model_capability_readers.py fix(models): bind provider detection to DNS labels (#5961) 2026-08-16 23:25:46 +01:00
test_model_context.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_model_defaults.py fix(model-routing): keep selected models strict (#5801) 2026-08-12 14:10:07 +01:00
test_model_discovery_status.py Reject invalid Tailscale discovery JSON (#1556) 2026-06-03 14:11:31 +09:00
test_model_helper_owner_scope.py refactor(routes): move task domain into routes/task/ subpackage 2026-08-17 10:07:17 +08:00
test_model_interaction_registry.py refactor(tools): move model-interaction tools to the agent_tools registry (#4445) 2026-06-18 05:56:37 +00:00
test_model_name_tooltip.py Merge verified Odysseus fixes 2026-07-23 14:49:02 +00:00
test_model_picker_route_identity.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_model_request_snapshot.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_model_request_snapshot_route.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_model_routes.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_model_sort_js.py Ignore invalid model sort inputs (#1653) 2026-06-03 14:16:52 +09:00
test_model_tool_modes.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_multilingual_domain_routing.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_multiple_mcp_servers_timeout.py fix(mcp_manager): implement concurrent server connections with timeout handling 2026-07-13 08:56:46 +02:00
test_native_document_stream.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_native_terminal_context.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_native_tool_result_threading.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_native_unattended_workspace_floor.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_network_guard_recovery_routing.py preserve native web tools after network guard rejection 2026-09-18 21:41:24 +00:00
test_new_chat_clears_input.py Clear the composer draft when entering the New Chat / welcome state (#1408) 2026-06-03 04:07:31 +09:00
test_new_chat_model_preference.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_nix_upload_text.py fix: treat Nix files as readable uploads (#2249) 2026-06-04 12:06:24 +02:00
test_note_reminder_email_oauth.py fix(reminders): support OAuth SMTP accounts (#5649) 2026-07-22 16:03:35 +02:00
test_note_reminder_fire_scope.py Harden note reminder dispatch ownership (#2999) 2026-06-07 12:52:27 +02:00
test_note_routes_shim.py refactor(routes): move note domain into routes/note/ subpackage (#5236) 2026-07-20 13:52:30 +02:00
test_notes_checklist_state.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_notes_document_mutual_minimize.py test(document): read the editor through a module-set helper before it is split 2026-09-30 09:39:05 +02:00
test_notes_dom_xss_helpers.py Guard image and QR DOM attributes (#2500) 2026-06-04 20:51:23 +02:00
test_notes_fail_closed_auth.py fix(notes): fail closed when an unauthenticated request reaches owner-scoped routes (#4062) 2026-06-15 17:43:28 +02:00
test_notes_mobile_checklist_toggle_static.py Merge lab into refactor/email-library-package 2026-10-01 02:22:23 +01:00
test_notes_search_reset_on_reopen_js.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_notes_select_esc_listener_js.py fix(notes): track + remove the select-mode Esc keydown listener so it doesn't leak per open (#2792) 2026-06-05 16:25:05 +02:00
test_notes_sidebar_new_note.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_notes_update_due_date.py Notes: parse natural-language due dates on update 2026-06-02 20:51:16 +09:00
test_notes_z_order_js.py fix(ui): share one z-order stack across Notes and modals (#3798) 2026-06-17 12:15:48 +02:00
test_notification_log_copy_static.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_null_owner_gates.py test: localize calendar recurrence helper import (#4944) 2026-06-28 19:04:15 +02:00
test_odysseus_conversation_qa.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_odysseus_dispatcher.py refactor(tests): reuse CLI loader in more tests (#2571) 2026-06-05 02:42:10 +01:00
test_odysseus_doc_fence_normalization.py Checkpoint Odysseus local update 2026-07-07 00:50:07 +00:00
test_odysseus_domain_audit.py Squash Odysseus development history 2026-09-11 06:04:19 +00: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_multimodal.py fix: Images cannot be seen by model that is vision capable (#4726) 2026-06-23 10:32:57 +02:00
test_ollama_port_detection.py Add Ollama port path detection regressions (#883) 2026-06-02 12:24:18 +09:00
test_ollama_runner_hint.py fix(cookbook): stop Ollama runner from executing the install one-liner (#3926) 2026-07-02 10:01:57 +01:00
test_ordinal_suffix_js.py fix: monthly schedule label shows 21th/22th/31th (ordinal suffix for days >20) (#1577) 2026-06-03 08:57:47 +09:00
test_owned_document_query.py refactor(tools): extract document tools to handle registry (#3666) 2026-06-10 10:41:52 +02:00
test_owner_identity.py feat(auth): define Default/Local owner contract (#5795) 2026-08-15 20:27:26 +01:00
test_panel_loader_js.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_parse_due_time_first.py fix(notes): handle time-first due_date phrases in parse_due_for_user (#3319) 2026-06-07 19:15:38 +02:00
test_parse_msg_content_jsonlike_string.py fix(stabilization): harden attachment lifecycle and agent guard signals (#5420) 2026-07-11 15:14:14 +01:00
test_pdf_ai_edit_derivative.py Polish mobile UI and editor workflows 2026-06-27 13:05:44 +00:00
test_pdf_annotation_text_controls.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_pdf_export_preserves_import_static.py test(document): read the editor through a module-set helper before it is split 2026-09-30 09:39:05 +02:00
test_pdf_runtime.py Show a clear message when PyMuPDF is missing 2026-06-01 18:27:17 +09:00
test_personal_delete_file_confinement.py fix(personal): scope RAG file delete to the caller's own upload dir (#4602) 2026-06-20 00:50:15 +02:00
test_personal_dir_symlink_escape.py fix: personal-docs path confinement used abspath, allowing symlink escape (#1728) 2026-06-03 13:29:57 +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_keyword_nondict.py Ignore non-string personal doc text (#1832) 2026-06-29 19:24:29 +01:00
test_personal_docs_lists.py Save only string personal doc paths (#1566) 2026-06-03 08:37:29 +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_docs_state_store.py Ignore invalid personal docs state (#1401) 2026-06-03 04:02:16 +09:00
test_personal_index_hidden_dirs.py fix(rag): skip hidden and junk directories when indexing (#5633) 2026-07-23 14:18:08 +02:00
test_personal_remove_dir_confinement.py fix(personal): confine remove_directory_from_rag to PERSONAL_DIR 2026-06-15 15:00:35 +09:00
test_personal_upload_isolation.py fix(auth): clean up rename and null-owner ownership (#4340) 2026-06-16 03:33:02 +01:00
test_personal_upload_privilege.py fix(personal): require document privilege for rag upload (#2990) 2026-06-07 12:56:53 +02:00
test_plain_ui_control_open_panel.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_plan_mode.py feat: Add plan mode to the chat agent (#638) 2026-06-05 16:32:25 +02:00
test_platform_compat.py feat(launcher): add portable windows launcher (#976) 2026-06-16 04:58:16 +01:00
test_poll_endpoint_no_task_interrupt.py fix: stop status polling from cancelling running scheduled tasks (#5789) 2026-08-14 10:47:47 +01:00
test_popup_opener_isolation_js.py Isolate HTML popup openers (#2501) 2026-06-04 20:52:41 +02:00
test_portal_dropdown_z_js.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_pr6020_browser_review_regressions.py merge: reconcile PR 40 with current lab 2026-10-01 05:03:58 +01:00
test_pr6020_rebase_regressions.py test(agent): restore exact turn-policy regressions 2026-09-23 00:14:30 +01:00
test_pr_blocker_audit.py tools: add read-only PR blocker audit helper 2026-06-04 12:51:48 +01:00
test_pr_description_check.py ci: support maintainer lab pull requests 2026-09-22 12:39:14 +01:00
test_prefs_atomic_write.py fix(core): stop atomic writes from colliding on a constant PID suffix (#5721) 2026-08-11 13:36:56 +01:00
test_prefs_routes.py refactor(model-routing): centralize explicit foreground fallback policy (#6020) 2026-08-14 08:10:30 +01:00
test_prefs_single_user_no_clobber.py refactor(model-routing): centralize explicit foreground fallback policy (#6020) 2026-08-14 08:10:30 +01:00
test_preset_atomic_save.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_preset_expand_owner_scope.py fix(presets): scope expand-prompt model resolution to owner (#3477) 2026-06-08 21:12:02 +02:00
test_preset_fill_missing_defaults.py Presets: fill missing built-in defaults on load 2026-06-02 20:32:08 +09:00
test_preset_local_storage_js.py Keep presets loading with bad local state (#1417) 2026-06-03 04:09:28 +09:00
test_preset_store_shape.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_preview_drafting_recovery.py merge: reconcile PR 40 with current lab 2026-10-01 05:03:58 +01:00
test_preview_execution_evidence.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_preview_hides_import_action_static.py test(document): read the editor through a module-set helper before it is split 2026-09-30 09:39:05 +02:00
test_preview_sampling_contract.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_private_browser_tool.py merge: reconcile PR 40 with current lab 2026-10-01 05:03:58 +01:00
test_procfs_scan_guard.py fix(cookbook): skip the pid sweep when the host has no procfs 2026-09-30 12:13:04 +02:00
test_product_turn_contract_route.py merge: reconcile PR 40 with current lab 2026-10-01 05:03:58 +01:00
test_promote_image_fields.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_prompt_controls_regressions.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_prompt_injection_audit.py fix(security): wrap email style, integration, and MCP descriptions as untrusted (#4965) 2026-06-30 17:54:03 +01:00
test_prompt_security.py fix(security): harden untrusted_context_message against delimiter spoofing (#3086) 2026-06-07 22:15:50 +01:00
test_provider_classification.py feat(discovery): detect llama.cpp servers and label local providers (#4729) 2026-06-23 23:39:56 +02:00
test_provider_classification_errors.py test: split provider classification tests (#4392) 2026-06-16 09:54:07 +00:00
test_provider_classification_token_params.py test: split provider classification tests (#4392) 2026-06-16 09:54:07 +00:00
test_provider_detection_builders.py test: split provider detection tests (#4933) 2026-06-27 21:46:33 +01:00
test_provider_detection_detect.py test: split provider detection tests (#4933) 2026-06-27 21:46:33 +01:00
test_provider_detection_host_match.py test: split provider detection tests (#4933) 2026-06-27 21:46:33 +01:00
test_provider_device_flow_js.py feat: add ChatGPT Subscription provider (#2876) 2026-06-08 10:19:18 +02:00
test_provider_endpoints_headers.py test: split provider endpoint tests (#4961) 2026-06-28 19:05:38 +02:00
test_provider_endpoints_models.py test: split provider endpoint tests (#4961) 2026-06-28 19:05:38 +02:00
test_provider_endpoints_normalization.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_provider_endpoints_tailscale.py test: split provider endpoint tests (#4961) 2026-06-28 19:05:38 +02:00
test_provider_endpoints_url_building.py test: split provider endpoint tests (#4961) 2026-06-28 19:05:38 +02:00
test_provider_label_js.py feat(discovery): detect llama.cpp servers and label local providers (#4729) 2026-06-23 23:39:56 +02:00
test_providers_mixtral_logo_js.py fix: Mixtral and Ministral models render with no provider logo (#1640) 2026-06-03 14:23:21 +09:00
test_public_blocked_tool_nonstring.py fix: is_public_blocked_tool crashes on a truthy non-string tool name (#1620) 2026-06-03 14:11:14 +09:00
test_python_tool_import_paths.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_question_type_detection.py fix: research query misclassifies 'whatsapp'/'however' as questions (#1247) 2026-06-03 01:10:06 +09:00
test_queued_message_merge_static.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_qwen_native_model_family.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_rag_index_hidden_dirs.py fix(rag): skip hidden and junk directories when indexing (#5633) 2026-07-23 14:18:08 +02:00
test_rag_keyword_fallback_owner.py fix: RAG keyword fallback leaked owner-less documents across users (#1722) 2026-06-03 13:31:33 +09:00
test_rag_manager_owner_compat.py fix(rag): forward owner through manager wrapper (#2991) 2026-06-07 12:56:57 +02:00
test_rag_remove_directory_scope.py Fix RAG remove_directory wiping the entire shared collection (#1660) (#1734) 2026-06-03 13:29:51 +09:00
test_rag_search_signature.py fix: resolve RAG manager search signature TypeError (#4994) 2026-07-03 15:07:16 +01:00
test_rag_server_directory_nonstring.py fix: rag_server add/remove_directory crashes on a non-string directory arg (#1614) 2026-06-03 08:36:45 +09:00
test_rag_vector_id_stability.py fix(tests): use current python for rag id stability (#1817) 2026-06-04 03:49:59 +01:00
test_rag_vector_rename_owner.py fix(auth): clean up rename and null-owner ownership (#4340) 2026-06-16 03:33:02 +01:00
test_rate_limiter.py Odysseus v1.0 2026-05-31 23:58:26 +09:00
test_readiness.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_readme_ascii_fenced.py test: align README presentation guards with the #4306 refresh (#4311) 2026-06-15 16:25:38 +01:00
test_realesrgan_torchvision_compat.py fix(image): patch realesrgan torchvision compatibility (#4110) 2026-06-15 15:16:41 +09:00
test_redos_cal_extract.py fix(security): prevent exponential ReDoS in email→calendar extract regex (#4708) 2026-06-22 17:18:34 +02:00
test_redos_llm_parsers.py fix(security): prevent ReDoS in LLM-output tool/think parsers (#4704) 2026-06-27 10:12:28 -07:00
test_redos_think_blocks.py fix(security): prevent ReDoS in agent_loop <think> stripping (#4877) 2026-06-27 04:32:42 +01:00
test_redos_verdict_continuation.py fix(security): prevent ReDoS in verdict-prose and continuation matchers (#4943) 2026-06-28 11:42:20 +01:00
test_redos_xml_tool_parsers.py fix(security): prevent ReDoS in XML and args tool-call parsers (#4941) 2026-06-27 15:42:55 -07:00
test_ref_parity_audit.py chore(tools): add a read-only ref-to-ref parity audit 2026-09-30 11:53:31 +02:00
test_reminder_ntfy_ssrf.py fix(security): apply the webhook SSRF guard to the reminder ntfy sender (#5142) 2026-07-04 17:05:37 +01:00
test_reminder_synthesis_prompt.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_rename_user_case_insensitive.py refactor(tests): reuse import-state helper in auth tests 2026-06-05 11:10:41 +01:00
test_rename_user_owner_sync.py fix(email): serialize default-account mutations (#5805) 2026-08-12 04:59:46 +01:00
test_rename_user_token_cache.py fix: renaming a user leaves their API tokens resolving to the old owner (#1932) 2026-06-04 20:37:59 +02:00
test_replace_messages_multimodal.py fix(stabilization): harden attachment lifecycle and agent guard signals (#5420) 2026-07-11 15:14:14 +01:00
test_replace_messages_upload_reservations.py fix(stabilization): harden attachment lifecycle and agent guard signals (#5420) 2026-07-11 15:14:14 +01:00
test_reply_all_cc_nonstring_js.py fix: reply-all Cc builder crashes on a non-string To or Cc field (#1700) 2026-06-03 13:37:22 +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_required_read_operation.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_research_chat_runtime.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_research_chat_stream_owner.py fix: pass owner to start_research in chat stream path (#1265) 2026-06-03 02:32:38 +09:00
test_research_endpoint_owner_scope.py test(database): restore model endpoint isolation 2026-09-22 18:07:09 +01:00
test_research_handler_analyzed_urls.py fix(research): track analyzed URLs separately (#3125) 2026-06-10 12:08:22 +01:00
test_research_handler_path_confinement.py Constrain research handler JSON paths (#2846) 2026-06-05 13:20:02 +02:00
test_research_handler_raw_nondict.py fix: a non-dict finding silently drops all raw research findings (#1739) 2026-06-03 13:29:29 +09:00
test_research_handler_sources_nondict.py fix: research source extraction crashes on a non-dict finding (#1714) 2026-06-03 13:34:40 +09:00
test_research_history_expansion.py refactor(css): split style.css into ordered fragments 2026-09-29 17:37:25 +02:00
test_research_navigator.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_research_owner_scope_routes.py refactor(constants): single source of truth for data dir (#3368) 2026-06-08 09:58:52 +02:00
test_research_panel_ui.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02: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 Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_research_report_read.py Route "read that report" to manage_research instead of the HTML render (#1375) 2026-06-03 03:24:09 +09:00
test_research_routes_path_confinement.py fix(security): make research path lookup CodeQL-friendly (#5129) 2026-07-04 20:17:45 +02:00
test_research_routes_shim.py refactor(routes): move research domain into routes/research/ subpackage 2026-06-28 14:34:11 +01:00
test_research_service.py Skip invalid research service sources (#1583) 2026-06-03 08:57:09 +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_source_link_xss.py Whitelist research source links (#2499) 2026-06-04 20:41:35 +02:00
test_research_source_metadata.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_research_status_avg_duration.py fix(research): stop rescanning the research dir on every status poll (#3637) 2026-06-10 17:40:44 +02:00
test_research_synapse_ui.py refactor(css): move document, gallery and image-editor styles to their own file 2026-09-23 16:12:51 +02:00
test_research_utils.py fix: deep research discards valid sources mentioning cookies/copyright (#481) 2026-06-01 22:26:37 +09:00
test_research_utils_low_quality_nonstring.py Treat non-string research summaries as low quality 2026-06-03 13:42:24 +09:00
test_resend_message_nondestructive.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_reserved_username_admin_escalation.py feat(auth): define Default/Local owner contract (#5795) 2026-08-15 20:27:26 +01:00
test_resolve_endpoint_fallbacks.py refactor(model-routing): centralize explicit foreground fallback policy (#6020) 2026-08-14 08:10:30 +01:00
test_resolve_model_offloaded.py fix(ai): offload model resolution from async paths 2026-06-28 00:48:35 +01:00
test_resolve_session_auth_chatgpt.py feat(provider): support multiple ChatGPT subscriptions with usage 2026-09-22 13:12:19 +01:00
test_resolve_upload_path_nondict.py fix: _resolve_user_upload_path crashes on a non-dict resolve_upload result (#1715) 2026-06-03 13:34:33 +09:00
test_result_reference_followup.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_resume_history_merge.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_retired_settings_interfaces.py refactor(model-routing): centralize explicit foreground fallback policy (#6020) 2026-08-14 08:10:30 +01:00
test_review_20260919_fixes.py Harden maintainer-preview harness and review fixes 2026-09-21 06:54:03 +00:00
test_review_20260923_fixes.py fix(url-safety): resolve NAT64 well-known prefix to IPv4 target 2026-09-23 15:32:04 +01:00
test_review_calendar_invitation.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_review_calendar_location_xss.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_review_document_conversion.py test(harness): isolate imports and stabilize browser and DNS fixtures 2026-09-22 23:27:08 +01:00
test_review_docx_async_identity.py test(document): read the editor through a module-set helper before it is split 2026-09-30 09:39:05 +02:00
test_review_email_delete_lookup.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_review_endpoint_credentials.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_review_fixture_policy.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_review_model_gate.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_review_regressions.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_review_research_relevance.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_review_sft_environment_expansion.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_rewrite_persist_column.py fix(tests): add endpoint URLs to remaining session fixtures 2026-06-04 03:14:43 +01:00
test_richtext_format_selection_static.py test(document): read the editor through a module-set helper before it is split 2026-09-30 09:39:05 +02:00
test_richtext_preview_returns_to_editor_static.py test(document): read the editor through a module-set helper before it is split 2026-09-30 09:39:05 +02:00
test_route_validators.py fix(hwfit): validate remote SSH detection targets (#3718) 2026-06-11 00:43:49 +02:00
test_run_focus.py test: split service health tests (#4972) 2026-07-03 20:50:49 +02:00
test_run_order_report.py test: add report-only order-sensitivity runner (#3982) 2026-06-15 15:49:47 +09:00
test_runtime_behavior_regressions.py Merge lab into fix/procfs-pid-file-liveness 2026-10-01 03:10:10 +01:00
test_runtime_info_route.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_runtime_paths.py feat(paths): abstract runtime path logic for frozen distribution packages (#969) 2026-06-15 17:44:10 +01:00
test_sanitize_multimodal_merge.py fix: merging consecutive user messages corrupts multimodal (image) content (#1277) 2026-06-03 01:21:57 +09:00
test_sanitize_preserves_reasoning.py chore: update repository URLs after organization transfer (#5622) 2026-07-20 16:43:47 +02:00
test_schedule_email_offset_normalization.py Normalize scheduled email offsets before storage 2026-06-03 13:44:18 +09:00
test_scheduled_poll_race.py fix(email): atomically claim scheduled emails before sending (#5110) 2026-07-11 04:23:36 +01:00
test_scheduler_prompt_cache_time.py fix(agent): harden approval lifecycle 2026-08-15 06:52:44 +00:00
test_scheduler_restart_doublefire.py test: fail the test that leaks a bare src/core module stub 2026-09-30 13:02:34 +02:00
test_scheduler_scheduled_time_validation.py fix(scheduler): fail closed on malformed scheduled_time instead of 500 (#1410) 2026-06-03 14:12:07 +09:00
test_search_analytics_defaults.py refactor(search): make src analytics a service shim (#2264) 2026-06-04 18:57:24 +02: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_no_key_leak.py Stop GET /api/search/config from leaking the Brave API key (#1661) (#1750) 2026-06-03 13:24:17 +09:00
test_search_config_provider_key.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_search_content_block_source_index.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_search_content_extraction_parity.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_search_content_url_guards.py chore: deduplicate src/search modules (cache, content, query) into shims (#2506) 2026-06-04 18:10:55 +02:00
test_search_empty_query_relaxation.py Separate documentation freshness years from product identifiers 2026-09-17 20:58:16 +00:00
test_search_exhaustion_retrieval.py Keep discovered-source retrieval available after empty search followups 2026-09-17 21:37:34 +00:00
test_search_hf_models_tool.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_search_module_consolidation.py chore: deduplicate src/search modules (cache, content, query) into shims (#2506) 2026-06-04 18:10:55 +02:00
test_search_observation_budget.py Stream research answer tokens while preserving final draft reconciliation 2026-09-17 22:10:59 +00:00
test_search_passages.py Preserve query-relevant page passages across search observation limits 2026-09-17 21:04:57 +00:00
test_search_provider_json.py fix(search): degrade to empty results on non-JSON provider responses (#1129) (#1352) 2026-06-03 14:24:23 +09:00
test_search_publication_intent.py Preserve reference queries and expand informal search checks 2026-09-17 21:09:41 +00:00
test_search_query.py Fix year extraction in research queries 2026-06-01 23:09:41 +09:00
test_search_query_entities_nonstring.py fix: _extract_entities crashes on a non-string query (#1724) 2026-06-03 13:30:28 +09:00
test_search_query_nonstring.py fix: search query helpers crash on a non-string query (#1604) 2026-06-03 08:36:01 +09:00
test_search_query_unicode_names.py fix(search): extract non-ASCII capitalized names in _extract_entities 2026-07-04 20:42:06 +03:00
test_search_ranking.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_search_ranking_recency.py Reapply "Merge branch 'main' of github.com:pewdiepie-archdaemon/odysseus" 2026-06-03 22:47:00 +09:00
test_search_ranking_sports_substring.py fix: sports-hint ranking penalty fires on 'transport'/'passport' substrings (#1473) 2026-06-03 14:23:52 +09:00
test_search_ranking_subject_substring.py Word-boundary match for snippet and subject-term ranking (#1473 follow-up) (#2556) 2026-06-05 08:04:31 +01:00
test_search_reference_context.py Ask for missing lookup subjects without blocking grounded followups 2026-09-17 21:46:15 +00:00
test_search_routes_shim.py refactor(routes): move search domain into routes/search/ subpackage (#5779) 2026-07-28 22:26:29 +02:00
test_search_service_nondict_rows.py fix(tests): update search service mock to match current API signature (#2334) 2026-06-04 14:19:51 +01:00
test_searchservice_search_call.py fix: SearchService.search() calls comprehensive_web_search incorrectly (broken public API) (#1720) 2026-06-03 13:33:56 +09:00
test_searxng_image_pinned.py Pin the SearXNG image so a broken :latest can't block startup (#1419) 2026-06-03 03:56:54 +09:00
test_searxng_settings_migration.py fix(docker): migrate retained SearXNG settings (#6055) 2026-08-16 04:17:58 +02:00
test_security_headers_middleware.py fix(security): add HSTS and Permissions-Policy to SecurityHeadersMiddleware (#3081) 2026-06-07 04:58:33 +01:00
test_security_headers_pdf_preview.py fix(documents): restore PDF library metadata and preview (#2483) 2026-06-07 23:23:27 +02:00
test_security_regressions.py refactor(email): move emailLibrary.js into static/js/emailLibrary/ 2026-09-30 09:08:21 +02:00
test_select_dropdown_theme_css.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_selected_endpoint_header_hydration.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_selection_overlay_clear_static.py Merge lab into test/document-module-set-helper 2026-09-30 22:56:56 +01:00
test_sender_signature_skip_roles.py fix: signature learning never skips support@/info@/admin@ senders (#1773) 2026-06-03 13:22:52 +09:00
test_serve_html_with_nonce.py fix(routes): log and cleanly 500 on unreadable HTML page (#4637) 2026-06-23 16:12:32 +02:00
test_serve_profiles.py Ignore invalid serve profile inputs (#1827) 2026-06-29 18:47:19 +01:00
test_service_health_chromadb.py test: split service health tests (#4972) 2026-07-03 20:50:49 +02:00
test_service_health_collect.py test: split service health tests (#4972) 2026-07-03 20:50:49 +02:00
test_service_health_email.py test: split service health tests (#4972) 2026-07-03 20:50:49 +02:00
test_service_health_ntfy.py test: split service health tests (#4972) 2026-07-03 20:50:49 +02:00
test_service_health_providers.py test: split service health tests (#4972) 2026-07-03 20:50:49 +02:00
test_service_health_search.py test: split service health tests (#4972) 2026-07-03 20:50:49 +02:00
test_service_search_provider_guards.py fix(url-safety): resolve NAT64 well-known prefix to IPv4 target 2026-09-23 15:32:04 +01:00
test_services_research_low_quality_sources.py fix: services research lists junk no-content pages as cited sources (#1669) 2026-06-03 14:22:58 +09:00
test_services_search_analytics_defaults.py Merge search analytics defaults in services copy 2026-06-03 13:45:07 +09:00
test_session_actions_cleanup.py fix(sessions): keep fresh chats during auto tidy (#1871) 2026-06-09 01:06:20 +01:00
test_session_concurrent.py fix: session context drifting — messages leaking between chats (#135) (#267) 2026-06-09 14:12:52 +01:00
test_session_context_excludes_slash.py fix: exclude slash-command/setup messages from LLM context (#2634) (#2640) 2026-06-04 21:42:23 +02:00
test_session_context_info_agents_md.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_session_context_info_skills.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_session_context_info_tools.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_session_cwd_persistence.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_session_discovery_message_count.py fix: discover sessions from persisted messages (#5938) 2026-08-16 23:34:27 +01:00
test_session_endpoint_owner_scope.py fix(api): attribute bearer-token actions to the token owner on owner-scoped routes (#4054) 2026-06-15 23:56:22 +02:00
test_session_export_filename.py fix: _sanitize_export_filename crashes on a non-string session name (#1607) 2026-06-03 08:35:47 +09:00
test_session_export_nonstring_content.py Fix session export 500 on multimodal/None message content (#1984) 2026-06-04 12:53:44 +01:00
test_session_ghost_delete.py allow user who disable auth to use chat (#2548) 2026-06-05 22:54:19 +02:00
test_session_header_persistence.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_session_image_cleanup.py Merge verified Odysseus fixes 2026-07-23 14:49:02 +00:00
test_session_list_owner_scope.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_session_manager.py fix: session context drifting — messages leaking between chats (#135) (#267) 2026-06-09 14:12:52 +01:00
test_session_manager_cleanup.py Fix session cleanup cutoff timezone (#2488) 2026-06-05 09:52:34 +02:00
test_session_manager_persist_guard.py Guard session message persistence after delete (#1451) 2026-06-03 14:24:01 +09:00
test_session_mode_helpers.py Fix database stubs in regression tests (#301) 2026-06-01 16:55:09 +09:00
test_session_mutation_lookup.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_session_owner_attribution.py feat: add ChatGPT Subscription provider (#2876) 2026-06-08 10:19:18 +02:00
test_session_routes_utcnow.py fix(session): use utcnow_naive across session routes (#1116) (#5003) 2026-07-02 11:04:22 +02:00
test_session_search.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_session_search_batch_fetch.py fix(search): batch FTS hit lookups into one query (N+1) (#3909) 2026-06-11 16:31:54 +02:00
test_session_sft_trace_delete.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_session_stream_polling_static.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_session_tools_registry.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_set_admin.py feat(auth): add per-user admin promote/demote toggle (#3078) 2026-06-15 10:44:27 +00:00
test_settings_error_paths.py fix(settings): catch PermissionError in load_settings + error-path tests (#1570) 2026-06-03 14:23:27 +09:00
test_settings_module_import_paths.py Merge lab into refactor/settings-panel-modules 2026-10-01 01:03:49 +01:00
test_settings_scrub.py fix(settings): scrub camelCase secret keys (#3707) 2026-06-11 12:53:33 +02:00
test_settings_shell_js_behavior.py Merge lab into refactor/settings-shell-modules 2026-10-01 01:41:27 +01:00
test_settings_sidebar_build_provenance.py feat(settings): show the running build's version and commit in the admin panel 2026-09-30 22:59:58 +02:00
test_settings_store_shape.py Fall back from invalid settings stores (#1416) 2026-06-03 03:53:05 +09:00
test_setup_admin_user.py refactor(docs): separate Pages site source (#6176) 2026-08-27 10:20:36 +02:00
test_setup_device_auth_static.py feat: add ChatGPT Subscription provider (#2876) 2026-06-08 10:19:18 +02:00
test_setup_llamacpp_hint_js.py feat(discovery): detect llama.cpp servers and label local providers (#4729) 2026-06-23 23:39:56 +02:00
test_sft_environment_expansion_runner.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_sft_overnight_fixture_flows.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_sft_seed_cleanup.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_shared_select_buttons_static.py refactor(css): move document, gallery and image-editor styles to their own file 2026-09-23 16:12:51 +02:00
test_shared_tag_strips_static.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_shell_routes.py fix(tests): bind the docker-socket fixtures somewhere sun_path fits 2026-09-30 17:35:06 +02:00
test_shell_service.py fix: use running loop for shell stream deadlines (#1694) 2026-06-03 13:37:46 +09:00
test_sidebar_chat_list_sizing_static.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_signature_fold_js.py Ignore non-string signature fold metadata (#1655) 2026-06-03 14:16:48 +09:00
test_signature_fold_self_closing_br_js.py fix: signature delimiter fold misses self-closing <br/> breaks (#1774) 2026-06-03 13:22:46 +09:00
test_signature_route_hardening.py Constrain signature uploads to PNG data (#2844) 2026-06-05 13:17:43 +02:00
test_signature_settings_dom_xss.py Constrain signature uploads to PNG data (#2844) 2026-06-05 13:17:43 +02:00
test_skill_audit_unavailable.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_skill_audit_utility.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_skill_deeplink_static.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_skill_edit_no_collapse_on_outside_click_js.py fix(skills): keep edit mode open on outside-the-textarea click (#4011) 2026-06-15 20:31:11 +09:00
test_skill_extraction_gate.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_skill_extractor_json.py fix(memory): reject ambiguous multi-object outputs during skill extraction (#3985) 2026-06-15 10:44:43 +00:00
test_skill_extractor_rows.py Skip invalid skill extractor rows (#1546) 2026-06-03 14:06:53 +09:00
test_skill_extractor_stray_brace.py fix(memory): reject ambiguous multi-object outputs during skill extraction (#3985) 2026-06-15 10:44:43 +00:00
test_skill_format_timestamp.py fix(skills): replace deprecated utcnow in skill timestamp helper (#5777) 2026-07-30 09:54:59 +01:00
test_skill_frontmatter_escape_roundtrip.py fix(skills): stop SKILL.md frontmatter escapes compounding on every save (#5883) 2026-08-12 01:09:02 +01:00
test_skill_importer.py fix(skills): harden skill import against DNS rebinding and SSRF TOCTOU (#5986) 2026-08-14 13:33:06 +01:00
test_skill_importer_dns_pinning.py fix(skills): harden skill import against DNS rebinding and SSRF TOCTOU (#5986) 2026-08-14 13:33:06 +01:00
test_skill_importer_security.py fix(skills): harden skill import against DNS rebinding and SSRF TOCTOU (#5986) 2026-08-14 13:33:06 +01:00
test_skill_importer_ssrf_redirect.py fix(skills): harden skill import against DNS rebinding and SSRF TOCTOU (#5986) 2026-08-14 13:33:06 +01:00
test_skill_index_prompt_injection.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_skill_index_toolset_gating.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_skill_lifecycle.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_skill_save_no_rename.py fix(skills): markdown save must not rename the skill, so delete keeps working (#1333) (#1365) 2026-06-03 03:16:11 +09:00
test_skill_semantic_retrieval.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_skill_tool_followup_contract.py Squash Odysseus development history 2026-09-11 06:04:19 +00: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 Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_skills_routes_nondict.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_skills_routes_owner_update.py fix(agent): close approval continuation gaps 2026-08-15 06:14:37 +00:00
test_skills_saved_turns_ui.py refactor(css): move document, gallery and image-editor styles to their own file 2026-09-23 16:12:51 +02:00
test_skills_tag_token_match.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_slash_autocomplete_static.py feat: add ChatGPT Subscription provider (#2876) 2026-06-08 10:19:18 +02:00
test_slash_setup_provider_aliases.py fix: add OpenCode setup provider aliases (#4700) 2026-06-22 17:33:02 +02:00
test_smoke_area_table.py test(smoke): add a release smoke suite over every advertised feature area 2026-09-30 12:12:58 +02:00
test_snap_other_layers_nonarray_js.py Keep snap helper safe without context (#1828) 2026-06-29 18:54:44 +01:00
test_source_question_routing.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_speech_service_toggles.py Honor disabled speech service toggles (#814) 2026-06-02 10:44:39 +09:00
test_spinner_stops_when_never_attached_js.py fix(ui): stop the whirlpool spinner animating when it is never attached (#5990) 2026-08-12 00:25:03 +01:00
test_split_chunks_no_duplicate_tail.py fix(tests): use non-repeating split chunk fixture 2026-06-04 18:11:42 +01:00
test_sqlite_foreign_keys.py refactor(tests): centralize fake database import-state cleanup 2026-06-05 12:27:44 +01:00
test_src_search_query_nonstring.py chore: deduplicate src/search modules (cache, content, query) into shims (#2506) 2026-06-04 18:10:55 +02:00
test_startup_session_bootstrap_js.py test(harness): isolate imports and stabilize browser and DNS fixtures 2026-09-22 23:27:08 +01:00
test_startup_shell_js.py perf(ui): stop session loading from blocking shell (#5927) 2026-08-10 19:37:21 +01:00
test_state_manager_intent_boundaries.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_static_stylesheet_manifest.py fix(css): repoint the two stylesheet links the split left behind 2026-09-30 17:14:52 +02:00
test_static_test_server.py test(harness): bind the static test server to an ephemeral port 2026-09-25 10:45:58 +02:00
test_stream_completion_scroll_stability.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_streamed_tool_markup.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_streaming_segmenter_js.py fix(chat): stop code-block button flicker during streaming (#3023) 2026-06-06 04:08:54 -06:00
test_strip_reasoning_prose_dataloss.py fix: _strip_reasoning_prose discards the answer when reasoning trails it (#1643) 2026-06-03 14:23:15 +09:00
test_strip_think.py fix: normalize Gemma 4 thought-channel output (#2224) 2026-06-04 19:26:58 +02:00
test_structured_document_append_routing.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_stt_leak.py STT: clean temp audio files on transcription failure 2026-06-02 20:43:24 +09:00
test_stylesheet_keyframe_uniqueness.py fix(css): collapse duplicate @keyframes names to the definition that wins 2026-09-29 16:36:01 +02:00
test_stylesheet_test_hygiene.py Merge lab into refactor/split-style-css 2026-10-01 00:48:58 +01:00
test_svc_research_sources_nondict.py fix: services research source extraction crashes on a non-dict finding (#1868) 2026-07-20 09:39:16 +02:00
test_tab_stream_rejoin_static.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_tailscale_discovery_cache.py fix(discovery): cache a successful but empty Tailscale lookup 2026-09-30 12:14:03 +02:00
test_task_chain_owner_scope.py Enforce task chain owner scope (#3006) 2026-06-07 12:43:43 +02:00
test_task_cookbook_admin_gate.py fix(tasks): gate cookbook serve task execution (#5235) 2026-07-05 13:19:04 +01:00
test_task_endpoint_normalization.py fix(tasks): normalize task endpoint URL to /chat/completions before model call (#4619) 2026-06-24 18:02:31 +02:00
test_task_routes_shim.py refactor(routes): move task domain into routes/task/ subpackage 2026-08-17 10:07:17 +08:00
test_task_scheduler_cache.py fix(tasks): clean up the singleflight cache on cancellation 2026-09-30 16:05:09 +02:00
test_task_scheduler_cancel.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_task_scheduler_fixture_isolation.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_task_scheduler_session_delivery.py fix: session context drifting — messages leaking between chats (#135) (#267) 2026-06-09 14:12:52 +01:00
test_task_session_folder.py feat(tasks): assign folder='Tasks' at creation + backfill migration (#2834) 2026-06-07 15:33:17 +02:00
test_task_shell_tools.py fix(tasks): keep scheduled-task prompt cache stable 2026-06-28 00:05:02 +01:00
test_tasks_completed_default_static.py test(baseline): align UI and model profile expectations 2026-09-22 23:27:17 +01:00
test_taxonomy.py test: split embedding lane tests (#4389) 2026-06-26 18:28:40 +02:00
test_teacher_audit_owner_scope.py fix(teacher): import _TEACHER_SYSTEM_PROMPT from its current module (#5756) 2026-08-12 08:13:16 +01:00
test_teacher_eval_nonstring_reply.py fix: evaluate_turn_regex crashes on a non-string agent_reply (#1723) 2026-06-03 13:31:26 +09:00
test_teacher_eval_tier2.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_theme_sidebar_mobile.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_tidy_research_owner_scope.py fix(tasks): scope action_tidy_research broken-file sweep to admins (#6069) 2026-08-16 13:19:56 +01:00
test_tile_manager_snap_zones_js.py test(harness): isolate imports and stabilize browser and DNS fixtures 2026-09-22 23:27:08 +01:00
test_tls_overrides_scope.py Support extra CA bundle for private-CA LLM providers (#769) 2026-06-04 13:18:50 +01:00
test_toast_dismiss_pointer_events.py feat: add dismiss (×) button to all toast notifications (#1355) (#1755) 2026-06-26 14:02:35 +01:00
test_toast_ui_polish.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_token_cache_atomic_swap.py fix(auth): swap the API token cache atomically instead of clearing it 2026-09-30 16:07:12 +02:00
test_tool_approval_frontend_routing.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_tool_approval_single_action_scope.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_tool_approval_task_scope.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_tool_approvals.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_tool_event_call_ids.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_tool_header_icons_static.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_tool_implementations_shim.py Merge verified Odysseus fixes 2026-07-23 14:49:02 +00:00
test_tool_index_keyword_boundaries.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_tool_index_lifecycle.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_tool_index_multilingual_literal_hints.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_tool_index_schema_parity.py fix(agent): index api_call so RAG tool selection can retrieve it (#3923) 2026-06-18 08:43:25 +00:00
test_tool_output_prompt_injection.py harden(agent-loop): wrap non-native tool results as untrusted data (#1629) 2026-06-16 13:35:07 +02:00
test_tool_parsing_bare_end_marker.py fix(ui): stop stripping the word assistant from rendered text (#5974) 2026-08-12 01:47:11 +01:00
test_tool_parsing_hermes_json.py fix(tools): parse Hermes/Qwen JSON bodies inside tool_call wrappers (#5887) 2026-08-12 02:41:03 +01:00
test_tool_parsing_mixed_formats.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_tool_parsing_nonstring.py fix: tool-block parsing crashes on a non-string input (#1628) 2026-06-03 08:59:42 +09:00
test_tool_path_confinement.py fix(tools): expose active Python environment in workspace namespace 2026-09-22 23:26:28 +01:00
test_tool_phase_ttft_static.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_tool_policy.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_tool_rag_contacts_domain.py fix(agent): add contacts domain to tool classifier 2026-06-15 15:03:19 +09:00
test_tool_rag_keyword_hints.py Merge verified Odysseus fixes 2026-07-23 14:49:02 +00:00
test_tool_resolution_audit_aliases.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_tool_result_binary_compaction.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_tool_routing_audit.py recover synthesis after unavailable web search 2026-09-17 13:34:36 +00:00
test_tool_routing_audit_route.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_tool_routing_experiment.py merge: reconcile PR 40 with current lab 2026-10-01 05:03:58 +01:00
test_tool_schemas.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_tool_support_heuristic.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_tool_task_cancelled_on_disconnect.py fix(agent): preserve focused turn contracts and verified completion 2026-09-22 23:26:16 +01:00
test_tool_utils_import_clean.py refactor(tools): consolidate duplicated _truncate and get_mcp_manager into src/tool_utils (#3478) 2026-06-09 01:05:30 +02:00
test_topic_analyzer.py refactor(tests): centralize fake database import-state cleanup 2026-06-05 12:27:44 +01:00
test_totp_failclosed.py fix: 2FA bypassed when enabled but TOTP secret is missing (fail-open) (#1286) 2026-06-03 01:26:47 +09:00
test_tour_hint_dismiss_js.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_truncate_message_count_regression.py fix: session context drifting — messages leaking between chats (#135) (#267) 2026-06-09 14:12:52 +01:00
test_tts_available_nonstring_provider.py fix: TTS available crashes on non-string tts_provider (#2034) 2026-07-11 03:19:51 +01:00
test_tts_cache_stats.py TTS: include mp3 files in cache stats 2026-06-02 20:43:29 +09:00
test_tts_service_enforce_cache_limit.py add test for cache eviction handling unlink errors gracefully 2026-07-29 12:42:20 +03:00
test_tts_speed_malformed.py fix(tts): tolerate a malformed tts_speed instead of 500-ing (#1450) 2026-06-03 14:12:03 +09:00
test_tui_host_edit_routing.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_tui_host_patch.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_tui_round_cap.py merge: reconcile PR 40 with current lab 2026-10-01 05:03:58 +01:00
test_turn_contract.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_turn_contract_integration.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_turn_contract_read_operations.py fix compound benchmark tool routing 2026-09-17 23:56:36 +00:00
test_turn_rendering_js.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_ui_control_rag_toggle.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_ui_visibility_js.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_unknown_tool_calls.py test(tool_execution): stop two tests leaking src.tool_execution into the suite (#2686) 2026-06-09 16:35:10 +01:00
test_update_database_script.py Remove duplicate update database body (#1584) 2026-06-03 08:57:03 +09:00
test_update_plan_tool.py fix(agent): close untrusted-context gate bypasses 2026-08-15 01:58:32 +00:00
test_upload_content_detection_magic.py fix(docker): install python-magic and libmagic for upload MIME sniffing 2026-06-27 17:31:46 +01:00
test_upload_error_surfaced.py Fix merged test regressions 2026-07-01 11:12:55 +00:00
test_upload_handler_atomicity.py fix(upload): recover backups after same-timestamp corruption (#5860) 2026-08-12 03:22:31 +01:00
test_upload_handler_cleanup.py fix(stabilization): harden attachment lifecycle and agent guard signals (#5420) 2026-07-11 15:14:14 +01:00
test_upload_handler_rename_owner.py fix(uploads): migrate upload ownership on rename (#3617) 2026-06-11 16:01:04 +02:00
test_upload_id_extension.py fix: uploads with _ or - in the extension become permanently unreadable (#1756) 2026-06-03 13:28:45 +09:00
test_upload_id_validation.py fix: uploaded files with no extension become permanently unresolvable (#1275) 2026-06-03 01:16:30 +09:00
test_upload_limits_centralized.py refactor(routes): move the email modules into routes/email/ 2026-09-29 18:21:18 +02:00
test_upload_multifile.py test(harness): isolate imports and stabilize browser and DNS fixtures 2026-09-22 23:27:08 +01:00
test_upload_routes_owner_scope.py fix(upload): handle corrupt uploads index and malformed vision JSON 2026-06-27 18:59:28 +01:00
test_uploaded_file_read_routing.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_url_safety.py fix(url-safety): resolve NAT64 well-known prefix to IPv4 target 2026-09-23 15:32:04 +01:00
test_user_time.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_vault_password_not_in_argv.py refactor(tools): split tool_implementations.py into src/tools/ package (#4423) 2026-06-26 15:40:04 +01:00
test_vault_routes_shim.py refactor(routes): move vault domain into routes/vault/ subpackage (#5780) 2026-08-03 20:44:00 +02:00
test_vcard_unfolding.py fix: vCard parser drops folded continuation lines, corrupting emails (#1870) 2026-06-27 14:41:57 +01:00
test_venice_hosts.py Treat Venice as a tool-capable SOTA cloud provider (#1173) 2026-06-02 23:03:46 +09:00
test_verifier_correction_copy.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_vision_model_detection.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_vision_owner_scope.py refactor(routes): move document domain into routes/document/ subpackage (#5885) 2026-08-04 03:54:55 -06:00
test_visual_report.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_visual_report_icon_url.py fix: visual report drops photos whose URL slug contains icon or logo (#1685) 2026-06-03 14:22:45 +09:00
test_visual_report_mobile_toolbar.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_visual_report_nonstring.py fix: visual_report markdown helpers crash on a non-string input (#1633) 2026-06-03 14:06:35 +09:00
test_visual_report_slug_unique.py fix(visual_report): make TOC heading slugs unique 2026-06-27 17:36:17 +01:00
test_visual_report_toc_code_fence.py fix(visual_report): ignore fenced headings in TOC extraction 2026-06-27 17:44:32 +01:00
test_visual_research_mode.py refactor(tests): read the whole cascade instead of style.css alone 2026-09-29 17:05:29 +02:00
test_warmup_ping_urls.py fix(startup): ping real endpoints in warmup/keepalive (#3641) 2026-06-10 19:21:45 +02:00
test_weather_search_recovery.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_web_fetch_batch.py fix web fetch atom api recovery 2026-09-18 14:25:14 +00:00
test_web_fetch_plaintext.py fix(search): add download budgets to web_fetch with truncation notice and hard ceiling (#3955) 2026-06-15 17:38:09 +00:00
test_web_fetch_size_caps.py fix web fetch atom api recovery 2026-09-18 14:25:14 +00:00
test_web_recovery_budget.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_web_search_metadata_mode.py Preserve all fetched search sources before transport truncation 2026-09-17 22:00:44 +00:00
test_web_search_query_sanitization.py fix(chat): sanitize web search query to strip markdown and code blocks (#4863) 2026-06-28 01:23:08 +01:00
test_web_search_raw_json_tool_call.py test(harness): isolate imports and stabilize browser and DNS fixtures 2026-09-22 23:27:08 +01:00
test_web_search_time_filter.py test(harness): isolate imports and stabilize browser and DNS fixtures 2026-09-22 23:27:08 +01:00
test_web_search_tool_icon_js.py fix(ui): raw SVG markup displayed instead of search icon for web_search tool label (#3601) 2026-06-10 16:50:43 +02:00
test_web_search_tool_not_clickable_static.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_web_user_agent_constant.py refactor(search): centralize the web-scraping User-Agent into one constant (#4325) 2026-06-16 01:33:47 +00:00
test_webhook_dns_rebinding_pin.py fix(security): pin webhook delivery to the SSRF-validated IP (DNS rebinding) (#5147) 2026-07-04 17:03:38 +01:00
test_webhook_emitters_use_manager.py fix(webhooks): route public emitters through fire_and_forget (#3964) (#4336) 2026-06-16 00:41:45 +02:00
test_webhook_routes_shim.py refactor(routes): move webhook domain into routes/webhook/ subpackage (#5781) 2026-08-03 20:44:31 +02:00
test_webhook_sanitize_error_ipv6.py fix(webhooks): redact IPv6 addresses in sanitized error messages (#3038) 2026-06-07 04:55:33 +01:00
test_webhook_ssrf_resilience.py fix(security): pin webhook delivery to the SSRF-validated IP (DNS rebinding) (#5147) 2026-07-04 17:03:38 +01:00
test_webhook_task_refs.py fix(tests): isolate webhook task reference imports 2026-06-15 14:57:47 +09:00
test_webhook_trigger_auth_exempt.py refactor(routes): move task domain into routes/task/ subpackage 2026-08-17 10:07:17 +08:00
test_windows_update_script.py Windows: add Docker update script 2026-06-02 20:45:32 +09:00
test_workspace_artifact_tool_floor.py fix(tools): constrain Python environment namespace mount 2026-09-23 00:10:50 +01:00
test_workspace_confine.py fix(tests): resolve temp paths consistently on macOS 2026-09-30 10:56:58 +02:00
test_workspace_domain_precedence.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00
test_youtube_comments_timeout.py YouTube: enforce comment fetch timeout while waiting 2026-06-02 20:44:24 +09:00
test_youtube_extract_id_nonstring.py fix: extract_youtube_id crashes on a non-string url instead of returning None (#1689) 2026-06-03 13:38:11 +09:00
test_youtube_handler_consolidation.py fix(youtube): consolidate duplicate handler 2026-06-15 15:03:41 +09:00
test_youtube_prefetch_provenance.py Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
test_youtube_svc_comments_nondict.py fix: youtube (services) comment formatter crashes on a non-dict comment (#1746) 2026-06-03 13:29:01 +09:00
test_youtube_target_validation.py Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00
test_youtube_transcript_seg_nondict.py fix: youtube transcript formatter crashes on a non-dict segment (#1745) 2026-06-03 13:29:08 +09:00
test_yoyo_builtin_theme.py merge: reconcile PR 40 with current lab 2026-10-01 05:03:58 +01:00
TESTING_STANDARD.md fix(devops): harden docker config defaults (#4349) 2026-06-16 04:03:43 +01:00
tool_followup_oracle.test.mjs Squash Odysseus development history 2026-09-11 06:04:19 +00:00
toolFollowupOracle.test.mjs Squash Odysseus development history 2026-09-11 06:04:19 +00:00
turnRendering.test.mjs Preserve preview harness, editor, email and task improvements 2026-10-01 01:34:26 +00:00

Test Suite Notes

Purpose

This file documents the shared test helpers and the review expectations that go with them. The suite is being refactored incrementally, so this is a working reference for that effort - not a claim that the suite is already fully organized. Read it before adding a new helper or before reviewing a PR that touches tests/helpers/.

For the broader rules - test taxonomy, determinism/isolation rules, the behavioral-vs-source-text policy, and helper/factory extraction rules - see TESTING_STANDARD.md. This file is the concrete helper reference; that file is the standard the refactor works toward.

Running focused subsets (taxonomy markers)

tests/conftest.py tags every test at collection time with two markers derived from its filename by tests/_taxonomy.py: an area_* marker (e.g. area_security) and a finer sub_* marker (e.g. sub_owner_scope). This adds markers only - it moves no files and changes no test behavior. Use them to run a focused slice:

./venv/bin/python -m pytest -m area_security
./venv/bin/python -m pytest -m "area_services and sub_cookbook"

Areas are security, routes, services, cli, js, helpers, unit, and uncategorized. Classification is conservative and token-based: a file that matches no area keyword falls back to area_uncategorized with its filename as the sub-area. The area_* names are registered in pyproject.toml; the dynamic sub_* names are registered before collection by pytest_configure in tests/conftest.py, so unknown-mark warnings still flag genuine typos.

The full suite does not come back clean on every machine. KNOWN_FAILURES.md lists which failures are expected, which are test bugs worth fixing, and the prerequisites a clean run needs; anything not on that list is a regression until shown otherwise.

For common focused runs, use tests/run_focus.py. It validates area and sub-area names, accepts sub-areas with or without the sub_ prefix, and passes extra pytest arguments after --:

./venv/bin/python tests/run_focus.py --area security
./venv/bin/python tests/run_focus.py --area services --sub-area cookbook
./venv/bin/python tests/run_focus.py --sub-area sub_cookbook
./venv/bin/python tests/run_focus.py --keyword taxonomy
./venv/bin/python tests/run_focus.py --last-failed
./venv/bin/python tests/run_focus.py --dry-run --area services --sub-area cookbook
./venv/bin/python tests/run_focus.py --area services -- --maxfail=1 -q

Fast lane and duration visibility

--fast runs the fast lane: the tests that are not marked slow (it adds the marker expression not slow). It composes with --area/--sub-area using and. Because no tests may be marked slow yet, --fast can initially match the full focused selection; it becomes a real speed-up as slow marks are added from duration evidence. Use it for quick local or reviewer feedback; it does not replace broader focused or full-suite validation before merge.

--durations N and --durations-min FLOAT add pytest's slowest-test reporting so you can see where time goes. They are reporting only and do not count as a focus selector, so --durations must be combined with a real selector (--area, --sub-area, --keyword, --last-failed, or --fast).

Use the project Python environment before running these commands. The examples use the repo's documented ./venv/bin/python path so they do not accidentally fall back to system Python.

./venv/bin/python tests/run_focus.py --fast
./venv/bin/python tests/run_focus.py --area services --fast
./venv/bin/python tests/run_focus.py --area services --durations 25
./venv/bin/python tests/run_focus.py --area services --fast --durations 25 --durations-min 0.05

The slow marker is opt-in. Mark a test slow only with duration evidence (from --durations), not by guessing - see the fast-lane policy in TESTING_STANDARD.md. --fast is for quick reviewer feedback and must not replace the full suite before merge. A slow mark only excludes a test from the fast lane; the test stays runnable directly, e.g.:

./venv/bin/python -m pytest tests/test_auth_config_lock_concurrency.py
./venv/bin/python -m pytest -m slow

Order-sensitivity reporting (report-only)

tests/run_order_report.py runs pytest with the collected test items shuffled by a seeded RNG, to surface order-sensitive tests (hidden coupling through shared import state, module caches, databases, etc.). It is report-only: it is not wired into CI, adds no gate, and changes no normal pytest collection or ordering - the shuffle exists only inside this runner. The seed is always printed, and pytest targets/options go after a literal --:

./venv/bin/python tests/run_order_report.py --seed 123 -- tests/cli/ -q
./venv/bin/python tests/run_order_report.py -- tests/cli/ -q   # generates and prints a seed

The same seed reproduces the same order when the reported working directory, pytest target arguments, and test environment are also the same. The runner prints all command arguments with shell-safe POSIX quoting and uses the invoking Python interpreter.

A generated-seed run starts with output like:

[order-report] working directory: /path/to/odysseus
[order-report] shuffling test order with seed 284734921
[order-report] reproduce from this working directory with the same test environment:
[order-report] reproduce with: /path/to/odysseus/venv/bin/python /path/to/odysseus/tests/run_order_report.py --seed 284734921 -- tests/cli/ -q

Run the printed command from the reported working directory to reproduce the same fixed-seed order:

[order-report] working directory: /path/to/odysseus
[order-report] shuffling test order with seed 284734921
[order-report] reproduce from this working directory with the same test environment:
[order-report] reproduce with: /path/to/odysseus/venv/bin/python /path/to/odysseus/tests/run_order_report.py --seed 284734921 -- tests/cli/ -q

Pytest output remains visible between the report header and footer. A failing run ends with pytest's normal failure report followed by:

FAILED tests/example_test.py::test_example - AssertionError
[order-report] seed 284734921: pytest exit code 1 (report-only; fix order-sensitive failures in separate scoped PRs)

Failures discovered this way are real isolation bugs: fix them in separate scoped PRs - do not silence them with skip/xfail, and do not "fix" them by depending on a particular order.

The runner propagates pytest's exit code, so it composes with normal local workflows; "report-only" means it is not a CI gate, not that failures are swallowed.

CSS computed-style snapshot

tests/test_css_computed_style_snapshot.py pins the rendered result of the shipped ordered stylesheet cascade, whose behavior depends on source order, by hashing getComputedStyle over a fixed element inventory across pages, viewports, themes and density modes. Any PR that moves CSS has to produce an identical digest or explain why it did not.

./venv/bin/python -m pytest tests/test_css_computed_style_snapshot.py
./venv/bin/python scripts/css_snapshot.py --check            # standalone, no pytest
./venv/bin/python scripts/css_snapshot.py --write-baseline   # re-record, deliberately

The inventory, the baseline and the capture live in tests/css_snapshot/; tests/css_snapshot/README.md documents what is covered, what is deliberately not, and how to find the property that moved when it fails. The run takes about 21 seconds and skips when npm ci has not been run.

Release smoke suite

tests/smoke/ drives every advertised feature area once, end to end, against a real instance - the safety net the unit suite does not provide for a route move or a module split. One command boots the worktree and runs it:

scripts/odysseus-smoke              # boot, run every area, stop again
scripts/odysseus-smoke --keep-up    # leave the instance running
scripts/odysseus-smoke --areas      # the coverage table, without booting

It reads its target instance out of the environment (APP_PORT through internal_api_base(), plus the dev admin account), so under a plain pytest with nothing booted every scenario skips with the reason and the full suite stays green. Models are served by a deterministic loopback stub, never a live endpoint; email uses the repo's existing ODYSSEUS_EMAIL_FIXTURE path.

The report is a per-area table that also prints the areas the suite deliberately does not cover, so it cannot be read as coverage of everything it omits. tests/smoke/README.md documents what is in each list and why.

Core principles

  • Keep PRs small and homogeneous: one kind of change per PR.
  • Prefer explicit local setup over hidden global fixtures.
  • Avoid expanding the root conftest.py unless absolutely necessary.
  • Do not mix file moves with logic changes in the same PR.
  • Do not weaken tests with skip/xfail just to make CI pass.
  • Validate the focused files you changed, plus any neighboring or order-sensitive groups they interact with.

Helper conventions

The helpers below live under tests/helpers/. They exist to remove repeated boilerplate that already appeared across multiple tests. Reach for one only when your test matches its intended use; do not stretch a helper to cover a new case.

tests.helpers.stylesheets.app_css

Use when a test asserts on a CSS rule.

  • Returns every app stylesheet concatenated in the order static/index.html loads them, which is the order the cascade actually has.
  • App styles live across an ordered cascade; reading one fragment alone ties the test to whichever file a rule sits in today, so it goes red when a rule moves without the rendered page changing.
  • stylesheet_paths() and stylesheet_urls() are there when a test needs the files or the request URLs rather than their contents. stylesheet_link_tags() returns the <link> markup for a synthetic page driven through Playwright, so it gets the whole shipped cascade.
  • All of them fail loudly if index.html links a stylesheet that is missing.
  • Not for vendored CSS under static/lib/, which they deliberately skip.

tests.helpers.cli_loader.load_script

Use when a test needs to import a script under scripts/ without repeating SourceFileLoader / importlib.util boilerplate.

  • Intended for script/CLI tests that load a single file from scripts/.
  • Not for arbitrary package imports - use a normal import for those.
  • When migrating an existing test to it, keep the existing stubs and assertions unchanged. Any sys.modules stubs the script needs at import time must still be injected (e.g. via monkeypatch) before calling load_script.

tests.helpers.import_state.clear_module

Use when a test must drop one cached module and its parent-package attribute before a fresh import.

  • Clears sys.modules[name].
  • Clears the parent-package attribute when present.
  • Good replacement for local sys.modules.pop(...) + delattr(parent, child) blocks.

tests.helpers.import_state.preserve_import_state

Use when a test temporarily installs stubs into sys.modules and needs deterministic cleanup afterward.

  • Context manager: restores both sys.modules entries and parent-package attributes on exit (normal or exception).
  • Useful around module-level stubs or temporary imports.
  • Prefer narrow, explicit module names over broad ones.

tests.helpers.import_state.clear_fake_database_modules

Use only for the guarded fake/stub database cleanup pattern.

  • Preserves a real-looking core.database (one with a string __file__).
  • Removes a fake/stub core.database and the related src.database state.
  • Do not use as a general database reset fixture.

tests.helpers.import_state.clear_fake_endpoint_resolver_modules

Use only for the guarded fake/stub src.endpoint_resolver cleanup pattern.

  • Preserves real resolver modules (those with a truthy __file__).
  • Evicts fake/stub resolver modules and the dependent route modules that were cached against them.
  • Accepts explicit extra dependent module names to evict alongside the defaults.

tests.helpers.sqlite_db.make_temp_sqlite

Use for the repeated file-backed temp sqlite setup in tests.

  • Only constructs (SessionLocal, engine, tmpfile) from the repeated block.
  • Does not patch modules and does not clean up the temp file.
  • The caller must bind SessionLocal explicitly onto whatever module the code under test reads, and must keep the returned objects alive.
  • Do not use it as a general DB fixture framework.

tests.helpers.db_stubs.make_core_db_stub

Use for small import-time core.database stubs with a placeholder SessionLocal.

  • Pass model names via models when MagicMock attributes are sufficient.
  • Pass attributes when an import needs exact placeholder values.
  • Set install_core_package=True only when the test also needs a fake parent core module stub.
  • Keep custom fake sessions and route-specific database behavior local.

What not to abstract yet

Some remaining patterns should stay as-is for now rather than being forced into helpers:

  • Large mixed files such as security/review regression files.
  • Broad setup-oriented sys.modules stub installers.
  • One-off custom module patching.
  • Custom DB session, route, and app setup.

Validation expectations

Run validation locally before opening or approving a PR. Practical checks:

  • git diff --check - catch whitespace and conflict-marker errors.
  • ./venv/bin/python -m py_compile <changed files> - confirm changed files compile.
  • Focused ./venv/bin/python -m pytest on the changed test files.
  • ./venv/bin/python -m pytest on neighboring or order-sensitive test groups that share import state with the changed files.
  • grep for the old boilerplate when replacing it, to confirm no stragglers remain.
  • A fresh audit worktree when changing the helpers themselves, so stale __pycache__ or import state cannot mask a regression.

Current roadmap

  1. Import-state cleanup - complete.
  2. Document helper conventions (this file).
  3. Pilot the repeated import-time core.database stub helper.
  4. Add further tiny helpers only when the repeated semantics are clear.
  5. Start low-risk file moves only after helper conventions are documented.
  6. Avoid moving high-risk security/route regression files first.