Production-minded Wails v2 desktop application with: - Full SSH client (password, key, keyboard-interactive, jump hosts, keepalive) - Telnet client (RFC 854/855 negotiation, NAWS, TTYPE, encoding) - RAW TCP client (binary-safe, text/hex/split views, payload presets) - SQLite storage with migrations and repository abstraction - Encrypted secret storage (AES-256-GCM + Argon2id) with keychain fallback - Known hosts verification (strict/ask/accept-new/insecure) - Session manager with multi-session lifecycle and Wails events - Dark charcoal Material-inspired design system (CSS custom properties) - Tabbed session management with rename, reorder, pin, context menu - Profile editor with protocol-aware form sections - Command palette, notifications, settings modal - JSON import/export, audit logging, preferences - 50+ tests across validation, secrets, storage, encoding, sessions - Makefile, build.sh, .gitignore, comprehensive README
43 lines
1.2 KiB
Go
43 lines
1.2 KiB
Go
// Nexus Terminal – a desktop SSH, Telnet and RAW TCP client built with Wails v2.
|
||
// This is the main entry point for the application.
|
||
package main
|
||
|
||
import (
|
||
"log"
|
||
|
||
"github.com/wailsapp/wails/v2"
|
||
"github.com/wailsapp/wails/v2/pkg/options"
|
||
"github.com/wailsapp/wails/v2/pkg/options/assetserver"
|
||
|
||
application "github.com/copilot-ssh-client/app/internal/app"
|
||
"github.com/copilot-ssh-client/app/frontend"
|
||
)
|
||
|
||
func main() {
|
||
nexus := application.NewApp()
|
||
|
||
// The API service is created during Startup once storage is initialised.
|
||
// We bind the App itself so Wails can call lifecycle hooks, and use
|
||
// OnStartup to wire everything, then bind the API service separately.
|
||
err := wails.Run(&options.App{
|
||
Title: "Nexus Terminal",
|
||
Width: 1400,
|
||
Height: 900,
|
||
MinWidth: 1024,
|
||
MinHeight: 600,
|
||
AssetServer: &assetserver.Options{
|
||
Assets: frontend.Assets,
|
||
},
|
||
BackgroundColour: &options.RGBA{R: 26, G: 26, B: 46, A: 255}, // #1a1a2e
|
||
OnStartup: nexus.Startup,
|
||
OnShutdown: nexus.Shutdown,
|
||
OnDomReady: nexus.DomReady,
|
||
Bind: []interface{}{
|
||
nexus.APIService(),
|
||
},
|
||
})
|
||
if err != nil {
|
||
log.Fatalf("failed to start Nexus Terminal: %v", err)
|
||
}
|
||
}
|