Skip to content

Releases: OpenSportsLab/VideoAnnotationTool

v1.2.0

12 Apr 12:36
a1b7ba6

Choose a tag to compare

Improve dataset state management, undo/redo behavior, project close flows, and annotation workflows across classification, localization, description, and dense description. Add broader GUI regression coverage and polish media and editor interactions.

What's new

  • Centralized dataset runtime state around the Dataset Explorer flow
  • Improved undo/redo behavior for dataset and annotation mutations
  • Better dataset header inspector editing and JSON preview handling
  • Safer unsaved-changes workflow when closing projects
  • Immediate manual-save behavior in Classification
  • Autosave support in Description
  • Improved Localization smart annotation, head/label management, and label color handling
  • Chronological ordering guarantees for Dense Description and Localization events after add/edit/delete
  • Updated media controls, including mute support
  • Broader GUI regression coverage across lifecycle, explorer, media, history, and mode workflows

Fixes and polish

  • Fixed dense description removal behavior
  • Improved tab visibility and tab-removal behavior in editor panels
  • Refined controller boundaries and signal-based coordination across modules
  • Updated tests and workflow coverage for recent projects, dataset explorer behavior, and mode-specific interactions

Commits:

  • Merge pull request #11 from OpenSportsLab/dev-silvio
  • Fix dense description test: use on_media_position_changed instead of mocking player.position
  • Copilot advise: rename question in dialog
  • feat(localization): Adjust button styling and hide tab bar when only one tab remains
  • feat(localization): Implement label color management and UI integration
  • feat(classification): Implement head management with add, rename, and delete functionalities
  • feat(classification): Hide training tab and refactor tab removal logic
  • feat(localization): Enhance localization inference with head context and configuration management
  • feat(localization): Enhance smart event handling and UI interactions
  • Refactor Localization and Classification Controllers
  • fix: dense desription removal was not working
  • feat: Ensure chronological order of dense and localization events after add, modify, and delete operations
  • feat: Enhance Dense Description module with improved signal handling and controller API
  • feat: Enhance Description module with improved signal handling and API methods
  • feat: Improve column layout handling in DenseAnnotationPanel with retry mechanism
  • feat: Add mute button with icon and tooltip to MediaCenterPanel
  • Refactor tests to use dataset_explorer_controller directly
  • feat: Refactor media handling by removing QMediaPlayer dependencies and implementing signal-based playback control
  • feat: Enhance dense description functionality with new event handling and UI updates
  • feat: Enable immediate saving of manual annotations and update confirm button visibility in ClassificationAnnotationPanel

What's Changed

  • Refactor dataset state management and stabilize annotation workflows across all modes by @SilvioGiancola in #11

Full Changelog: v1.1.6.1...v1.2.0

v1.1.6.1

07 Apr 18:25
902e5f1

Choose a tag to compare

Release Notes

Scope

This release includes all changes merged from:

  • PR #8 (fd273b4)
  • PR #9 (cff7c50)
  • PR #10 (902e5f1)

Highlights

  • Major UI/controller architecture simplification across all modes.
  • Full migration to Qt Designer .ui-driven panels for core app surfaces.
  • Dataset Explorer is now the central owner of sample lifecycle and selection routing.
  • Persistent Recent Datasets in Welcome screen (QSettings-backed).
  • Large pytest-qt GUI suite expansion for lifecycle and mode workflows.

New and Improved

Unified and simplified app structure

  • Flattened ui/ structure (removed deep nesting and ui/common).
  • Flattened shared controllers (removed controllers/common).
  • Standardized package pattern per panel: __init__.py + .ui + README.md.

Dataset Explorer-first workflow

  • Terminology normalized from “video/clip” to sample in explorer flows/UI.
  • Add/remove/filter/clear operations centralized in DatasetExplorerController.
  • Selection contract now uses canonical Data ID dispatch to mode controllers.
  • Multi-view media routing handled centrally through Dataset Explorer + media player.

Navigation and media routing cleanup

  • Media selection is routed directly from Dataset Explorer to central media player.
  • Removed dead/duplicate navigation code from mode controllers.
  • Navigation controls were relocated to mode-appropriate widgets.
  • Filter behavior improved: when a filter leaves no visible samples, media and annotations are cleared.

