Skip to content

Commit 6cc6b44

Browse files
committed
Add release process documentation and .env setup
- Document testing, build commands, and full release workflow in README - Add .env.example template with Apple credential placeholders - Update project structure to reflect current architecture - Include step-by-step and automated release instructions
1 parent 700e545 commit 6cc6b44

2 files changed

Lines changed: 113 additions & 7 deletions

File tree

.env.example

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Apple Developer credentials for notarization
2+
# Copy this file to .env and fill in your values
3+
4+
# Your Apple ID email
5+
APPLE_ID=your@email.com
6+
7+
# Team ID (10 characters) - find at developer.apple.com/account → Membership
8+
APPLE_TEAM_ID=XXXXXXXXXX
9+
10+
# App-specific password - generate at appleid.apple.com → Sign-In and Security → App-Specific Passwords
11+
APPLE_APP_PASSWORD=xxxx-xxxx-xxxx-xxxx

README.md

Lines changed: 102 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -77,23 +77,118 @@ During development, enable unsigned extensions:
7777

7878
> **Note:** This setting resets each time Safari is quit.
7979
80+
### Testing
81+
82+
Run the CDN detection test suite:
83+
84+
```bash
85+
just test
86+
```
87+
88+
### Build Commands
89+
90+
The project uses [Just](https://github.com/casey/just) for build automation:
91+
92+
```bash
93+
just # List all commands
94+
just build-dev # Build for development (unsigned)
95+
just build-release # Build release (unsigned, for testing)
96+
just clean # Clean build artifacts
97+
just xcode # Open project in Xcode
98+
```
99+
100+
## Release Process
101+
102+
Creating a signed and notarized release requires Apple Developer credentials.
103+
104+
### Prerequisites
105+
106+
1. **Apple Developer Account** with a Developer ID certificate
107+
108+
2. **Create `.env`** in the project root:
109+
110+
```bash
111+
cp .env.example .env
112+
```
113+
114+
Then edit `.env` with your credentials:
115+
116+
| Variable | Description |
117+
| -------------------- | --------------------------------------------------------------------------- |
118+
| `APPLE_ID` | Your Apple ID email |
119+
| `APPLE_TEAM_ID` | 10-character Team ID from [developer.apple.com/account](https://developer.apple.com/account) → Membership |
120+
| `APPLE_APP_PASSWORD` | App-specific password from [appleid.apple.com](https://appleid.apple.com/account/manage) → Sign-In and Security → App-Specific Passwords |
121+
122+
3. **Configure Xcode signing** with your Developer ID certificate
123+
124+
### Release Commands
125+
126+
**Full automated release** (archive → submit → wait → staple):
127+
128+
```bash
129+
just release v0.0.5
130+
```
131+
132+
**Step-by-step release** (useful when notarization takes time):
133+
134+
```bash
135+
# 1. Build and sign
136+
just archive v0.0.5
137+
138+
# 2. Submit for notarization
139+
just submit
140+
141+
# 3. Check status (optional)
142+
just status
143+
144+
# 4. Wait for completion (can take minutes to hours)
145+
just wait
146+
147+
# 5. Staple ticket and create final zip
148+
just staple
149+
```
150+
151+
**Other commands:**
152+
153+
```bash
154+
just history # Show notarization history
155+
just log <id> # Get notarization log for a submission
156+
just builds # List available builds
157+
```
158+
159+
### Build Output
160+
161+
Builds are organized by version in `build/<version>/`:
162+
163+
```
164+
build/
165+
├── v0.0.4/
166+
│ ├── archive/CF Cache Status.xcarchive
167+
│ ├── export/CF Cache Status.app
168+
│ ├── CacheStatus-v0.0.4.zip # Final notarized release
169+
│ └── .submission_id # Notarization tracking
170+
└── .current_version # Tracks active build
171+
```
172+
80173
## Project Structure
81174

82175
```
83176
CF Cache Status/
84-
├── CF Cache Status/ # macOS container app
85-
│ ├── AppDelegate.swift
86-
│ ├── ViewController.swift
177+
├── CF Cache Status/ # macOS container app (SwiftUI)
178+
│ ├── CacheStatusApp.swift
179+
│ ├── ContentView.swift
87180
│ └── Assets.xcassets/
88181
└── CF Cache Status Extension/ # Safari Web Extension
182+
├── content.js # Performance metrics collection
89183
└── Resources/
90184
├── manifest.json # Extension configuration
185+
├── constants.js # Shared CDN detection rules
91186
├── background.js # Header capture & badge updates
92-
├── popup.html # Popup structure
93-
├── popup.js # Popup logic & edge location mapping
94-
├── popup.css # iOS Settings-style design
187+
├── popup.html/js/css # Popup UI
95188
└── images/
96-
└── icon.svg # Toolbar icon
189+
scripts/ # Release automation
190+
tests/ # CDN detection tests
191+
Justfile # Build commands
97192
```
98193

99194
## Permissions

0 commit comments

Comments
 (0)