Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
30 changes: 15 additions & 15 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
timeout-minutes: 5
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7

- name: Check for stale/broken repo slug references
run: ./scripts/check-repo-refs.sh
Expand All @@ -34,18 +34,18 @@ jobs:
timeout-minutes: 25
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7

- name: Set up Go
uses: actions/setup-go@v5
uses: actions/setup-go@v7
with:
go-version-file: go.mod
cache: true

- name: Set up Node
uses: actions/setup-node@v4
uses: actions/setup-node@v7
with:
node-version: "20"
node-version: "22"
cache: npm
cache-dependency-path: web/package-lock.json

Expand Down Expand Up @@ -89,10 +89,10 @@ jobs:
timeout-minutes: 20
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7

- name: Set up Go
uses: actions/setup-go@v5
uses: actions/setup-go@v7
with:
go-version-file: go.mod
cache: true
Expand All @@ -109,12 +109,12 @@ jobs:
timeout-minutes: 15
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7

- name: Set up Node
uses: actions/setup-node@v4
uses: actions/setup-node@v7
with:
node-version: "20"
node-version: "22"
cache: npm
cache-dependency-path: web/package-lock.json

Expand All @@ -137,23 +137,23 @@ jobs:
timeout-minutes: 15
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7

- name: Set up Go
uses: actions/setup-go@v5
uses: actions/setup-go@v7
with:
go-version-file: go.mod
cache: true

- name: Set up Node
uses: actions/setup-node@v4
uses: actions/setup-node@v7
with:
node-version: "20"
node-version: "22"
cache: npm
cache-dependency-path: web/package-lock.json

- name: Set up Python
uses: actions/setup-python@v5
uses: actions/setup-python@v7
with:
python-version: "3.12"

Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,10 @@ jobs:
timeout-minutes: 15
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7

- name: Set up Python
uses: actions/setup-python@v5
uses: actions/setup-python@v7
with:
python-version: "3.12"
cache: pip
Expand All @@ -56,7 +56,7 @@ jobs:

- name: Upload Pages artifact
if: github.event_name != 'pull_request'
uses: actions/upload-pages-artifact@v3
uses: actions/upload-pages-artifact@v5
with:
path: site

Expand All @@ -71,4 +71,4 @@ jobs:
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
uses: actions/deploy-pages@v5
4 changes: 2 additions & 2 deletions .github/workflows/govulncheck.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@ jobs:
timeout-minutes: 15
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7

- name: Set up Go
uses: actions/setup-go@v5
uses: actions/setup-go@v7
with:
go-version-file: go.mod
cache: true
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,20 +23,20 @@ jobs:
timeout-minutes: 60
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7
with:
fetch-depth: 0

- name: Set up Go
uses: actions/setup-go@v5
uses: actions/setup-go@v7
with:
go-version-file: go.mod
cache: true

- name: Set up Node
uses: actions/setup-node@v4
uses: actions/setup-node@v7
with:
node-version: "20"
node-version: "22"
cache: npm
cache-dependency-path: web/package-lock.json

Expand Down Expand Up @@ -227,7 +227,7 @@ jobs:
PY

- name: Create GitHub Release
uses: softprops/action-gh-release@v2
uses: softprops/action-gh-release@v3
with:
tag_name: ${{ steps.ver.outputs.tag }}
name: SLMCode ${{ steps.ver.outputs.tag }}
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ make bootstrap # installs web/ npm deps and builds the Studio UI → cmd/
make build # → ./bin/slmcode
```

Needs Go 1.23+. `make bootstrap` additionally needs Node.js 18+ on your PATH — nothing else
Needs Go 1.23+. `make bootstrap` additionally needs Node.js 22+ on your PATH — nothing else
in SLMCode does; it fails with an actionable message if `npm` is missing. `make install-user`
puts the binary in `~/.local/bin`; `make install-system` installs system-wide.

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ Details: **[docs/install-offline.md](docs/install-offline.md)**

```bash
git clone https://github.com/UnicoLab/smlcode.git && cd smlcode
make bootstrap # needs Node 18+: installs web/ deps and builds the Studio UI in
make bootstrap # needs Node 22+: installs web/ deps and builds the Studio UI in
make install-user # → ~/.local/bin/slmcode
```

Expand Down
2 changes: 1 addition & 1 deletion docs/quickstart.md
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ Pick your fighter. Both talk to the same harness. 🥊
saying the UI has not been built, and prints the same on startup. Fix:

```bash
make bootstrap # installs web/ npm deps (needs Node 18+), then builds the UI
make bootstrap # installs web/ npm deps (needs Node 22+), then builds the UI
make build
```

Expand Down
2 changes: 1 addition & 1 deletion docs/studio.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ Released binaries ship it already built; a binary you built yourself does not ha
run:

```bash
make bootstrap # installs web/'s npm dependencies (Node 18+), then builds the UI
make bootstrap # installs web/'s npm dependencies (Node 22+), then builds the UI
make build
```

Expand Down
2 changes: 1 addition & 1 deletion docs/troubleshooting.md
Original file line number Diff line number Diff line change
Expand Up @@ -383,7 +383,7 @@ The binary embeds no SPA, so the server is serving the placeholder page compiled
the CLI, the TUI and the whole Studio API are working. Build it:

```bash
make bootstrap # installs web/ npm deps (needs Node 18+), then builds the UI
make bootstrap # installs web/ npm deps (needs Node 22+), then builds the UI
make build
```

Expand Down
23 changes: 23 additions & 0 deletions web/eslint.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,29 @@ export default tseslint.config(
'react-hooks/rules-of-hooks': 'error',
'react-hooks/exhaustive-deps': 'error',

// ── React Compiler rules, deliberately off for now ──
//
// eslint-plugin-react-hooks v7 turns on a new family of rules derived
// from the React Compiler. They flag 42 EXISTING patterns across Studio —
// not regressions, not new defects, just constructs the compiler cannot
// prove safe to memoize (setState inside an effect being by far the most
// common).
//
// They are off rather than downgraded to warnings because a warning
// nobody can act on 42 times is noise that trains people to ignore the
// whole report. Adopting them is a real refactor of state flow across the
// app, and it is its own piece of work — doing it inside a dependency
// bump would put an unreviewed rewrite of every effect in the same commit
// as a version number.
//
// The two rules above — the ones that caught real shipped bugs — stay
// errors, so this upgrade does not weaken the gate by one rule.
'react-hooks/set-state-in-effect': 'off',
'react-hooks/refs': 'off',
'react-hooks/purity': 'off',
'react-hooks/immutability': 'off',
'react-hooks/preserve-manual-memoization': 'off',

// A bare `catch {}` (or `catch (e) {}` with an empty body) is how 37 API
// failures became invisible. Empty blocks must carry a comment saying
// why swallowing is correct.
Expand Down
Loading
Loading