Skip to content

Startup script failure permanently skips first-launch setup #97

@dennisthemenacing

Description

@dennisthemenacing

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.

Metadata

Metadata

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions