프로젝트 소개

GridSnap은 Tauri v2, React 18, TypeScript 및 Rust로 구축된 오픈 소스 데스크톱 유틸리티입니다. 이 앱은 SSH 명령, 자격 증명, API 키, 연결 문자열 및 코드 스니펫과 같은 민감한 데이터를, 기본 핫키(Ctrl+Shift+Space)로 소환할 수 있는 가상화된 스프레드시트형 그리드에 표시합니다. 그리드 엔진: 1000×26 가상화 그리드; 키보드 탐색(방향 키, Tab, Enter, Escape); 직접 입력 편집; 클릭-드래그 또는 Shift+Arrow를 통한 다중 셀 선택; 호버 버튼이나 Ctrl+C를 통한 복사(범위에 대해 TSV 형식); Ctrl+V를 통한 TSV 데이터 붙여넣기; 열 및 행 크기 조정; 모든 셀에 대한 즉각적인 강조 표시 검색; Ctrl+S를 통한 수동 저장; 단축키 및 팁이 포함된 내장 도움말 패널. 시트: 색상 탭이 있는 여러 시트; 삭제 확인과 함께 추가, 제거 및 이름 변경; 드래그를 통한 재정렬; Ctrl+Tab 및 Ctrl+Shift+Tab 전환; Ctrl+1-9 직접 점프; Ctrl+K 빠른 전환 팔레트; 오른쪽 클릭 탭 액션. 시트는 마스킹(전체 시트가 ●●●●으로 표시), 셀별 마스킹/언마스킹, 선택적 시트별 비밀번호를 지원합니다. 비밀번호로 보호된 시트는 모든 탭 전환 시 잠기며, 잠긴 시트에서는 검색이 비활성화되고, 보호된 시트를 삭제하려면 비밀번호 확인이 필요합니다. 브루트 포스 보호는 10번의 잘못된 시도 후 2분간의 쿨다운을 부과하며, 이는 재시작 시에도 유지됩니다. 보안: 기본적으로 비밀번호가 없으며, 비밀번호가 설정될 때까지 평문 JSON 볼트를 사용합니다. 선택적 마스터 비밀번호는 볼트를 암호화합니다. 시트별 비밀번호는 AES-256-GCM과 Argon2id 키 유도(64MB 메모리, 3회 반복, 4개 병렬)를 사용하여 평문 해시 대신 검증 토큰을 저장합니다. 저장 형식은 salt(16B) | nonce(12B) | ciphertext | 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 라이선스입니다.