Skip to content

v0.3.4

Choose a tag to compare

@github-actions github-actions released this 27 Apr 19:31

Fixed

  • 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.