Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
403 commits
Select commit Hold shift + click to select a range
a55e4c0
wip
ryanatkn Apr 14, 2026
84420e1
wip
ryanatkn Apr 14, 2026
6207118
wip
ryanatkn Apr 17, 2026
5bfb6ab
wip
ryanatkn Apr 17, 2026
d4fc9a4
wip
ryanatkn Apr 18, 2026
3313d96
wip
ryanatkn Apr 18, 2026
4b6cabe
wip
ryanatkn Apr 18, 2026
2ce4bf4
wip
ryanatkn Apr 18, 2026
96de6d8
wip
ryanatkn Apr 18, 2026
30d43fc
wip
ryanatkn Apr 18, 2026
2b06c2e
wip
ryanatkn Apr 18, 2026
00c37fd
wip
ryanatkn Apr 18, 2026
6cac210
wip
ryanatkn Apr 18, 2026
fac54b6
wip
ryanatkn Apr 18, 2026
7164bfc
wip
ryanatkn Apr 18, 2026
0283f47
wip
ryanatkn Apr 18, 2026
8327591
wip
ryanatkn Apr 18, 2026
d2ea447
wip
ryanatkn Apr 18, 2026
ea2ec1f
wip
ryanatkn Apr 19, 2026
962861c
wip
ryanatkn Apr 19, 2026
37fc486
wip
ryanatkn Apr 19, 2026
1ceff47
wip
ryanatkn Apr 19, 2026
2d93fc8
wip
ryanatkn Apr 19, 2026
ee6f70a
wip
ryanatkn Apr 19, 2026
803e069
wip
ryanatkn Apr 19, 2026
431a58a
wip
ryanatkn Apr 19, 2026
6996d5e
wip
ryanatkn Apr 19, 2026
4936eb2
wip
ryanatkn Apr 19, 2026
a86b1b5
wip
ryanatkn Apr 19, 2026
71f2c01
wip
ryanatkn Apr 19, 2026
58d4936
wip
ryanatkn Apr 20, 2026
eb6b915
wip
ryanatkn Apr 20, 2026
74cd804
wip
ryanatkn Apr 20, 2026
f39387b
wip
ryanatkn Apr 20, 2026
aa07641
wip
ryanatkn Apr 20, 2026
e6834d0
wip
ryanatkn Apr 20, 2026
d42972f
wip
ryanatkn Apr 20, 2026
81c9c90
wip
ryanatkn Apr 20, 2026
c5c8b16
wip
ryanatkn Apr 21, 2026
878cdc4
wip
ryanatkn Apr 21, 2026
292f529
wip
ryanatkn Apr 21, 2026
3532e95
wip
ryanatkn Apr 22, 2026
cc5df24
wip
ryanatkn Apr 25, 2026
9f970a8
wip
ryanatkn Apr 25, 2026
130e69e
wip
ryanatkn Apr 25, 2026
710b57f
wip
ryanatkn Apr 25, 2026
b814628
wip
ryanatkn Apr 25, 2026
85e499f
wip
ryanatkn Apr 25, 2026
7b1ee9b
wip
ryanatkn Apr 26, 2026
da364a3
wip
ryanatkn Apr 26, 2026
77d4968
wip
ryanatkn Apr 26, 2026
180e5d4
wip
ryanatkn Apr 26, 2026
e3775df
wip
ryanatkn Apr 26, 2026
3a430be
wip
ryanatkn Apr 26, 2026
a6713be
wip
ryanatkn Apr 26, 2026
1411f38
wip
ryanatkn Apr 27, 2026
c942326
wip
ryanatkn Apr 27, 2026
ad6af92
wip
ryanatkn Apr 28, 2026
235823d
wip
ryanatkn Apr 29, 2026
064fae8
wip
ryanatkn Apr 30, 2026
2c8a1b5
wip
ryanatkn May 6, 2026
6e4f6fc
wip
ryanatkn May 8, 2026
19d2cce
wip
ryanatkn May 8, 2026
1926d7e
wip
ryanatkn May 9, 2026
638540a
wip
ryanatkn May 10, 2026
71297d0
wip
ryanatkn May 10, 2026
9305398
wip
ryanatkn May 10, 2026
ba82bf9
wip
ryanatkn May 10, 2026
4ecb875
wip
ryanatkn May 10, 2026
b1bec5e
wip
ryanatkn May 11, 2026
b5b7202
wip
ryanatkn May 12, 2026
6205226
wip
ryanatkn May 12, 2026
5ad6062
wip
ryanatkn May 12, 2026
174132c
wip
ryanatkn May 12, 2026
1917791
wip
ryanatkn May 12, 2026
ef6a02d
wip
ryanatkn May 12, 2026
cee1ec2
wip
ryanatkn May 13, 2026
2f5f4cb
wip
ryanatkn May 14, 2026
28ca589
wip
ryanatkn May 14, 2026
aee5377
wip
ryanatkn May 14, 2026
4a93093
wip
ryanatkn May 16, 2026
10d08dc
wip
ryanatkn May 16, 2026
668b244
wip
ryanatkn May 16, 2026
978424e
wip
ryanatkn May 16, 2026
4301956
wip
ryanatkn May 16, 2026
7ad5252
wip
ryanatkn May 16, 2026
6fadd49
wip
ryanatkn May 17, 2026
e68e31e
wip
ryanatkn May 17, 2026
72463bc
wip
ryanatkn May 17, 2026
1f8a8f8
wip
ryanatkn May 17, 2026
e8aa07c
wip
ryanatkn May 17, 2026
b06969a
wip
ryanatkn May 17, 2026
1b2150e
wip
ryanatkn May 17, 2026
6acd495
wip
ryanatkn May 17, 2026
5228bcb
wip
ryanatkn May 17, 2026
ee80f44
wip
ryanatkn May 17, 2026
a6575ce
wip
ryanatkn May 18, 2026
3f4f51d
wip
ryanatkn May 18, 2026
a0df60b
wip
ryanatkn May 18, 2026
355a3b7
wip
ryanatkn May 19, 2026
14bd456
wip
ryanatkn May 19, 2026
cf78803
wip
ryanatkn May 19, 2026
710dbac
wip
ryanatkn May 19, 2026
2a5ec6f
wip
ryanatkn May 19, 2026
40dcad5
wip
ryanatkn May 19, 2026
b2c9db2
wip
ryanatkn May 19, 2026
56ccd47
wip
ryanatkn May 19, 2026
a57efa8
wip
ryanatkn May 19, 2026
e21f589
wip
ryanatkn May 20, 2026
7e9f019
wip
ryanatkn May 20, 2026
364e2af
wip
ryanatkn May 20, 2026
4dccc85
wip
ryanatkn May 20, 2026
681403f
wip
ryanatkn May 20, 2026
23bfc1e
wip
ryanatkn May 20, 2026
06669de
wip
ryanatkn May 20, 2026
8964892
wip
ryanatkn May 20, 2026
2511e49
wip
ryanatkn May 20, 2026
27b76eb
wip
ryanatkn May 20, 2026
a706fd8
wip
ryanatkn May 20, 2026
1dcce23
wip
ryanatkn May 20, 2026
26ee04b
wip
ryanatkn May 20, 2026
9daa7a9
wip
ryanatkn May 20, 2026
308b157
wip
ryanatkn May 20, 2026
97cbaa8
wip
ryanatkn May 20, 2026
cacfa0c
wip
ryanatkn May 20, 2026
78b0d2e
wip
ryanatkn May 21, 2026
e3aa748
wip
ryanatkn May 21, 2026
e086819
wip
ryanatkn May 21, 2026
dcaf9ec
refactor(zzz_server): adopt AuthSpec enum variants for provider actio…
ryanatkn May 21, 2026
a8e5ef3
wip
ryanatkn May 21, 2026
8cdca30
wip
ryanatkn May 21, 2026
a6e2396
wip
ryanatkn May 21, 2026
8d341dd
wip
ryanatkn May 21, 2026
dde69ae
wip
ryanatkn May 24, 2026
fca1544
wip
ryanatkn May 24, 2026
8cd864b
wip
ryanatkn May 24, 2026
e8c2d2c
wip
ryanatkn May 25, 2026
42de41f
wip
ryanatkn May 25, 2026
acbbd12
wip
ryanatkn May 25, 2026
5a09aab
wip
ryanatkn May 25, 2026
dac66ef
wip
ryanatkn May 26, 2026
9274562
wip
ryanatkn May 26, 2026
4ed64cc
wip
ryanatkn May 26, 2026
9a43898
wip
ryanatkn May 26, 2026
976b371
wip
ryanatkn May 26, 2026
af73ca2
wip
ryanatkn May 26, 2026
84d969a
wip
ryanatkn May 26, 2026
2e7833a
wip
ryanatkn May 26, 2026
8786b55
wip
ryanatkn May 27, 2026
59e52a6
wip
ryanatkn May 27, 2026
6b2a2f7
wip
ryanatkn May 28, 2026
dd0179f
wip
ryanatkn May 28, 2026
b0712bc
wip
ryanatkn May 28, 2026
0f95cf2
wip
ryanatkn May 28, 2026
2508bff
wip
ryanatkn May 28, 2026
4ba3b6d
wip
ryanatkn May 28, 2026
b67d5ff
wip
ryanatkn May 28, 2026
2d339a7
wip
ryanatkn May 28, 2026
d0de231
wip
ryanatkn May 28, 2026
5279c1d
wip
ryanatkn May 28, 2026
90f7642
wip
ryanatkn May 28, 2026
7af4b15
wip
ryanatkn May 29, 2026
14b3faf
wip
ryanatkn May 29, 2026
e5d0acb
wip
ryanatkn May 29, 2026
0658a28
wip
ryanatkn May 29, 2026
ce42768
wip
ryanatkn May 29, 2026
019dfe9
wip
ryanatkn May 29, 2026
4aafbb5
wip
ryanatkn May 30, 2026
2c4266d
wip
ryanatkn May 30, 2026
246dca8
fix: update fuz_css fixing vite plugin
ryanatkn May 30, 2026
e7ec933
wip
ryanatkn May 30, 2026
58b2875
wip
ryanatkn May 30, 2026
18dc441
wip
ryanatkn May 30, 2026
faba95a
wip
ryanatkn May 30, 2026
5337288
wip
ryanatkn May 30, 2026
aca57b0
wip
ryanatkn May 30, 2026
597b3e0
wip
ryanatkn May 31, 2026
5422af9
wip
ryanatkn May 31, 2026
1a2de77
wip
ryanatkn May 31, 2026
233c605
wip
ryanatkn May 31, 2026
9a05714
wip
ryanatkn May 31, 2026
755ce9a
wip
ryanatkn May 31, 2026
cee531c
wip
ryanatkn May 31, 2026
e5fe4b8
wip
ryanatkn May 31, 2026
e8f355f
wip
ryanatkn May 31, 2026
3e56f31
wip
ryanatkn May 31, 2026
d542a01
wip
ryanatkn May 31, 2026
03725d2
wip
ryanatkn May 31, 2026
2769adb
wip
ryanatkn May 31, 2026
8ea57ba
wip
ryanatkn Jun 1, 2026
d536425
wip
ryanatkn Jun 1, 2026
c7c11b1
wip
ryanatkn Jun 1, 2026
f0dae04
wip
ryanatkn Jun 1, 2026
da0bd2e
wip
ryanatkn Jun 2, 2026
bb7d7df
wip
ryanatkn Jun 2, 2026
cc9594d
wip
ryanatkn Jun 2, 2026
21684be
wip
ryanatkn Jun 6, 2026
01a153f
wip
ryanatkn Jun 8, 2026
018ef6d
wip
ryanatkn Jun 9, 2026
cf2161b
wip
ryanatkn Jun 11, 2026
a2950c6
wip
ryanatkn Jun 11, 2026
3c15896
wip
ryanatkn Jun 11, 2026
923e9d8
wip
ryanatkn Jun 11, 2026
4b98ba2
chore: upgrade dev deps
ryanatkn Jun 12, 2026
e8a86ab
wip
ryanatkn Jun 13, 2026
b0d7da0
wip
ryanatkn Jun 13, 2026
53f918a
wip
ryanatkn Jun 13, 2026
53f54cf
wip
ryanatkn Jun 14, 2026
29e7ef3
wip
ryanatkn Jun 14, 2026
4008945
wip
ryanatkn Jun 14, 2026
b1253e4
wip
ryanatkn Jun 14, 2026
00a7aa8
Potential fix for pull request finding 'CodeQL / Incomplete string es…
ryanatkn Jun 14, 2026
d1b821f
wip
ryanatkn Jun 14, 2026
b16c472
wip
ryanatkn Jun 14, 2026
07489ac
wip
ryanatkn Jun 14, 2026
243101d
wip
ryanatkn Jun 14, 2026
c755fad
wip
ryanatkn Jun 15, 2026
ee74446
wip
ryanatkn Jun 15, 2026
21baa1c
wip
ryanatkn Jun 15, 2026
32d8ad6
wip
ryanatkn Jun 15, 2026
7fef0e2
wip
ryanatkn Jun 16, 2026
e10d786
wip
ryanatkn Jun 16, 2026
0910ad0
wip
ryanatkn Jun 16, 2026
ae4d5e8
wip
ryanatkn Jun 20, 2026
09fb350
wip
ryanatkn Jun 20, 2026
72cdb4e
wip
ryanatkn Jun 20, 2026
d5a2cb7
wip
ryanatkn Jun 21, 2026
b818eb5
wip
ryanatkn Jun 21, 2026
e11123f
wip
ryanatkn Jun 22, 2026
b44a61e
wip
ryanatkn Jun 22, 2026
efe2782
wip
ryanatkn Jun 23, 2026
e3543a3
wip
ryanatkn Jun 23, 2026
8279d2a
chore: bump @fuzdev/fuz_app to 0.99.0
ryanatkn Jun 23, 2026
ed0bae4
wip
ryanatkn Jun 23, 2026
ad396a6
wip
ryanatkn Jun 24, 2026
1ddda07
wip
ryanatkn Jun 24, 2026
a0fb8bb
wip
ryanatkn Jun 24, 2026
1cb0b22
wip
ryanatkn Jun 24, 2026
058cdb8
wip
ryanatkn Jun 25, 2026
70f805f
wip
ryanatkn Jun 25, 2026
c6313f2
wip
ryanatkn Jun 26, 2026
b657343
Merge branch 'main' into fuz-app
ryanatkn Jun 29, 2026
5d122b0
chore: gitignore *.local and *.local.*
ryanatkn Jul 3, 2026
f38acf9
wip
ryanatkn Jul 6, 2026
8f26d88
docs
ryanatkn Jul 7, 2026
838d499
wip
ryanatkn Jul 15, 2026
de59260
chore: upgrade prettier, update prettier options, and format
ryanatkn Jul 22, 2026
5a9ab90
wip
ryanatkn Jul 22, 2026
2285998
wip
ryanatkn Jul 24, 2026
8528e3f
wip
ryanatkn Jul 24, 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
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[alias]
xtask = "run --package xtask --"
45 changes: 45 additions & 0 deletions .env.development.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Development environment
# Copy to .env.development (or run: cargo xtask dev-setup)

# Runtime environment
NODE_ENV=development

# Zzz app directory (config, state, cache, runtime)
PUBLIC_ZZZ_DIR="./.zzz"

# Comma-separated filesystem paths Zzz can access (e.g., "./projects,~/code")
PUBLIC_ZZZ_SCOPED_DIRS="./src/test/fs1,./src/test/fs2"

# Server port — zzz_server itself reads ZZZ_PORT/--port and always binds
# loopback (no HOST override). This PORT is read by the `zzz` CLI when
# picking the daemon port; `cargo xtask dev` forces 4461 (the Vite proxy target).
PORT=4461

# Frontend SvelteKit env vars (used by $env/static/public in constants.ts)
PUBLIC_ZZZ_SERVER_PROTOCOL=http
PUBLIC_ZZZ_SERVER_HOST=localhost
PUBLIC_ZZZ_SERVER_PORT=5173
PUBLIC_ZZZ_SERVER_API_PATH="/api"
PUBLIC_ZZZ_SERVER_PROXIED_PORT=4461
PUBLIC_ZZZ_WEBSOCKET_URL=ws://localhost:4461/api/ws

# Debug delay in milliseconds for API responses (0 = no delay)
PUBLIC_ZZZ_BACKEND_ARTIFICIAL_DELAY=0

# Database — PostgreSQL (the Rust backend connects via tokio-postgres)
DATABASE_URL=postgres://localhost/zzz

# Auth - cookie signing key (generate with: openssl rand -base64 32)
SECRET_FUZ_COOKIE_KEYS=dev-only-not-for-production-use-000

# Security - allowed origins for API requests
# Patterns: https://example.com, https://*.example.com, http://localhost:*
FUZ_ALLOWED_ORIGINS=http://localhost:*

# Bootstrap token path (for initial admin account creation)
FUZ_BOOTSTRAP_TOKEN_PATH=.zzz/bootstrap_token

# AI provider API keys (optional, for remote providers)
SECRET_OPENAI_API_KEY=
SECRET_ANTHROPIC_API_KEY=
SECRET_GOOGLE_API_KEY=
39 changes: 39 additions & 0 deletions .env.production.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Production environment
# Copy to .env.production (or run: cargo xtask prod-setup)

# Zzz app directory (config, state, cache, runtime)
PUBLIC_ZZZ_DIR="./.zzz"

# Comma-separated filesystem paths Zzz can access
PUBLIC_ZZZ_SCOPED_DIRS=

# Server port — zzz_server reads ZZZ_PORT/--port (default 4460) and always
# binds loopback (no HOST override). PORT is read by the `zzz` CLI when
# picking the daemon port.
PORT=4460
DATABASE_URL=postgres://localhost/zzz

