Skip to content

Commit e5ea523

Browse files
pango07claude
andcommitted
ci(mac): enable code signing + notarization; docs: add README and LICENSE
- Wire Developer ID signing and notarization into the mac build. When the CSC_LINK / APPLE_* secrets are present the workflow signs and notarizes; when absent it falls back to unsigned builds so forks keep working. - Set mac.notarize: true in electron-builder config so @electron/ notarize runs automatically with the env vars the workflow now provides. - Add README crediting Farza/Clicky as the original inspiration and MIT LICENSE. - Remove the original-source-code/clicky submodule reference. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent bde7944 commit e5ea523

5 files changed

Lines changed: 108 additions & 6 deletions

File tree

.github/workflows/build.yml

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,14 +50,24 @@ jobs:
5050
# Only auto-publish to GitHub Releases on tag pushes; otherwise
5151
# build the artifact and stop so PR / branch runs don't try to
5252
# upload to a non-existent draft release.
53+
#
54+
# Signing + notarization: if the CSC_LINK secret is set on the
55+
# mac runner, electron-builder will sign with that cert and
56+
# @electron/notarize will notarize using APPLE_ID / APPLE_APP_
57+
# SPECIFIC_PASSWORD / APPLE_TEAM_ID. If the secret is absent the
58+
# build falls back to the old unsigned behavior so forks and PRs
59+
# without secrets still build.
5360
run: bunx electron-builder --${{ matrix.platform }} --publish ${{ startsWith(github.ref, 'refs/tags/v') && 'always' || 'never' }}
5461
env:
5562
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
56-
# Skip macOS code signing in CI. CSC_LINK="" (empty but defined)
57-
# confuses electron-builder into treating cwd as a cert file.
58-
# When real signing secrets are added later, swap this for
59-
# conditional CSC_LINK/CSC_KEY_PASSWORD/APPLE_* env vars.
60-
CSC_IDENTITY_AUTO_DISCOVERY: 'false'
63+
CSC_LINK: ${{ matrix.platform == 'mac' && secrets.CSC_LINK || '' }}
64+
CSC_KEY_PASSWORD: ${{ matrix.platform == 'mac' && secrets.CSC_KEY_PASSWORD || '' }}
65+
APPLE_ID: ${{ matrix.platform == 'mac' && secrets.APPLE_ID || '' }}
66+
APPLE_APP_SPECIFIC_PASSWORD: ${{ matrix.platform == 'mac' && secrets.APPLE_APP_SPECIFIC_PASSWORD || '' }}
67+
APPLE_TEAM_ID: ${{ matrix.platform == 'mac' && secrets.APPLE_TEAM_ID || '' }}
68+
# When no signing cert is available, disable auto-discovery so
69+
# electron-builder doesn't try to match an ad-hoc identity.
70+
CSC_IDENTITY_AUTO_DISCOVERY: ${{ matrix.platform == 'mac' && secrets.CSC_LINK != '' && 'true' || 'false' }}
6171

6272
- name: Upload artifacts
6373
if: success()

