Skip to content

fix: env fallback, py version bump#117

Merged
itskavin merged 17 commits into
mainfrom
newfixes
Feb 13, 2026
Merged

fix: env fallback, py version bump#117
itskavin merged 17 commits into
mainfrom
newfixes

Conversation

@itskavin

@itskavin itskavin commented Feb 13, 2026

Copy link
Copy Markdown
Member

Type of Change

  • Bug
  • Refactoring

This pull request introduces version 2.2.1 of the Media Player Scrobbler for SIMKL, focusing on improved silent installation support for Windows, enhanced tray menu documentation, updated dependencies, and more robust credential and logging management. It also refines the internal structure for media info handling and developer controls. Below are the most significant changes:


Windows Installer Improvements:

  • Added comprehensive support for silent and automated deployments in the Windows installer (setup.iss). The installer now recognizes common silent install switches (e.g., /quiet, /silent, /s, /qn, /passive) and internally maps them to Inno Setup's silent flags, ensuring compatibility with enterprise deployment tools and Microsoft Store requirements. The installer relaunches itself with the correct flags when a silent alias is detected. [1] [2] [3]
  • Updated publisher name to "ByteTrix" and version to 2.2.1 in installer metadata.

Tray Menu and Documentation Enhancements:

  • Overhauled the Linux and Windows guide documentation to reflect the expanded tray context menu. New sections and diagrams illustrate the separation of "Tools," "Developer Controls," "Support," and "SIMKL" submenus, clarifying the purpose and actions of each. [1] [2] [3]
  • Updated the main usage guide to detail the new tray menu options, especially distinguishing "Tools" from "Developer Controls" and clarifying the effects of each action (e.g., "Try Scrobble Again," "Clear Cache," "Clear All Data and Logs").

Dependency and Compatibility Updates:

  • Bumped minimum Python version to 3.10 and updated several dependencies to ensure compatibility and security (pyproject.toml).
  • Updated the version to 2.2.1 across codebase and packaging files. [1] [2] [3]
  • Restricted pyinstaller to Python 3.9–3.14 for build consistency.

Credential and Logging Improvements:

  • Improved credential loading logic in simkl_mps/credentials.py to reliably distinguish between placeholder and real credentials, with clearer fallbacks to environment variables, user .env files, and development credentials. [1] [2]
  • Switched to a TimedRotatingFileHandler for application logs, rotating weekly and keeping up to six backups for better log management. [1] [2]

Media Info and Internal Refactoring:

  • Added season_display and episode_display fields to the filtered media info structure for clearer presentation and tracking. [1] [2]
  • Minor code cleanups and type hint improvements for maintainability.

Copilot AI review requested due to automatic review settings February 13, 2026 10:18
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @itskavin, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request delivers a significant update to the Media Player Scrobbler for SIMKL, focusing on robustness, user experience, and maintainability. It streamlines silent installations for Windows, making deployments easier for administrators. Users will benefit from a more intuitive and organized tray menu, providing clearer access to monitoring controls, diagnostic tools, and data management options. Under the hood, the application now handles credentials and logging more intelligently, and its core media detection logic is more accurate, especially for episodes and file path changes. These changes collectively enhance the application's stability, ease of use, and overall reliability.

