Flyfish Viewer uses one private aggregate workspace and several public open-source repositories. Keep these roles stable when releasing or synchronizing code.
| Branch | Role | Package responsibility | Source boundary |
|---|---|---|---|
main |
Private original aggregate workspace | @flyfish-group/file-viewer-workspace |
Private Gitea original repository. Maintains the complete monorepo: apps, docs, core, standard component packages, compatibility aliases, release automation, internal integration history, and priority support context. It is not reduced to @file-viewer/core. |
v2 |
Vue 2.7 component line | @file-viewer/vue2.7, @flyfish-group/file-viewer |
Shares @file-viewer/core; exported component source is synchronized to the public flyfish-dev/file-viewer-vue2.7 repositories. |
v3 |
Vue 3 component line | @file-viewer/vue3, @flyfish-group/file-viewer3, file-viewer3 |
Shares @file-viewer/core; exported component source is synchronized to the public flyfish-dev/file-viewer-vue3 repositories. |
All other ecosystem packages (@file-viewer/react, @file-viewer/react-legacy, @file-viewer/web, @file-viewer/jquery, and @file-viewer/svelte) are maintained as standard component packages and exported to public GitHub/Gitee repositories under flyfish-dev.
The public flyfish-dev/file-viewer repository is the open-source aggregate and one-stop distribution entry. It contains runnable main demo source, component demo source, @file-viewer/core, standard component packages, compatibility aliases, documentation source, built/minified output, demo/docs output, samples, release tarballs, release manifests, and bilingual README files. It is not the private original repository.
The private Gitea main branch remains the complete original aggregate workspace with branch cutover history, release automation, internal integration scripts, and priority support context. Sponsorship through the shop is for maintainer support and priority help while the public repositories remain open source.
Before replacing remote branch roles, maintainers should prepare and inspect dry-run snapshots from the private aggregate workspace:
pnpm branch:cutover:prepare
pnpm branch:cutover:verify
pnpm branch:cutover:apply
The snapshots are written to .release/branch-cutover/v2-vue2.7-component and .release/branch-cutover/v3-vue3-component inside that private workspace. They contain standalone package trees plus BRANCH_ROLE.md and branch-cutover-manifest.json, so maintainers can verify the exact future v2 and v3 contents. Private Gitea main is updated from the complete current workspace, not from a core-only snapshot.
pnpm branch:cutover:apply is a dry-run command by default. To actually update the private Gitea main, v2, and v3 branches, maintainers must re-run it with -- --push; the script first backs up the existing remote branch heads under workspace/pre-branch-cutover-*, updates main from the complete current workspace, and uses --force-with-lease for the target branch updates.
Run the source-boundary gate before release work:
pnpm verify:branch-roles
This command checks ecosystem/branch-roles.json, ecosystem/wrappers.json, the configured origin remote, component repository ownership, core visibility, and the open-source main repository policy.