You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hygiene: Added JSON_THROW_ON_ERROR to json_decode on GitHub API response in ScoltaCli::downloadPagefind() — malformed API responses now produce a clear error instead of silently continuing with a null object.
Hygiene: Added TOCTOU-safe comment to intentional @rmdir call in uninstall.php.
Hygiene: Added source-parse test ensuring json_decode on remote API responses always uses JSON_THROW_ON_ERROR.
Fix: Rebuild notice dismiss never persisted — uniqid(..., true) generated IDs containing periods, which sanitize_key() stripped, causing ID mismatch between storage and lookup.
Fix: Dashboard "AI: Not configured" did not detect API keys set via environment variable or wp-config constant — only checked database storage and WP AI Client SDK.
Fix: Plugin description truncated on Plugins page — multi-line header not parsed by WordPress.
Added
Scolta_Cache_Driver behavior tests. New ScoltaCacheBehaviorTest: verifies the driver contract (get/set/miss/array values) and end-to-end handler+driver caching — second call to handleExpandQuery/handleSummarize serves from the WordPress transient cache (AI called once), while cacheTtl=0 calls the AI service both times.
Config test gap fixes. Added test_config_maps_custom_stop_words (property + JS output); test_config_maps_ai_provider, test_config_maps_ai_model, test_config_maps_ai_base_url, and test_empty_ai_base_url_omitted_from_client_config (AI client config pipeline).
Custom prompt tests (Phase 4). Added test_get_summarize_prompt_uses_custom_override and test_get_follow_up_prompt_uses_custom_override confirming all three prompt types return their override raw without {SITE_NAME} substitution.
Cache behavior tests (Phase 3). Added test_config_maps_cache_ttl and test_config_maps_cache_ttl_zero_disables_caching to confirm cache_ttl is mapped through to ScoltaConfig::$cacheTtl including the zero/disable case.
Display behavior tests (Phase 2). Added config-mapping tests for all five display fields (excerpt_length, results_per_page, max_pagefind_results, ai_summary_top_n, ai_summary_max_chars) and an end-to-end test that they propagate to toJsScoringConfig() output.
Scoring behavior tests (Phase 1). Added config-mapping tests for phrase proximity fields (phrase_adjacent_multiplier, phrase_near_multiplier, phrase_near_window, phrase_window), ai_languages, recency_strategy, and recency_curve to AiServiceTest.