Toolbox for film
See the codefilm-workflow (RxFilmStudio) is a macOS app for making short films from
generated footage. It generates music, narration, captions, images, video
clips and Remotion compositions, and assembles them on a timeline that renders
to mp4 — laid out like Final Cut Pro: a footage library on the left, a viewer
in the centre, an inspector with each workflow's parameters, Generate button
and versions on the right, and the sequence timeline along the bottom.
Each film is a .rxfilmstudio package holding its own SwiftData store and all
generated media. See docs/document-package.md.
footage_list, sequence_add_clip, sequence_render, …). See
docs/agent-tools.md.docs/marketplace.md.film-workflow/ – app source (SwiftUI views, models, clients, document layer)Packages/RxVideoEditor/ – the video editor package: VideoEditorCore
(timeline model, AVFoundation composition and export) and VideoEditorUI
(timeline, viewer, inspectors)film-workflowTests/ – app unit tests; Packages/RxVideoEditor/Tests – package testsfilm-workflow.xcodeproj/ – Xcode projectscripts/ci/ – release scripts (signing, notarization, Sparkle appcast)Info.plist – extra keys merged into the generated Info.plist (Sparkle feed, document types)RxAgentSDK checkout beside this repository (../RxAgentSDK); the Xcode project uses it as a local package so SDK chat fixes are included in the app build. Open film-workflow.xcodeproj in Xcode and run the macOS target.Launch argument -skipStartupAuth skips the keychain read at startup, which
is useful for unattended debug launches.
.rxfilmstudio package.~/Library/Application Support/com.rxlab.film-workflow.xcodebuild test -project film-workflow.xcodeproj -scheme film-workflow -destination 'platform=macOS' -only-testing:film-workflowTests
swift test --package-path Packages/RxVideoEditor
The macOS app updates itself with Sparkle. The
feed lives at https://update.filmstudio.rxlab.app/appcast.xml, published to GitHub
Pages, and every update is verified against the EdDSA public key baked into
Info.plist.
Cutting a release:
workflow_dispatch). semantic-release
reads the commit history, tags, and publishes a GitHub release..github/workflows/build.yaml), which on the self-hosted macOS runner:
MARKETING_VERSION from the tag and archives the app;scripts/ci/sign-sparkle.sh);RxFilmStudio.dmg, notarizes and staples it
(scripts/ci/notary.sh);appcast.xml (scripts/ci/generate-appcast.sh);Users get the update on next launch, or via RxFilmStudio → Check for Updates....
Required secrets (org- or repo-level):
| Secret | Purpose |
|---|---|
SPARKLE_KEY | EdDSA private key signing the appcast; its public half is SUPublicEDKey in Info.plist |
BUILD_CERTIFICATE_BASE64 / P12_PASSWORD | Developer ID certificate imported into the runner keychain |
SIGNING_CERTIFICATE_NAME | Identity name passed to codesign |
APPLE_ID / APPLE_ID_PWD / APPLE_TEAM_ID | Notarization credentials (APPLE_ID_PWD is an app-specific password) |
RELEASE_TOKEN | PAT used by semantic-release, so the created release triggers the build workflow |
Rotating the Sparkle key means updating SPARKLE_KEY and SUPublicEDKey
together — apps already in the wild trust the old public key, so a mismatched
pair silently stops updates from installing.
Coming soon).Swift
87.5%
TypeScript
11.1%
Toolbox for film
See the codefilm-workflow (RxFilmStudio) is a macOS app for making short films from
generated footage. It generates music, narration, captions, images, video
clips and Remotion compositions, and assembles them on a timeline that renders
to mp4 — laid out like Final Cut Pro: a footage library on the left, a viewer
in the centre, an inspector with each workflow's parameters, Generate button
and versions on the right, and the sequence timeline along the bottom.
Each film is a .rxfilmstudio package holding its own SwiftData store and all
generated media. See docs/document-package.md.
footage_list, sequence_add_clip, sequence_render, …). See
docs/agent-tools.md.docs/marketplace.md.film-workflow/ – app source (SwiftUI views, models, clients, document layer)Packages/RxVideoEditor/ – the video editor package: VideoEditorCore
(timeline model, AVFoundation composition and export) and VideoEditorUI
(timeline, viewer, inspectors)film-workflowTests/ – app unit tests; Packages/RxVideoEditor/Tests – package testsfilm-workflow.xcodeproj/ – Xcode projectscripts/ci/ – release scripts (signing, notarization, Sparkle appcast)Info.plist – extra keys merged into the generated Info.plist (Sparkle feed, document types)RxAgentSDK checkout beside this repository (../RxAgentSDK); the Xcode project uses it as a local package so SDK chat fixes are included in the app build. Open film-workflow.xcodeproj in Xcode and run the macOS target.Launch argument -skipStartupAuth skips the keychain read at startup, which
is useful for unattended debug launches.
.rxfilmstudio package.~/Library/Application Support/com.rxlab.film-workflow.xcodebuild test -project film-workflow.xcodeproj -scheme film-workflow -destination 'platform=macOS' -only-testing:film-workflowTests
swift test --package-path Packages/RxVideoEditor
The macOS app updates itself with Sparkle. The
feed lives at https://update.filmstudio.rxlab.app/appcast.xml, published to GitHub
Pages, and every update is verified against the EdDSA public key baked into
Info.plist.
Cutting a release:
workflow_dispatch). semantic-release
reads the commit history, tags, and publishes a GitHub release..github/workflows/build.yaml), which on the self-hosted macOS runner:
MARKETING_VERSION from the tag and archives the app;scripts/ci/sign-sparkle.sh);RxFilmStudio.dmg, notarizes and staples it
(scripts/ci/notary.sh);appcast.xml (scripts/ci/generate-appcast.sh);Users get the update on next launch, or via RxFilmStudio → Check for Updates....
Required secrets (org- or repo-level):
| Secret | Purpose |
|---|---|
SPARKLE_KEY | EdDSA private key signing the appcast; its public half is SUPublicEDKey in Info.plist |
BUILD_CERTIFICATE_BASE64 / P12_PASSWORD | Developer ID certificate imported into the runner keychain |
SIGNING_CERTIFICATE_NAME | Identity name passed to codesign |
APPLE_ID / APPLE_ID_PWD / APPLE_TEAM_ID | Notarization credentials (APPLE_ID_PWD is an app-specific password) |
RELEASE_TOKEN | PAT used by semantic-release, so the created release triggers the build workflow |
Rotating the Sparkle key means updating SPARKLE_KEY and SUPublicEDKey
together — apps already in the wild trust the old public key, so a mismatched
pair silently stops updates from installing.
Coming soon).Swift
87.5%
TypeScript
11.1%