Mode panel/controller refactors

  • Description and Dense Description moved to single-controller architecture with .ui panels.
  • Localization moved to .ui panel + consolidated controller architecture.
  • Classification panel and controller were aligned with the same architecture direction.
  • Old/unused child widget files and obsolete manager patterns were removed.

Welcome and project lifecycle UX

  • Welcome screen now has Recent Datasets integration with persistent storage via QSettings.
  • Improved close workflow for dirty projects with explicit options:
    • Save
    • Save As
    • Close Without Saving
    • Cancel
  • No unsaved-changes popup when dataset is clean.

Testing and Quality

  • Expanded GUI coverage with pytest-qt across:
    • app lifecycle
    • recent datasets
    • dataset editing
    • classification/localization/description/dense workflows
  • Added deterministic test fixtures, headless defaults, and QSettings isolation.
  • Added tests for routing and filter behavior (including empty-visible-list clearing behavior).

Breaking/Internal Migration Notes

  • Import paths changed after UI/controllers flattening (clean-cut, no compatibility aliases).
  • DatasetExplorerController now owns add/remove/filter/clear logic; mode controllers no longer own these flows.
  • Selection wiring is now Data ID-based (on_data_selected(data_id) style).
  • Some older media/player navigation signals and legacy dispatcher paths were removed.
  • If you maintain local extensions/plugins, update imports and controller entrypoints accordingly.

Notes

  • “Show Smart Labelled” remains future-ready for Description/Dense; current behavior may produce no smart matches for those modes until smart labeling is introduced there.

VideoAnnotationTool_V1.1.6

05 Apr 14:36
8380e24

Choose a tag to compare

  • Data Sandbox Logic: Implemented strict data isolation between Manual and Smart annotations, featuring a dual-list UI (Predicted vs. Confirmed) for accumulated AI results.

  • OSL JSON Standard: Standardized export format by merging all events into a single array, using confidence scores to distinguish AI results and ensuring strict integer types for timestamps.

  • Robust Undo/Redo: Added comprehensive history support for Smart Annotation (Run, Confirm, Delete) with tab-aware UI refreshing to prevent view-switching bugs.

  • UX & Stability: Added an indeterminate progress bar for inference, fixed schema registration for new projects, and implemented full state resetting when switching or creating projects.

  • Fix some bugs of deployment(ci.yml and release.yml)

VideoAnnotationToolV1.1.5

31 Mar 06:07
e22b980

Choose a tag to compare

  • Introduced a compact dynamic label flow layout that replaces the rigid 2-column grid, with auto-sized buttons and natural wrapping for better space usage.
  • Added quick timestamp editing with a Set to Current Video Time action for fast event updates.
  • Improved event list navigation so newly created or modified events remain highlighted and auto-scroll into view after re-sorting.
  • Refined the interface with reduced button height and a cleaner blue + Add Label style to minimize visual clutter.
  • Integrated the training workflow with soccernetpro through a background QThread, keeping the UI responsive during training.
  • Added real-time training monitoring with a progress bar and status updates by parsing live stdout/stderr logs.
  • Fixed configuration and path issues, including missing keys and external-drive dataset support.
  • Added user controls for safe training interruption and automatic checkpoint saving next to annotation files.
  • Documented FFmpeg-based fixes for macOS video decoding issues with unsupported formats.

VideoAnnotationTool V1.1.4.1

11 Mar 01:13
bc1b7e0

Choose a tag to compare

  • Modified apply_action_filter to make Hand Labelled and Smart Labelled filters inclusive rather than mutually exclusive.
  • Added real-time filter refreshing and refactored logic for batch confirmation, undo/redo, and robust confidence parsing.
  • Added logic to reset smart annotation UI components in the right panel within the _clear_workspace method.
  • Inserted filter refresh calls in refresh_ui_after_undo_redo to ensure the left list syncs immediately after undo/redo.
  • Fixed key mismatch in batch undo logic by changing old_batch to old_data to match the history stack.
  • Corrected undo key names and updated batch results to pass rich dictionaries with confidence instead of plain strings.
  • Added descriptive "Start:" and "End:" labels before the batch inference selection comboboxes in the UI.
  • Fix Save/Export button state to properly recognize confirmed smart annotations in Classification mode.

