Skip to content

Self-updater for Quaver #1599

Description

@zapteryx

Describe the feature

A self-updater would leverage jobs (#1530) to run an updater task in the background, allowing Quaver to fetch the latest release from this repository based on your update channel (next, staging, stable).
The updater should be configurable:

  • enabled: Whether the update checker is enabled.
  • channel: What channel to check for updates in. Only applicable when enabled is true.
  • install: Whether to download (and install) the update when found. Only applicable when enabled is true.
  • restart: Whether to trigger a restart (not handled by Quaver) when an update is found and installed. Only applicable when install is enabled.

Users are expected to manage the process by themselves through pm2 or other means (script?). Quaver will simply exit the process to allow any external script to restart Quaver. If the user doesn't have a way to automatically restart Quaver, they shouldn't be enabling this. Also, on restart, the user is responsible for running the slash:global:register script before starting Quaver.

  • restartStrategy: What strategy to use for restarting.
    • immediate - kill the process immediately
    • track - wait for the current track to end, or up to 10 minutes, before killing the process. A message is sent in all active session channels to inform the user (Pardon the interruption - Quaver is restarting shortly for an update. Your session will automatically resume after the update. Sorry for the inconvenience!), and the same message is displayed when trying to add any track, change loop mode, etc. Session states are saved to a file and will be restored when Quaver is back up. (Restore queues and currently playing track if Quaver restarts #95)
    • queue - wait for the current queue to end, or up to 30 minutes, before killing the process. Everything else from the track strategy applies.

Priority

Medium

List the benefits of adding such a feature

  • Almost seamless updates
  • Self-deployment of Quaver updates
  • Finally, graceful restarts (we can also implement this new restart strategy tech in the "exit" terminal command, like "exit ")

Is this feature request related to a problem?

No response

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions