Add native Windows support (#91)

- Native Windows daemon using TCP loopback endpoints
- Direct-mode fallback for CLI/daemon compatibility
- Comment operations over RPC
- PowerShell installer script
- Go 1.24 requirement
- Cross-OS testing documented

Co-authored-by: danshapiro <danshapiro@users.noreply.github.com>
Amp-Thread-ID: https://ampcode.com/threads/T-c6230265-055f-4af1-9712-4481061886db
Co-authored-by: Amp <amp@ampcode.com>
This commit is contained in:
Steve Yegge
2025-10-20 21:08:49 -07:00
parent 94a23cae39
commit a86f3e139e
58 changed files with 1707 additions and 729 deletions

View File

@@ -12,7 +12,7 @@ import (
func TestStorageCacheEviction_TTL(t *testing.T) {
tmpDir := t.TempDir()
// Create main DB
mainDB := filepath.Join(tmpDir, "main.db")
mainStore, err := sqlite.New(mainDB)
@@ -82,7 +82,7 @@ func TestStorageCacheEviction_TTL(t *testing.T) {
func TestStorageCacheEviction_LRU(t *testing.T) {
tmpDir := t.TempDir()
// Create main DB
mainDB := filepath.Join(tmpDir, "main.db")
mainStore, err := sqlite.New(mainDB)
@@ -94,7 +94,7 @@ func TestStorageCacheEviction_LRU(t *testing.T) {
// Create server with small cache size
socketPath := filepath.Join(tmpDir, "test.sock")
server := NewServer(socketPath, mainStore)
server.maxCacheSize = 2 // Only keep 2 entries
server.maxCacheSize = 2 // Only keep 2 entries
server.cacheTTL = 1 * time.Hour // Long TTL so we test LRU
defer server.Stop()
@@ -167,7 +167,7 @@ func TestStorageCacheEviction_LRU(t *testing.T) {
func TestStorageCacheEviction_LastAccessUpdate(t *testing.T) {
tmpDir := t.TempDir()
// Create main DB
mainDB := filepath.Join(tmpDir, "main.db")
mainStore, err := sqlite.New(mainDB)
@@ -225,7 +225,7 @@ func TestStorageCacheEviction_LastAccessUpdate(t *testing.T) {
func TestStorageCacheEviction_EnvVars(t *testing.T) {
tmpDir := t.TempDir()
// Create main DB
mainDB := filepath.Join(tmpDir, "main.db")
mainStore, err := sqlite.New(mainDB)
@@ -257,7 +257,7 @@ func TestStorageCacheEviction_EnvVars(t *testing.T) {
func TestStorageCacheEviction_CleanupOnStop(t *testing.T) {
tmpDir := t.TempDir()
// Create main DB
mainDB := filepath.Join(tmpDir, "main.db")
mainStore, err := sqlite.New(mainDB)
@@ -309,7 +309,7 @@ func TestStorageCacheEviction_CleanupOnStop(t *testing.T) {
func TestStorageCacheEviction_CanonicalKey(t *testing.T) {
tmpDir := t.TempDir()
// Create main DB
mainDB := filepath.Join(tmpDir, "main.db")
mainStore, err := sqlite.New(mainDB)
@@ -362,7 +362,7 @@ func TestStorageCacheEviction_CanonicalKey(t *testing.T) {
func TestStorageCacheEviction_ImmediateLRU(t *testing.T) {
tmpDir := t.TempDir()
// Create main DB
mainDB := filepath.Join(tmpDir, "main.db")
mainStore, err := sqlite.New(mainDB)
@@ -410,7 +410,7 @@ func TestStorageCacheEviction_ImmediateLRU(t *testing.T) {
func TestStorageCacheEviction_InvalidTTL(t *testing.T) {
tmpDir := t.TempDir()
// Create main DB
mainDB := filepath.Join(tmpDir, "main.db")
mainStore, err := sqlite.New(mainDB)
@@ -437,7 +437,7 @@ func TestStorageCacheEviction_InvalidTTL(t *testing.T) {
func TestStorageCacheEviction_ReopenAfterEviction(t *testing.T) {
tmpDir := t.TempDir()
// Create main DB
mainDB := filepath.Join(tmpDir, "main.db")
mainStore, err := sqlite.New(mainDB)
@@ -499,7 +499,7 @@ func TestStorageCacheEviction_ReopenAfterEviction(t *testing.T) {
func TestStorageCacheEviction_StopIdempotent(t *testing.T) {
tmpDir := t.TempDir()
// Create main DB
mainDB := filepath.Join(tmpDir, "main.db")
mainStore, err := sqlite.New(mainDB)