From 847989df75700bbb80cf14f0aac34d0e0ac106ae Mon Sep 17 00:00:00 2001 From: swanadiva Date: Tue, 7 Jul 2026 11:56:27 +0700 Subject: [PATCH] refactor: move V1 code into v1/ subdirectory - git mv cmd/ internal/ pkg/ test/ go.mod go.sum Makefile build.sh docs/ v1/ - Create v1/README.md with V1 documentation - Update root README for V1 + V2 structure - V1 still builds (cd v1 && go build ./cmd/hostkeeper) and 105 tests pass - Root is now clean for V2 development --- .gitignore | 1 + README.md | 136 +++--------------- Makefile => v1/Makefile | 0 PROJECT_STATE.md => v1/PROJECT_STATE.md | 0 v1/README.md | 37 +++++ .../RELEASE_CHECKLIST.md | 0 build.sh => v1/build.sh | 0 {cmd => v1/cmd}/hostkeeper/add.go | 0 {cmd => v1/cmd}/hostkeeper/add_test.go | 0 {cmd => v1/cmd}/hostkeeper/completion.go | 0 {cmd => v1/cmd}/hostkeeper/connect.go | 0 {cmd => v1/cmd}/hostkeeper/connect_test.go | 0 {cmd => v1/cmd}/hostkeeper/delete.go | 0 {cmd => v1/cmd}/hostkeeper/delete_test.go | 0 {cmd => v1/cmd}/hostkeeper/edit.go | 0 {cmd => v1/cmd}/hostkeeper/edit_test.go | 0 {cmd => v1/cmd}/hostkeeper/export.go | 0 {cmd => v1/cmd}/hostkeeper/import.go | 0 {cmd => v1/cmd}/hostkeeper/list.go | 0 {cmd => v1/cmd}/hostkeeper/list_test.go | 0 {cmd => v1/cmd}/hostkeeper/main.go | 0 {cmd => v1/cmd}/hostkeeper/root.go | 0 {cmd => v1/cmd}/hostkeeper/tui.go | 0 {docs => v1/docs}/ARCHITECTURE.md | 0 {docs => v1/docs}/INSTALLATION.md | 0 {docs => v1/docs}/TEST_PLAN.md | 0 {docs => v1/docs}/USAGE.md | 0 go.mod => v1/go.mod | 0 go.sum => v1/go.sum | 0 .../internal}/errors/connection_errors.go | 0 {internal => v1/internal}/errors/errors.go | 0 {internal => v1/internal}/models/models.go | 0 {pkg => v1/pkg}/config/config.go | 0 {pkg => v1/pkg}/crypto/crypto.go | 0 {pkg => v1/pkg}/knownhosts/knownhosts.go | 0 {pkg => v1/pkg}/ssh/auth.go | 0 {pkg => v1/pkg}/ssh/client.go | 0 {pkg => v1/pkg}/storage/json_storage.go | 0 {pkg => v1/pkg}/storage/storage.go | 0 {pkg => v1/pkg}/tui/error_banner.go | 0 {pkg => v1/pkg}/tui/host_form_tab.go | 0 {pkg => v1/pkg}/tui/host_list_tab.go | 0 {pkg => v1/pkg}/tui/key_form_tab.go | 0 {pkg => v1/pkg}/tui/key_list_tab.go | 0 {pkg => v1/pkg}/tui/messages.go | 0 {pkg => v1/pkg}/tui/password_prompt_tab.go | 0 {pkg => v1/pkg}/tui/responsive.go | 0 {pkg => v1/pkg}/tui/sftp_browser_tab.go | 0 {pkg => v1/pkg}/tui/snippet_form_tab.go | 0 {pkg => v1/pkg}/tui/snippet_list_tab.go | 0 {pkg => v1/pkg}/tui/ssh.go | 0 {pkg => v1/pkg}/tui/styles.go | 0 {pkg => v1/pkg}/tui/tabs.go | 0 {pkg => v1/pkg}/tui/themes.go | 0 {pkg => v1/pkg}/tui/tui.go | 0 {pkg => v1/pkg}/tui/tui_test.go | 0 {test => v1/test}/config/config_test.go | 0 {test => v1/test}/crypto/crypto_test.go | 0 {test => v1/test}/errors_test.go | 0 .../test}/integration/integration_test.go | 0 .../test}/knownhosts/knownhosts_test.go | 0 {test => v1/test}/models_test.go | 0 {test => v1/test}/ssh/ssh_test.go | 0 .../test}/storage/export_import_test.go | 0 .../test}/storage/json_storage_test.go | 0 {test => v1/test}/tui/error_banner_test.go | 0 {test => v1/test}/tui/responsive_test.go | 0 {test => v1/test}/tui/theme_test.go | 0 68 files changed, 58 insertions(+), 116 deletions(-) rename Makefile => v1/Makefile (100%) rename PROJECT_STATE.md => v1/PROJECT_STATE.md (100%) create mode 100644 v1/README.md rename RELEASE_CHECKLIST.md => v1/RELEASE_CHECKLIST.md (100%) rename build.sh => v1/build.sh (100%) rename {cmd => v1/cmd}/hostkeeper/add.go (100%) rename {cmd => v1/cmd}/hostkeeper/add_test.go (100%) rename {cmd => v1/cmd}/hostkeeper/completion.go (100%) rename {cmd => v1/cmd}/hostkeeper/connect.go (100%) rename {cmd => v1/cmd}/hostkeeper/connect_test.go (100%) rename {cmd => v1/cmd}/hostkeeper/delete.go (100%) rename {cmd => v1/cmd}/hostkeeper/delete_test.go (100%) rename {cmd => v1/cmd}/hostkeeper/edit.go (100%) rename {cmd => v1/cmd}/hostkeeper/edit_test.go (100%) rename {cmd => v1/cmd}/hostkeeper/export.go (100%) rename {cmd => v1/cmd}/hostkeeper/import.go (100%) rename {cmd => v1/cmd}/hostkeeper/list.go (100%) rename {cmd => v1/cmd}/hostkeeper/list_test.go (100%) rename {cmd => v1/cmd}/hostkeeper/main.go (100%) rename {cmd => v1/cmd}/hostkeeper/root.go (100%) rename {cmd => v1/cmd}/hostkeeper/tui.go (100%) rename {docs => v1/docs}/ARCHITECTURE.md (100%) rename {docs => v1/docs}/INSTALLATION.md (100%) rename {docs => v1/docs}/TEST_PLAN.md (100%) rename {docs => v1/docs}/USAGE.md (100%) rename go.mod => v1/go.mod (100%) rename go.sum => v1/go.sum (100%) rename {internal => v1/internal}/errors/connection_errors.go (100%) rename {internal => v1/internal}/errors/errors.go (100%) rename {internal => v1/internal}/models/models.go (100%) rename {pkg => v1/pkg}/config/config.go (100%) rename {pkg => v1/pkg}/crypto/crypto.go (100%) rename {pkg => v1/pkg}/knownhosts/knownhosts.go (100%) rename {pkg => v1/pkg}/ssh/auth.go (100%) rename {pkg => v1/pkg}/ssh/client.go (100%) rename {pkg => v1/pkg}/storage/json_storage.go (100%) rename {pkg => v1/pkg}/storage/storage.go (100%) rename {pkg => v1/pkg}/tui/error_banner.go (100%) rename {pkg => v1/pkg}/tui/host_form_tab.go (100%) rename {pkg => v1/pkg}/tui/host_list_tab.go (100%) rename {pkg => v1/pkg}/tui/key_form_tab.go (100%) rename {pkg => v1/pkg}/tui/key_list_tab.go (100%) rename {pkg => v1/pkg}/tui/messages.go (100%) rename {pkg => v1/pkg}/tui/password_prompt_tab.go (100%) rename {pkg => v1/pkg}/tui/responsive.go (100%) rename {pkg => v1/pkg}/tui/sftp_browser_tab.go (100%) rename {pkg => v1/pkg}/tui/snippet_form_tab.go (100%) rename {pkg => v1/pkg}/tui/snippet_list_tab.go (100%) rename {pkg => v1/pkg}/tui/ssh.go (100%) rename {pkg => v1/pkg}/tui/styles.go (100%) rename {pkg => v1/pkg}/tui/tabs.go (100%) rename {pkg => v1/pkg}/tui/themes.go (100%) rename {pkg => v1/pkg}/tui/tui.go (100%) rename {pkg => v1/pkg}/tui/tui_test.go (100%) rename {test => v1/test}/config/config_test.go (100%) rename {test => v1/test}/crypto/crypto_test.go (100%) rename {test => v1/test}/errors_test.go (100%) rename {test => v1/test}/integration/integration_test.go (100%) rename {test => v1/test}/knownhosts/knownhosts_test.go (100%) rename {test => v1/test}/models_test.go (100%) rename {test => v1/test}/ssh/ssh_test.go (100%) rename {test => v1/test}/storage/export_import_test.go (100%) rename {test => v1/test}/storage/json_storage_test.go (100%) rename {test => v1/test}/tui/error_banner_test.go (100%) rename {test => v1/test}/tui/responsive_test.go (100%) rename {test => v1/test}/tui/theme_test.go (100%) diff --git a/.gitignore b/.gitignore index 37f877c..224fd23 100644 --- a/.gitignore +++ b/.gitignore @@ -40,3 +40,4 @@ Thumbs.db # Build output dist/hostkeeper +v1/hostkeeper diff --git a/README.md b/README.md index 0d8ac02..459d4b2 100644 --- a/README.md +++ b/README.md @@ -2,136 +2,40 @@ **Cross-platform SSH/SFTP management tool with secure credential storage** -## Features +## V1 (Legacy) — CLI/TUI -- **Secure Credential Management** — Store SSH credentials with proper file permissions (0600) -- **SSH Connection** — Connect to hosts via native SSH or Go SSH client -- **Host Management** — Add, list, connect, edit, delete hosts -- **Export/Import** — Backup and transfer credentials across devices -- **TUI Interface** — Interactive terminal user interface for host management -- **Cross-Platform** — Works on Linux, macOS, Windows, and Termux (Android) -- **Fast CLI** — Quick commands for power users -- **Tag-based Organization** — Categorize hosts with custom tags and groups - -## Quick Start - -### Installation +V1 adalah versi CLI/TUI yang sudah selesai dan di-freeze. Semua kode ada di folder [`v1/`](v1/). ```bash -# Build from source -git clone https://git.tukangketik.id/swanadiva/HostKeeper.git -cd hostkeeper +cd v1 make build - -# Or install directly -go install git.tukangketik.id/swanadiva/hostkeeper/cmd/hostkeeper@latest +./hostkeeper tui ``` -### Usage +Lihat [`v1/README.md`](v1/README.md) untuk dokumentasi lengkap. -```bash -# Add a host (interactive) -hostkeeper add +## V2 (In Development) — GoFiber + React + Electron -# Or with flags -hostkeeper add myserver --host 192.168.1.10 --user admin --password mypass +V2 adalah rewrite dengan arsitektur baru: +- **Backend**: GoFiber v2 (fasthttp) — lokal HTTP server di `app/backend/` +- **Frontend**: React + TypeScript + TailwindCSS v4 di `app/frontend/` +- **Desktop**: Electron wrapper di `app/electron/` +- **Mobile**: WebView shell di `mobile/` -# List all hosts -hostkeeper list +Lihat [docs/v2/](docs/v2/) untuk dokumentasi perencanaan. -# Connect to host -hostkeeper connect myserver +## Struktur Repository -# Edit host -hostkeeper edit myserver - -# Delete host -hostkeeper delete myserver - -# Launch TUI -hostkeeper tui ``` - -## Core Commands - -| Command | Description | -|---------|-------------| -| `hostkeeper add [name]` | Add a new SSH host | -| `hostkeeper list` | List all saved hosts | -| `hostkeeper connect ` | Connect to a host | -| `hostkeeper edit ` | Edit a host configuration | -| `hostkeeper delete ` | Delete a host | -| `hostkeeper export ` | Export data to JSON file | -| `hostkeeper import ` | Import data from JSON file | -| `hostkeeper tui` | Launch TUI interface | -| `hostkeeper completion [shell]` | Generate shell completion | -| `hostkeeper version` | Print version info | - -## Installation - -See [Installation Guide](docs/INSTALLATION.md) for detailed instructions for all platforms. - -## Usage - -See [Usage Guide](docs/USAGE.md) for detailed command examples. - -## Architecture - -See [Architecture Overview](docs/ARCHITECTURE.md) for technical details. - -## Security - -- All credential files use `0600` permissions (owner read/write only) -- Passwords and keys are never logged or displayed in error messages -- Encrypted storage planned for Phase 2 - -## Development - -### Prerequisites - -- Go 1.21+ -- Make (optional, for build automation) - -### Setup - -```bash -git clone https://git.tukangketik.id/swanadiva/HostKeeper.git -cd hostkeeper -make deps -make build +hostkeeper/ +├── v1/ ← V1 CLI/TUI (frozen) +├── app/ ← V2 backend + frontend + electron +├── mobile/ ← V2 mobile wrapper +├── template/ ← Referensi UI React (Lumina System) +└── docs/ + └── v2/ ← Dokumentasi perencanaan V2 ``` -### Testing - -```bash -# All tests -make test - -# With coverage -make test-coverage -``` - -### Build - -```bash -# Current platform -make build - -# All platforms -make release -``` - -## Tech Stack - -- **Language**: Go 1.21+ -- **CLI Framework**: [Cobra](https://github.com/spf13/cobra) -- **TUI Framework**: [Bubble Tea](https://github.com/charmbracelet/bubbletea) -- **SSH Library**: [golang.org/x/crypto/ssh](https://pkg.go.dev/golang.org/x/crypto/ssh) - -## Project Status - -Project is in active development. See [PROJECT_STATE.md](PROJECT_STATE.md) for current progress. - ## License MIT diff --git a/Makefile b/v1/Makefile similarity index 100% rename from Makefile rename to v1/Makefile diff --git a/PROJECT_STATE.md b/v1/PROJECT_STATE.md similarity index 100% rename from PROJECT_STATE.md rename to v1/PROJECT_STATE.md diff --git a/v1/README.md b/v1/README.md new file mode 100644 index 0000000..62f1a1b --- /dev/null +++ b/v1/README.md @@ -0,0 +1,37 @@ +# Hostkeeper V1 — CLI/TUI + +> **Status**: FROZEN — no further development. +> Pembuatan V2 dilakukan di folder `../app/` dan `../mobile/`. + +Hostkeeper V1 adalah SSH/SFTP management tool berbasis CLI + TUI (Bubble Tea). + +## Quick Start + +```bash +cd v1 +make build +./hostkeeper tui +``` + +## Dokumentasi + +- [Architecture](docs/ARCHITECTURE.md) +- [Installation](docs/INSTALLATION.md) +- [Usage](docs/USAGE.md) +- [Test Plan](docs/TEST_PLAN.md) +- [Project State](PROJECT_STATE.md) + +## Tech Stack + +- Go 1.26+ +- Cobra (CLI) +- Bubble Tea (TUI) +- golang.org/x/crypto/ssh + +## Test + +```bash +cd v1 +make test +# 105 tests passing +``` diff --git a/RELEASE_CHECKLIST.md b/v1/RELEASE_CHECKLIST.md similarity index 100% rename from RELEASE_CHECKLIST.md rename to v1/RELEASE_CHECKLIST.md diff --git a/build.sh b/v1/build.sh similarity index 100% rename from build.sh rename to v1/build.sh diff --git a/cmd/hostkeeper/add.go b/v1/cmd/hostkeeper/add.go similarity index 100% rename from cmd/hostkeeper/add.go rename to v1/cmd/hostkeeper/add.go diff --git a/cmd/hostkeeper/add_test.go b/v1/cmd/hostkeeper/add_test.go similarity index 100% rename from cmd/hostkeeper/add_test.go rename to v1/cmd/hostkeeper/add_test.go diff --git a/cmd/hostkeeper/completion.go b/v1/cmd/hostkeeper/completion.go similarity index 100% rename from cmd/hostkeeper/completion.go rename to v1/cmd/hostkeeper/completion.go diff --git a/cmd/hostkeeper/connect.go b/v1/cmd/hostkeeper/connect.go similarity index 100% rename from cmd/hostkeeper/connect.go rename to v1/cmd/hostkeeper/connect.go diff --git a/cmd/hostkeeper/connect_test.go b/v1/cmd/hostkeeper/connect_test.go similarity index 100% rename from cmd/hostkeeper/connect_test.go rename to v1/cmd/hostkeeper/connect_test.go diff --git a/cmd/hostkeeper/delete.go b/v1/cmd/hostkeeper/delete.go similarity index 100% rename from cmd/hostkeeper/delete.go rename to v1/cmd/hostkeeper/delete.go diff --git a/cmd/hostkeeper/delete_test.go b/v1/cmd/hostkeeper/delete_test.go similarity index 100% rename from cmd/hostkeeper/delete_test.go rename to v1/cmd/hostkeeper/delete_test.go diff --git a/cmd/hostkeeper/edit.go b/v1/cmd/hostkeeper/edit.go similarity index 100% rename from cmd/hostkeeper/edit.go rename to v1/cmd/hostkeeper/edit.go diff --git a/cmd/hostkeeper/edit_test.go b/v1/cmd/hostkeeper/edit_test.go similarity index 100% rename from cmd/hostkeeper/edit_test.go rename to v1/cmd/hostkeeper/edit_test.go diff --git a/cmd/hostkeeper/export.go b/v1/cmd/hostkeeper/export.go similarity index 100% rename from cmd/hostkeeper/export.go rename to v1/cmd/hostkeeper/export.go diff --git a/cmd/hostkeeper/import.go b/v1/cmd/hostkeeper/import.go similarity index 100% rename from cmd/hostkeeper/import.go rename to v1/cmd/hostkeeper/import.go diff --git a/cmd/hostkeeper/list.go b/v1/cmd/hostkeeper/list.go similarity index 100% rename from cmd/hostkeeper/list.go rename to v1/cmd/hostkeeper/list.go diff --git a/cmd/hostkeeper/list_test.go b/v1/cmd/hostkeeper/list_test.go similarity index 100% rename from cmd/hostkeeper/list_test.go rename to v1/cmd/hostkeeper/list_test.go diff --git a/cmd/hostkeeper/main.go b/v1/cmd/hostkeeper/main.go similarity index 100% rename from cmd/hostkeeper/main.go rename to v1/cmd/hostkeeper/main.go diff --git a/cmd/hostkeeper/root.go b/v1/cmd/hostkeeper/root.go similarity index 100% rename from cmd/hostkeeper/root.go rename to v1/cmd/hostkeeper/root.go diff --git a/cmd/hostkeeper/tui.go b/v1/cmd/hostkeeper/tui.go similarity index 100% rename from cmd/hostkeeper/tui.go rename to v1/cmd/hostkeeper/tui.go diff --git a/docs/ARCHITECTURE.md b/v1/docs/ARCHITECTURE.md similarity index 100% rename from docs/ARCHITECTURE.md rename to v1/docs/ARCHITECTURE.md diff --git a/docs/INSTALLATION.md b/v1/docs/INSTALLATION.md similarity index 100% rename from docs/INSTALLATION.md rename to v1/docs/INSTALLATION.md diff --git a/docs/TEST_PLAN.md b/v1/docs/TEST_PLAN.md similarity index 100% rename from docs/TEST_PLAN.md rename to v1/docs/TEST_PLAN.md diff --git a/docs/USAGE.md b/v1/docs/USAGE.md similarity index 100% rename from docs/USAGE.md rename to v1/docs/USAGE.md diff --git a/go.mod b/v1/go.mod similarity index 100% rename from go.mod rename to v1/go.mod diff --git a/go.sum b/v1/go.sum similarity index 100% rename from go.sum rename to v1/go.sum diff --git a/internal/errors/connection_errors.go b/v1/internal/errors/connection_errors.go similarity index 100% rename from internal/errors/connection_errors.go rename to v1/internal/errors/connection_errors.go diff --git a/internal/errors/errors.go b/v1/internal/errors/errors.go similarity index 100% rename from internal/errors/errors.go rename to v1/internal/errors/errors.go diff --git a/internal/models/models.go b/v1/internal/models/models.go similarity index 100% rename from internal/models/models.go rename to v1/internal/models/models.go diff --git a/pkg/config/config.go b/v1/pkg/config/config.go similarity index 100% rename from pkg/config/config.go rename to v1/pkg/config/config.go diff --git a/pkg/crypto/crypto.go b/v1/pkg/crypto/crypto.go similarity index 100% rename from pkg/crypto/crypto.go rename to v1/pkg/crypto/crypto.go diff --git a/pkg/knownhosts/knownhosts.go b/v1/pkg/knownhosts/knownhosts.go similarity index 100% rename from pkg/knownhosts/knownhosts.go rename to v1/pkg/knownhosts/knownhosts.go diff --git a/pkg/ssh/auth.go b/v1/pkg/ssh/auth.go similarity index 100% rename from pkg/ssh/auth.go rename to v1/pkg/ssh/auth.go diff --git a/pkg/ssh/client.go b/v1/pkg/ssh/client.go similarity index 100% rename from pkg/ssh/client.go rename to v1/pkg/ssh/client.go diff --git a/pkg/storage/json_storage.go b/v1/pkg/storage/json_storage.go similarity index 100% rename from pkg/storage/json_storage.go rename to v1/pkg/storage/json_storage.go diff --git a/pkg/storage/storage.go b/v1/pkg/storage/storage.go similarity index 100% rename from pkg/storage/storage.go rename to v1/pkg/storage/storage.go diff --git a/pkg/tui/error_banner.go b/v1/pkg/tui/error_banner.go similarity index 100% rename from pkg/tui/error_banner.go rename to v1/pkg/tui/error_banner.go diff --git a/pkg/tui/host_form_tab.go b/v1/pkg/tui/host_form_tab.go similarity index 100% rename from pkg/tui/host_form_tab.go rename to v1/pkg/tui/host_form_tab.go diff --git a/pkg/tui/host_list_tab.go b/v1/pkg/tui/host_list_tab.go similarity index 100% rename from pkg/tui/host_list_tab.go rename to v1/pkg/tui/host_list_tab.go diff --git a/pkg/tui/key_form_tab.go b/v1/pkg/tui/key_form_tab.go similarity index 100% rename from pkg/tui/key_form_tab.go rename to v1/pkg/tui/key_form_tab.go diff --git a/pkg/tui/key_list_tab.go b/v1/pkg/tui/key_list_tab.go similarity index 100% rename from pkg/tui/key_list_tab.go rename to v1/pkg/tui/key_list_tab.go diff --git a/pkg/tui/messages.go b/v1/pkg/tui/messages.go similarity index 100% rename from pkg/tui/messages.go rename to v1/pkg/tui/messages.go diff --git a/pkg/tui/password_prompt_tab.go b/v1/pkg/tui/password_prompt_tab.go similarity index 100% rename from pkg/tui/password_prompt_tab.go rename to v1/pkg/tui/password_prompt_tab.go diff --git a/pkg/tui/responsive.go b/v1/pkg/tui/responsive.go similarity index 100% rename from pkg/tui/responsive.go rename to v1/pkg/tui/responsive.go diff --git a/pkg/tui/sftp_browser_tab.go b/v1/pkg/tui/sftp_browser_tab.go similarity index 100% rename from pkg/tui/sftp_browser_tab.go rename to v1/pkg/tui/sftp_browser_tab.go diff --git a/pkg/tui/snippet_form_tab.go b/v1/pkg/tui/snippet_form_tab.go similarity index 100% rename from pkg/tui/snippet_form_tab.go rename to v1/pkg/tui/snippet_form_tab.go diff --git a/pkg/tui/snippet_list_tab.go b/v1/pkg/tui/snippet_list_tab.go similarity index 100% rename from pkg/tui/snippet_list_tab.go rename to v1/pkg/tui/snippet_list_tab.go diff --git a/pkg/tui/ssh.go b/v1/pkg/tui/ssh.go similarity index 100% rename from pkg/tui/ssh.go rename to v1/pkg/tui/ssh.go diff --git a/pkg/tui/styles.go b/v1/pkg/tui/styles.go similarity index 100% rename from pkg/tui/styles.go rename to v1/pkg/tui/styles.go diff --git a/pkg/tui/tabs.go b/v1/pkg/tui/tabs.go similarity index 100% rename from pkg/tui/tabs.go rename to v1/pkg/tui/tabs.go diff --git a/pkg/tui/themes.go b/v1/pkg/tui/themes.go similarity index 100% rename from pkg/tui/themes.go rename to v1/pkg/tui/themes.go diff --git a/pkg/tui/tui.go b/v1/pkg/tui/tui.go similarity index 100% rename from pkg/tui/tui.go rename to v1/pkg/tui/tui.go diff --git a/pkg/tui/tui_test.go b/v1/pkg/tui/tui_test.go similarity index 100% rename from pkg/tui/tui_test.go rename to v1/pkg/tui/tui_test.go diff --git a/test/config/config_test.go b/v1/test/config/config_test.go similarity index 100% rename from test/config/config_test.go rename to v1/test/config/config_test.go diff --git a/test/crypto/crypto_test.go b/v1/test/crypto/crypto_test.go similarity index 100% rename from test/crypto/crypto_test.go rename to v1/test/crypto/crypto_test.go diff --git a/test/errors_test.go b/v1/test/errors_test.go similarity index 100% rename from test/errors_test.go rename to v1/test/errors_test.go diff --git a/test/integration/integration_test.go b/v1/test/integration/integration_test.go similarity index 100% rename from test/integration/integration_test.go rename to v1/test/integration/integration_test.go diff --git a/test/knownhosts/knownhosts_test.go b/v1/test/knownhosts/knownhosts_test.go similarity index 100% rename from test/knownhosts/knownhosts_test.go rename to v1/test/knownhosts/knownhosts_test.go diff --git a/test/models_test.go b/v1/test/models_test.go similarity index 100% rename from test/models_test.go rename to v1/test/models_test.go diff --git a/test/ssh/ssh_test.go b/v1/test/ssh/ssh_test.go similarity index 100% rename from test/ssh/ssh_test.go rename to v1/test/ssh/ssh_test.go diff --git a/test/storage/export_import_test.go b/v1/test/storage/export_import_test.go similarity index 100% rename from test/storage/export_import_test.go rename to v1/test/storage/export_import_test.go diff --git a/test/storage/json_storage_test.go b/v1/test/storage/json_storage_test.go similarity index 100% rename from test/storage/json_storage_test.go rename to v1/test/storage/json_storage_test.go diff --git a/test/tui/error_banner_test.go b/v1/test/tui/error_banner_test.go similarity index 100% rename from test/tui/error_banner_test.go rename to v1/test/tui/error_banner_test.go diff --git a/test/tui/responsive_test.go b/v1/test/tui/responsive_test.go similarity index 100% rename from test/tui/responsive_test.go rename to v1/test/tui/responsive_test.go diff --git a/test/tui/theme_test.go b/v1/test/tui/theme_test.go similarity index 100% rename from test/tui/theme_test.go rename to v1/test/tui/theme_test.go