Eugeny / tabby

A terminal for a more modern age
https://tabby.sh
MIT License
59.76k stars 3.4k forks source link

Feature Request: Git-Based Settings Sync #10037

Open znowfox opened 4 weeks ago

znowfox commented 4 weeks ago

Feature Request: Git-Based Settings Sync

Description

A feature to enable seamless synchronization of settings and configurations across multiple devices via Git, similar to Electerm's settings sync functionality. This will allow users to automatically sync their settings with a specified Git repository, ensuring consistent configurations on all devices without the need for manual export/import.

Motivation

Tabby users often use the app across multiple devices and environments. Implementing Git-based settings sync will:

  1. Ensure consistent configurations across different devices.
  2. Simplify configuration management for teams and individuals who want to maintain a uniform setup.
  3. Reduce the time spent on manually configuring each instance of Tabby.
  4. Increase productivity by maintaining a seamless environment across development machines.

Proposed Implementation

  1. Add a Git Integration Option in Settings

    • Add an option in the settings menu where users can link a Git repository for syncing.
    • Allow users to specify the repository URL and set up Git credentials or SSH keys for authentication.
  2. Syncing Mechanics

    • Provide options to set sync intervals or sync manually.
    • When syncing, push any local changes in settings to the Git repository, or pull updates from the repository if newer changes are detected.
    • Handle conflicts (e.g., via prompts or a "Last Write Wins" approach).
  3. Settings Backup Structure

    • Use a .tabby-config or similar folder structure in the repository to store settings.
    • Enable the syncing of profiles, themes, plugins, and any other custom configurations.
  4. Encryption and Privacy Options

    • Allow users to encrypt sensitive data like credentials, possibly with a passphrase, before pushing to Git.
    • Add an option to exclude specific settings (e.g., credentials) from sync if users prefer not to store them in Git.
  5. UI/UX Considerations

    • Provide clear indicators of sync status (e.g., last synced timestamp, sync errors).
    • Display a summary of changes before syncing to give users a clear view of what will be pushed/pulled.

Potential Challenges

References

GeekCornerGH commented 4 weeks ago

There's a Git plugin available (plugin section) that allows you to sync through GitHub Gist for example