-
Notifications
You must be signed in to change notification settings - Fork 78
Sandboxes: scope visibility, tighten merge gate, drop superuser bypass #4763
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
elias-ba
merged 82 commits into
release/2.16.4
from
fix/hide-non-accessible-sandboxes-4762
May 18, 2026
Merged
Changes from all commits
Commits
Show all changes
82 commits
Select commit
Hold shift + click to select a range
834944b
Hide non-accessible sandboxes from the sandboxes list
elias-ba eb9f8ee
Apply the same visibility rule to the global project picker
elias-ba 4ee4913
Make Sandboxes.visible_sandboxes/3 the single source of truth
elias-ba 7d1c7d7
Tighten picker render assertion to parse data-items JSON
elias-ba aeb9d0b
Move visible_sandboxes/3 from the Sandboxes policy to Projects
elias-ba b6861a6
Drop dead defensive branches in filter_descendants_for_user
elias-ba b148cc5
Polish visibility helpers for clarity and consistency
elias-ba f5eb5e8
Tighten visibility and scheduled-deletion handling
elias-ba de36d37
Walk to any ancestor root, not just parent_id-nil
elias-ba 19b824b
Reshape user-accessible tree at the data layer for the picker
elias-ba 8c02821
Replace ancestor walk per Repo.get with a single recursive CTE
elias-ba 69372a7
Format files per mix format
elias-ba b5a3332
Scope project_users preload to the current user
elias-ba d4b1d9e
Lock in picker pruning even when the cascade is bypassed at write
elias-ba 74aa8ad
Raise ArgumentError when project_users isn't preloaded
elias-ba a3dedff
Extract pipeline stages from get_project_tree_for_user/1
elias-ba c1ad032
Make the two recursive-CTE builders self-documenting
elias-ba be98f37
Strip caller references from public docstrings
elias-ba 1d23d1c
Return ProjectTreeItem from get_project_tree_for_user/1
elias-ba b8a1e06
Lock in handler-level visibility and add list_descendants unit tests
elias-ba 374f561
Add picker tree benchmark to measure picker query cost
elias-ba 227aea0
Use Benchee for the picker tree benchmark distribution
elias-ba 5e3fa95
Drop picker benchmark and its mix.exs dep scope expansion
elias-ba 36392aa
Centralise the sandbox visibility predicate
elias-ba 23654f2
Use a recursive CTE to walk to the root in visible_to_user?/2
elias-ba 2b0be05
Optimise root_of/1 with a recursive CTE walk
elias-ba 9704543
Make Sandboxes.parent_admin?/2 walk via CTE + bulk role check
elias-ba 40db44a
Cache project chain on Collaborate mount
elias-ba 553d93b
Reuse Projects.root_of/1 in Collaborate mount
elias-ba d18ccf8
Align sandbox access on direct project membership
elias-ba 7fccd26
Update tests for the fork-model sandbox access
elias-ba 4318aa7
Sync changelog and docstring with the fork-model rule
elias-ba 87e85ea
Tighten support-user wording in get_project_tree_for_user/1 docstring
elias-ba 36259fa
Tighten merge gate to admin/owner on source and stop naming descendants
elias-ba 6eb34c9
Collapse check_manage_permissions/3 into manage_authority/2
elias-ba 0f5a830
Show descendant count in the delete confirmation modal
elias-ba ffb171e
Drop root_project from visible_sandboxes and raise on missing preload
elias-ba 99225a8
Clarify list_sandboxes/1 docstring on where picker filtering lives
elias-ba bbcc483
Drop unreachable nil branch from nearest_visible_ancestor_id/3
elias-ba 07461e4
Drop unreachable nil base case from nearest_visible_ancestor_id
elias-ba 92a4145
Cover Projects.subscribe/0 with a publish/receive round-trip test
elias-ba e865ea6
Cover the singular and plural descendant copy in the delete modal
elias-ba 01f2025
Remove unused import
elias-ba e7ca495
Document the two-sided merge gate in the Sandboxes policy moduledoc
elias-ba 4adb355
Add one-line invariant note above Map.fetch! in nearest_visible_ances…
elias-ba 1df5bb2
Stop leaking the absolute workspace root to sandbox-only members
elias-ba dfbfe56
Hide the env-badge "main" fallback for sandboxes shown as access roots
elias-ba b5371f0
Show a 'Restricted parent project' placeholder when the access root i…
elias-ba 0e532d3
Match restricted-parent placeholder height with the project cards, dr…
elias-ba 6dbc9f7
Render the access root as a sandbox card with action buttons when it …
elias-ba 03861d0
Give the picker button a visible default color when the sandbox has none
elias-ba 547aabb
Use --color-primary-600 instead of hardcoded #4f39f6 for sandbox-card…
elias-ba 4563571
Drop redundant div wrapper around the access-root card in workspace_list
elias-ba 60eee2a
Compute access_root once in :project_scope and reuse it across the page
elias-ba f17ee93
Use Phoenix LiveView soft navigation in the picker instead of a full …
elias-ba 5242d60
Stop leaking ancestor names from the collaborative editor for sandbox…
elias-ba 27f625b
Lift display-name-with-access-root truncation into Projects
elias-ba 4223061
Let action handlers find the access-root sandbox by id, not just desc…
elias-ba 60cd41b
Replace find_managed_sandbox with a unified workspace_tree assign
elias-ba edb0fb1
Extract decorate_for_render and call manage_authority/2 once
elias-ba e42541f
Bring CollaborateNew and picker JS tests in line with the new contracts
elias-ba 28a4150
Address re-review: access_root fast-path, drop scheduled rows from mo…
elias-ba 0dfac2b
Extract active_descendants/1 and lock in scheduled-row exclusion with…
elias-ba 072763e
Mirror the scheduled-row exclusion test on the merge modal
elias-ba 5a4c949
Document the two-sided merge gate by caller; cover deeper hidden chains
elias-ba 72a2704
Cover display_name_within_access_root/2 directly
elias-ba a2dd4a7
Cover the access_root and current_user paths of breadcrumb_project_pi…
elias-ba 6b043c4
Collapse access_root_for_user/2 into a single round trip
elias-ba e387e6e
Trim docstrings to single lines, drop private-function comments
elias-ba 129c2d7
Drop dead [] branch in access_root_for_user/2
elias-ba 88fb2e4
Merge remote-tracking branch 'origin/main' into fix/hide-non-accessib…
elias-ba 219a682
Scope PR to visibility-only; track access-rule changes in #4768
elias-ba 6f8d60a
Tighten CHANGELOG entry to match the surrounding style
elias-ba 69cbf7a
Remove the "Restricted parent project" placeholder card
elias-ba 4f8a0f4
Drop the merge-modal mention from the CHANGELOG
elias-ba 5ddadf0
Revert data-storage settings test assertions to match main's HEEX
elias-ba 82fd4d3
Tighten merge button to admin/owner on source
elias-ba cb5b875
Flatten check_manage_permissions/3 to a single boolean per sandbox
elias-ba a6683e1
Drop superuser bypass from sandbox policies
elias-ba e0e21f7
Merge remote-tracking branch 'origin/release/2.16.4' into fix/hide-no…
elias-ba 8dfd614
Document both sides of the merge gate in the :merge_sandbox docstring
elias-ba e18dbbc
simplify changelog
josephjclark File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.