Highlights

  • Windows Installer Enhancements: Introduced comprehensive support for silent and automated deployments in the Windows installer (setup.iss), recognizing common silent install switches and relaunching with correct flags for enterprise compatibility. The publisher name was updated to 'ByteTrix' and the version to 2.2.1.
  • Tray Menu and Documentation Overhaul: The system tray context menu has been reorganized with new 'Tools' and 'Developer Controls' submenus, and corresponding updates to the Linux and Windows guide documentation to clarify options like 'Try Scrobble Again', 'Clear Cache', and 'Clear All Data and Logs'.
  • Dependency and Compatibility Updates: The minimum Python version was bumped to 3.10, and several key dependencies including guessit and pillow were updated. pyinstaller now has a restricted Python version range for build consistency.
  • Improved Credential and Logging Management: Credential loading logic was refined to better distinguish between placeholder and real credentials, with clearer fallbacks to environment variables and user .env files. Application logs now use a TimedRotatingFileHandler for weekly rotation and backup management.
  • Enhanced Media Information Handling: Added season_display and episode_display fields to the filtered media info structure for clearer presentation. The media scrobbler now includes logic to detect media switches via filepath changes and derive display season/episode values from filename guesses when API data is generic.
  • PotPlayer Integration Improvements: PotPlayer integration was enhanced to more reliably resolve full media file paths using process handles and command-line arguments, improving accuracy in media detection.
  • Authentication Flow from Tray: Implemented a new authentication flow directly accessible from the tray menu, allowing users to authenticate or re-authenticate with SIMKL, with appropriate state management and notifications.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • docs/linux-guide.md
    • Updated the Mermaid flowchart to reflect the new tray menu structure, including 'Tools', 'Developer Controls', 'Support', and 'SIMKL' submenus.
    • Revised the descriptive text for tray menu options to align with the new structure and functionality.
  • docs/usage.md
    • Updated the detailed descriptions of tray menu options, separating 'Tools' and 'Developer Controls' and explaining their respective actions like 'Try Scrobble Again', 'Clear Logs', 'Clear Watch History', and 'Clear All Data and Logs'.
  • docs/windows-guide.md
    • Added a new section 'Silent & Automated Deployment' detailing support for /quiet, /silent, /s, /qn, /passive installer parameters.
    • Updated the Mermaid flowchart to reflect the new tray menu structure, including 'Tools', 'Developer Controls', and 'Support' submenus.
    • Revised the descriptive text for tray menu options to align with the new structure and functionality.
  • pyproject.toml
    • Updated the project version from 2.2.0 to 2.2.1.
    • Increased the minimum Python version requirement from 3.9 to 3.10.
    • Updated the guessit dependency to version 3.8.0.
    • Updated the pillow dependency to version 12.1.1.
    • Added a Python version constraint for pyinstaller (>=3.9,<3.15) for build consistency.
  • setup.iss
    • Updated the MyAppPublisher from 'kavin' to 'ByteTrix'.
    • Updated the MyAppVersion from '2.2.0' to '2.2.1'.
    • Added new constants SILENT_ALIAS_MARKER.
    • Implemented functions NormalizeSwitchToken, IsSilentAliasToken, SplitCmdLineTokens, and JoinTokens to parse command-line arguments.
    • Added HandleSilentAliasLaunch function to detect silent installation aliases and relaunch the installer with Inno Setup's /VERYSILENT /SUPPRESSMSGBOXES /NORESTART flags.
    • Integrated HandleSilentAliasLaunch into InitializeSetup to ensure silent aliases are processed at startup.
  • simkl_mps/init.py
    • Updated the __version__ string from '2.2.0' to '2.2.1'.
  • simkl_mps/credentials.py
    • Added _is_placeholder_credential helper function to check if a credential value is a placeholder or empty.
    • Refactored get_credentials to first check for non-placeholder build-injected credentials, then environment variables, then a user-specific .env file, and finally development credentials, ensuring a robust loading order.
  • simkl_mps/main.py
    • Imported TimedRotatingFileHandler from logging.handlers.
    • Replaced logging.FileHandler with TimedRotatingFileHandler for application logs, configured to rotate weekly and keep up to six backups.
  • simkl_mps/media_cache.py
    • Added season_display and episode_display to the list of allowed fields in _filter_media_info for clearer presentation of episode information.
  • simkl_mps/media_scrobbler.py
    • Removed difflib.SequenceMatcher import as it is no longer used.
    • Added Any and Dict to typing imports.
    • Added new instance attributes _season_guess_from_filename, _episode_guess_from_filename, display_season, and display_episode to MediaScrobbler for enhanced episode display logic.
    • Implemented _has_media_file_changed static method for case-insensitive comparison of media filenames to detect switches.
    • Integrated _has_media_file_changed into process_window to trigger stop_tracking when a media file changes, even if the title remains the same.
    • Updated _start_new_media_item to initialize _season_guess_from_filename, _episode_guess_from_filename, display_season, and display_episode from guessit_info.
    • Added _derive_display_season_episode method to determine the best season/episode values for display, prioritizing filename guesses over generic API numbers.
    • Added _build_episode_display_suffix method to format season and episode numbers for display (e.g., ' S01E01').
    • Modified _apply_cached_info_to_state to load season_display and episode_display from cache and call _derive_display_season_episode.
    • Updated notification messages in _apply_cached_info_to_state and _process_simkl_search_result to use the new display suffix for episodes and a more generic 'media' label if type is unknown.
    • Corrected a boolean assignment in _update_tracking related to position_updated_from_player.
    • Made completion threshold checks in _update_tracking and stop_tracking more robust by explicitly casting completion_pct and threshold to float and handling None values.
    • Updated _process_simkl_search_result to call _derive_display_season_episode after processing API results and to include season_display and episode_display when caching media info.
    • Refined cache_key_for_cooldown logic in _attempt_add_to_history and _add_to_backlog_due_to_issue to handle cases where currently_tracking might be empty.
    • Added type hint Dict[str, Any] to show_item in _build_add_to_history_payload for clarity.
    • Updated cache_media_info method signature to accept season_display and episode_display parameters and store them in new_data_to_cache.
    • Modified cache_media_info to call _derive_display_season_episode after updating instance variables and to use _build_episode_display_suffix for notification messages.
  • simkl_mps/monitor.py
    • Updated the cache_media_info method signature to accept season_display and episode_display parameters and pass them to the scrobbler's cache_media_info method.
  • simkl_mps/players/potplayer.py
    • Imported os module.
    • Defined VIDEO_EXTENSIONS set for identifying video files.
    • Added win32process to Windows-specific imports and checks.
    • Added checks for win32gui and win32con availability in find_potplayer_hwnd, get_playback_ms, and get_total_ms.
    • Added cached_filepath attribute to PotPlayer class.
    • Modified get_current_filepath to prioritize cached_filepath and implement robust full path resolution.
    • Implemented _get_process_from_hwnd to retrieve the psutil.Process object associated with a window handle.
    • Implemented _resolve_full_path to attempt resolving the full media file path using process open files and command-line arguments, falling back to filename if necessary.
    • Enhanced _clean_filename to remove leading release-group style tags (e.g., [SubsPlease]).
  • simkl_mps/tray_base.py
    • Added typing imports for Any, Optional, TYPE_CHECKING, cast.
    • Imported pin_auth_flow from simkl_api.
    • Added _show_info_dialog for displaying informational pop-ups.
    • Added authentication state management (_auth_in_progress, is_authenticated, _last_known_access_token, _last_known_client_id) and _refresh_auth_state method.
    • Refactored asset path resolution for frozen applications to use sys._MEIPASS more robustly.
    • Added helper methods _get_media_scrobbler and _get_watch_history_manager to safely access scrobbler and watch history instances.
    • Implemented _ensure_threshold_value for safe integer conversion of watch thresholds.
    • Added _get_auth_menu_label and trigger_auth_flow methods to handle SIMKL authentication from the tray menu, including background thread execution (_run_auth_flow) and notifications.
    • Implemented clear_logs to truncate application and playback logs, and clear_watch_history to remove local watch history files.
    • Updated _apply_threshold_change to use _ensure_threshold_value and safely update the running scrobbler instance.
    • Modified set_custom_watch_threshold to use _ensure_threshold_value and type-hint result_queue.
    • Updated _build_pystray_menu_items to include the new authentication menu item and new 'Developer Controls' submenu with 'Clear Logs' and 'Clear Watch History' options.
    • Refactored clear_all_data to use _get_watch_history_manager and reset authentication state after clearing credentials.
    • Updated try_scrobble_again to use _get_media_scrobbler and safely access scrobbler attributes.
  • simkl_mps/tray_linux.py
    • Imported re module.
    • Added type hints for Gtk, AppIndicator3, GLib, and pystray.
    • Updated gi import to include type: ignore[import] for better type checking compatibility.
    • Modified AppIndicatorTray to use cast(Any, ...) for Gtk, AppIndicator3, and GLib modules and objects.
    • Updated AppIndicatorTray.update_menu to include the new authentication menu item and reflect the expanded 'Tools' and 'Developer Controls' submenus, including 'Clear Logs' and 'Clear Watch History'.
    • Added self.app._refresh_auth_state() call in update_menu to ensure menu reflects current auth status.
    • Updated setup_icon to explicitly check for pystray availability and use cast(Any, pystray_module).
    • Modified show_notification to use cast(Any, Notify) and cast(Any, plyer_notification_module) for type safety.
    • Updated show_about, show_help, and exit_app return types from 0 to None for consistency with pystray callbacks.
    • Added explicit cast(Any, self.tray_icon) and null checks in exit_app and run for safer pystray interaction.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces version 2.2.1 of the Media Player Scrobbler for SIMKL, featuring significant improvements to the Windows installer (silent deployment support), enhanced tray menu functionality, and more robust logging with rotation. The internal refactoring for media identification and the addition of developer controls are valuable additions. However, there is a markdown syntax error in the Linux guide that will break rendering, a potential performance bottleneck in the PotPlayer integration due to frequent expensive process handle lookups, and the use of an unreliable relative path when clearing logs that should be addressed.

