Skip to content

Commit 2158dec

Browse files
authored
Merge pull request #45 from m0n0x41d/dev
6.0.0
2 parents d26e0ba + 29895cb commit 2158dec

4,799 files changed

Lines changed: 980996 additions & 15292 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 62 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ on:
44
pull_request:
55
branches: [main, dev]
66
push:
7-
branches: [main, dev]
7+
branches: [main]
88

99
concurrency:
1010
group: ci-${{ github.ref }}
@@ -15,33 +15,70 @@ jobs:
1515
name: Test & Build
1616
runs-on: ubuntu-latest
1717
steps:
18-
- uses: actions/checkout@v4
18+
- uses: actions/checkout@v6
1919
with:
2020
submodules: true
2121

22-
- uses: actions/setup-go@v5
22+
- uses: actions/setup-go@v6
2323
with:
24-
go-version: '1.24'
25-
cache-dependency-path: src/mcp/go.sum
24+
go-version: '1.25'
25+
cache-dependency-path: go.sum
26+
27+
- name: Prepare desktop embed placeholder
28+
run: |
29+
mkdir -p desktop/frontend/dist
30+
printf 'ci placeholder\n' > desktop/frontend/dist/.ci-placeholder
2631
2732
- name: Check go mod tidy
28-
working-directory: src/mcp
2933
run: |
3034
go mod tidy
3135
git diff --exit-code go.mod go.sum || (echo "go.mod/go.sum not tidy — run 'go mod tidy'" && exit 1)
3236
33-
- name: Run tests
34-
working-directory: src/mcp
35-
run: go test -v -race -coverprofile=coverage.out ./...
37+
- name: Run race tests
38+
run: |
39+
packages=$(go list ./... | grep -v /desktop)
40+
41+
while IFS= read -r pkg; do
42+
echo "::group::go test -race $pkg"
43+
go test -v -race "$pkg"
44+
echo "::endgroup::"
45+
done <<EOF
46+
$packages
47+
EOF
48+
49+
- name: Collect coverage
50+
run: |
51+
packages=$(go list ./... | grep -v /desktop)
52+
profile=coverage.out
53+
tmp_profile=$(mktemp)
54+
found_test_package=false
55+
56+
echo 'mode: set' > "$profile"
57+
58+
while IFS= read -r pkg; do
59+
dir=$(go list -f '{{.Dir}}' "$pkg")
60+
if ! find "$dir" -maxdepth 1 -name '*_test.go' | grep -q .; then
61+
continue
62+
fi
63+
64+
go test -v -coverprofile="$tmp_profile" "$pkg"
65+
tail -n +2 "$tmp_profile" >> "$profile"
66+
found_test_package=true
67+
done <<EOF
68+
$packages
69+
EOF
70+
71+
if [ "$found_test_package" = false ]; then
72+
echo "no test packages found for coverage collection" >&2
73+
exit 1
74+
fi
3675
3776
- name: Build binary
38-
working-directory: src/mcp
39-
run: go build -o quint-code -trimpath .
77+
run: go build -o haft -trimpath ./cmd/haft/
4078

4179
- name: Smoke test — binary starts and responds to MCP initialize
42-
working-directory: src/mcp
4380
run: |
44-
RESPONSE=$(echo '{"jsonrpc":"2.0","method":"initialize","id":1,"params":{}}' | timeout 5 ./quint-code serve 2>/dev/null || true)
81+
RESPONSE=$(echo '{"jsonrpc":"2.0","method":"initialize","id":1,"params":{}}' | timeout 5 ./haft serve 2>/dev/null || true)
4582
if echo "$RESPONSE" | grep -q '"protocolVersion"'; then
4683
echo "Smoke test passed: MCP server responds correctly"
4784
else
@@ -51,27 +88,31 @@ jobs:
5188
fi
5289
5390
- name: Upload coverage
54-
uses: codecov/codecov-action@v4
91+
uses: codecov/codecov-action@v5
5592
with:
56-
file: src/mcp/coverage.out
93+
file: coverage.out
5794
fail_ci_if_error: false
5895
continue-on-error: true
5996