# Auth - cookie signing key (generate with: openssl rand -base64 32)
SECRET_FUZ_COOKIE_KEYS=CHANGE_ME_generate_with_openssl_rand_base64_32

# Security - allowed origins for API requests
FUZ_ALLOWED_ORIGINS=http://localhost:*

# Bootstrap token path (for initial admin account creation)
# FUZ_BOOTSTRAP_TOKEN_PATH=.zzz/bootstrap_token

# Frontend SvelteKit env vars (used by $env/static/public in constants.ts)
PUBLIC_ZZZ_SERVER_PROTOCOL=http
PUBLIC_ZZZ_SERVER_HOST=localhost
PUBLIC_ZZZ_SERVER_PORT=4460
PUBLIC_ZZZ_SERVER_API_PATH="/api"
PUBLIC_ZZZ_WEBSOCKET_URL=ws://localhost:4460/api/ws
PUBLIC_ZZZ_SERVER_PROXIED_PORT=4460

# Debug delay in milliseconds for API responses (0 = no delay)
PUBLIC_ZZZ_BACKEND_ARTIFICIAL_DELAY=0

# AI provider API keys (optional, for remote providers)
SECRET_OPENAI_API_KEY=
SECRET_ANTHROPIC_API_KEY=
SECRET_GOOGLE_API_KEY=
35 changes: 30 additions & 5 deletions .github/workflows/check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,23 +8,48 @@ on:
branches: [main]
pull_request:
branches: ['**']
# Allow manually re-running the check from the Actions tab.
workflow_dispatch:

