Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions .github/workflows/build-fork-macos.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Build OpenScreen Subscription for macOS
name: Build PurplePrint Studio for macOS

on:
workflow_dispatch:
Expand Down Expand Up @@ -98,8 +98,8 @@ jobs:
run: |
set -euo pipefail
VERSION="$(node -p 'require("./package.json").version')"
APP="$(find "release/${VERSION}" -maxdepth 3 -name 'OpenScreen Subscription.app' -type d -print -quit)"
[ -n "$APP" ] || { echo "::error::OpenScreen Subscription.app was not packaged"; exit 1; }
APP="$(find "release/${VERSION}" -maxdepth 3 -name 'PurplePrint Studio.app' -type d -print -quit)"
[ -n "$APP" ] || { echo "::error::PurplePrint Studio.app was not packaged"; exit 1; }
echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
echo "path=${APP}" >> "$GITHUB_OUTPUT"

Expand All @@ -114,7 +114,7 @@ jobs:
run: |
set -euo pipefail
APP="${{ steps.app.outputs.path }}"
BIN="${APP}/Contents/MacOS/OpenScreen Subscription"
BIN="${APP}/Contents/MacOS/PurplePrint Studio"
RESOURCES="${APP}/Contents/Resources"
NATIVE="${RESOURCES}/electron/native/bin/darwin-${{ matrix.arch }}"

Expand Down Expand Up @@ -147,9 +147,9 @@ jobs:
- name: Smoke-test packaged CLI boot
run: |
set -euo pipefail
BIN="${{ steps.app.outputs.path }}/Contents/MacOS/OpenScreen Subscription"
BIN="${{ steps.app.outputs.path }}/Contents/MacOS/PurplePrint Studio"
"$BIN" help > cli-help.txt
grep -q "OpenScreen CLI" cli-help.txt
grep -Fq "PurplePrint Studio CLI (openscreen command)" cli-help.txt

- name: Create DMG
id: dmg
Expand All @@ -160,15 +160,15 @@ jobs:
arm64) LABEL="Apple-Silicon" ;;
x64) LABEL="Intel" ;;
esac
OUT="release/${VERSION}/OpenScreen-Subscription-${VERSION}-macOS-${LABEL}.dmg"
OUT="release/${VERSION}/PurplePrint-Studio-${VERSION}-macOS-${LABEL}.dmg"
STAGING="release/${VERSION}/dmg-${{ matrix.arch }}"
rm -rf "$STAGING" "$OUT"
mkdir -p "$STAGING"
cp -R "${{ steps.app.outputs.path }}" "$STAGING/"
ln -s /Applications "$STAGING/Applications"
hdiutil create \
-srcfolder "$STAGING" \
-volname "OpenScreen Subscription" \
-volname "PurplePrint Studio" \
-fs HFS+ \
-format UDBZ \
"$OUT"
Expand All @@ -185,7 +185,7 @@ jobs:
}
trap cleanup EXIT
hdiutil attach -readonly -nobrowse -mountpoint "$MOUNT" "${{ steps.dmg.outputs.path }}" >/dev/null
APP="${MOUNT}/OpenScreen Subscription.app"
APP="${MOUNT}/PurplePrint Studio.app"
test -d "$APP"
test -L "${MOUNT}/Applications"
codesign --verify --deep --strict "$APP"
Expand All @@ -204,7 +204,7 @@ jobs:
import { readFileSync, writeFileSync } from "node:fs";
const bytes = readFileSync(process.env.DMG);
const report = {
product: "OpenScreen Subscription",
product: "PurplePrint Studio",
version: process.env.VERSION,
architecture: process.env.ARCH,
bundleId: "io.github.purpleprintai.openscreen-subscription",
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ release/**
# Playwright
test-results
playwright-report/
/.playwright-cli/
/output/playwright/


# Vitest browser mode screenshots
Expand Down
43 changes: 42 additions & 1 deletion FORK-CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# OpenScreen Subscription fork changelog
# PurplePrint Studio fork changelog

This file tracks changes made by the unofficial
[PurplePrintAI/openscreen-subscription](https://github.com/PurplePrintAI/openscreen-subscription)
Expand All @@ -17,6 +17,47 @@ see [FORK.md](FORK.md).
For the dated review of newer upstream changes, see
[FORK-UPSTREAM-REVIEW.md](FORK-UPSTREAM-REVIEW.md).

## Unreleased — PurplePrint Studio identity (`1.10.0-subscription.8` candidate)

- Adopts the PurplePrint GraphOS family's neutral surfaces, restrained violet
accents, typography hierarchy and product mark across the editor and capture
entry surfaces. Recording and semantic status colors retain their meanings.
- Renames visible app, installer, Start menu and macOS package labels to
PurplePrint Studio. The technical app ID, data profile, `.openscreen` format,
CLI command and GitHub update origin stay stable for compatibility.
- Keeps upstream attribution explicit. This work does not add Design Coach/MCP
integration or claim GraphOS runtime integration.
- Before live installation, the unsigned Windows NSIS package was smoke-tested
with an isolated profile. Packaged H.264 import, editor launch and MP4 export
passed with synthetic media.
- An isolated profile created by the installed `.7` fork retained its project,
media clip, light theme and preferences when opened by the Studio package;
the old project exported a decodable MP4. A packaged Windows WGC window
capture of a generated, non-user-content target also reopened and exported.
This exercised native capture with automated control. On the installed `.8`
app, the owner separately confirmed that a physical mouse click on the HUD's
Screen button opened the source selector. Physical record/stop controls and
a user-driven recording/export pass remain unverified.
- With the owner's approval, the `.8` NSIS installer upgraded the existing
per-user `.7` registration. It removed the old executable, installed Studio
in a product-named child folder beneath the prior custom location and replaced
the Start-menu shortcut. A local backup was verified before installation;
three existing project files and the AI configuration retained their hashes.
Studio launched using the existing locale. The installed `.8` binary loaded
an isolated copy of all three real project documents (three assets and three
clips) and opened the editor without emitting their contents. The live
profile was not used for this project-loading test; private footage was not
exported.
- Builds Apple Silicon and Intel macOS DMGs in
[the fork's validation workflow](https://github.com/PurplePrintAI/openscreen-subscription/actions/runs/36320426373).
Both passed architecture, native payload, bundle ID, ad-hoc signature, CLI
boot and mounted-DMG checks. The bundled installation guide uses the Studio
name and links Apple's current per-app security procedure. A real Mac record →
edit → export pass, Developer ID signing and notarization remain release
gates. No Studio release has been published.
- Advances the unpublished candidate to `1.10.0-subscription.8`, refreshes the
Nix dependency hash and checks the rebranded CLI banner in macOS packaging.

## 1.10.0-subscription.7 — 2026-09-27

### GPT-6 model catalog
Expand Down
9 changes: 5 additions & 4 deletions FORK.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# OpenScreen Subscription — independent fork
# PurplePrint Studio — independent OpenScreen fork

This is an **unofficial, independently maintained fork** of
PurplePrint Studio (formerly OpenScreen Subscription) is an **unofficial,
independently maintained fork** of
[getopenscreen/openscreen](https://github.com/getopenscreen/openscreen), initially
based on upstream **v1.10.0** (`dbdadb7d27fe3287d994fb741d6f264a31066648`).
It is not an official OpenScreen release and is not endorsed by the upstream
Expand All @@ -18,8 +19,8 @@ architecture, policy and release notes behind those changes.
- Retain API-key providers, editor tool validation and checkpoints.
- Separate installation identity, user data and update downloads from upstream.

The app remains free. "Subscription" names the optional use of the user's own
eligible ChatGPT plan; this fork does not sell or require its own plan. Codex CLI
The app remains free. The former "Subscription" name described optional use of the
user's own eligible ChatGPT plan; Studio does not sell or require its own plan. Codex CLI
is a user-installed dependency, not bundled in the installer. Tokens, API keys,
user settings, recordings and diagnostic transcripts must never be committed or
uploaded as release assets.
Expand Down
32 changes: 20 additions & 12 deletions MACOS-INSTALLATION.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
# OpenScreen Subscription on macOS
# PurplePrint Studio on macOS

OpenScreen Subscription is an unofficial fork. The current macOS packages are
validation prereleases with the fork bundle identifier and an ad-hoc hardened-runtime
signature. They are **not notarized by Apple**.
> This guide covers PurplePrint Studio validation builds, including the
> unpublished `1.10.0-subscription.8` candidate. It is not a stable consumer release.

PurplePrint Studio is an unofficial OpenScreen fork. The current macOS packages
carry the fork bundle identifier and an ad-hoc hardened-runtime signature. They
are **not Developer ID signed or notarized by Apple**. Apple warns that running
software without those checks may put the Mac and its data at risk; use these
packages only for controlled testing from a source you trust.

## Choose the package

Expand All @@ -15,11 +20,14 @@ preview and export would all run through translation.

## Install and open

1. Download the matching `.dmg` from this fork's GitHub prerelease.
2. Open the DMG and drag **OpenScreen Subscription** to **Applications**.
3. In Applications, Control-click **OpenScreen Subscription**, choose **Open**, and
confirm the first launch. This is the per-app Gatekeeper path for an unnotarized
validation build. Do not disable Gatekeeper globally.
1. Obtain the matching `.dmg` from the fork's validation workflow or an approved
prerelease. Compare its SHA-256 with the accompanying `SHA256SUMS-macOS.txt`.
2. Open the DMG and drag **PurplePrint Studio** to **Applications**.
3. Try opening **PurplePrint Studio** from Applications. If macOS blocks it and
you independently decide to test this unnotarized build despite the warning,
use Apple's [Privacy & Security → Open Anyway procedure](https://support.apple.com/en-au/102445)
after that attempt. Do not disable Gatekeeper globally or remove quarantine
attributes by command line.
4. Grant only the permissions needed for the features you use. macOS may request
Screen & System Audio Recording, Accessibility, Microphone or Camera access.
5. Fully quit and reopen the app after changing a privacy permission.
Expand All @@ -34,14 +42,14 @@ Codex CLI and Claude Code are optional external dependencies. They are never bun
in the DMG.

- ChatGPT subscription: install the official Codex CLI, then connect the account in
OpenScreen's AI settings.
Studio's AI settings.
- Claude subscription: install the official Claude Code CLI and run
`claude auth login` in Terminal before checking the connection in OpenScreen.
`claude auth login` in Terminal before checking the connection in Studio.

The packaged app checks the inherited PATH and common Finder-safe locations:
`~/.local/bin`, `~/.npm-global/bin`, `~/.volta/bin`, `~/Library/pnpm`,
`/opt/homebrew/bin` and `/usr/local/bin`. The corresponding command should work in
Terminal (`codex --version` or `claude --version`) before troubleshooting OpenScreen.
Terminal (`codex --version` or `claude --version`) before troubleshooting Studio.

## Known transcription limitation

Expand Down
16 changes: 12 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,20 @@
> **Unofficial fork: OpenScreen Subscription.** Adds local ChatGPT/Codex and Claude Code subscription routing, AI-session UI improvements, and a Windows Unicode recording-path fix. This is not an upstream release or endorsement. See [FORK.md](FORK.md) for attribution, policy and publication boundaries, and [FORK-CHANGELOG.md](FORK-CHANGELOG.md) for the versioned differences from upstream v1.10.0. Use this fork's release artifacts, not the upstream installers linked in the original documentation below.
> **PurplePrint Studio is an independent, unofficial fork of [OpenScreen](https://github.com/getopenscreen/openscreen).** This working rebrand is not an upstream release or endorsement. Published `1.10.0-subscription.*` installers still use the former OpenScreen Subscription name until a Studio build passes release validation. See [FORK.md](FORK.md) for provenance and [FORK-CHANGELOG.md](FORK-CHANGELOG.md) for changes. Use [this fork's releases](https://github.com/PurplePrintAI/openscreen-subscription/releases), not the upstream installers described later on this page.

<p align="center">
<img src="public/openscreen.png" alt="OpenScreen Logo" width="64" />
<img src="public/purpleprint-studio.png" alt="PurplePrint Studio mark" width="64" />
</p>

# <p align="center">OpenScreen</p>
# <p align="center">PurplePrint Studio</p>

<p align="center"><strong>A free, open-source desktop app for recording your screen and turning the result into polished product demos and walkthroughs.</strong></p>
<p align="center"><strong>Agentic Film Editor for product demos and GTM video content.</strong></p>

PurplePrint Studio remains free to use. It records and edits locally; optional AI editing uses the user's own configured provider or local Codex/Claude Code runtime. The existing `.openscreen` project format and `openscreen` CLI command remain unchanged for compatibility. Design Coach handoff and GraphOS integration are not included in this rebrand. See the [Studio identity and release gates](docs/purpleprint-studio-identity.md).

## OpenScreen upstream documentation — reference only

The feature overview and installation sections below describe the upstream OpenScreen project. Its Store listings, signing claims and release links **do not apply to this fork**. [FORK.md](FORK.md) describes fork release boundaries; [MACOS-INSTALLATION.md](MACOS-INSTALLATION.md) currently documents the published packages under their former name. Studio packages still need validation.

### OpenScreen

<p align="center">
<img src="public/demo.gif" alt="Editing a recording in OpenScreen: wallpaper and video effects, an AI-assisted cut driven from the chat, then export" width="100%" />
Expand Down
58 changes: 58 additions & 0 deletions docs/purpleprint-studio-identity.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# PurplePrint Studio identity

Status: worktree implementation and unsigned Windows candidate installed on the
owner's PC for validation; no Studio release has been published.

PurplePrint Studio is the agentic film editor intended as a video-production
companion to PurplePrint Design Coach's GTM and operating phases. GraphOS is the
developing top-level PurplePrint product. This fork does **not** currently share
GraphOS runtime state or consume Design Coach/MCP project context; that handoff
belongs to the Design Coach/MCP workstream, not this frontend identity change.

## Visual contract

- Neutral dark surfaces are the default. Light mode remains available and an
existing explicit light preference is respected.
- Violet identifies the PurplePrint family, focus, selected tools and primary
actions. It does not replace the functional colors for recording, progress,
success, warnings or errors.
- Borders and small elevation steps carry panel hierarchy. Overlays can be more
prominent, while the editing surface and footage remain the visual focus.
- The editor's minimum 800px desktop width retains mode and export controls;
chat and the inspector start collapsed when their width would crowd the stage.

The implementation lives in `src/styles/design-tokens.css` and the active editor
and capture surfaces. The checked-in Studio icon assets are generated from
`public/purpleprint-studio.svg` geometry by
`scripts/generate-studio-icons.py` (Pillow is needed only to regenerate them).

## Compatibility and provenance

- Visible product name: **PurplePrint Studio**. Descriptor: **Agentic Film Editor**.
- The fork's technical app ID, package/data profile name, GitHub update origin,
`.openscreen` project extension and `openscreen` CLI command remain unchanged.
Test these boundaries in a packaged upgrade before a public release.
- Preserve the upstream MIT license, copyright notices and independent-fork
disclosure. Do not imply OpenScreen maintainer endorsement.
- Do not add a paywall to this editor as part of the Design Coach bundle.

## Release gate

Before publishing a Studio installer: finish physical HUD record/stop testing, verify
the installed app's real-project export path and update behavior from its
product-named child directory, and run a real Mac record → edit → export pass.
A stable Mac consumer release additionally needs Developer ID signing,
notarization and a privacy-permission review. Design Coach/MCP linkage is a
separate workstream.

| Gate | Current evidence |
| --- | --- |
| Windows package identity | Local unsigned NSIS package launched with an isolated profile; visible product name, bundled notices and fork update origin checked. |
| Profile continuity | Installed OpenScreen Subscription `.7` created an isolated-profile project with synthetic H.264 media. Studio `.8` reopened its clip, light theme and preferences, then exported a decodable MP4. On the owner's live profile, three project documents and the AI configuration were hash-identical to the verified pre-install backup. The installed `.8` binary separately loaded copies of all three real project documents and opened the editor without outputting their contents; private footage was not exported. |
| Windows native capture | Packaged WGC recorded a generated QA window with microphone, system audio and camera disabled. The saved project reopened and exported a decodable MP4. Control was automated below the OS hit-test. The owner separately confirmed that a physical click on the installed `.8` HUD's Screen button opened the source selector; record/stop hit-testing and a user-driven recording/export pass remain unverified. |
| Installation upgrade | Owner-approved `.8` NSIS upgrade reused the per-user uninstall registration, removed the old executable, installed Studio in a product-named child folder under the previous custom root, and replaced the Start-menu shortcut. The installed app launched with the existing locale. The path transition and updater behavior still need review before publication. |
| macOS | [CI run 36320426373](https://github.com/PurplePrintAI/openscreen-subscription/actions/runs/36320426373) built Apple Silicon and Intel DMGs from commit `27bc1f5c` with the corrected installation guide. Both passed bundle ID, architecture, native payload, ad-hoc signature, CLI boot and mounted-DMG checks; local SHA-256 values matched the workflow report. Real Mac recording/edit/export, Developer ID signing and notarization remain unverified. |

The source selector failed to list the QA window on the first automated attempt
after it appeared, then found it on retry. Treat that as a transient observation,
not evidence that source discovery is reliable on every launch.
10 changes: 5 additions & 5 deletions electron-builder.fork.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
{
"extends": "./electron-builder.json5",
"appId": "io.github.purpleprintai.openscreen-subscription",
"productName": "OpenScreen Subscription",
"productName": "PurplePrint Studio",
"extraMetadata": {
"name": "openscreen-subscription",
"description": "Unofficial OpenScreen fork with optional ChatGPT and local Claude integration",
"description": "PurplePrint Studio, an agentic film editor based on OpenScreen",
"author": { "name": "PurplePrintAI", "url": "https://github.com/PurplePrintAI" },
"homepage": "https://github.com/PurplePrintAI/openscreen-subscription",
"repository": {
Expand All @@ -15,18 +15,18 @@
"publish": { "provider": "github", "owner": "PurplePrintAI", "repo": "openscreen-subscription" },
"win": {
"target": ["nsis"],
"artifactName": "OpenScreen-Subscription-${version}-Windows-x64-Setup.${ext}"
"artifactName": "PurplePrint-Studio-${version}-Windows-x64-Setup.${ext}"
},
"mac": {
"target": ["dmg"],
"artifactName": "OpenScreen-Subscription-${version}-macOS-${arch}.${ext}"
"artifactName": "PurplePrint-Studio-${version}-macOS-${arch}.${ext}"
},
"nsis": {
"oneClick": false,
"allowToChangeInstallationDirectory": true,
"createStartMenuShortcut": true,
"createDesktopShortcut": false,
"shortcutName": "OpenScreen Subscription"
"shortcutName": "PurplePrint Studio"
},
"extraResources": [
{ "from": "FORK.md", "to": "FORK.md" },
Expand Down
Loading
Loading