Opened on behalf of @BeckettFrey
Summary
In src/voxkit/gui/workers/startup.py, the on_error callback unconditionally calls mark_first_launch_complete() when the startup script fails. This means a transient failure (network timeout, disk full, permission error, etc.) during first-launch asset retrieval will permanently skip the startup script on all subsequent launches.
Location
src/voxkit/gui/workers/startup.py, lines 72–78 (on_error handler inside execute_startup_script):
def on_error(error_msg: str):
print(f"[ERROR] Startup script failed: {error_msg}")
loading_dialog.update_message(f"Error: {error_msg}")
app.processEvents()
# Still mark as complete to avoid running again
mark_first_launch_complete()
Problem
The comment says "still mark as complete to avoid running again," but this is the wrong trade-off for a first-launch setup step. If the script downloads models or other required assets, a single transient failure leaves the user with missing assets and no automatic way to retry. The only recovery is manually deleting ~/.voxkit/.first_launch_complete.
Suggested fix
- Don't call
mark_first_launch_complete() on error — let the startup script re-run on next launch.
- Optionally, add a retry counter (e.g., stored in a JSON file) so VoxKit gives up after N consecutive failures and shows a user-facing message with manual recovery instructions.
Impact
Low frequency (only affects first launch), but high severity when it hits — the user ends up in a broken state with no obvious way to fix it.
Opened on behalf of @BeckettFrey
Summary
In
src/voxkit/gui/workers/startup.py, theon_errorcallback unconditionally callsmark_first_launch_complete()when the startup script fails. This means a transient failure (network timeout, disk full, permission error, etc.) during first-launch asset retrieval will permanently skip the startup script on all subsequent launches.Location
src/voxkit/gui/workers/startup.py, lines 72–78 (on_errorhandler insideexecute_startup_script):Problem
The comment says "still mark as complete to avoid running again," but this is the wrong trade-off for a first-launch setup step. If the script downloads models or other required assets, a single transient failure leaves the user with missing assets and no automatic way to retry. The only recovery is manually deleting
~/.voxkit/.first_launch_complete.Suggested fix
mark_first_launch_complete()on error — let the startup script re-run on next launch.Impact
Low frequency (only affects first launch), but high severity when it hits — the user ends up in a broken state with no obvious way to fix it.