Skip to content

Releases: OpenSportsLab/VideoAnnotationTool

V1.2.4

05 May 08:37
84e9cfb

Choose a tag to compare

  • Merge pull request #21 from OpenSportsLab/dev-silvio
  • feat: Update application version to v1.2.4
  • feat: Display OpenSportsLib version in info popup, handle missing package gracefully
  • Refactor question-answer tests to improve clarity and functionality
  • feat: Add download script for Hugging Face dataset splits with support for JSON and Parquet formats
  • Refactor Q/A system to support grouped answers and remove legacy structures
  • Refactor HF download/upload dialogs to use repo ID, revision, and split parameters
  • feat: Add confidence sorting feature to Dataset Explorer with UI toggle
  • feat: Enhance Dataset Explorer with confidence score display and natural sorting
  • Refactor media playback architecture with backend support
  • Add support for tracking parquet files in GUI tests and visualization tool
  • feat: Enhance upload_dataset_to_hf tool to create missing repos and branches during upload
  • feat: Add upload_dataset_to_hf tool for uploading OSL datasets to Hugging Face
  • feat: Implement video conversion tool to generate 224p copies from OSL JSON dataset
  • feat: Add script to merge MVFouls classification labels into XFoul VQA annotations
  • feat: Enhance shard handling in upload dialog and CLI; add shard size configuration
  • Refactor media controller integration and enhance frame preview functionality
  • feat: Update inference and training managers to use new model API; enhance prediction handling and add tests
  • refactor: Migrate tools to opensportslib and update documentation
  • feat: Add application metadata and shortcuts help text; enhance main window with help menu

v1.2.3

21 Apr 16:41
9e28f96

Choose a tag to compare

  • Merge pull request #20 from OpenSportsLab/dev-silvio
  • Update documentation and improve user experience
  • feat: Enhance MediaController to improve file type validation and allow unknown video formats
  • Merge pull request #19 from OpenSportsLab/dev-silvio
  • feat: Enhance MediaController to validate video input and prevent playback on non-video files
  • update format metadata parquet to accomodate for other modality input
  • feat: Implement batched upload for parquet datasets in Hugging Face with commit operation
  • Merge pull request #18 from OpenSportsLab/dev-silvio
  • feat: Enhance dataset upload functionality with batched commits and JSON upload option
  • feat: Add Question/Answer mode to OSL Annotation Tool
  • Enhance dataset explorer functionality with improved file handling and grouping logic
  • Merge pull request #17 from OpenSportsLab/dev-silvio
  • Update tools/parquet_webdataset_to_osl_json.py
  • Update tools/README.md
  • Update annotation_tool/tools/osl_json_to_parquet.py
  • Fix branch creation to use the initial commit as base in Hugging Face dataset
  • Add conversion utilities for OSL annotation datasets
  • Add scripts for converting OSL JSON to Parquet/WebDataset and vice versa
  • Implement inference cancellation feature and related UI updates
  • Add Hugging Face dataset upload functionality and related tests

v1.2.2

19 Apr 15:36
d4f07ae

Choose a tag to compare

Added Question/Answer data format

What's Changed

Full Changelog: v.1.2.1...v1.2.2

v.1.2.1

19 Apr 07:32
af52bbf

Choose a tag to compare

  • Merge pull request #17 from OpenSportsLab/dev-silvio
  • Update tools/parquet_webdataset_to_osl_json.py
  • Update tools/README.md
  • Update annotation_tool/tools/osl_json_to_parquet.py
  • Fix branch creation to use the initial commit as base in Hugging Face dataset
  • Add conversion utilities for OSL annotation datasets
  • Add scripts for converting OSL JSON to Parquet/WebDataset and vice versa
  • Implement inference cancellation feature and related UI updates
  • Add Hugging Face dataset upload functionality and related tests
  • Merge pull request #16 from OpenSportsLab/dev-silvio
  • yet anotehr tiny bug
  • Merge pull request #15 from OpenSportsLab/dev-silvio
  • minor fix for windows
  • Merge pull request #14 from OpenSportsLab/dev-silvio
  • fixed dependencies for CI/Release workflow
  • Merge pull request #13 from OpenSportsLab/dev-silvio
  • Remove conditional checks for manual runs in artifact zipping and uploading steps in CI workflow
  • Add loc_config.yaml to data collection in CI and release workflows
  • Merge pull request #12 from OpenSportsLab/dev-silvio
  • Merge branch 'dev-silvio' of https://github.com/OpenSportsLab/VideoAnnotationTool into dev-silvio

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.