VideoAnnotationTool V1.1.4

09 Mar 12:23
eefb3fb

Choose a tag to compare

  • Implemented dynamic label mapping in config.yaml to remove hardcoded class dependencies.
  • Fixed cross-loading bugs; eliminated the need to start from an empty JSON; fixed task-name validation errors.
  • Implemented dual-track export (Hand/Smart labels); refined schema to ensure standard action_classification output.
  • Implemented "hard-root" logic; eliminated redundant dataset copying by referencing source paths directly.
  • Introduced a compact tabbed interface (Hand/Smart); optimized vertical spacing and implemented dynamic font scaling.
  • Developed independent Smart Annotation confirmation; added a 4-state filter (All/Hand/Smart/None).
  • Expanded the Undo/Redo system to support batch operations and AI inference tasks.

Video Annotation Tool

05 Mar 22:36
fdc389e

Choose a tag to compare

Update from "SoccernetPro" to “Video Annotation Tool”

  • Update release.yml
  • Update release.yml
  • Update ci.yml
  • Update welcome_widget.py
  • Update viewer.py
  • Update README.md
  • Delete .DS_Store
  • Update README.md
  • Update README.md
  • Update README.md
  • Update README.md
  • Update deploy_docs.yml
  • Update release.yml
  • Update ci.yml
  • Update README.md
  • Update welcome_widget.py
  • Delete test_data/invalid_json/invalid_classification_json/IMPORT04.json
  • Delete test_data/invalid_json/invalid_classification_json/IMPORT03.json
  • Delete test_data/invalid_json/invalid_classification_json/IMPORT02.1.json
  • Delete test_data/invalid_json/invalid_classification_json/IMPORT02-2.json

V1.1.2.2

02 Mar 11:50
8c5b58e

Choose a tag to compare

  • Update app_state.py
  • Update history_manager.py
  • Update editor.py
  • Update inference_manager.py
  • Update inference_manager.py
  • Update main.py
  • Update release.yml
  • Update ci.yml
  • Update requirements.txt
  • Update inference_manager.py
  • Update inference_manager.py
  • Update ci.yml
  • Update release.yml
  • Update ci.yml
  • Update requirements.txt
  • Update release.yml
  • Update ci.yml
  • Update requirements.txt
  • Update config.yaml
  • Update release.yml

SoccernetPro_Smart_Annotation_Tool

25 Feb 17:11
7e05fae

Choose a tag to compare

  • Update inference_manager.py
  • Update main.py
  • Update release.yml
  • Update ci.yml
  • Update requirements.txt
  • Update inference_manager.py
  • Update inference_manager.py
  • Update ci.yml
  • Update release.yml
  • Update ci.yml
  • Update requirements.txt
  • Update release.yml
  • Update ci.yml
  • Update requirements.txt
  • Update config.yaml
  • Update release.yml
  • Update deploy_docs.yml
  • Update ci.yml
  • Update requirements.txt
  • Update ci.yml

SoccernetPro_Annotation_Tool

25 Feb 06:44
3256847

Choose a tag to compare

  • Update welcome_widget.py
  • Delete test_data/invalid_json/invalid_classification_json/IMPORT04.json
  • Delete test_data/invalid_json/invalid_classification_json/IMPORT03.json
  • Delete test_data/invalid_json/invalid_classification_json/IMPORT02.1.json
  • Delete test_data/invalid_json/invalid_classification_json/IMPORT02-2.json
  • Delete test_data/invalid_json/invalid_classification_json/IMPORT01.1.json
  • Delete test_data/invalid_json/invalid_classification_json/IMPORT01-2.json
  • Upload invalid JSON of classification
  • Update style.qss
  • Update dynamic_widgets.py
  • Update gui_overview.md
  • Upload screenshots of main UI pages
  • Create README.md
  • Delete docs/assets/localization-UI.png
  • Delete docs/assets/classification-UI.png
  • Update loc_file_manager.py
  • Update dense_file_manager.py
  • Update ci.yml
  • Update release.yml
  • Update ci.yml