# Cancel a PR's in-progress run when a new commit supersedes it; let main-branch
# runs finish so every commit on main stays verified.
concurrency:
group: check-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

# Least privilege: the check only reads the repo.
permissions:
contents: read

jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 15

strategy:
matrix:
node-version: ['22.15']
node-version: ['24.14']

steps:
- uses: actions/checkout@v2
# persist-credentials: false keeps the GITHUB_TOKEN out of .git/config, so a
# compromised build dependency can't read it. If you add a step that pushes
# via git (deploy, tag, generated commit), set this back to true or
# authenticate that step explicitly.
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
persist-credentials: false
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: ${{ matrix.node-version }}
cache: npm
- run: npm ci
- run: cp src/lib/server/.env.development.example .env.development
- run: cp src/lib/server/.env.production.example .env.production
- run: cp .env.development.example .env.development
- run: cp .env.production.example .env.production
- run: npx svelte-kit sync
- run: npx @fuzdev/gro check --workspace --build

# The cross-backend wire-contract suites (cross_backend_rust / _proxy) run
# against the Rust `zzz_server`. They need a sibling Rust workspace checkout, a
# Postgres service, and a cached cargo build, so they run locally
# (`npm run test:cross`) rather than in CI for now.
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ target/
*.pem
id_rsa

# Local (per-machine, never shared)
*.local
*.local.*

# Ignore
*.ignore
*.ignore.*
Expand All @@ -39,6 +43,9 @@ tmp/
# Workflow
/worktree

# Benchmark run artifacts (per-run, machine-specific timings)
/src/benchmarks/cross_impl.latest.json

# Os
.DS_Store
Thumbs.db
Loading