Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
f0f1805
docs: use compile-only cross-platform checks
jstar0 Jul 11, 2026
17564e9
feat: add transactional packed object resolver
jstar0 Jul 11, 2026
039e6b9
feat: add exact virtual rollout byte view
jstar0 Jul 11, 2026
9a7f1e8
feat: add durable append and copy-on-write sessions
jstar0 Jul 11, 2026
076d772
feat: add journaled recovery compaction and fallback
jstar0 Jul 11, 2026
35a53fc
feat: add shadow doctor benchmark and fs status
jstar0 Jul 11, 2026
5be10d2
feat: add Codex compatibility and route transactions
jstar0 Jul 11, 2026
3f51aa5
feat: add platform filesystem and tagged fuse host
jstar0 Jul 11, 2026
3352b87
feat: expose transparent filesystem command surface
jstar0 Jul 11, 2026
4589ffa
feat: add guarded filesystem service lifecycle
jstar0 Jul 11, 2026
a1ac76e
test: validate transparent filesystem engine preview
jstar0 Jul 11, 2026
dc07ab1
fix: require verified fuse mount before routing
jstar0 Jul 11, 2026
07661c2
test: measure cache-bypass preview performance
jstar0 Jul 11, 2026
2d90db7
feat: validate real fuse-t filesystem adapter
jstar0 Jul 11, 2026
ea04f2d
fix: sanitize native filesystem contracts
jstar0 Jul 11, 2026
34a83a6
fix: preserve native fallback during client quarantine
jstar0 Jul 12, 2026
aac49d9
docs: record macOS namespace compatibility boundary
jstar0 Jul 12, 2026
a1944d3
feat: harden canonical session namespace and recovery
jstar0 Jul 13, 2026
59d169c
fix: follow canonical session symlinks during activation
jstar0 Jul 13, 2026
f7c2e29
fix: ignore orphaned desktop app servers during activation
jstar0 Jul 13, 2026
f7cf369
fix: drain real-home app servers before activation
jstar0 Jul 13, 2026
7ce4940
fix: make canonical session cutovers fail closed
jstar0 Jul 14, 2026
2724fe7
fix: serialize canonical migration cutovers
jstar0 Jul 14, 2026
c41e4ac
fix: restore managed routes after rollback failure
jstar0 Jul 14, 2026
045eea1
fix: make canonical rollback retirement restart-safe
jstar0 Jul 14, 2026
cc1c516
docs: align transparent filesystem plan with implementation
jstar0 Jul 14, 2026
1d043aa
docs: record managed-session host reboot canary
jstar0 Jul 14, 2026
7f909cd
fix: recover interrupted filesystem transactions
jstar0 Jul 14, 2026
e366ae3
fix: harden macOS transparent session writes
jstar0 Jul 15, 2026
238930f
docs: record synchronous macOS canary evidence
jstar0 Jul 15, 2026
055d2db
feat: add native transparent session filesystem
jstar0 Jul 18, 2026
fc62a49
chore: establish repository collaboration standards
jstar0 Jul 18, 2026
1120bf2
ci: align platform gates with validated support
jstar0 Jul 18, 2026
bdc520c
feat: complete native FSKit transparent session canary
jstar0 Jul 23, 2026
9cb52fe
chore(release): prepare v0.3.0-beta.1
jstar0 Jul 23, 2026
bbefe61
ci: update release actions to Node 24
jstar0 Jul 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
* @jstar0

/docs/superpowers/specs/ @jstar0
/internal/fold/ @jstar0
/internal/pack/ @jstar0
/internal/storage/ @jstar0
/internal/vfs/ @jstar0
/platform/darwin/fskit/ @jstar0
58 changes: 58 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
name: Bug report
description: Report a reproducible CodexFold defect using synthetic or redacted data.
title: "bug: "
labels: [bug]
body:
- type: markdown
attributes:
value: Do not attach real Codex rollouts, databases, credentials, private prompts, or unredacted logs. Use GitHub Security Advisories for vulnerabilities.
- type: input
id: version
attributes:
label: Version or commit
placeholder: v0.2.1 or commit SHA
validations:
required: true
- type: dropdown
id: platform
attributes:
label: Platform
options:
- macOS
- Linux
- Windows
- Other
validations:
required: true
- type: textarea
id: behavior
attributes:
label: Observed behavior
description: Include the command, sanitized error, and whether storage-only or filesystem-preview behavior was involved.
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected behavior
validations:
required: true
- type: textarea
id: reproduce
attributes:
label: Synthetic reproduction
description: Provide minimal steps using generated or redacted fixtures.
validations:
required: true
- type: textarea
id: verification
attributes:
label: Verification already attempted
description: List doctor, tests, hashes, restart checks, or rollback attempts without private data.
- type: checkboxes
id: hygiene
attributes:
label: Data hygiene
options:
- label: I removed real session content, credentials, private prompts, local paths, and unredacted logs.
required: true
5 changes: 5 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: Security vulnerability
url: https://github.com/samekind/codexfold/security/advisories/new
about: Report vulnerabilities and sensitive findings privately.
29 changes: 29 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: Feature request
description: Propose a product behavior or engineering improvement.
title: "feat: "
labels: [enhancement]
body:
- type: textarea
id: problem
attributes:
label: Problem
description: Describe the concrete workflow or limitation, not only the proposed implementation.
validations:
required: true
- type: textarea
id: outcome
attributes:
label: Required outcome
description: State observable acceptance criteria.
validations:
required: true
- type: textarea
id: constraints
attributes:
label: Safety and compatibility constraints
description: Note byte identity, rollback, privacy, platform, performance, or release-gate implications.
- type: textarea
id: alternatives
attributes:
label: Alternatives considered
description: Include simpler options and why they are insufficient.
21 changes: 21 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
## Outcome

Describe the user-visible or maintainer-visible result.

## Safety Impact

Describe effects on session bytes, routing, storage, filesystem behavior, service lifecycle, compatibility, and rollback. Write `None` only when none apply.

## Verification

List the exact commands and real environments used. Distinguish unit, synthetic, mounted-adapter, real-client, restart, and production evidence.

## Checklist

- [ ] The change matches the product contract and does not weaken a release gate.
- [ ] Tests cover the behavior or regression.
- [ ] `go test ./...`, race tests, vet, formatting, and required cross-builds pass.
- [ ] Platform-specific validation was run when platform code changed.
- [ ] Documentation and readiness language match the available evidence.
- [ ] No real rollout, credential, private prompt, local path, database, log, build artifact, or Xcode user state is included.
- [ ] Production Codex data and production service definitions were not used for development validation.
95 changes: 91 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,108 @@ on:
push:
branches: [main]
pull_request:
workflow_dispatch:

permissions:
contents: read

concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
quality:
name: quality
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7.0.1
- uses: actions/setup-go@v7.0.0
with:
go-version-file: go.mod
cache: true
- name: Check formatting
shell: bash
run: |
files="$(gofmt -l .)"
if [ -n "$files" ]; then
printf '%s\n' "$files"
exit 1
fi
- name: Check module files
run: |
go mod tidy
git diff --exit-code -- go.mod go.sum
- name: Check release metadata
run: ./scripts/check-release.sh
- run: go vet ./...

test:
name: test (${{ matrix.os }})
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
os: [ubuntu-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
- uses: actions/checkout@v7.0.1
- uses: actions/setup-go@v7.0.0
with:
go-version: "1.26.x"
go-version-file: go.mod
cache: true
- run: go test ./... -count=1
- run: go build ./cmd/codexfold
- name: Test native FSKit cache implementation
if: runner.os == 'macOS'
run: ./scripts/test-native-fskit-cache.sh

release-config:
name: release-config
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7.0.1
- uses: goreleaser/goreleaser-action@v7.2.3
with:
distribution: goreleaser
version: "~> v2"
args: check

windows-compile:
name: windows-compile
runs-on: windows-latest
steps:
- uses: actions/checkout@v7.0.1
- uses: actions/setup-go@v7.0.0
with:
go-version-file: go.mod
cache: true
- name: Compile all test packages without claiming runtime validation
run: go test ./... -run '^$' -count=1
- run: go build ./cmd/codexfold

race:
name: race
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7.0.1
- uses: actions/setup-go@v7.0.0
with:
go-version-file: go.mod
cache: true
- run: go test -race ./... -count=1

cross-build:
name: cross-build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7.0.1
- uses: actions/setup-go@v7.0.0
with:
go-version-file: go.mod
cache: true
- name: Build Linux and Windows artifacts
shell: bash
run: |
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o "$RUNNER_TEMP/codexfold-linux-amd64" ./cmd/codexfold
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o "$RUNNER_TEMP/codexfold-windows-amd64.exe" ./cmd/codexfold
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go test -c -o "$RUNNER_TEMP/codexfold-testfs-linux.test" ./internal/testfs
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go test -c -o "$RUNNER_TEMP/codexfold-testfs-windows.test.exe" ./internal/testfs
43 changes: 43 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Release

on:
push:
tags:
- "v*"

permissions:
contents: write

jobs:
release:
name: release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7.0.1
with:
fetch-depth: 0
- uses: actions/setup-go@v7.0.0
with:
go-version-file: go.mod
cache: true
- name: Require a versioned main-branch commit
shell: bash
run: |
git fetch origin main:refs/remotes/origin/main
release_commit=$(git rev-list -n 1 "$GITHUB_REF_NAME")
git merge-base --is-ancestor "$release_commit" origin/main
./scripts/check-release.sh "$GITHUB_REF_NAME"
- name: Verify release source
run: |
go test ./... -count=1
go vet ./...
- name: Publish archives and checksums
uses: goreleaser/goreleaser-action@v7.2.3
with:
distribution: goreleaser
version: "~> v2"
args: >-
release --clean
--release-notes=docs/releases/${{ github.ref_name }}.md
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
/codexfold
/codexfold.exe
/dist/
/*.sqlite
/*.sqlite-shm
/*.sqlite-wal
*.prof
*.test
.DS_Store
.worktrees/
xcuserdata/
*.xcuserstate
53 changes: 53 additions & 0 deletions .goreleaser.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
version: 2

project_name: codexfold

builds:
- id: codexfold
main: ./cmd/codexfold
binary: codexfold
env:
- CGO_ENABLED=0
goos:
- darwin
- linux
- windows
goarch:
- amd64
- arm64
flags:
- -trimpath
ldflags:
- -s -w -X github.com/samekind/codexfold/internal/cli.Version={{ .Version }}

archives:
- id: codexfold
formats:
- tar.gz
format_overrides:
- goos: windows
formats:
- zip
name_template: >-
{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_
{{- if eq .Arch "amd64" }}x86_64
{{- else }}{{ .Arch }}{{ end }}
files:
- LICENSE
- NOTICE
- README.md
- CHANGELOG.md

checksum:
name_template: checksums.txt

snapshot:
version_template: "{{ incpatch .Version }}-next"

changelog:
disable: true

release:
prerelease: auto

report_sizes: true
Loading