Package: nexus
Version: 3.12.9
Use this file with /Users/home/Workspace/Apps/AGENTS.md. It only records Nexus-specific context.
- Main app:
src/nexus/main.py - Key areas:
src/nexus/core/bookmarks.py,src/nexus/core/safari.py,src/nexus/gui/main_window.py - Run locally:
uv run python -m nexus.main - Build through workspace wrappers:
nexusbuildorrazorbuild Nexus
- Nexus persists its own bookmarks as
bookmarks_v2.json, not Safari'sBookmarks.plist. Bookmark save/load issues now point at local JSON persistence, not Safari file access. BookmarkManager.save_bookmarksuses an atomic.tmpplus.bakwrite flow. Keep that safety path intact when changing bookmark persistence.- Safari automation goes through AppleScript and
osascript; runtime verification depends on local Safari state and macOS Automation permission. - If a bundled app builds but fails on launch or cannot control Safari, inspect
Nexus.specfor packaging metadata such as bundled assets and AppleEvents usage text before changing app logic.
Baseline:
uv run ruff check .
uv run ty check src --python-version 3.13
uv run pytest tests/ -qAdd focused checks when relevant:
- Bookmark parsing or plist writes:
uv run pytest tests/test_bookmarks.py -q - Safari automation or GUI flows that invoke Safari:
uv run pytest tests/core/test_safari_controller.py -q - Safari, bookmark, or main-window behavior: run
uv run python -m nexus.main
If runtime verification is blocked by Safari state or macOS Automation permission, say that explicitly instead of implying the code path was exercised.
CI proves lint, type safety, and unit test correctness. It does NOT prove Safari permissions are granted, AppleScript works, or macOS automation entitlements are intact.
Before tagging a release, verify all of the following:
-
uv run ruff check .passes with no errors -
uv run ty check src --python-version 3.13passes with no errors -
uv run pytest tests/ -qpasses with no failures - App launches locally from a clean
uv sync - At least one core user flow exercised manually end-to-end
-
pyproject.tomlversion matches README badge/display text
Green CI is necessary but not sufficient for a safe release. Source site behavior (4Charm), macOS permissions (Nexus), and external tools (L!bra/Papyrus) cannot be fully validated by static CI checks.