Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
395ee7c
feat: rewrite cleanmodels in Go
james-gre Apr 14, 2026
3d3c236
ci: replace Prolog build with Go CI pipeline
james-gre Apr 21, 2026
9f67ed8
ci: disable go module cache (no external deps)
james-gre Apr 21, 2026
abb366b
ci: bump all actions to Node.js 24 versions
james-gre Apr 21, 2026
10ef316
docs: rewrite README for the Go version
james-gre Apr 21, 2026
7c06963
feat: implement all missing repair flags for Qt GUI compatibility
james-gre Apr 21, 2026
77ad787
feat: add report subcommand for user bug reports
james-gre Apr 22, 2026
e0ed90f
chore: remove duplicate release.yml workflow
james-gre Apr 22, 2026
99fd014
feat: add short flag aliases for CLI usability
james-gre Apr 22, 2026
4cf2a9a
docs: expand README with usage guidance
james-gre Apr 23, 2026
bca5b8f
chore: remove redundant nwn_development.zip (extracted contents alrea…
james-gre Apr 23, 2026
42f3b12
fix: separate compile/decompile actions from repair count
james-gre Apr 24, 2026
ae987b5
feat: add Jasperre expansion checks, repairs, and cleanup
james-gre Apr 25, 2026
a6fe3ca
feat: bake tangents/bitangents at compile time via Mikktspace
james-gre Apr 26, 2026
01dfbc6
feat: refine tangent compiler vertex dedup and gating
james-gre Apr 26, 2026
a9610ed
feat: chamfer + dynamic-water repairs and supporting primitives
james-gre Apr 26, 2026
0823082
test: expand oracle fixtures and consolidate node lookup
james-gre Apr 26, 2026
403af4f
docs: add CLEAN/DECOMPILE/COMPILE process docs
james-gre Apr 26, 2026
8c13e70
chore: migrate to PRODUCT.md/DESIGN.md and address /impeccable audit
james-gre Apr 26, 2026
e36095b
chore: remove orphaned build/cleanmodels-cli.rc
plenarius Apr 26, 2026
c7d2327
perf(mdl): buffer binary reads and ASCII writes
plenarius Apr 26, 2026
e485c8e
perf(mdl): replace fmt.Sprintf with strconv appenders in writer hot p…
plenarius Apr 26, 2026
75a5c9e
feat(cmd): add env-driven pprof hook for ad-hoc profiling
plenarius Apr 26, 2026
023c493
feat(wasm): add WebAssembly build with browser demo
plenarius Apr 26, 2026
2d1d677
fix(compiler): preserve danglymesh constraints + heaviest-bone-first …
plenarius May 2, 2026
9b31be1
fix(cli): make --verbose actually verbose; surface warnings on batch …
plenarius May 2, 2026
2e0c4a0
fix(cli): only stream decompiled ASCII to stdout in decompile mode
plenarius May 2, 2026
0391b8c
docs(release): point at GitHub release pages instead of mirroring dow…
plenarius May 2, 2026
5490e7c
fix(pivots): only repair walkmesh pivots that actually fail constraints
plenarius May 14, 2026
e27d1d7
fix(pivots): rebase walkmesh verts and children when the pivot is reb…
plenarius May 15, 2026
959548b
fix(cli): decompile passes ASCII input through and keeps stdout clean
plenarius Jun 7, 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
212 changes: 0 additions & 212 deletions .github/workflows/build.yml

This file was deleted.

137 changes: 137 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
name: CI

on:
push:
branches: [main, v4-go-rewrite]
tags: ["v*"]
pull_request:
branches: [main]

permissions:
contents: read

jobs:
test:
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
- uses: actions/setup-go@v6
with:
go-version-file: go.mod
cache: false

- name: Vet
run: go vet ./...

- name: Test
run: go test -race -count=1 ./...

release:
if: startsWith(github.ref, 'refs/tags/v')
needs: test
runs-on: ubuntu-latest
permissions:
contents: write
strategy:
matrix:
include:
- goos: linux
goarch: amd64
- goos: linux
goarch: arm64
- goos: darwin
goarch: amd64
- goos: darwin
goarch: arm64
- goos: windows
goarch: amd64
steps:
- uses: actions/checkout@v6
- uses: actions/setup-go@v6
with:
go-version-file: go.mod
cache: false

- name: Build
env:
GOOS: ${{ matrix.goos }}
GOARCH: ${{ matrix.goarch }}
CGO_ENABLED: "0"
VERSION_TAG: ${{ github.ref_name }}
CLIENT_KEY: ${{ secrets.REPORT_CLIENT_KEY }}
run: |
EXT=""
if [ "${GOOS}" = "windows" ]; then EXT=".exe"; fi
go build -trimpath \
-ldflags="-s -w -X main.version=${VERSION_TAG} -X main.clientKey=${CLIENT_KEY}" \
-o "cleanmodels-${GOOS}-${GOARCH}${EXT}" \
./cmd/cleanmodels

- name: Compress
run: |
EXT=""
if [ "${{ matrix.goos }}" = "windows" ]; then EXT=".exe"; fi
ARCHIVE="cleanmodels-${{ matrix.goos }}-${{ matrix.goarch }}.zip"
zip "${ARCHIVE}" "cleanmodels-${{ matrix.goos }}-${{ matrix.goarch }}${EXT}"

- name: Upload artifact
uses: actions/upload-artifact@v6
with:
name: cleanmodels-${{ matrix.goos }}-${{ matrix.goarch }}
path: "*.zip"

wasm:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-go@v6
with:
go-version-file: go.mod
cache: false

- name: Build cleanmodels.wasm
env:
GOOS: js
GOARCH: wasm
VERSION_TAG: ${{ github.ref_name }}
run: |
mkdir -p dist/wasm
go build -trimpath \
-ldflags="-s -w -X main.version=${VERSION_TAG}" \
-o dist/wasm/cleanmodels.wasm \
./cmd/cleanmodels-wasm
cp "$(go env GOROOT)/lib/wasm/wasm_exec.js" dist/wasm/wasm_exec.js
ls -la dist/wasm/

- name: Package wasm bundle
if: startsWith(github.ref, 'refs/tags/v')
working-directory: dist/wasm
run: zip ../../cleanmodels-wasm.zip cleanmodels.wasm wasm_exec.js

- name: Upload wasm artifact
if: startsWith(github.ref, 'refs/tags/v')
uses: actions/upload-artifact@v6
with:
name: cleanmodels-wasm
path: cleanmodels-wasm.zip

publish:
if: startsWith(github.ref, 'refs/tags/v')
needs: [release, wasm]
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Download all artifacts
uses: actions/download-artifact@v7
with:
merge-multiple: true

- name: Create release
uses: softprops/action-gh-release@v3
with:
generate_release_notes: true
files: "*.zip"
21 changes: 21 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Binaries
/cleanmodels
/cleanmodels.exe
dist/

# Test output
*.test
coverage.out

# IDE
.idea/
.vscode/
*.swp
*.swo

# OS
.DS_Store
Thumbs.db

# Dependency
vendor/
Loading
Loading