6097
lint:
6198
name: Lint
6299
runs-on: ubuntu-latest
63100
steps:
64-
- uses: actions/checkout@v4
101+
- uses: actions/checkout@v6
65102
with:
66103
submodules: true
67104

68-
- uses: actions/setup-go@v5
105+
- uses: actions/setup-go@v6
69106
with:
70-
go-version: '1.24'
71-
cache-dependency-path: src/mcp/go.sum
107+
go-version: '1.25'
108+
cache-dependency-path: go.sum
109+
110+
- name: Prepare desktop embed placeholder
111+
run: |
112+
mkdir -p desktop/frontend/dist
113+
printf 'ci placeholder\n' > desktop/frontend/dist/.ci-placeholder
72114
73115
- uses: golangci/golangci-lint-action@v7
74116
with:
75-
version: v2.1.6
76-
working-directory: src/mcp
117+
version: v2.11.4
77118
args: --timeout=5m

.github/workflows/install-test.yml

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,33 +12,32 @@ jobs:
1212
name: Install (Linux)
1313
runs-on: ubuntu-latest
1414
steps:
15-
- uses: actions/checkout@v4
15+
- uses: actions/checkout@v6
1616

17-
- name: Test install.sh (source build fallback)
18-
run: |
19-
# No release exists for this commit, so install.sh falls back to source build
20-
# This tests: clone, go build, PATH detection
21-
bash install.sh
17+
- uses: actions/setup-go@v6
18+
with:
19+
go-version: '1.25'
20+
21+
- name: Build haft
22+
run: go build -o haft -trimpath ./cmd/haft/
2223

2324
- name: Verify binary works
2425
run: |
25-
export PATH="$HOME/.local/bin:$PATH"
26-
quint-code --help || quint-code version || echo "Binary runs"
26+
./haft version || echo "Binary runs"
2727
2828
install-macos:
2929
name: Install (macOS)
3030
runs-on: macos-latest
3131
steps:
32-
- uses: actions/checkout@v4
32+
- uses: actions/checkout@v6
3333

34-
- uses: actions/setup-go@v5
34+
- uses: actions/setup-go@v6
3535
with:
36-
go-version: '1.24'
36+
go-version: '1.25'
3737

38-
- name: Test install.sh (source build fallback)
39-
run: bash install.sh
38+
- name: Build haft
39+
run: go build -o haft -trimpath ./cmd/haft/
4040

4141
- name: Verify binary works
4242
run: |
43-
export PATH="$HOME/.local/bin:$PATH"
44-
quint-code --help || quint-code version || echo "Binary runs"
43+
./haft version || echo "Binary runs"

.github/workflows/release.yml

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,34 +13,55 @@ jobs:
1313
name: Pre-release tests
1414
runs-on: ubuntu-latest
1515
steps:
16-
- uses: actions/checkout@v4
16+
- uses: actions/checkout@v6
1717
with:
1818
submodules: true
1919
fetch-depth: 0
2020

21-
- uses: actions/setup-go@v5
21+
- uses: actions/setup-go@v6
2222
with:
23-
go-version: '1.24'
24-
cache-dependency-path: src/mcp/go.sum
23+
go-version: '1.25'
24+
cache-dependency-path: go.sum
25+
26+
- name: Prepare desktop embed placeholder
27+
run: |
28+
mkdir -p desktop/frontend/dist
29+
printf 'ci placeholder\n' > desktop/frontend/dist/.ci-placeholder
2530
2631
- name: Run tests
27-
working-directory: src/mcp
28-
run: go test -race ./...
32+
run: |
33+
packages=$(go list ./... | grep -v /desktop)
34+
35+
while IFS= read -r pkg; do
36+
echo "::group::go test -race $pkg"
37+
go test -v -race "$pkg"
38+
echo "::endgroup::"
39+
done <<EOF
40+
$packages
41+
EOF
2942
3043
release:
3144
name: Release
3245
needs: test
3346
runs-on: ubuntu-latest
3447
steps:
35-
- uses: actions/checkout@v4
48+
- uses: actions/checkout@v6
3649
with:
3750
submodules: true
3851
fetch-depth: 0
3952

