Skip to content

feat: Notify with desktop toast when generation/workflow errors out - #294

Open
iammojogo-sudo wants to merge 5 commits into
lightningpixel:devfrom
iammojogo-sudo:main
Open

feat: Notify with desktop toast when generation/workflow errors out#294
iammojogo-sudo wants to merge 5 commits into
lightningpixel:devfrom
iammojogo-sudo:main

Conversation

@iammojogo-sudo

Copy link
Copy Markdown
Contributor

Summary

Mirrors the existing "Generation complete" desktop notification so that when
a generation or workflow run is force-stopped by an error (the red error box
with "Try again / Close" over the progress bar), the user also gets a native OS
notification with sound — same channel and appearance as completion, but with
error text.

Applies universally to all extensions: every fatal error already routes
through the single useAppStore.updateCurrentJob({ status: "error" }) action
(the one that renders the red box), so a single hook covers them all with no
per-extension changes.

Changes

  • src/shared/utils/notification.ts — add showErrorNotification(), an exact
    mirror of showCompletionNotification() (same OS toast + sound). Fires even
    when the app window has focus, so the user is always alerted to the failure.
  • src/shared/stores/appStore.ts — hook updateCurrentJob to fire
    showErrorNotification() whenever status becomes "error".
  • electron/main/index.ts — disable backgroundThrottling so the renderer
    polling loop (which detects the error) keeps running when the window is
    minimized/backgrounded, ensuring the toast fires reliably.
  • package.json / package-lock.json — unrelated pre-existing version
    bumps (0.4.2, electron ^42.11.1).

Behavior

  • Before: an error that stops a run only showed the in-app red error box —
    no desktop notification.
  • After: the same error also pops a desktop toast + sound: title
    Generation failed, body Workspace generation failed: <reason>. Error
    messages, the red box, and "Try again / Close" UI are unchanged.

Non-goals / not touched

  • No changes to error messages, the red error box, retry/close UI, or user-cancel
    logic.
  • No per-extension edits — the store hook is universal.
  • Completion notification behavior is unchanged.

Testing

  • Triggered fatal generation error with the app focused and minimized.
  • Desktop toast (visual + sound) appears with the error text; no other app
    behavior changed.

Note

npm test may fail locally if the Python API deps (fastapi) aren't installed
in the active Python env — that failure is environmental and unrelated to this
PR.

lightningpixel and others added 5 commits August 21, 2026 11:05
Modly had no SECURITY.md and no private channel for vulnerability
reports, which left email as the only route for researchers. Private
vulnerability reporting is now enabled on the repository; this points
people at it and sets expectations around it.

The policy leads with a threat model and lets the scope follow from it,
so that an excluded report comes with the reason it was excluded. Two
assumptions are deliberate: workflow files are untrusted input because
sharing them is normal, and any web page the user has open is an
untrusted caller of the loopback API. The second is why the
network-exposure exclusion is narrowed to deliberate exposure only --
a page in the user's own browser needs none.

Every claim was checked against the code. The policy does not call the
installer signed (no platform signs it), says nothing about PyTorch
(we do not ship it), and does not excuse social engineering on the
strength of UI warnings that do not exist.
…curity

docs: add a security policy with a private reporting route
- Add showErrorNotification mirroring showCompletionNotification
- Fire error notification from appStore.updateCurrentJob when status becomes error
- Fire error toasts even when window has focus (was gated by hasFocus)
- Disable backgroundThrottling so renderer polling + notifications fire when minimized
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants