Skip to content

Dev#13460

Closed
OgBops wants to merge 18 commits into
obsproject:masterfrom
OgBops:dev
Closed

Dev#13460
OgBops wants to merge 18 commits into
obsproject:masterfrom
OgBops:dev

Conversation

@OgBops
Copy link
Copy Markdown

@OgBops OgBops commented May 22, 2026

Description

Motivation and Context

How Has This Been Tested?

Types of changes

Checklist:

  • I have read the contributing document.
  • My code has been run through clang-format.
  • My code follows the project's style guidelines
  • My code is not on the master branch.
  • My code has been tested.
  • All commit messages are properly formatted and commits squashed where appropriate.
  • I have included updates to all appropriate documentation.

OgBops and others added 18 commits May 17, 2026 20:05
- Rewrite README.rst to identify this as a fork of upstream OBS Studio,
  with attribution preserved and pointers to the upstream project for
  general OBS docs.
- Add ROADMAP.md describing the three anchor features (multi-destination
  streaming, native multi-canvas UI, modern UI + AI plugin suite) and
  versioning targets.
- Allow ROADMAP.md in the project's allowlist-style .gitignore.
Upstream's push workflow only triggers builds on master and release/**.
Since this fork uses master to track upstream and dev as the integration
branch, we extend the push trigger and the format check to run on dev and
feature/** branches as well.

This means every push to dev or a feature branch will exercise the full
macOS, Ubuntu, and Windows build matrix on GitHub Actions, which is our
substitute for a local cross-platform dev environment.
The obs-studio-plus fork has no upstream tags pushed to origin, so CI
runs hit `git describe` returning a bare SHA, which versionconfig.cmake
then fed into project()/regexes that expect M.m.p — failing the macOS
build with "VERSION format invalid" before configure finished.

Detect the no-tag case and fall back to _obs_default_version (0.0.1).
`.package.zsh` and `Package-Windows.ps1` both call `git describe --tags --long`
which exits non-zero when no tag is reachable, breaking the macOS DMG name and
Windows zip name on the obs-studio-plus fork (zero tags on origin).

Detect the empty result and synthesize a `<version>-<distance>-g<sha>` string
from the commit count + short HEAD hash so packaging proceeds.
Two follow-ups to the previous package script change:

1. The fallback in `.package.zsh` was bypassed: with `setopt ERR_RETURN`,
   a failing `git describe` inside `$(...)` triggered TRAPZERR, leaking
   the script callstack into `git_description`. Adding `|| true` keeps
   the substitution successful so the empty-string check actually runs.

2. `frontend/cmake/os-linux.cmake` populated `APPDATA_RELEASE_DATE` with
   `git log --tags -1`, which returns empty when no tag exists. Empty
   date fails flatpak-builder-lint with `release-time-missing date`.
   Fall back to the latest commit's date.
Previous README pitched features that don't exist yet ("native vertical +
horizontal canvases", "first-class multi-destination streaming") as if
they shipped. Replace with:

- Honest "current status" section listing each branch and what's on it
- A clear "today a build from dev looks like upstream" disclaimer
- Pointers to the Actions tab for prebuilt artifacts, with the macOS
  quarantine-strip command since builds are ad-hoc signed
- A build-status badge for dev
paths-ignore already covered .md; extend to .rst (the README format),
plus AUTHORS and COPYING which are touched periodically when syncing
upstream. Saves a 30+ min cross-platform run for documentation edits.
The fork's purpose changes from "OBS with extra Qt features" to "headless
plus-host engine for the Plus desktop app." Plus is a separate, future
Rust + Tauri product that talks to libobs over IPC, the same way
Streamlabs Desktop uses obs-studio-node. Running libobs out-of-process
keeps the GPL boundary at the IPC pipe and allows the Plus app to be
licensed independently.

Concretely:
- PLUS_PLAN.md: full plan, 9 phases, ~80 weeks. Phase 0 starts next.
- CONTRIBUTING.md: prepended fork-specific rules. OBS core (libobs/,
  plugins/, frontend C++/Qt, deps/) is read-only. Smell test, escape
  hatch, branching policy.
- README.rst: rewritten to describe the engine role. The previous "OBS
  with multi-canvas + multi-dest + AI plugins" pitch is retired.
- ROADMAP.md: stub pointing at PLUS_PLAN.md.
- .github/workflows/no-core-changes.yaml: CI guard that diffs against
  upstream/master and fails any push that modifies off-limits paths.
- .gitignore: allowlist PLUS_PLAN.md and /engine for upcoming phase 0.

The previous Qt feature branches (multi-output-foundation,
multi-destination-dock, ai-captions-plugin) are deleted from origin in
the same session. Their work isn't wasted — concepts move into the IPC
protocol — but they don't move forward as Qt code.
The OBS Project requested we stop using "OBS" branding in this fork.
Renaming everything that was forward-facing as "OBS Studio Plus" or
"Plus" to "Mosaic". The repository on GitHub has been renamed to
OgBops/mosaic in the same change; old OBS-branded CI artifacts have
been deleted from the Actions tab.

Concretely:
- README.rst: rewritten under the Mosaic name with an explicit
  trademark notice section. No public binary releases until the Mosaic
  app exists with its own branding.
- CONTRIBUTING.md (fork section): renamed; added a "Branding
  separation" subsection codifying that we don't redistribute
  upstream-branded binaries.
- PLUS_PLAN.md → MOSAIC_PLAN.md: full plan updated; project history
  notes the rename. plus-host → mosaic-host throughout. New risk
  entry for trademark separation.
- ROADMAP.md: stub now points at MOSAIC_PLAN.md.
- .github/workflows/no-core-changes.yaml: error message references
  Mosaic.
- .github/workflows/push.yaml: top comment updated.
- .gitignore: PLUS_PLAN.md allowlist replaced with MOSAIC_PLAN.md.

Local clone path stays as ~/Desktop/obs-studio because the directory
is the upstream source we work in, not the product. The product name
doesn't have to match the local directory name.
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