Preserve macOS app permissions via dynamic launcher, .env workspace path, and session/audio tools
This commit is contained in:
@@ -49,23 +49,29 @@ The project operates entirely from the app directory without depending on `~/Wor
|
||||
- **CLI Helper Scripts**:
|
||||
- `bin/voice_tool.py`: List and switch TTS voices (`python bin/voice_tool.py list`, `python bin/voice_tool.py set <voice>`).
|
||||
- `bin/model_tool.py`: List and switch LLM models (`python bin/model_tool.py list`, `python bin/model_tool.py set <model>`).
|
||||
- `bin/session_tool.py`: Inspect or reset active Hermes session (`python bin/session_tool.py get`, `python bin/session_tool.py reset`).
|
||||
- `bin/profile_tool.py`: List and switch Hermes agent profiles (`python bin/profile_tool.py list`, `python bin/profile_tool.py set <profile>`).
|
||||
- `bin/web_tool.py`: Inspect files or URLs in the Companion Web UI drawer (`http://localhost:8888`).
|
||||
|
||||
---
|
||||
|
||||
## 4. Building & Packaging `/Applications/VoiceAgent.app`
|
||||
|
||||
Whenever python or Swift sources are modified, update the standalone macOS application bundle:
|
||||
`VoiceAgentLauncher` runs Python scripts dynamically from the project workspace (configured in `~/.voiceagent.env` or `VOICEAGENT_DIR`).
|
||||
|
||||
- **Python code edits take effect immediately** without recompiling or re-signing the macOS app bundle.
|
||||
- **Rebuilding binaries** (`bash build_app.sh`) is only required when modifying Swift sources (`swift/*.swift`), helper binaries, or `Info.plist` entitlements.
|
||||
- `build_app.sh` automatically updates `~/.voiceagent.env` and skips binary re-signing if Swift sources are unchanged, preserving macOS privacy permissions (Microphone, Accessibility, Speech Recognition). Use `bash build_app.sh -f` to force a full rebuild.
|
||||
|
||||
```bash
|
||||
bash build_app.sh
|
||||
```
|
||||
|
||||
**Build Workflow**:
|
||||
1. Builds Swift binaries (`swift/build.sh` -> `speech-helper`, `llm-helper`, `VoiceAgentLauncher`).
|
||||
2. Bundles Python source files, `bin/` tools, and assets into `dist/VoiceAgent.app`.
|
||||
3. Signs the app bundle (`codesign -s - --deep --force`).
|
||||
4. Replaces `/Applications/VoiceAgent.app`.
|
||||
1. Configures `~/.voiceagent.env` with `VOICEAGENT_DIR` and `VOICEAGENT_PYTHON`.
|
||||
2. Checks if Swift binaries (`speech-helper`, `llm-helper`, `VoiceAgentLauncher`) need recompiling.
|
||||
3. If up to date, copies Python resources without re-signing the app bundle (preserving macOS TCC permissions).
|
||||
4. If modified, compiles Swift binaries, creates `dist/VoiceAgent.app`, signs, and installs to `/Applications/VoiceAgent.app`.
|
||||
|
||||
---
|
||||
|
||||
@@ -74,6 +80,8 @@ bash build_app.sh
|
||||
Before committing changes, execute the test suite:
|
||||
|
||||
```bash
|
||||
.venv/bin/python3 test_profile_tool.py
|
||||
.venv/bin/python3 test_session_tool.py
|
||||
.venv/bin/python3 test_model_manager.py
|
||||
.venv/bin/python3 test_spoken_text.py
|
||||
.venv/bin/python3 test_journal.py
|
||||
|
||||
Reference in New Issue
Block a user