Extension Details

- Auto-Publish Trigger
- by Beta Design
- 5 Recent Installs | 5 Total Installs
- Enables HTTP-triggered publishing for automated workflows
- Bug Reports
-
Read & Write Files
-
Launch Subprocesses
-
Send Network Requests
-
This extension is allowed to:
Readme
Auto-Publish Trigger Extension for Nova
Enables HTTP-triggered publishing for automated workflows, allowing external tools like Claude Code to programmatically trigger Nova's "Publish All" functionality.
Features
- HTTP server running on
localhost:3456 - REST API endpoints for status checking and publish triggering
- Automatic server start on Nova launch (works with or without workspace)
- Configurable port and auto-start settings
- Security-focused implementation (localhost-only, no external access)
Installation
- Install the extension:
- Double-click the
nova-auto-publish.novaextensionbundle, or -
Copy to
~/Library/Application Support/Nova/Extensions/ -
Restart Nova completely:
- Quit Nova (Cmd+Q) and reopen it
- The extension will automatically activate on launch
- Check Nova's Extension Console for server status logs (Nova > Extensions > Show Extension Console)
Usage
Testing the Server
Check if the server is running:
curl http://localhost:3456/status
Expected response:
{
"status": "running",
"version": "1.0.0",
"timestamp": "2025-10-30T..."
}
Triggering Publishing
Send a POST request to trigger publishing:
curl -X POST http://localhost:3456/publish
Expected response:
{
"success": true,
"message": "Publish triggered",
"timestamp": "2025-11-11T...",
"warning": "Publishing affects the currently active/frontmost Nova workspace window only",
"note": "If you have multiple workspaces open, ensure the correct one is in the foreground before triggering"
}
⚠️ Important: The publish command affects only the currently active (frontmost) Nova workspace window. If you have multiple workspaces open, ensure the correct workspace is in the foreground before triggering the publish command.
Integration with Claude Code
Once installed, Claude Code can trigger publishing after making changes:
# Make code changes, then trigger publish
curl -X POST http://localhost:3456/publish
# Wait briefly for publishing to complete
sleep 2
# Test changes on remote server
Configuration
Access configuration via: Nova > Extensions > Extension Library > Auto-Publish Trigger > Settings
Available settings:
- HTTP Server Port (default: 3456): Port for the HTTP server
- Auto-start (default: true): Automatically start server when workspace opens
How It Works
- Extension activates automatically when Nova launches
- Extension spawns a Node.js HTTP server on startup
- Server listens for requests on
localhost:3456 - When
/publishis called, it executes a bash script - The script uses AppleScript to simulate the ⌃⌘P keyboard shortcut
- Nova's publish functionality is triggered
Requirements
- macOS (uses AppleScript and System Events)
- Node.js (should be pre-installed on most systems)
- Nova must be the active (foreground) application for publishing to work
- Accessibility permissions for Terminal/Nova (macOS may prompt on first use)
Troubleshooting
Server doesn't start
- Check Nova's Extension Console for errors (Nova > Extensions > Show Extension Console)
- Verify Node.js is installed:
which node - Check port availability:
lsof -i :3456
Publishing doesn't trigger
- Ensure Nova is the active (foreground) application
- Verify the keyboard shortcut ⌃⌘P works manually
- Check macOS Accessibility permissions (System Settings > Privacy & Security > Accessibility)
- Try running the script manually:
bash Scripts/publish-trigger.sh
HTTP requests fail
- Verify server is running:
curl http://localhost:3456/status - Check that extension is activated in Nova
- Review logs in Extension Console
Known Limitations
- Active Workspace Only: Publishing triggers on whichever Nova workspace window is currently in the foreground. If you have multiple workspaces open, ensure the correct one is active before triggering the publish command.
- macOS Only: Relies on macOS automation (AppleScript)
- Foreground Requirement: Nova must be in foreground for keyboard simulation to work
- No Direct API: Uses keyboard simulation as workaround for missing Nova API
- No Authentication: Local-only server without authentication (acceptable for localhost)
Security
- Server binds to
127.0.0.1only (no external network access) - Uses
execFileinstead ofexecto prevent command injection - Script paths constructed from extension path (not user input)
- No authentication required (localhost-only access)
Support
For issues or questions:
1. Check Nova's Extension Console for error messages
2. Review this documentation
3. Visit Nova Developer Forum: https://devforum.nova.app
Version History
See CHANGELOG.md for version history.
License
Developed for internal use at eSolutions.
Extension Version: 1.0.1
Last Updated: 2025-10-30
Release Notes
Changelog
All notable changes to the Auto-Publish Trigger extension will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
[1.0.7] - 2025-12-19
Changed
- Enhanced debugging for port availability check
- Added comprehensive logging to
isPortInUse()function - Now logs lsof exit status, stdout, and stderr for troubleshooting
- Helps diagnose false positives when detecting if port is already in use
- Added
[PORT CHECK]prefixed log messages for easy filtering
Technical Details
- When users reported false positives (extension thinking port was in use when it wasn't),
we needed visibility into whatlsofwas actually returning - New logging shows: exit status, stdout content length and content, stderr content, and final decision
- This will help identify whether the issue is with lsof itself, Nova's Process API behavior, or the logic
[1.0.6] - 2025-11-11
Fixed
- Critical: Fixed server crash when opening multiple workspaces
- Extension now checks if port is already in use before starting server
- First workspace starts the server, subsequent workspaces detect it's running and skip startup
- Prevents EADDRINUSE errors and server crashes
- Nova runs separate extension instances per workspace, so this check is essential
- Fixed incorrect path to
lsofcommand (was/usr/bin/lsof, corrected to/usr/sbin/lsof)
Added
isPortInUse()function to check port availability using lsof- Informative console messages when server is already running from another workspace
Technical Details
- Nova runs a separate extension instance for each open workspace
- Each instance tried to start its own HTTP server on the same port, causing conflicts
- Solution: Check port availability with
lsof -i :PORT -sTCP:LISTENbefore starting server - If port is in use, log message and skip server startup (use existing server)
- Note:
lsofis located at/usr/sbin/lsofon macOS, not/usr/bin/lsof
[1.0.2] - 2025-11-11
Fixed
- Critical: Added
"requests": trueentitlement to allow HTTP server operation - Extension was not loading at all due to missing network entitlement
- Nova requires explicit permission for extensions that perform network operations
- Even though the HTTP server runs in a separate Node.js process, the entitlement is required
Changed
- Added comprehensive diagnostic logging throughout activation and server startup
- Improved error messages and step-by-step logging for troubleshooting
- Enhanced config value checks with explicit type and value logging
Technical Details
- Root cause: Missing
"requests"entitlement prevented extension from loading - Nova silently refuses to load extensions that might do network operations without proper entitlements
- Added detailed console logging to track: script load, activation, config retrieval, and server startup
[1.0.1] - 2025-10-30
Fixed
- Critical Bug: Extension now activates properly without requiring a workspace
- Added
"activationEvents": ["*"]toextension.jsonfor always-on activation - Fixed issue where menu command showed "No command found" error
- Extension now activates on Nova launch regardless of workspace state
- Added null safety checks for
nova.workspaceAPI calls - Prevents crashes when no workspace is open
- Added checks in server error handler and publish trigger completion handler
Changed
- Extension now works with or without a workspace open
- Improved robustness for edge cases (no workspace scenarios)
Technical Details
- Root cause: Missing
activationEventsin extension.json caused undefined activation behavior - Without activation event,
exports.activate()was never called, so commands were never registered - The
"*"activation event ensures extension loads immediately on Nova launch - This is the correct approach for an always-available HTTP server
[1.0.0] - 2025-10-30
Added
- Initial release of Auto-Publish Trigger extension
- HTTP server running on localhost:3456
- REST API with two endpoints:
GET /status- Health check endpointPOST /publish- Publishing trigger endpoint- Automatic server start on workspace open
- Configuration options:
- Server port (default: 3456)
- Auto-start on workspace open (default: true)
- AppleScript-based keyboard shortcut simulation (⌃⌘P)
- Security features:
- Localhost-only binding (127.0.0.1)
- Use of execFile instead of exec
- No external network access
- Comprehensive logging to Nova Extension Console
- User notifications for server start/stop and publish actions
- README with installation and usage instructions
- Extension Console integration for debugging
Security
- Server binds to 127.0.0.1 only
- Uses execFile to prevent command injection
- Script paths constructed from extension path
- No authentication (acceptable for localhost-only)
Known Limitations
- macOS only (uses AppleScript)
- Requires Nova in foreground for keyboard simulation
- No direct Nova API for publishing (keyboard simulation workaround)
- Single workspace instance
- No authentication on HTTP endpoints
For detailed feature requests or bug reports, check Nova's Extension Console and Developer Forum.