mirror of
https://github.com/penpot/penpot.git
synced 2026-10-31 15:00:32 +00:00
A branch must be open to every member of the team of its source file, by role: owners, admins and editors open and edit it, viewers read it. Two things got in the way. Branch creation granted its creator the owner role on the branch file (a file_profile_rel row), so a team editor became owner and admin of their own branch. create-file-branch grants no file role any more: a branch takes its permissions from the team and project roles alone. materialize-file-branch, which turns a branch into an ordinary file, now grants the owner role to the profile that runs it, as creating a file does. Migration 0807 deletes the file roles of existing branches; materialised files are no longer branches and keep theirs. move-files moved a file but left its branches in the old project. The permissions of a branch come from the project it lives in, so after a move to another team its members got not-found and the workspace asked them to request access. move-files now moves the branches of every moved file with it, deleted branch rows included since their files live on until the GC, and the broken library links cleanup already covers them. It refuses to move a branch file on its own (:cant-move-a-branch), which would part it from its source. Migration 0808 puts every branch back in the project of its source file and drops the links of those branches to libraries of their old team. Assigning a reviewer to a design review grants no access: the email and the dashboard notification only let the reviewer know. Tests cover a branch created with no file role, the creator keeping editor rights, another editor saving to the branch, a viewer reading it, the owner role granted on materialise, a lone branch refused by move-files and an editor of the new team opening a moved branch.