Commit Graph
105 Commits
Author SHA1 Message Date
andy c767c1640e Add missing test coverage and storage methods for Nexus Terminal
- Add TestSecretStoreInitialise, TestEncryptDecrypt, TestEncryptDecryptWrongKey,
  TestEncryptProducesDifferentCiphertexts, TestSetSecretWhenLocked to secrets tests
- Add TestUpdateLastConnected, TestExportProfiles, TestImportProfiles,
  TestImportDuplicateHandling, TestImportInvalidStrategy, TestImportInvalidJSON,
  TestMigrateIdempotent, TestMigrateCreatesTablesForCRUD to storage tests
- Implement UpdateLastConnected, ExportProfiles, ImportProfiles on storage.Store
2026-04-15 00:00:00 +01:00
andy db3f063530 fix: wire up frontend build pipeline for Wails v2
- embed.go: embed index.html + all:src directly instead of all:dist,
  so `go build` works without a prior npm build step
- index.html: add missing xterm.css vendor stylesheet link
- build.js: add buildDist() to assemble dist/ with index.html and the
  full src/ tree; update required-file paths to match dist/ layout
- Add placeholder xterm lib stubs in src/js/lib/ and src/css/lib/ so
  the app can start before `npm install` is run
- .gitignore: stop ignoring the lib placeholder files so they are
  available on a fresh clone
2026-04-15 00:00:00 +01:00
andy bd7cf6cbf9 feat: add session manager and API layer
Add the session manager (internal/sessions/manager.go) that orchestrates
multiple simultaneous SSH, Telnet, and RAW TCP sessions with:
- Protocol-specific connection logic using existing client implementations
- Credential resolution via OS keychain → encrypted vault → user prompt
- Wails runtime event emission for frontend state synchronisation
- Full session lifecycle management (connect, disconnect, reconnect)
- RAW session history and capture support
- Telnet break signal forwarding

Add the Wails-bound API service (internal/api/api.go) exposing:
- Profile CRUD with search, filtering, favourites, and duplication
- Session management (connect, disconnect, resize, write)
- RAW-specific text/hex/escaped write methods
- Secret store initialisation, unlock/lock, and per-profile secrets
- Known host listing and deletion
- Preferences get/save
- Profile import/export with skip/overwrite/duplicate strategies
- Audit log retrieval
- Native file dialog wrappers and app info

Remove conflicting protocol client stubs (client.go) that duplicated
the comprehensive implementations in sshclient.go, telnetclient.go,
and rawclient.go.
2026-04-15 00:00:00 +01:00
andy 61e99e9fca feat(frontend): add complete CSS design system and HTML shell
Create the Nexus Terminal design system with dark charcoal palette,
teal accent, and premium desktop application styling:

- tokens.css: Design tokens (colours, spacing, typography, layout)
- base.css: Modern reset, scrollbar, focus, and utility styles
- components.css: Buttons, forms, badges, dropdowns, notifications,
  disclosure, search, empty state, tooltip, spinner
- layout.css: App grid shell (sidebar, tab bar, workspace, status bar)
- sidebar.css: Connection manager with sections, profile items, search
- tabs.css: Compact session tabs with status dots, protocol badges
- terminal.css: xterm.js container, RAW mode views, send bar, search
- forms.css: Profile editor sections, tag input, jump hosts, validation
- modals.css: Modal, drawer, confirmation, host key, settings dialogs
- index.html: Complete HTML shell with sidebar, tabs, workspace, status
2026-04-15 00:00:00 +01:00
andy 35bc9c75b1 Add Go project scaffold for Wails v2 SSH/Telnet/RAW TCP client
- go.mod with Wails v2.9.2, x/crypto, go-sqlite3, go-keyring, uuid
- cmd/app/main.go: Wails entry point (Nexus Terminal, 1400x900, #1a1a2e)
- internal/app/app.go: lifecycle (Startup/Shutdown/DomReady)
- internal/models/models.go: full model definitions (Profile, SSHConfig,
  TelnetConfig, RAWConfig, SessionInfo, KnownHost, AppPreferences, etc.)
- internal/models/defaults.go: default values and NewProfile factory
- internal/validation/validation.go: thorough field-level validation
- frontend/embed.go: embedded frontend assets
- Updated existing storage, secrets, config to match new model structure
2026-04-15 00:00:00 +01:00