@APPLICATION_ID@ CC0-1.0 GPL-3.0-or-later @PROJECT_NAME@ A modern metronome for musicians

Tempo is a modern, feature-rich metronome application designed for musicians of all levels. Built with GTK4 and Libadwaita using Blueprint UI templates, it provides precise timing, comprehensive keyboard shortcuts, and a beautiful animated beat indicator.

Key features include GStreamer audio integration with distinct beat/downbeat sounds, customizable tempo (40-240 BPM), multiple time signatures, animated Cairo-based visual indicators with pulse effects, comprehensive preferences dialog, tap tempo functionality, and full keyboard control. The high-precision timing engine ensures professional accuracy.

@APPLICATION_ID@.desktop https://raw.githubusercontent.com/tobagin/tempo/main/screenshots/main-window.png Main window showing tempo controls and beat indicator https://raw.githubusercontent.com/tobagin/tempo/main/screenshots/preference-general.png General preferences with audio and behavior settings https://raw.githubusercontent.com/tobagin/tempo/main/screenshots/preferences-visual.png Visual preferences with theme selection and beat indicator options https://raw.githubusercontent.com/tobagin/tempo/main/screenshots/about-dialog.png About dialog showing application information https://github.com/tobagin/tempo https://github.com/tobagin/tempo/issues https://github.com/tobagin/tempo/discussions https://github.com/sponsors/tobagin https://github.com/tobagin https://github.com/tobagin/tempo Audio Music AudioVideo Utility metronome music tempo timing practice rhythm beat BPM pointing keyboard touch 360 400 Thiago Fernandes noreply@github.com

Major security update with comprehensive input validation and audio system improvements

  • Comprehensive file validation: 10MB size limit, MIME type checking, symlink resolution
  • GStreamer pre-validation: Files tested before saving to prevent invalid audio playback
  • Audio system error handling with visual-only mode for graceful degradation
  • User-friendly alert dialogs with detailed error messages for file rejections
  • Safe URI construction preventing path injection vulnerabilities
  • Resource limiting: Tap history capped at 100 entries, 60 FPS beat indicator
  • Settings debouncing (100ms) to prevent rapid update storms
  • Version string sanitization for security
  • Runtime path validation with automatic fallback to default sounds
  • 5-second timeout for audio file loading with proper error feedback
  • Custom sounds properly reset to defaults when toggle disabled
  • Enhanced MIME type support (audio/vnd.wave, audio/x-vorbis+ogg, etc.)
  • Thread-safe dialog presentation from GStreamer callbacks
  • Audio controls auto-disabled in visual-only mode

Manifest repository corrections

  • Updated blueprint-compiler source to official GNOME repository
  • Fixed dependency URLs for better long-term reliability
  • Ensures compatibility with official upstream sources

Runtime and metadata improvements

  • Updated runtime version to GNOME 49 for latest platform features
  • Enhanced metainfo with additional application metadata items
  • Improved compatibility with latest GNOME runtime environment

Build system fixes and AppStream modernization

  • Fixed manifest update to only target tempo module, preventing blueprint compiler issues
  • Migrated from appdata.xml to metainfo.xml following modern AppStream standards
  • Updated build system references to use metainfo naming convention
  • Corrected translation file references for new metainfo filename

Major automation overhaul and streamlined release process

  • Implemented fully automated Flatpak releases with zero manual intervention
  • GitHub Actions now push directly to Flathub main branch (no PR approval needed)
  • Replaced alert dialog with integrated about dialog for "What's New" feature
  • Added automatic about dialog navigation with tab+enter simulation
  • Simplified keyboard shortcuts dialog by removing blue card styling
  • Enhanced release workflow with comprehensive error handling
  • Removed unnecessary x-checker-data configuration for cleaner manifests
  • Added GSettings-based version tracking to prevent repeated notifications
  • Streamlined development workflow with automated tag-based deployments
  • Improved user experience with seamless release note integration

Major update with keyboard shortcuts dialog and improved development workflow

  • Added comprehensive keyboard shortcuts dialog with all available shortcuts
  • Updated menu structure with proper keyboard accelerators
  • Implemented configuration system with development mode support
  • Enhanced about dialog with release notes, acknowledgments, and comprehensive credits
  • Added dynamic resource naming for development builds
  • Improved build system with proper app ID handling
  • Updated version management system as single source of truth
  • Added development flag consistency across all build tools

Fixed time signature denominator functionality

  • Time signature denominators now properly affect beat timing
  • 4/4, 4/8, 4/2, and 4/16 now have different beat speeds as expected
  • Improved beat duration calculation using both numerator and denominator
  • Enhanced musical accuracy for practice sessions

Final desktop file validation fixes

  • Removed problematic translation keys from desktop file
  • Ensured clean desktop file validation for Flathub submission
  • Maintained all functionality while fixing translation issues
  • Ready for production Flatpak distribution

