Skip to content

Commit 20670ef

Browse files
feat: Initial release of Epilog Zing macOS printer driver
A native CUPS printer driver for Epilog Zing laser engravers. Features: - Raster engraving with adjustable power and speed - 3D greyscale engraving (8-bit power modulation) - Vector cutting support via HPGL - Multiple resolutions (100-1000 DPI) - Universal binary (Apple Silicon + Intel) Supported models: - Epilog Zing 16 (16" x 12") - Epilog Zing 24 (24" x 12") 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
0 parents  commit 20670ef

28 files changed

Lines changed: 3634 additions & 0 deletions

.github/workflows/ci.yml

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main, master]
6+
pull_request:
7+
branches: [main, master]
8+
9+
concurrency:
10+
group: ${{ github.workflow }}-${{ github.ref }}
11+
cancel-in-progress: true
12+
13+
jobs:
14+
build:
15+
name: Build & Test
16+
runs-on: macos-14 # ARM64 runner (M1)
17+
18+
steps:
19+
- name: Checkout
20+
uses: actions/checkout@v4
21+
22+
- name: Setup Swift
23+
uses: swift-actions/setup-swift@v2
24+
with:
25+
swift-version: "5.9"
26+
27+
- name: Cache Swift packages
28+
uses: actions/cache@v4
29+
with:
30+
path: .build
31+
key: ${{ runner.os }}-spm-${{ hashFiles('Package.swift') }}
32+
restore-keys: |
33+
${{ runner.os }}-spm-
34+
35+
- name: Build (Debug)
36+
run: swift build -v
37+
38+
- name: Run Tests
39+
run: swift test -v
40+
41+
- name: Build (Release - ARM64)
42+
run: swift build -c release --arch arm64 -v
43+
44+
- name: Verify Binary
45+
run: |
46+
file .build/arm64-apple-macosx/release/rastertoepiloz
47+
.build/arm64-apple-macosx/release/rastertoepiloz --help 2>&1 || true
48+
49+
build-universal:
50+
name: Build Universal Binary
51+
runs-on: macos-14
52+
needs: build
53+
54+
steps:
55+
- name: Checkout
56+
uses: actions/checkout@v4
57+
58+
- name: Setup Swift
59+
uses: swift-actions/setup-swift@v2
60+
with:
61+
swift-version: "5.9"
62+
63+
- name: Cache Swift packages
64+
uses: actions/cache@v4
65+
with:
66+
path: .build
67+
key: ${{ runner.os }}-spm-${{ hashFiles('Package.swift') }}
68+
restore-keys: |
69+
${{ runner.os }}-spm-
70+
71+
- name: Build Universal Binary (arm64 + x86_64)
72+
run: swift build -c release --arch arm64 --arch x86_64
73+
74+
- name: Verify Universal Binary
75+
run: |
76+
file .build/apple/Products/Release/rastertoepiloz
77+
lipo -info .build/apple/Products/Release/rastertoepiloz
78+
79+
- name: Upload Build Artifact
80+
uses: actions/upload-artifact@v4
81+
with:
82+
name: rastertoepiloz-universal
83+
path: .build/apple/Products/Release/rastertoepiloz
84+
retention-days: 7
85+
86+
lint:
87+
name: Lint
88+
runs-on: macos-14
89+
90+
steps:
91+
- name: Checkout
92+
uses: actions/checkout@v4
93+
94+
- name: Check Swift format
95+
run: |
96+
# Verify Package.swift is valid
97+
swift package describe