LICENSE

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
MIT License
2+
3+
Copyright (c) 2026 Julio Vaught and Flicky contributors
4+
5+
Flicky is an independent implementation inspired by Clicky
6+
(https://github.com/farzaa/clicky) by Farza. No source code from Clicky
7+
is included or redistributed in this repository.
8+
9+
Permission is hereby granted, free of charge, to any person obtaining a copy
10+
of this software and associated documentation files (the "Software"), to deal
11+
in the Software without restriction, including without limitation the rights
12+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13+
copies of the Software, and to permit persons to whom the Software is
14+
furnished to do so, subject to the following conditions:
15+
16+
The above copyright notice and this permission notice shall be included in all
17+
copies or substantial portions of the Software.
18+
19+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
25+
SOFTWARE.

README.md

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# Flicky
2+
3+
A voice-driven, screen-aware AI companion that lives in the corner of your screen. Hold a hotkey, talk to it, and a little blue cursor flies across your display to point at whatever it's referring to.
4+
5+
> **Inspired by [Clicky](https://www.clicky.so/)** by [Farza](https://github.com/farzaa) ([github.com/farzaa/clicky](https://github.com/farzaa/clicky)).
6+
> Clicky is the original idea — a macOS-only Swift app. Flicky is an independent reimagining built from scratch in Electron so the same experience can run on **Windows, macOS, and Linux**. All credit for the original concept, the pointing-cursor interaction, and the "vibe" goes to Farza. If you're on a Mac, go check out the original — it's great.
7+
8+
---
9+
10+
## What Flicky adds on top of the original idea
11+
12+
- **Cross-platform** — Windows, macOS, and Linux from a single Electron codebase.
13+
- **A second reasoning provider** — pick between **Anthropic Claude** (Opus / Sonnet 4.6) and **OpenAI** (GPT-5, GPT-5 mini, GPT-4o) on the fly.
14+
- **More ElevenLabs voices** — full voice catalog, plus per-voice speed and stability sliders.
15+
- **Local chat history** — every conversation is stored on your machine, browsable from the panel, never uploaded.
16+
- **Long-running context management** — auto-compacts older messages into a summary near a configurable token budget so a single conversation can run forever without blowing up the context window.
17+
- **Customizable push-to-talk shortcut** — capture any key combination from the UI; the global shortcut re-registers live.
18+
- **Three transcription options** — Groq Whisper Large v3 / v3 Turbo with one-click switching.
19+
- **Multiple reasoning depths** — off / low / medium / high "extended thinking" toggle.
20+
- **Multi-display aware overlay** — the blue cursor follows your real mouse across monitors.
21+
- **Provider key management** — separate, encrypted local storage for each provider's API key with one-click validation.
22+
23+
The core loop — hold the hotkey, ask anything, see the blue cursor point — is faithful to Farza's original.
24+
25+
---
26+
27+
## Running locally
28+
29+
Requires [Bun](https://bun.sh) (or npm) and Node 20+.
30+
31+
```bash
32+
bun install
33+
bun run dev
34+
```
35+
36+
That starts the TypeScript watcher for the main process and Vite for the renderer. Launch the Electron app from a separate terminal once the dev servers are up:
37+
38+
```bash
39+
bun run start
40+
```
41+
42+
## Building installers
43+
44+
```bash
45+
bun run package # current platform
46+
bun run package:win # Windows .exe (NSIS)
47+
bun run package:mac # macOS .dmg + .zip (universal)
48+
bun run package:linux # AppImage + .deb
49+
```
50+
51+
Releases are also produced automatically by GitHub Actions on every `v*` tag — see [`.github/workflows/build.yml`](.github/workflows/build.yml).
52+
53+
## Configuration
54+
55+
You'll need API keys for the providers you want to use:
56+
57+
- **Anthropic** or **OpenAI** — reasoning
58+
- **ElevenLabs** — text-to-speech
59+
- **Groq** — speech-to-text
60+
61+
Add them in the panel under **Mind**, **Voice**, and **Ear**. Keys are stored locally with platform-appropriate encryption — they never leave your machine except in API calls to the relevant provider.
62+
63+
## License
64+
65+
MIT — see [LICENSE](LICENSE).
66+
67+
The original Clicky project is the intellectual seed for this work; Flicky is an independent implementation and does not bundle or redistribute Clicky's source. If you like what's here, please also star [Farza's repo](https://github.com/farzaa/clicky).

original-source-code/clicky

Lines changed: 0 additions & 1 deletion
This file was deleted.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
],
6767
"hardenedRuntime": true,
6868
"gatekeeperAssess": false,
69+
"notarize": true,
6970
"entitlements": "assets/entitlements.mac.plist",
7071
"entitlementsInherit": "assets/entitlements.mac.plist",
7172
"extendInfo": {

0 commit comments

Comments
 (0)