Validation fixes for Flathub submission

  • Fixed AppStream metadata validation errors in release descriptions
  • Fixed desktop file validation by adding required non-translated keys
  • Corrected release description format to use proper p and ul tags
  • Enhanced desktop actions with proper Name entries
  • Ensured compliance with desktop file specification

GTK4 API compatibility fixes and portal integration

  • Fixed GTK4 API compatibility issues for proper Flatpak building
  • Replaced deprecated FileFilter.set_name() with .name property
  • Fixed FileDialog parent window reference for proper portal integration
  • Implemented secure file picking using desktop portals (no broad filesystem access)
  • Replaced non-working surface.set_keep_above() with proper warning
  • Fixed window signal connections (realize → map signal)
  • Corrected metronome engine property references (is_playing → is_running)
  • Enhanced build system compatibility with GNOME runtime 48
  • Improved sandbox security with portal-based file access

Complete preferences implementation and enhanced functionality

  • Implemented full custom sounds functionality with file chooser
  • Added GTK4 FileDialog with support for multiple audio formats (WAV, OGG, MP3, FLAC, AAC)
  • Custom sounds toggle now properly shows/hides file picker rows
  • Added test playback of selected custom sounds
  • Implemented right-click context menu to clear custom sounds
  • Fixed tap sensitivity range mismatch between UI and settings schema
  • Implemented keep-on-top window functionality using GTK4 surface API
  • Added start-on-launch functionality
  • Enhanced file validation and error handling for audio files
  • All preferences now properly connected to real-time UI updates
  • External settings changes are synchronized across application instances

Complete translation support with 7 new languages

  • Added comprehensive translations for Portuguese (Brazil and Portugal)
  • Added Spanish translation with proper musical terminology
  • Added Irish (Gaelic) translation
  • Added Māori translation
  • Completed Italian translation coverage
  • Enhanced Turkish translation completeness
  • Updated translation infrastructure and build system
  • All UI elements, preferences, and help text now fully translatable

Feature consolidation and stability improvements

  • Merged comprehensive improvements from feature branches
  • Consolidated Blueprint UI template enhancements
  • Integrated custom sound support capabilities
  • Improved code organization and maintainability
  • Enhanced build system stability

Major update: Complete Vala metronome with comprehensive improvements

  • Complete Python to Vala conversion for better performance and integration
  • GStreamer audio integration with distinct beat and downbeat sounds
  • Blueprint UI templates with modern GTK4/Libadwaita design
  • Animated beat indicator with Cairo-based pulse effects and perfect sync
  • Comprehensive keyboard shortcuts for full application control
  • Enhanced preferences dialog with Audio, Behavior, and Visual settings
  • Multi-language support with Italian and Turkish translations
  • Improved timing engine with microsecond precision
  • Larger beat indicator with dramatic glow effects
  • Fixed beat sequence to proper 1-2-3-4 display
  • Proper translator credits in about dialog

Enable proper file picker portal integration

  • Updated file chooser to use modern Gtk.FileDialog API
  • File picker now properly uses desktop environment portals
  • Improved security through sandboxed file access
  • Removed redundant portal permissions from Flatpak manifest

Clean up version references and fix author information

  • Updated all version references to use current version consistently
  • Fixed author information to use correct name throughout codebase
  • Ensured only metainfo retains version history as intended

Add file picker portal support

  • Added proper file picker portal permissions to Flatpak manifest
  • Improved security by using sandboxed file access
  • Enhanced compatibility with desktop file managers

Fix desktop file executable reference

  • Fixed desktop file to use correct executable name 'tempo' instead of application ID
  • Resolved application launch issues from desktop environment
  • Improved desktop integration and launcher compatibility

Improved metadata quality for better Flathub presentation

  • Streamlined description to be more concise and user-focused
  • Enhanced readability following Flathub quality guidelines
  • Removed redundant technical details for better clarity

Fix AppStream control redefinition warning

  • Removed duplicate keyboard control from recommends section
  • Fixed AppStream validation warning about redefined relation items

AppStream metadata validation fixes

  • Fixed AppStream validation errors for Flathub submission
  • Updated developer information and contact details
  • Removed inapplicable metadata fields
  • Added proper branding colors

Screenshots and metadata update

  • Added application screenshots for better visibility
  • Updated metadata with comprehensive visual previews
  • Enhanced AppStream information for software centers

Initial release of Tempo metronome

  • Precise timing engine with drift compensation
  • GTK4 and Libadwaita modern UI
  • Customizable tempo and time signatures
  • Visual beat indicator with downbeat accents
  • Low-latency GStreamer audio
  • Tap tempo functionality
  • Keyboard shortcuts
  • Settings persistence
ModernToolkit HiDpiIcon tempo #3584e4 #1c71d8