40-
- uses: actions/setup-go@v5
53+
- uses: actions/setup-go@v6
54+
with:
55+
go-version: '1.25'
56+
cache-dependency-path: go.sum
57+
58+
- uses: actions/setup-node@v6
4159
with:
42-
go-version: '1.24'
43-
cache-dependency-path: src/mcp/go.sum
60+
node-version: '24'
61+
cache: 'npm'
62+
cache-dependency-path: |
63+
desktop/frontend/package-lock.json
64+
tui/package-lock.json
4465
4566
- uses: goreleaser/goreleaser-action@v6
4667
with:

.github/workflows/update-fpf.yml

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@ jobs:
1313
update-fpf:
1414
runs-on: ubuntu-latest
1515
steps:
16-
- uses: actions/checkout@v4
16+
- uses: actions/checkout@v6
1717
with:
1818
submodules: true
1919
fetch-depth: 0
2020

21-
- uses: actions/setup-go@v5
21+
- uses: actions/setup-go@v6
2222
with:
23-
go-version: '1.24'
23+
go-version: '1.25'
2424

2525
- name: Get current submodule commit
2626
id: current
@@ -51,10 +51,9 @@ jobs:
5151
5252
- name: Rebuild FTS5 index
5353
if: steps.check.outputs.changed == 'true'
54-
working-directory: src/mcp
5554
run: |
5655
NEW_SHA=${{ steps.check.outputs.new_sha }}
57-
go run ./cmd/indexer/ ../../data/FPF/FPF-Spec.md ./cmd/fpf.db "$NEW_SHA"
56+
go run ./cmd/indexer/ data/FPF/FPF-Spec.md internal/cli/fpf.db "$NEW_SHA"
5857
5958
- name: Create pull request
6059
if: steps.check.outputs.changed == 'true'
@@ -69,7 +68,7 @@ jobs:
6968
git config user.email "github-actions[bot]@users.noreply.github.com"
7069
7170
git checkout -b "$BRANCH"
72-
git add data/FPF src/mcp/cmd/fpf.db
71+
git add data/FPF internal/cli/fpf.db
7372
git commit -m "chore: update FPF spec index to ${SHORT}
7473
7574
FPF upstream: ${OLD_SHORT} → ${SHORT}
@@ -83,7 +82,7 @@ jobs:
8382
8483
Submodule \`data/FPF\` updated to [\`${SHORT}\`](https://github.com/ailev/FPF/commit/$NEW_SHA).
8584
86-
FTS5 index rebuilt: \`src/mcp/cmd/fpf.db\`
85+
FTS5 index rebuilt: \`internal/cli/fpf.db\`
8786
8887
**Previous:** [\`${OLD_SHORT}\`](https://github.com/ailev/FPF/commit/$OLD_SHA)
8988
**New:** [\`${SHORT}\`](https://github.com/ailev/FPF/commit/$NEW_SHA)" \

.gitignore

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,32 @@
11
.quint
2+
.haft
23
.context
34
.mcp.json
4-
.codex/config.toml
55
quint-mcp.json
66
src/mcp/quint-code
77
src/mcp/quint-mcp
88
TODO.md
9-
skills
9+
/skills/
10+
/haft
11+
12+
.DS_Store
13+
.task/
14+
tmp/
15+
__pycache__/
16+
node_modules/
17+
dist/
18+
build/
19+
.cache/
20+
*.log
21+
coverage.out
22+
23+
.claude/
24+
.codex/
25+
.crush/
26+
.cursor/
27+
.zenflow/
28+
desktop/desktop
29+
.zenflow/
30+
.zenflow/**
31+
DESIGN.md
32+
.playwright-mcp/

0 commit comments

Comments
 (0)