Comment thread docs/linux-guide.md

# Try open file handles first
try:
for open_file in process.open_files():

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Calling process.open_files() is an expensive operation as it requires iterating through all system handles for the process. Since get_current_filepath is called every poll interval (default 10 seconds) by the monitor loop, this could lead to noticeable CPU spikes or UI lag, especially if the player has many files open or if the system is under load. Consider caching the resolved path and only re-running this check if the window title changes.

Comment thread simkl_mps/tray_base.py
log_targets: list[tuple[str, Path, str]] = [
("application log", self.log_path, "truncate"),
("app data playback log", APP_DATA_DIR / "playback_log.jsonl", "truncate"),
("workspace playback log", Path("playback_log.jsonl"), "delete"),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Using a relative path like Path("playback_log.jsonl") is unreliable for a tray application, as the current working directory depends on how the application was launched (e.g., autostart, terminal, or shortcut). This might fail to find the file or attempt to delete a file in an unintended directory. Since the scrobbler uses APP_DATA_DIR for this log, this entry should likely be removed or updated to use an absolute path.

Suggested change
("workspace playback log", Path("playback_log.jsonl"), "delete"),
("workspace playback log", APP_DATA_DIR / "playback_log.jsonl", "delete"),

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request introduces version 2.2.1 of Media Player Scrobbler for SIMKL, focusing on silent Windows installation support, enhanced authentication flow from the tray menu, improved episode display tracking, better credential management, and comprehensive tray menu documentation updates. The changes improve deployment automation, user experience, and media identification accuracy.

Changes:

  • Silent installation support for Windows with common enterprise deployment switches (/quiet, /silent, /s, /qn, /passive)
  • Authentication flow directly accessible from tray menus on all platforms with dynamic menu labels
  • Enhanced episode tracking with separate display fields for better filename-based season/episode identification
  • Improved credential loading with explicit placeholder detection and fallback hierarchy
  • Updated dependencies (Python 3.10+, guessit 3.8.0+, pillow 12.1.1+) and weekly rotating log files

Reviewed changes

Copilot reviewed 14 out of 16 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
setup.iss Added silent installation alias detection/mapping and updated publisher/version metadata
simkl_mps/init.py Version bump to 2.2.1
pyproject.toml Minimum Python version 3.10, updated dependencies, pyinstaller constraint
simkl_mps/main.py Switched to TimedRotatingFileHandler for log management
simkl_mps/credentials.py Enhanced credential loading with placeholder detection and fallback logic
simkl_mps/tray_base.py Added authentication flow, display/info dialogs, clear logs/watch history methods
simkl_mps/tray_linux.py Updated type hints and Linux-specific menu with authentication support
simkl_mps/media_scrobbler.py Added display_season/display_episode fields and media file change detection
simkl_mps/monitor.py Updated cache_media_info signature to include season/episode display fields
simkl_mps/media_cache.py Added season_display/episode_display to filtered fields
simkl_mps/players/potplayer.py Enhanced file path resolution using process handles and open files
docs/windows-guide.md Documented silent installation and updated tray menu structure
docs/linux-guide.md Updated tray menu documentation with new Tools/Developer Controls separation
docs/usage.md Clarified tray menu options with detailed descriptions

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread pyproject.toml
requests = ">=2.25.0"
types-requests = ">=2.25.0"
pyinstaller = "^6.13.0"
pyinstaller = {version = "^6.13.0", python = ">=3.9,<3.15"}

Copilot AI Feb 13, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The pyinstaller dependency constraint allows Python 3.15, but pyinstaller version 6.13.0 may not support Python 3.15 since Python 3.14 is the latest stable version as of January 2025. The upper bound should be verified against pyinstaller's actual compatibility or use a more conservative constraint like ">=3.9,<3.14" to avoid potential installation failures when Python 3.15 is released.

Suggested change
pyinstaller = {version = "^6.13.0", python = ">=3.9,<3.15"}
pyinstaller = {version = "^6.13.0", python = ">=3.9,<3.14"}

Copilot uses AI. Check for mistakes.
Comment thread simkl_mps/tray_base.py
Comment on lines 1073 to 1080
pystray.Menu.SEPARATOR,
pystray.MenuItem("Try Scrobble Again", self.try_scrobble_again),
pystray.MenuItem("Process Backlog Now", self.process_backlog),
pystray.MenuItem("Watch Threshold (%)", threshold_submenu),
)))

menu_items.append(pystray.MenuItem("Developer Controls", pystray.Menu(
pystray.Menu.SEPARATOR,

Copilot AI Feb 13, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The "Tools" submenu in the pystray menu starts with a separator (line 1073), which creates an unnecessary separator at the top of the submenu. This is inconsistent with typical menu design and should be removed. The same issue exists in the "Developer Controls" submenu at line 1080.

Copilot uses AI. Check for mistakes.
Comment thread simkl_mps/tray_base.py Outdated
Comment thread simkl_mps/tray_base.py Outdated
Comment thread simkl_mps/tray_linux.py Outdated
Comment thread simkl_mps/tray_linux.py Outdated
@itskavin itskavin changed the title Newfixes fix: env fallback, py version bump Feb 13, 2026
itskavin and others added 8 commits February 13, 2026 15:58
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@github-actions github-actions Bot added size/xl documentation Improvements or additions to documentation feature dependencies labels Feb 13, 2026
This was linked to issues Feb 13, 2026
@itskavin

Copy link
Copy Markdown
Member Author

/gemini review

@itskavin

Copy link
Copy Markdown
Member Author

@gemini-code-assist review

@itskavin

Copy link
Copy Markdown
Member Author

@copilot review

Copilot AI commented Feb 13, 2026

Copy link
Copy Markdown
Contributor

@itskavin I've opened a new pull request, #119, to work on those changes. Once the pull request is ready, I'll request review from you.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This is a substantial and well-executed pull request that brings a host of improvements across the application. The enhancements to the Windows silent installer are excellent for automated deployments. The refactoring of credential loading logic provides a much clearer and more robust fallback mechanism. I particularly appreciate the move to a TimedRotatingFileHandler for better log management.

The improvements to media detection are also significant, especially the new logic in the PotPlayer integration to resolve full file paths and the more reliable episode change detection in the main scrobbler. The refactoring of the tray menu into logical sub-menus and the addition of a direct authentication flow from the tray are great user experience enhancements.

I've left one high-priority comment regarding an inconsistency in the Linux tray menu implementation and a minor one for the documentation. Overall, this is a very strong update that significantly improves the application's robustness, maintainability, and user experience.

Comment thread docs/linux-guide.md Outdated

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a version bump to 2.2.1, updates the Python requirement to 3.10+, and delivers a range of valuable enhancements. Key improvements include more robust silent installation support for Windows, a refactored and more feature-rich tray menu with a direct authentication flow, improved credential handling logic, and more reliable media detection, particularly for PotPlayer and sequential episodes. The documentation has also been updated to reflect these changes. My review identifies a critical syntax error in simkl_mps/media_scrobbler.py and a documentation issue in docs/linux-guide.md where important content appears to have been accidentally removed. Overall, this is a substantial and high-quality update.

Comment thread docs/linux-guide.md
Comment on lines 17 to 40
```mermaid
flowchart TD
A[Install Dependencies] --> B[Install via pipx]
B --> C[Initialize Application]
C --> D[Authenticate with Simkl]
D --> E[Configure Media Players]
E --> F[Setup Autostart]
style A fill:#4285f4,stroke:#333,stroke-width:2px,color:#fff
A[System Tray Icon] -->|Right-click| B[Context Menu]
B --> C[Status Information]
B --> D[Start/Pause Monitoring]
B --> E[Tools]
E --> E1[Try Scrobble Again]
E --> E2[Process Backlog]
E --> E3[Watch Threshold]
B --> F[Developer Controls]
F --> F1[Open Logs]
F --> F2[Open Config Directory]
F --> F3[Clear Logs]
F --> F4[Clear Watch History]
F --> F5[Clear Backlog]
F --> F6[Clear Cache]
F --> F7[Clear All Data]
B --> G[Support]
G --> G1[Check for Updates]
G --> G2[Help/About]
B --> H[Exit]
style A fill:#4285f4,stroke:#333,stroke-width:2px,color:#fff
```

- **Status information**: Current monitoring state and connection status
- **Start/Pause Monitoring**: Toggle tracking or pause when needed
- **Tools**: Quick recovery actions (retry scrobble, process backlog, adjust watch threshold)
- **Developer Controls**: Advanced maintenance (open logs/config, clear logs/history/backlog/cache, perform full reset)
- **Support**: Check for updates or open help/about dialogs
- **Exit**: Close the application
style D fill:#34a853,stroke:#333,stroke-width:2px,color:#fff
style F fill:#fbbc05,stroke:#333,stroke-width:2px,color:#fff
```

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The installation instructions for Fedora/RHEL/CentOS and Arch Linux, along with the "Installation Process" diagram, have been removed. This appears to be unintentional, as it removes valuable information for users on those distributions. Please consider restoring the removed content. The new context menu diagram is a great addition and could be placed in a more relevant section, such as under "System Tray Integration".

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 15 out of 17 changed files in this pull request and generated 4 comments.

Comments suppressed due to low confidence (1)

simkl_mps/tray_base.py:1113

  • Minor formatting: the “Exit (always last…)” comment is appended to the end of the menu_items.append(...) line, which hurts readability and makes future diffs noisier. Put that comment on its own line above the Exit section.
            pystray.MenuItem("Help", self.show_help),
            pystray.MenuItem("About", self.show_about),
        )))        # --- Exit (always last, separated) ---
        menu_items.append(pystray.Menu.SEPARATOR)

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread simkl_mps/credentials.py Outdated
Comment thread simkl_mps/tray_base.py
Comment thread simkl_mps/tray_linux.py Outdated
Comment thread setup.iss
@itskavin
itskavin merged commit 46590f3 into main Feb 13, 2026
6 checks passed
@itskavin
itskavin deleted the newfixes branch February 13, 2026 12:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies documentation Improvements or additions to documentation feature size/xl

Projects

None yet

Development

Successfully merging this pull request may close these issues.

simkl tray --debug does not work. simkl-mps auth fails

3 participants