Skip to content

Releases: eeftychiou/presshub

PressHub AI Co-Pilot v2.3.5

Choose a tag to compare

@github-actions github-actions released this 05 Sep 07:53
5c57aed

PressHub AI Co-Pilot v2.3.5

🔧 Enforce AI Provider Store Precedence & Fix Runtime Max Tokens Shadowing (Issue #122)

  • Resolved Runtime Max Tokens Shadowing: Fixed an issue where legacy options (presshub_ai_max_tokens_gemini, presshub_ai_temperature_*, presshub_ai_timeout_*) lingering in wp_options from prior versions shadowed and overrode tuning values configured in the Provider Store (wp_presshub_ai_providers).
  • Strict Resolution Precedence: Updated PressHub_AI_API_Client::resolve_module_config() to prioritize:
    1. Module-level option override (presshub_ai_{module}_max_tokens)
    2. Configured provider record from PressHub_AI_Provider_Store ($provider_record['max_tokens'])
    3. Class default (PressHub_AI_Provider_Defaults::default_max_tokens())
  • Constructor & Metadata Synchronization: Updated PressHub_AI_API_Client::__construct() to copy max_tokens, temperature, timeout, and default_model from the configured provider record, and updated current_request_meta() to read active provider tuning from the Provider Store.
  • Automated Idempotent Cleanup Migration: Added presshub_ai_migrate_purge_legacy_provider_tuning() to automatically purge obsolete flat tuning options from wp_options on upgrade and migrate uncustomized 16384 store records to 20000.

What's Changed

  • fix(provider): purge legacy max_tokens option shadowing and enforce Provider Store precedence by @eeftychiou in #123

Full Changelog: v2.3.4...v2.3.5

PressHub AI Co-Pilot v2.3.4

Choose a tag to compare

@eeftychiou eeftychiou released this 05 Sep 07:03
434034c

PressHub AI Co-Pilot v2.3.4

🚀 News Curation Token Optimization & Prompt Deduplication (Issue #120)

  • Resolved Duplicate Article Ingestion: Fixed an issue where harvested articles were being injected twice in news curation prompts (once via {articles_context} in the system prompt template and a second time in the user prompt), generating redundant 554k character payloads and doubling prompt token consumption (~198,670 tokens).
  • Streamlined System Prompt: Removed {articles_context} from default_greek_briefing.txt so system instructions remain purely editorial (~1,343 characters).
  • Deduplication Guard: Added logic in PressHub_AI_News_Curator::build_prompt() ensuring articles are sent in the user prompt by default, while gracefully handling custom templates that include {articles_context} by omitting duplicate user-prompt context. Payload size is cut in half (~278k chars / ~99k tokens).

⚙️ AI Provider Settings Clarification & Default Max Output Tokens (Issue #120)

  • Setting Clarification: Renamed Max Tokens: to Max Output Tokens: with an explanatory tooltip clarifying that it specifies maximum output tokens generated in model responses (completion tokens) and does not limit input prompt tokens.
  • Provider Card Tuning Display: Updated summary cards to display Max Output: <tokens>.
  • Increased Default to 20,000:
    • Increased PressHub_AI_Provider_Defaults::DEFAULT_MAX_TOKENS to 20,000.
    • Updated all provider templates (OpenAI, Anthropic, Gemini, Groq, Mistral, DeepSeek, Ollama, Custom) to default to 20,000 max output tokens.
    • Expanded HTML input upper bound to 65,536.

What's Changed

  • fix(curation): deduplicate articles in prompt and clarify max output tokens by @eeftychiou in #121

Full Changelog: v2.3.3...v2.3.4

PressHub AI Co-Pilot v2.3.3

Choose a tag to compare

@eeftychiou eeftychiou released this 05 Sep 05:50
8643021

PressHub AI Co-Pilot v2.3.3

🎙️ Podcast Prompt Enhancements (Issue #118)

  • Nameless Presenters (Απαγόρευση Ονομάτων): Speakers in podcast script generation are strictly prohibited from referring to each other or themselves by personal names (neither Greek names nor invented names). They also never speak technical tags like [SPEAKER_1] or «παρουσιαστής».
  • Spoken Natural Dates for TTS (Μορφοποίηση Ημερομηνιών για TTS): All calendar and news dates (e.g. 03/05/2026) are converted and written out in natural spoken Greek words (e.g. 3 Μαΐου 2026) to optimize TTS pronunciation.

📁 Externalized Prompt Defaults

  • Default prompt templates are now organized as dedicated text asset files in assets/prompts/ (9 podcast dialogue styles/host count combinations + 1 news curation briefing template) rather than hardcoded in PHP code files.
  • Introduced PressHub_AI_Prompt_Loader with Zero-Silent-Fallback, path traversal protection, and in-memory static caching.

⚙️ Prompt Studio Settings Persistence Bugfix

  • Fixed an issue where operator edits in the "Podcast Dialogue Styles & Prompt Studio" settings tab were dropped upon save due to omission from the AJAX options whitelist.
  • Wired PressHub_AI_News_Curator::generate_briefing_story() to consult PressHub_AI_Settings_Storage::get_curation_prompt().

PressHub AI Co-Pilot v2.3.2

Choose a tag to compare

@github-actions github-actions released this 04 Sep 20:38

What's Changed

  • fix(podcast): presenter persona alignment, SFX stitching isolation, 30-voice catalog & logging rationalization by @eeftychiou in #117

Full Changelog: v2.3.1...v2.3.2

PressHub AI Co-Pilot v2.3.1

Choose a tag to compare

@github-actions github-actions released this 04 Sep 11:43

PressHub AI v2.3.1 Release Notes

Summary

Release v2.3.1 fixes a critical model cascade precedence bug where legacy per-type options silently shadowed configured Provider Store default models on older/migrated instances. In addition, this release introduces comprehensive diagnostic resolution logging and provenance tracking across the entire briefing and podcast pipeline.


What's Changed

  • fix(api): Inverted model cascade precedence in PressHub_AI_API_Client::resolve_module_config() so that Provider Store records take precedence over legacy database options (presshub_ai_model_{type} and presshub_ai_model).
  • feat(logger): Added resolution provenance tracking (model_source and provider_source) through all resolution branches.
  • feat(logger): Added structured [API Client Resolution] log events to presshub-debug.log.
  • feat(curator): Added pre-dispatch resolution logging and attached provenance metadata to curation token logs.
  • feat(podcast): Added pre-dispatch resolution logging and attached provenance metadata to podcast script token logs and script turn items.
  • feat(debug): Enhanced prompt debug logs to output active resolution source tags in prompt config headers.

Pull Requests

  • #116: fix(api): Fix model cascade precedence and add diagnostic resolution logging (Closes #115)

PressHub AI Co-Pilot v2.3.0

Choose a tag to compare

@eeftychiou eeftychiou released this 04 Sep 10:49

What's Changed

🎙️ Speech AI & Voice Settings

  • Clean English Voice Dropdown Labels: Stripped Greek transliteration suffixes ( / <Greek>) from all Gemini voices across gemini-2.5 and gemini-3.1 catalogs. All voice dropdowns now cleanly display pure English names with descriptors (e.g. Kore (Warm, Crystal Clear & Articulate - Default), Fenrir (Bold, Strong & Authoritative - Default)).
  • Surfaced Voice Generation AI Model Field: Added the Voice Generation AI Model (presshub_ai_briefing_tts_model) table row in Section 2 of the Daily Briefing Settings tab, allowing operators to directly configure and view their speech synthesis model override, or leave empty to inherit the Speech AI Provider's default.

🛡️ Elimination of Silent Hardcoded Fallbacks (Zero-Silent-Fallback Principle)

  • Zero-Silent-Fallback in Speech Generation: Removed the hardcoded $model = 'gemini-3.1-flash-tts-preview'; fallback from API client model resolution and removed unconfigured multi-model retry cascades in synthesize_speech_via_gemini().
  • Explicit Diagnostic Errors: When no valid TTS model is configured or if model is 'journey', the engine now immediately logs an ERROR and returns a clean WP_Error (missing_tts_model), alerting operators to configure a TTS model rather than executing unconfigured shadow models.
  • Modernized Provider Defaults: Updated default Gemini model in PressHub_AI_Provider_Defaults from deprecated gemini-1.5-pro-latest to modern gemini-2.5-flash.

Full Changelog: v2.2.9...v2.3.0

What's Changed

  • fix(tts): clean voice dropdown labels and eliminate hardcoded TTS model fallbacks (Fixes #113) by @eeftychiou in #114

Full Changelog: v2.2.9...v2.3.0

PressHub AI Co-Pilot v2.2.9

Choose a tag to compare

@github-actions github-actions released this 04 Sep 09:42

What's Changed

  • fix(workflow): recognize [SPEAKER_N]: / [HOST_N]: tags in parse_script_turns() (Fixes #102) by @eeftychiou in #103
  • docs(agents): update test count to 70, document remote branch retention, and clarify visual inspection scope (Fixes #104) by @eeftychiou in #105
  • fix(settings): persist unchecked checkboxes in per-tab AJAX save by @eeftychiou in #110
  • feat(settings): reconnect podcast style selector and implement prompt studio (Fixes #108) by @eeftychiou in #111
  • feat(settings): surface orphaned TTS payload logging and voice pitch controls (Fixes #109) by @eeftychiou in #112

Full Changelog: v2.2.8...v2.2.9

PressHub AI Co-Pilot v2.2.8

Choose a tag to compare

@github-actions github-actions released this 04 Sep 04:18

What's Changed

  • docs(agents): enforce Logging-First Investigation Protocol across all four log layers by @eeftychiou in #101

Full Changelog: v2.2.7...v2.2.8

PressHub AI Co-Pilot v2.2.7

Choose a tag to compare

@github-actions github-actions released this 03 Sep 17:31

What's Changed

  • fix(editor): refresh bounded-box title preview after Re-generate Text Story (Fixes #88) by @eeftychiou in #96
  • test(integration): reconcile Issue #67 URL assertion with post-#43 model-resolution cascade (Fixes #98) by @eeftychiou in #99
  • feat(workflow): engine-aware TTS voice catalog with Gemini dynamic discovery (Fixes #89) by @eeftychiou in #97

Full Changelog: v2.2.6...v2.2.7

PressHub AI Co-Pilot v2.2.6

Choose a tag to compare

@github-actions github-actions released this 03 Sep 11:54

What's Changed

  • feat(workflow): make podcast dialogue prompt style-selectable, drop host-name placeholders (Fixes #90) by @eeftychiou in #95

Full Changelog: v2.2.5...v2.2.6