.github/workflows/release.yml

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v[0-9]+.[0-9]+.[0-9]+'
7+
- 'v[0-9]+.[0-9]+.[0-9]+-*'
8+
9+
permissions:
10+
contents: write
11+
12+
jobs:
13+
build-release:
14+
name: Build Release
15+
runs-on: macos-14
16+
17+
steps:
18+
- name: Checkout
19+
uses: actions/checkout@v4
20+
21+
- name: Setup Swift
22+
uses: swift-actions/setup-swift@v2
23+
with:
24+
swift-version: "5.9"
25+
26+
- name: Get Version
27+
id: version
28+
run: |
29+
VERSION=${GITHUB_REF#refs/tags/v}
30+
echo "version=$VERSION" >> $GITHUB_OUTPUT
31+
echo "Building version: $VERSION"
32+
33+
- name: Update Version in Files
34+
run: |
35+
VERSION=${{ steps.version.outputs.version }}
36+
# Update version in Makefile
37+
sed -i '' "s/VERSION = .*/VERSION = $VERSION/" Makefile
38+
# Update version in build script
39+
sed -i '' "s/VERSION=\".*\"/VERSION=\"$VERSION\"/" Installer/build-pkg.sh
40+
41+
- name: Build Universal Binary
42+
run: swift build -c release --arch arm64 --arch x86_64
43+
44+
- name: Run Tests
45+
run: swift test
46+
47+
- name: Verify Binary
48+
run: |
49+
file .build/apple/Products/Release/rastertoepiloz
50+
lipo -info .build/apple/Products/Release/rastertoepiloz
51+
52+
- name: Build Installer Package
53+
run: |
54+
VERSION=${{ steps.version.outputs.version }}
55+
./Installer/build-pkg.sh
56+
mv .build/pkg/EpilogDriver-1.0.0.pkg .build/pkg/EpilogDriver-${VERSION}.pkg
57+
58+
- name: Create Release Notes
59+
id: release_notes
60+
run: |
61+
VERSION=${{ steps.version.outputs.version }}
62+
cat << 'EOF' > release_notes.md
63+
## Epilog Zing Driver v${{ steps.version.outputs.version }}
64+
65+
### Installation
66+
67+
1. Download `EpilogDriver-${{ steps.version.outputs.version }}.pkg`
68+
2. Double-click to run the installer
69+
3. Follow the on-screen instructions
70+
71+
### Adding the Printer
72+
73+
After installation, add your Epilog Zing printer:
74+
75+
1. Open **System Settings** → **Printers & Scanners**
76+
2. Click **+** to add a printer
77+
3. Select the **IP** tab
78+
4. Enter your laser's IP address (default: `192.168.3.4`)
79+
5. Protocol: **Line Printer Daemon - LPD**
80+
6. Use: Select **Epilog Zing 16** or **Epilog Zing 24**
81+
82+
Or via command line:
83+
```bash
84+
lpadmin -p "Epilog-Zing" -E \
85+
-v lpd://192.168.3.4 \
86+
-P /Library/Printers/PPDs/Contents/Resources/EpilogZing16.ppd
87+
```
88+
89+
### Features
90+
91+
- Raster engraving with adjustable power and speed
92+
- Vector cutting support
93+
- 3D greyscale engraving (variable depth)
94+
- Resolutions: 100, 200, 250, 400, 500, 1000 DPI
95+
96+
### System Requirements
97+
98+
- macOS 10.15 (Catalina) or later
99+
- Apple Silicon (M1/M2/M3) or Intel Mac
100+
EOF
101+
102+
- name: Create GitHub Release
103+
uses: softprops/action-gh-release@v2
104+
with:
105+
name: Epilog Zing Driver v${{ steps.version.outputs.version }}
106+
body_path: release_notes.md
107+
draft: false
108+
prerelease: ${{ contains(github.ref, '-') }}
109+
files: |
110+
.build/pkg/EpilogDriver-${{ steps.version.outputs.version }}.pkg
111+
generate_release_notes: true
112+
113+
- name: Upload Artifact
114+
uses: actions/upload-artifact@v4
115+
with:
116+
name: EpilogDriver-${{ steps.version.outputs.version }}
117+
path: .build/pkg/EpilogDriver-${{ steps.version.outputs.version }}.pkg
118+
retention-days: 90

.gitignore

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Build artifacts
2+
.build/
3+
*.xcodeproj
4+
xcuserdata/
5+
DerivedData/
6+
*.dSYM
7+
8+
# Package manager
9+
.swiftpm/
10+
Package.resolved
11+
12+
# macOS
13+
.DS_Store
14+
*.swp
15+
*~
16+
17+
# IDE
18+
.idea/
19+
.vscode/
20+
21+
# Distribution
22+
*.pkg
23+
*.dmg
24+
25+
# Temporary files
26+
*.tmp
27+
*.log

0 commit comments

Comments
 (0)