Skip to content

Dev - #13459

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

Dev#13459
OgBops wants to merge 16 commits into
obsproject:masterfrom
OgBops:dev

Conversation

@OgBops

@OgBops OgBops commented May 22, 2026

Copy link
Copy Markdown

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 added 16 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.

@OgBops OgBops left a comment •

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I apologize team

@Fenrirthviti

Copy link
Copy Markdown
Member

I will affirm as well that you do not have permission to use our branding in your fork of OBS. Please change it, or we will be forced to take further action.

@OgBops

This comment was marked as spam.

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