You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+71-62Lines changed: 71 additions & 62 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -32,6 +32,63 @@ pnpm run make
32
32
pnpm run check:write # Linting & typecheck
33
33
```
34
34
35
+
### Liquid Glass Icon (macOS 26+)
36
+
37
+
The app supports macOS liquid glass icons for a modern, layered appearance. The icon configuration is in `build/icon.icon/`.
38
+
39
+
**Compiling the liquid glass icon requires Xcode** (Command Line Tools are not sufficient):
40
+
41
+
```bash
42
+
# Compile liquid glass icon (requires Xcode)
43
+
bash scripts/compile-glass-icon.sh
44
+
```
45
+
46
+
If you don't have Xcode installed, the build will automatically fall back to the standard `.icns` icon. To enable liquid glass icons:
47
+
48
+
1. Install Xcode from the App Store
49
+
2. Run the compile script above, or
50
+
3. Compile `Assets.car` on a machine with Xcode and commit it to the repo
51
+
52
+
The `generateAssets` hook will automatically attempt to compile the icon during packaging if Xcode is available.
53
+
54
+
### Environment Variables
55
+
56
+
You can set these environment variables instead of entering credentials in the app:
57
+
58
+
-`POSTHOG_API_KEY` - Your PostHog personal API key
59
+
-`POSTHOG_API_HOST` - PostHog instance URL (defaults to https://us.posthog.com)
60
+
61
+
## Architecture
62
+
63
+
-**Electron** - Desktop app framework
64
+
-**React** - UI framework
65
+
-**TypeScript** - Type safety
66
+
-**Tailwind CSS** - Styling
67
+
-**Zustand** - State management - we should probably switch to kea
68
+
-**Vite** - Build tool
69
+
70
+
## Project Structure
71
+
72
+
```
73
+
array/
74
+
├── src/
75
+
│ ├── main/ # Electron main process
76
+
│ ├── renderer/ # React app
77
+
│ ├── api/ # API client
78
+
│ └── shared/ # Shared types
79
+
├── dist/ # Build output
80
+
└── release/ # Packaged apps
81
+
```
82
+
83
+
## Keyboard Shortcuts
84
+
85
+
-`↑/↓` - Navigate tasks
86
+
-`Enter` - Open selected task
87
+
-`⌘R` - Refresh task list
88
+
-`⌘⇧[/]` - Switch between tabs
89
+
-`⌘W` - Close current tab
90
+
91
+
35
92
### Building Distributables
36
93
37
94
To create production distributables (DMG, ZIP):
@@ -69,86 +126,38 @@ Set `ELECTRON_DISABLE_AUTO_UPDATE=1` if you ever need to ship a build with auto
69
126
70
127
### macOS Code Signing & Notarization
71
128
72
-
macOS builds are automatically signed (and optionally notarized) when the relevant environment variables are present. We standardise on Apple ID + app-specific password credentials for notarization:
129
+
macOS packages are signed and notarized automatically when these environment variables are present:
73
130
74
131
```bash
75
-
# Required for code signing
76
132
export APPLE_CODESIGN_IDENTITY="Developer ID Application: Your Name (TEAMID)"
The signing step uses hardened runtime with the entitlements in `build/entitlements.mac.plist` and will sign the DMG plus the zipped `.app`. When the notarization variables are present, packages are also notarized. Without these variables the build proceeds unsigned, which is convenient for local development.
85
-
86
-
For CI releases, add the same values as GitHub Actions repository secrets:
138
+
For CI releases, configure matching GitHub Actions secrets:
87
139
88
140
-`APPLE_CODESIGN_IDENTITY`
89
141
-`APPLE_ID`
90
142
-`APPLE_APP_SPECIFIC_PASSWORD`
91
143
-`APPLE_TEAM_ID`
92
-
-`APPLE_CODESIGN_CERT_BASE64` - Base64 encoded `.p12` export of your Developer ID Application certificate
93
-
-`APPLE_CODESIGN_CERT_PASSWORD` - Password used when exporting the `.p12`
94
-
-`APPLE_CODESIGN_KEYCHAIN_PASSWORD` - Password for the temporary keychain created in CI
95
-
96
-
The `Publish Release` workflow will automatically sign and notarize when these secrets are present.
97
-
98
-
> If you prefer API-key or keychain profile credentials for notarization, the Forge configuration already supports them—add the matching env vars locally and in CI instead of the defaults above.
99
-
100
-
### Liquid Glass Icon (macOS 26+)
144
+
-`APPLE_CODESIGN_CERT_BASE64` – Base64-encoded `.p12` export of the Developer ID Application certificate (include the private key)
145
+
-`APPLE_CODESIGN_CERT_PASSWORD` – Password used when exporting the `.p12`
146
+
-`APPLE_CODESIGN_KEYCHAIN_PASSWORD` – Password for the temporary keychain the workflow creates on the runner
101
147
102
-
The app supports macOS liquid glass icons for a modern, layered appearance. The icon configuration is in `build/icon.icon/`.
148
+
The `Publish Release` workflow imports the certificate into a temporary keychain, signs each artifact with hardened runtime enabled (using Electron’s default entitlements), and notarizes it before upload whenever these secrets are available.
103
149
104
-
**Compiling the liquid glass icon requires Xcode** (Command Line Tools are not sufficient):
150
+
For local testing, copy `codesign.env.example` to `.env.codesign`, fill in the real values, and load it before running `pnpm run make`:
105
151
106
152
```bash
107
-
# Compile liquid glass icon (requires Xcode)
108
-
bash scripts/compile-glass-icon.sh
153
+
set -a
154
+
source .env.codesign
155
+
set +a
156
+
pnpm run make
109
157
```
110
158
111
-
If you don't have Xcode installed, the build will automatically fall back to the standard `.icns` icon. To enable liquid glass icons:
112
-
113
-
1. Install Xcode from the App Store
114
-
2. Run the compile script above, or
115
-
3. Compile `Assets.car` on a machine with Xcode and commit it to the repo
116
-
117
-
The `generateAssets` hook will automatically attempt to compile the icon during packaging if Xcode is available.
118
-
119
-
### Environment Variables
120
-
121
-
You can set these environment variables instead of entering credentials in the app:
122
-
123
-
-`POSTHOG_API_KEY` - Your PostHog personal API key
124
-
-`POSTHOG_API_HOST` - PostHog instance URL (defaults to https://us.posthog.com)
125
-
126
-
## Architecture
159
+
Set `SKIP_NOTARIZE=1` if you need to generate signed artifacts without submitting to Apple (e.g., while debugging credentials):
127
160
128
-
-**Electron** - Desktop app framework
129
-
-**React** - UI framework
130
-
-**TypeScript** - Type safety
131
-
-**Tailwind CSS** - Styling
132
-
-**Zustand** - State management - we should probably switch to kea
0 commit comments