このプロジェクトについて

GridSnapは、Tauri v2、React 18、TypeScript、Rustを使用して構築されたオープンソースのデスクトップユーティリティです。SSHコマンド、認証情報、APIキー、接続文字列、コードスニペットなどの機密データを、グローバルホットキー(デフォルトはCtrl+Shift+Space)で呼び出せる仮想化されたスプレッドシートのようなグリッドで表示します。 グリッドエンジン:1000×26の仮想化グリッド;キーボードナビゲーション(矢印キー、Tab、Enter、Escape);タイプして編集;クリック&ドラッグまたはShift+矢印による複数セル選択;ホバーボタンまたはCtrl+Cによるコピー(範囲はTSV形式);Ctrl+VによるTSVデータのグリッドへの貼り付け;列と行のサイズ変更;すべてのセルを対象とした即時ハイライト付き検索;Ctrl+Sによる手動保存;ショートカットとヒントを含む内蔵ヘルプパネル。 シート:色付きタブ付きの複数シート;追加、削除、名前変更(削除確認付き);ドラッグによる並べ替え;Ctrl+TabとCtrl+Shift+Tabによる切り替え;Ctrl+1-9による直接ジャンプ;Ctrl+Kによるクイックスイッチパレット;右クリックによるタブアクション。シートはマスキング(シート全体が●●●●で表示)、セルごとのマスキング/アンマスキング、オプションのシートごとのパスワードをサポートします。パスワード保護されたシートは、タブを切り替えるたびにロックされ、検索はロックされたシートでは無効になり、保護されたシートの削除にはパスワード確認が必要です。ブルートフォース保護は、10回の誤った試行後に2分間のクールダウンを課し、再起動後も持続します。 セキュリティ:デフォルトではパスワードなしで、パスワードが設定されるまではプレーンテキストのJSONボールトを使用します。オプションのマスターパスワードでボールトを暗号化します。シートごとのパスワードは、Argon2idキー導出(64MBメモリ、3イテレーション、4並列)を使用したAES-256-GCMを使用し、プレーンテキストハッシュではなく検証トークンを保存します。ストレージ形式は、salt(16B)| nonce(12B)| 暗号文 | tag(16B)です。キーは、Rustのzeroizeを使用して使用後にゼロ化されます。アプリは外部ネットワーク接続を行わず、テレメトリやクラウドコンポーネントを含みません。 デスクトップ統合:カスタムタイトルバー付きの常時表示ボーダーレスウィンドウ;表示/非表示用のシステムトレイ;設定可能なグローバルホットキー;閉じるボタンはトレイに最小化;オプションのシステム起動時起動;報告されたバンドルサイズは約8.5MB、RAMは約30MB。 テーマ:設定で選択可能な11種類の組み込みテーマ — Carbon(デフォルト)、Midnight、Ocean、Aurora、Deep Teal、Light、Velvet、Nordic、Rose、Terminal、Slate。テーマはCSSカスタムプロパティを使用し、src/theme/themes.tsにエントリを追加することで拡張できます。 ソースからビルド:前提条件はNode.js 18+とRust 1.70+。リポジトリをクローンし、gridsnapディレクトリでnpm installを実行した後、開発にはnpm run tauri dev、本番用にはnpm run tauri buildを実行します。 使用方法:最初の起動は直接開きます;クリックまたは矢印キーでナビゲート;ダブルクリックまたはEnterで編集;ホバーボタンまたはCtrl+Cでコピー;Ctrl+VでTSVデータを貼り付け;Ctrl+Sで保存;+タブでシートを作成;タブクリック、キーボードショートカット、またはCtrl+K検索でシートを切り替え;タブをドラッグして並べ替え;右クリックでシートまたはセルをマスク;必要に応じてシートまたはマスターパスワードを設定;Ctrl+Shift+Spaceまたは閉じるボタンで非表示;トレイアイコンメニューから終了します。 技術スタック:ネイティブOSウェブビューを使用するTauri v2シェル;React 18 + TypeScriptフロントエンド;カスタムプロパティ付きのCSS Modules;カスタム仮想化グリッドレンダラー(プレフィックスサムと二分探索);Zustand状態;Vite 6ビルド;RustでのAES-256-GCM + Argon2id暗号化;ローカルファイルシステム上の暗号化されたJSONボールト。 プロジェクトはMITライセンスです。