All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- POS highlighting controls are now feature-gated via
config.toml([features].pos_highlighting) and default to hidden/off for minimal UI by default.
- Added optional text-only mode for both phases (media upload is no longer required).
- Added multi-media upload support across Phase 1 and Phase 2 (single or multiple image/video files).
- Added per-item media tagging with editable defaults (
@imageN/@videoN) and tagged payload composition for multi-media requests. - Added a dedicated Manage media tags dialog with full-size preview and tag editing.
- Added output editing dialogs for both Phase 1 and Phase 2, with edited content persisted to conversation context.
- Added a large sidebar dialog editor for the System Prompt.
- Added optional session request logging with JSON export download.
- Added configurable hero notices via
config.toml. - Added offline CI pytest coverage plus opt-in live smoke execution via
--liveand.envloading in tests.
- Updated workflow terminology to Primary Analysis (Phase 1) and Refinement Loop (Phase 2).
- Updated System Prompt behavior so the editable textbox is the request source of truth; preset dropdown now loads via explicit Load action.
- Improved Request Transparency previews for multi-media payloads (media summaries and media-tag mapping).
- Updated output copy actions to support both Copy Plain Text and Copy Markdown.
- Updated phase headers and reasoning sections with Material icon labels.
- Refined in-app notice content, including Xiaomi/OpenRouter update messaging.
- Fixed media-tag persistence to remain stable when media items are added/removed (signature-based mapping).
- Improved setup reliability by bundling
en_core_web_smvia dependency wheel and aligning guidance arounduv sync. - Improved UI edit ergonomics by widening system prompt and phase-output edit dialogs.
- Updated
README.md,AGENTS.md,docs/REFERENCE.md, anddocs/TESTING.mdto match current behavior and testing workflow.
- Fixed POS highlighting so enabling it no longer breaks markdown rendering in model outputs.
- Updated highlighter behavior to be markdown-aware by preserving fenced code blocks, inline markdown spans, and line-prefix structure markers while highlighting plain text tokens.
- Added support for both image and MP4 video inputs in Phase 1 and Phase 2 analysis flows.
- Added folder-based prompt preset loading with optional metadata sidecars.
- Added a new initial prompt preset: video technical hybrid script.
- Removed leftover debug reasoning-effort caption from the chat render flow.
- Updated user-facing docs copy to generalize MP4 mentions to broader “video” terminology.
- Expanded
AGENTS.mdguidance for video workflow and prompt preset behavior. - Clarified optional spaCy POS-highlighting requirements in docs.
- Made Phase 1 and Phase 2 prompt fields editable in the UI so users can tune instructions per run without leaving the workflow.
- Cleaned up request transparency preview presentation for a clearer, more compact phase action experience.
- Provider presets via
config.tomlfor endpoint/model selection (e.g., BytePlus/OpenAI/Gemini/OpenRouter) - Unified API key env fallback flow with
LLM_API_KEYplus provider-specific key compatibility - Hero landing section (
hero.md) with FrameLab branding and two-phase workflow guide - API Setup section wrapped in an expander for cleaner sidebar/UI layout
- Per-phase Request Transparency preview panel showing provider, endpoint, model, reasoning setting, and compact payload preview
- UI processing state controls to lock inputs/buttons during active analysis and prevent duplicate submissions
- Hero badges (latest release, MIT license, Python 3.11+) and creator credit line
- Request transparency previews are now rendered inline with each phase action panel for clearer workflow alignment
- Setup/configuration docs now reflect provider preset workflow and unified env-key handling
- Added
requirements.txtfor pip-based installs and set Poetry package mode to dependency-management-only (package-mode = false)
- Improved phase layout consistency by removing placeholder-based transparency rendering and placing action buttons after each inline preview
- Initial release of FrameLab, a lightweight multimodal AI web app for cinematic image analysis
- Minimal dependencies: only
streamlitandopenai - OpenAI-compatible endpoint support via configurable Base URL
- Hybrid configuration fallback: sidebar input → .env → config.py defaults
- API key support with sidebar override priority
- Externalized default system prompt via
system_prompt.txt - Uploaded image previews for Phase 1 and Phase 2
- Real-time streaming output in UI
- Thought/reasoning stream shown in expandable section
- One-click copy buttons for Phase 1 and Phase 2 results (plain text)
- Token usage summary (input/output/total) when provided by endpoint
- Responses API support with automatic Chat Completions fallback
- Transport path display (Responses API or Chat Completions fallback)
- Auto-disable Responses API when provider reports schema mismatch
- Two-phase workflow:
- Phase 1: Initial image analysis
- Phase 2: Correction loop with new image + notes
- Session-based conversation memory
- Reasoning effort configuration (none/minimal/low/medium/high)
- Error handling with underlying exception messages for debugging