Repository navigation
Refine export lifecycle and packaged runtime - #79
Conversation
Keep full-video export state mounted outside the side panel, show the app while the backend starts, and lazy-load heavy panels for a lighter initial renderer.\n\nTrim non-runtime Python payload, freeze the macOS arm64 dependency graph, and record/verify constraints provenance. The packaged DMG is about 17% smaller while real Whisper download, offline reuse, repair, and reacquisition remain verified.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 25177a7d03
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| onClick={() => void onOpenWorkflow('full-video')} | ||
| disabled={isCheckingSystem} | ||
| /> | ||
| <StartWorkflowButton | ||
| icon={<Smartphone className="h-4 w-4" aria-hidden="true" />} | ||
| title="Create Clips" | ||
| detail="Find, review and export social-ready moments" | ||
| onClick={() => void onOpenWorkflow('short')} | ||
| disabled={isCheckingSystem} |
There was a problem hiding this comment.
Gate resume actions until the backend is ready
When the Electron home screen is shown during Python startup, only these primary workflow controls are disabled; the Recover/Earlier and recent-project buttons remain active. Those handlers immediately restore a project with a backend /file URL, so clicking one before port 8642 is listening makes the video and waveform requests fail, and the waveform effect does not retry when backendReady later changes. Disable all resume actions—or guard their handlers—until backend startup and system checks complete.
Useful? React with 👍 / 👎.
| }); | ||
| const rendererSmoke = process.env.SCRIPTCUT_RENDERER_SMOKE === '1'; | ||
| const creatorQualificationSmoke = process.env.SCRIPTCUT_CREATOR_QUALIFICATION_SMOKE === '1'; | ||
| if (!rendererSmoke && !creatorQualificationSmoke) createWindow(); |
There was a problem hiding this comment.
Register the macOS activate handler before backend startup
Creating the window here before awaiting backend startup introduces a macOS lifecycle gap because the app.on('activate', ...) handler is still registered only after pythonBackend.start() completes. If a user closes the initial window while the backend is starting and then clicks the Dock icon during that interval, the activation is ignored; when startup later finishes, no code recreates the window, so the app remains windowless until another activation. Register the handler before starting the backend or check for an empty window list after startup.
Useful? React with 👍 / 👎.
Problem
Full-video export state lived inside the conditional side panel, so closing the panel could destroy controller state. Startup also waited for the Python backend before showing the main window, the initial renderer bundled every heavy panel, and the packaged Python runtime carried avoidable bytecode, development headers, and package test artifacts.
Change
Appwhile the export panel is opened and closedpython-shellproduction dependency.dist-infometadata is not counted as an installed distributionMeasured against the previous candidate, app logical size drops from 1,166,546,357 to 961,725,890 bytes (-17.56%) and DMG size from 371,904,320 to 307,127,822 bytes (-17.42%).
Verification
hdiutil verify: PASSgit diff --check: PASSRisks and follow-ups
The dependency graph is version-frozen but not fully artifact-hash reproducible yet because
openai-whisperis built from a source archive. Developer ID signing, hardened runtime, notarization, and release-channel metadata are follow-up release-hardening work.