Commit Graph

12 Commits

Author SHA1 Message Date
swanadiva 3df8416d9b fix: nav Alpine event name — use htmx:after-settle, not after-settle 2026-07-07 15:39:10 +07:00
swanadiva cdc8b3afd0 fix: nav highlight follows current page via Alpine.js client-side state
- Server-side {{if eq $.View .ID}} only works on initial page load
- HTMX swaps #main-content only, nav never re-renders → stale highlight
- Add x-data page state + @after-settle.window listener to track current route
- Nav items use :class binding to apply active style based on Alpine state
2026-07-07 15:37:16 +07:00
swanadiva e70b133073 fix: add missing _content partial templates for HTMX nav (terminal, sftp, settings, brief)
- Create terminal_content.html, sftp_content.html, settings_content.html, brief_content.html
- Update full page templates to use partial templates via {{template}}
- Handlers already rendered these templates on HX-Request, but files were missing → 500
- All pages now return 200 for both full page and HTMX nav requests
2026-07-07 15:36:12 +07:00
swanadiva 8357d9d76e fix: UI overhaul — align all HTMX views with Lumina Design System (46 fixes)
- All 7 pages rewritten: Dashboard, Terminal, Snippets, Keychain, SFTP, Settings, Brief
- Apply consistent Lumina glassmorphic theme (rounded-2xl, shadows, borders, tracking)
- Fix SVG icons not rendering — return template.HTML instead of string
- Fix Alpine x-data scoping: terminal tabs, SFTP modals, snippet tag buttons
- Fix dashboard search sending literal ?q=...
- Rebuild CSS with all new Tailwind classes (62KB)
- Add .air.toml with hot-reload config, docs/PERBAIKANUI.md checklist
- Remove unused backup partials
2026-07-07 14:55:42 +07:00
swanadiva fd7361aa14 Sprint 6: JSON file persistence + real SSH terminal + V1 crypto/knownhosts integration
- go.mod replace directive for git.tukangketik.id/swanadiva/hostkeeper → ../../v1
- store/ package: JSON file persistence for hosts, snippets, keys, settings
  (~/Library/Application Support/hostkeeper/v2/)
- model SSH fields: Hostname, Port, Username, AuthType, Password, KeyID
- sshconn/ package: real SSH client via golang.org/x/crypto/ssh
- Terminal WS: real SSH connection with fallback to mock shell
- Dynamic host list in terminal (server-rendered JSON script tag)
- All mock data defaults removed from model packages
- Settings persist via store/settings.go
2026-07-07 13:53:50 +07:00
swanadiva 04d9cfb096 feat: Sprint 5 — xterm.js terminal with WebSocket mock shell, Alpine tab management 2026-07-07 13:39:35 +07:00
swanadiva 941a67b6ea feat: Sprint 4 — SFTP dual-pane with per-type icons, breadcrumb, drop-zone, create/delete, toast 2026-07-07 13:35:01 +07:00
swanadiva c5ac07e27f feat: Sprint 3 — settings page with tabs/toggles/devices/danger-zone, brief page 2026-07-07 13:31:13 +07:00
swanadiva c4b0d7d8c0 feat: Sprint 2 — snippets + keychain CRUD, standalone templates, clipboard/utils JS 2026-07-07 13:26:56 +07:00
swanadiva 86620b034f feat: Sprint 1 final — delete host, Alpine modal events, grid/list toggle, transfers panel 2026-07-07 13:17:31 +07:00
swanadiva d771925727 feat: Sprint 1 — host model, mock store, dashboard CRUD, HTMX partials 2026-07-07 13:15:56 +07:00
swanadiva 43a19b723a feat: Sprint 0 — GoFiber + HTMX + TailwindCSS v4 scaffolding
- Go module: git.tukangketik.id/swanadiva/hostkeeper/v2
- GoFiber v2 server with static, template engine, middleware
- HTMX + Alpine.js (downloaded from CDN)
- TailwindCSS v4 with custom theme (Lumina System colors)
- Custom CSS: dot-grid, glassmorphism, animations, toggle, modal
- Layout template (sidebar nav + header + main)
- Dashboard page with host list, search, filter, view toggle
- Health endpoint: GET /api/health
2026-07-07 12:18:39 +07:00