Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
3ee096c
docs: add corrected Node server retirement plan
danshapiro Aug 26, 2026
6dfd5cb
docs: harden Rust-only server retirement plan
danshapiro Aug 26, 2026
d01716f
docs: repair Rust retirement execution plan
danshapiro Aug 27, 2026
af09083
docs: repair Node retirement plan review gaps
danshapiro Aug 27, 2026
cc50c34
refactor: isolate neutral code from Node server
danshapiro Aug 27, 2026
554d987
fix: scan test runtime listeners at boundary
danshapiro Aug 27, 2026
ab9e20d
fix: close runtime listener inventory
danshapiro Aug 27, 2026
3b3bf8a
fix: close package runtime boundary
danshapiro Aug 27, 2026
c8fa065
refactor: separate Node clients from legacy server
danshapiro Aug 27, 2026
c11c6af
test: cover standalone CLI against Rust
danshapiro Aug 27, 2026
753428b
fix: enforce standalone client Rust contracts
danshapiro Aug 27, 2026
30f33e8
fix(cli): generate supported help from capabilities
danshapiro Aug 27, 2026
b30536e
fix: align browser actions with Rust baseline
danshapiro Aug 27, 2026
e564269
test: boot Rust baseline browser actions
danshapiro Aug 27, 2026
e2cc996
test: restore Rust baseline action coverage
danshapiro Aug 27, 2026
fae1029
test: make browser coverage Rust-only
danshapiro Aug 27, 2026
a412af8
test: repair Rust browser E2E review findings
danshapiro Aug 27, 2026
cf08a58
test: harden Rust browser E2E guard
danshapiro Aug 27, 2026
9ef4d4f
test: repair Rust baseline comments
danshapiro Aug 27, 2026
6c58e8a
docs: record Task 4 full verification
danshapiro Aug 27, 2026
b93026d
fix: preserve worktree session grouping
danshapiro Aug 27, 2026
fe46e89
docs: close Task 4 test receipt
danshapiro Aug 27, 2026
16fb431
test: clarify Rust browser baseline
danshapiro Aug 27, 2026
d20d7bb
refactor: retire Node-only contracts and oracles
danshapiro Aug 27, 2026
80f2bfb
docs: clarify Rust oracle provenance
danshapiro Aug 27, 2026
c231c2f
build: make Rust the default server and test lane
danshapiro Aug 27, 2026
f317794
test: make source runtime child discovery cross-platform
danshapiro Aug 27, 2026
ebbd014
feat: run Electron app-bound backend in Rust
danshapiro Aug 27, 2026
dd6c762
fix: await Rust server stop before Electron quit
danshapiro Aug 27, 2026
757aada
build: package Rust backend in Electron
danshapiro Aug 27, 2026
8943515
test: enforce Electron runtime allowlist
danshapiro Aug 27, 2026
dfc0ed8
ci: enforce Rust-only backend artifacts
danshapiro Aug 27, 2026
b921115
test: prove Electron Rust PTY round trip
danshapiro Aug 27, 2026
725757c
refactor: delete legacy Node application server
danshapiro Aug 27, 2026
672ea1c
fix: close Node test disposition universe
danshapiro Aug 28, 2026
d1a69cd
docs: declare the Rust-only backend
danshapiro Aug 28, 2026
6e5201b
test: align stale client expectations with Rust baseline
danshapiro Aug 28, 2026
0a631db
fix: repair Fresh Eyes Electron and runtime guards
danshapiro Aug 28, 2026
3603519
fix: close Fresh Eyes Rust retirement gaps
danshapiro Aug 28, 2026
8d5e146
fix: restore Rust retirement compatibility gaps
danshapiro Aug 28, 2026
71f0e4f
fix: harden linked worktree and wsl fallback tests
danshapiro Aug 28, 2026
d2b99d7
fix: repair Electron development lifecycle
danshapiro Aug 28, 2026
59767de
fix: tighten runtime-boundary retirement guards
danshapiro Aug 28, 2026
2a54c2d
test: isolate Electron prerequisite coverage
danshapiro Aug 28, 2026
355766d
fix: close quoted Node backend runtime-boundary escapes
danshapiro Aug 28, 2026
ab4a298
fix: harden distribution and Electron checks
danshapiro Aug 28, 2026
10ad5cb
fix: handle remaining Node retirement boundary cases
danshapiro Aug 28, 2026
2ef0ec0
fix: close remaining runtime retirement edge cases
danshapiro Aug 28, 2026
7e77b36
fix: keep cloud test inputs and route Electron runtime tests
danshapiro Aug 28, 2026
16bc5ab
fix: harden distribution runtime verification
danshapiro Aug 28, 2026
0bbdffe
docs: remove obsolete Node settings from env example
danshapiro Aug 28, 2026
42295c7
fix: bound container layout diagnostics
danshapiro Aug 28, 2026
ceb78aa
test: protect retained node-gyp dependency
danshapiro Aug 28, 2026
d73f69f
fix: harden container runtime artifact guard
danshapiro Aug 28, 2026
c370a5f
fix: align cloud build runtime inputs
danshapiro Aug 28, 2026
d7f8449
fix: close cloud context fixture gaps
danshapiro Aug 28, 2026
6cf4654
fix: make Electron packaging work from clean checkouts
danshapiro Aug 28, 2026
e6982af
fix: restore Rust startup and close remaining retirement gaps
danshapiro Aug 28, 2026
958124d
fix: preserve Rust startup and test defaults
danshapiro Aug 28, 2026
1835ca3
docs: clarify Rust test lane coordination
danshapiro Aug 28, 2026
6c9870c
style: apply Rust formatter to Tauri smoke
danshapiro Aug 28, 2026
942ba09
test: make loopback port probe race-safe
danshapiro Aug 28, 2026
707cfc3
docs: record final Rust verification receipts
danshapiro Sep 1, 2026
e72b2b3
docs: refresh Rust test receipt after rebase
danshapiro Sep 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
80 changes: 80 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# Build artifacts (rebuilt in Docker — never copy from host)
.worktrees/
node_modules/
dist/
target/
Expand Down Expand Up @@ -41,6 +42,85 @@ port/oracle/*
!port/oracle/baselines/
port/oracle/baselines/*
!port/oracle/baselines/mode-preamble/
!port/laptop-bootstrap/
port/laptop-bootstrap/*
!port/laptop-bootstrap/1-install-wsl.cmd
!port/laptop-bootstrap/2-bootstrap-wsl.sh
!port/vm-bridge/
port/vm-bridge/*
!port/vm-bridge/agent-console-vm.ps1
!port/vm-bridge/agent-console-wsl.sh

# The Cloud Run default Vitest lane reads these checked-in runtime and
# distribution surfaces. Keep the exact manifest-owned inputs in the image
# even though their surrounding directories are not application runtime data.
!.github/
.github/*
!.github/workflows/
.github/workflows/*
!.github/workflows/docs-pages-deploy.yml
!.github/workflows/electron-build.yml
!.github/workflows/electron-release.yml
!.github/workflows/port-contract.yml
!.github/workflows/rust-clippy.yml
!.github/workflows/typecheck-client.yml

!electron/
electron/*
!electron/port-check.ts

!examples/
examples/*
!examples/docker/
examples/docker/*
!examples/docker/Dockerfile
!examples/extensions/
examples/extensions/*
!examples/extensions/live-counter/
examples/extensions/live-counter/*
!examples/extensions/live-counter/server.js
!examples/extensions/status-dashboard/
examples/extensions/status-dashboard/*
!examples/extensions/status-dashboard/server.js

!installers/
installers/*
!installers/systemd/
installers/systemd/*
!installers/systemd/freshell-rust.service

# Distribution guard fixtures are checked in and needed by the default
# Cloud Run lane. Re-include only the six controls; sibling dist/node_modules
# files remain excluded.
!test/fixtures/distribution/rust-only/dist/
test/fixtures/distribution/rust-only/dist/*
!test/fixtures/distribution/rust-only/dist/client/
test/fixtures/distribution/rust-only/dist/client/*
!test/fixtures/distribution/rust-only/dist/client/index.html
!test/fixtures/distribution/rust-only/dist/tools/
test/fixtures/distribution/rust-only/dist/tools/*
!test/fixtures/distribution/rust-only/dist/tools/freshell-mcp/
test/fixtures/distribution/rust-only/dist/tools/freshell-mcp/*
!test/fixtures/distribution/rust-only/dist/tools/freshell-mcp/server.js
!test/fixtures/distribution/node-server/dist/
test/fixtures/distribution/node-server/dist/*
!test/fixtures/distribution/node-server/dist/client/
test/fixtures/distribution/node-server/dist/client/*
!test/fixtures/distribution/node-server/dist/client/index.html
!test/fixtures/distribution/node-server/dist/server/
test/fixtures/distribution/node-server/dist/server/*
!test/fixtures/distribution/node-server/dist/server/index.js
!test/fixtures/distribution/node-server/dist/tools/
test/fixtures/distribution/node-server/dist/tools/*
!test/fixtures/distribution/node-server/dist/tools/freshell-mcp/
test/fixtures/distribution/node-server/dist/tools/freshell-mcp/*
!test/fixtures/distribution/node-server/dist/tools/freshell-mcp/server.js
!test/fixtures/distribution/node-server/node_modules/
test/fixtures/distribution/node-server/node_modules/*
!test/fixtures/distribution/node-server/node_modules/node-pty/
test/fixtures/distribution/node-server/node_modules/node-pty/*
!test/fixtures/distribution/node-server/node_modules/node-pty/index.js

assets/

# Editor / IDE
Expand Down
66 changes: 20 additions & 46 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -12,37 +12,24 @@ AUTH_TOKEN=replace-with-a-long-random-token
# Server
# -----------------------------------------------------------------------------

# Port for the Express server (backend API + production static files)
# Port for the Rust freshell-server (HTTP, WebSocket, and static client files)
PORT=3001

# Set to true to hide AUTH_TOKEN from the startup URL printed to the console.
# Useful when logs are aggregated or terminals are shared/recorded.
# HIDE_STARTUP_TOKEN=true
# Rust log filter (standard `tracing` syntax; default: info).
# RUST_LOG=info

# Log level: fatal, error, warn, info, debug, trace
# LOG_LEVEL=debug
# Optional explicit bind host for the Rust service. Without this, the server
# uses persisted network settings and platform defaults.
# FRESHELL_BIND_HOST=127.0.0.1

# Trust proxy setting for Express (e.g., "1", "loopback", or a CIDR range).
# Set this when running behind a reverse proxy (nginx, Caddy, Cloudflare).
# FRESHELL_TRUST_PROXY=1

# ALLOWED_ORIGINS is auto-managed by NetworkManager based on bind host and LAN IPs.
# ALLOWED_ORIGINS is auto-managed from the active bind host and LAN IPs.
# Do not edit manually — use EXTRA_ALLOWED_ORIGINS for custom additions.
# ALLOWED_ORIGINS=http://localhost:3001,http://127.0.0.1:3001

# Extra origins to allow (for reverse proxies, custom domains, etc.).
# These are preserved across NetworkManager reconfigurations.
# EXTRA_ALLOWED_ORIGINS=http://localhost:5173,http://localhost:3002,https://mysite.com,http://192.168.1.50:8080

# Maximum concurrent WebSocket connections (default: 50)
# MAX_CONNECTIONS=50

# Maximum concurrent terminals (default: 50)
# MAX_TERMINALS=50

# Scrollback buffer size in characters per terminal (default: 65536 = 64KB)
# MAX_SCROLLBACK_CHARS=65536

# -----------------------------------------------------------------------------
# Vite Dev Server (only used during `npm run dev`)
# -----------------------------------------------------------------------------
Expand Down Expand Up @@ -75,21 +62,26 @@ PORT=3001
# Override the Claude CLI command (default: claude)
# CLAUDE_CMD=claude

# Rust fresh-agent Claude panes use this isolated Node SDK sidecar. These are
# normally set by Electron or the development launcher; set them explicitly
# only when running the Rust service with a custom sidecar installation.
# FRESHELL_CLAUDE_NODE=/path/to/node
# FRESHELL_CLAUDE_SIDECAR=/path/to/crates/freshell-claude-sidecar/index.mjs

# Override path to Codex's home directory (default: ~/.codex)
# CODEX_HOME=/path/to/.codex

# Override the Codex CLI command (default: codex)
# CODEX_CMD=codex

# Standalone MCP client overrides. Set both values together when running the
# MCP client outside a built checkout or packaged Electron application.
# FRESHELL_MCP_NODE=/path/to/node
# FRESHELL_MCP_ENTRY=/path/to/dist/tools/freshell-mcp/server.js

# Override Claude autocompact threshold percentage
# CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=80

# Max events to load per coding CLI session (default: 10000)
# FRESHELL_MAX_SESSION_EVENTS=10000

# How long to keep completed session data in memory, ms (default: 1800000 = 30 min)
# FRESHELL_COMPLETED_SESSION_RETENTION_MS=1800000

# -----------------------------------------------------------------------------
# Windows / WSL (only needed when running on Windows or under WSL)
# -----------------------------------------------------------------------------
Expand Down Expand Up @@ -119,11 +111,8 @@ PORT=3001
# WebSocket ping interval in ms (default: 30000)
# PING_INTERVAL_MS=30000

# Max WebSocket buffered bytes before backpressure (default: 2097152 = 2MB)
# MAX_WS_BUFFERED_AMOUNT=2097152

# Max bytes per WebSocket output chunk (default: 512000 = 500KB)
# MAX_WS_CHUNK_BYTES=512000
# Maximum inbound WebSocket frame size in bytes (default: 16777216 = 16MB)
# WS_MAX_PAYLOAD_BYTES=16777216

# Terminal stream replay ring bytes per terminal (default: 262144 = 256KB)
# TERMINAL_REPLAY_RING_MAX_BYTES=262144
Expand All @@ -143,18 +132,3 @@ PORT=3001
# Terminal creation rate limit: max creates per window (default: 10 per 10s)
# TERMINAL_CREATE_RATE_LIMIT=10
# TERMINAL_CREATE_RATE_WINDOW_MS=10000

# Max exited terminals to keep in memory (default: 200)
# MAX_EXITED_TERMINALS=200

# Sessions sync coalesce interval in ms (default: 150)
# SESSIONS_SYNC_COALESCE_MS=150

# Claude indexer debounce interval in ms (default: 250)
# CLAUDE_INDEXER_DEBOUNCE_MS=250

# Max seen session IDs to cache (default: 10000)
# CLAUDE_SEEN_SESSION_MAX=10000

# How long to remember seen session IDs, ms (default: 604800000 = 7 days)
# CLAUDE_SEEN_SESSION_RETENTION_MS=604800000
79 changes: 79 additions & 0 deletions .gcloudignore
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,85 @@ port/oracle/*
!port/oracle/baselines/
port/oracle/baselines/*
!port/oracle/baselines/mode-preamble/
!port/laptop-bootstrap/
port/laptop-bootstrap/*
!port/laptop-bootstrap/1-install-wsl.cmd
!port/laptop-bootstrap/2-bootstrap-wsl.sh
!port/vm-bridge/
port/vm-bridge/*
!port/vm-bridge/agent-console-vm.ps1
!port/vm-bridge/agent-console-wsl.sh

# The Cloud Run default Vitest lane reads these checked-in runtime and
# distribution surfaces. Keep the exact manifest-owned inputs in the image
# even though their surrounding directories are not application runtime data.
!.github/
.github/*
!.github/workflows/
.github/workflows/*
!.github/workflows/docs-pages-deploy.yml
!.github/workflows/electron-build.yml
!.github/workflows/electron-release.yml
!.github/workflows/port-contract.yml
!.github/workflows/rust-clippy.yml
!.github/workflows/typecheck-client.yml

!electron/
electron/*
!electron/port-check.ts

!examples/
examples/*
!examples/docker/
examples/docker/*
!examples/docker/Dockerfile
!examples/extensions/
examples/extensions/*
!examples/extensions/live-counter/
examples/extensions/live-counter/*
!examples/extensions/live-counter/server.js
!examples/extensions/status-dashboard/
examples/extensions/status-dashboard/*
!examples/extensions/status-dashboard/server.js

!installers/
installers/*
!installers/systemd/
installers/systemd/*
!installers/systemd/freshell-rust.service

# Distribution guard fixtures are checked in and needed by the default
# Cloud Run lane. Re-include only the six controls; sibling dist/node_modules
# files remain excluded.
!test/fixtures/distribution/rust-only/dist/
test/fixtures/distribution/rust-only/dist/*
!test/fixtures/distribution/rust-only/dist/client/
test/fixtures/distribution/rust-only/dist/client/*
!test/fixtures/distribution/rust-only/dist/client/index.html
!test/fixtures/distribution/rust-only/dist/tools/
test/fixtures/distribution/rust-only/dist/tools/*
!test/fixtures/distribution/rust-only/dist/tools/freshell-mcp/
test/fixtures/distribution/rust-only/dist/tools/freshell-mcp/*
!test/fixtures/distribution/rust-only/dist/tools/freshell-mcp/server.js
!test/fixtures/distribution/node-server/dist/
test/fixtures/distribution/node-server/dist/*
!test/fixtures/distribution/node-server/dist/client/
test/fixtures/distribution/node-server/dist/client/*
!test/fixtures/distribution/node-server/dist/client/index.html
!test/fixtures/distribution/node-server/dist/server/
test/fixtures/distribution/node-server/dist/server/*
!test/fixtures/distribution/node-server/dist/server/index.js
!test/fixtures/distribution/node-server/dist/tools/
test/fixtures/distribution/node-server/dist/tools/*
!test/fixtures/distribution/node-server/dist/tools/freshell-mcp/
test/fixtures/distribution/node-server/dist/tools/freshell-mcp/*
!test/fixtures/distribution/node-server/dist/tools/freshell-mcp/server.js
!test/fixtures/distribution/node-server/node_modules/
test/fixtures/distribution/node-server/node_modules/*
!test/fixtures/distribution/node-server/node_modules/node-pty/
test/fixtures/distribution/node-server/node_modules/node-pty/*
!test/fixtures/distribution/node-server/node_modules/node-pty/index.js

assets/

# Editor / IDE
Expand Down
Loading
Loading