Enhanced visibility indicators with clearer visual distinction between "Everyone" (globe icon) and "Private" (lock icon) states.
Updated main button behavior to show "Everyone", "Private", or member avatars/overflow in non-private cases.
Improved tooltip text to display accurate member counts and network-wide labeling based on visibility.
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
* **New Features**
* Enhanced visibility indicators with clearer visual distinction between "Everyone" (globe icon) and "Private" (lock icon) states.
* Updated main button behavior to show "Everyone", "Private", or member avatars/overflow in non-private cases.
* Improved tooltip text to display accurate member counts and network-wide labeling based on visibility.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
MembersIndicator now excludes the current user when computing visible members, classifies visibility as network-wide, private (only current user), or multi-member, and renders a globe, lock, or avatar group plus updated tooltip text accordingly.
Changes
MembersIndicator Visibility States
Layer / File(s)
Summary
Member visibility computation js/desktop/src/features/particles/stream-top-bar.tsx
Import of Lock and refactored member-id computation: builds allMemberIds from visibility, computes othersIds by excluding the current user, determines isPrivate from othersIds emptiness, and recalculates shownMembers/overflow from othersIds.
Visibility rendering and tooltip js/desktop/src/features/particles/stream-top-bar.tsx
Button renders "Everyone" with globe icon for network-wide, "Private" with lock icon when no other members, or avatar group with overflow otherwise. Tooltip keeps network name for Everyone and uses allMemberIds.length for non-network cases.
Estimated code review effort
🎯 3 (Moderate) | ⏱️ ~20 minutes
Poem
🐰 I hopped along the stream and peeked inside the view,
Was it Everyone or Private? A lock or globe to cue.
The avatars arranged in rows, the counts now clear and bright,
A little rabbit clapped its paws and nodded with delight. 🌐🔒
🚥 Pre-merge checks | ✅ 4 | ❌ 1
❌ Failed checks (1 warning)
Check name
Status
Explanation
Resolution
Docstring Coverage
⚠️ Warning
Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.
Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name
Status
Explanation
Description Check
✅ Passed
Check skipped - CodeRabbit’s high-level summary is enabled.
Title check
✅ Passed
The title accurately describes the main change: adding a private indicator to the MembersIndicator component for streams that should be marked as private.
Linked Issues check
✅ Passed
Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check
✅ Passed
Check skipped because no linked issues were found for this pull request.
✏️ Tip: You can configure your own custom pre-merge checks in the settings.
✨ Finishing Touches📝 Generate docstrings
Create stacked PR
Commit on current branch
🧪 Generate unit tests (beta)
Create PR with unit tests
Commit unit tests in branch show-private-for-personal-streams
Comment @coderabbitai help to get the list of available commands and usage tips.
<!-- This is an auto-generated comment: summarize by coderabbit.ai -->
<!-- review_stack_entry_start -->
[](https://app.coderabbit.ai/change-stack/flowy-live/llink/pull/255?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)
<!-- review_stack_entry_end -->
No actionable comments were generated in the recent review. 🎉
<details>
<summary>ℹ️ Recent review info</summary>
<details>
<summary>⚙️ Run configuration</summary>
**Configuration used**: defaults
**Review profile**: CHILL
**Plan**: Pro Plus
**Run ID**: `4c0ad0a5-ec60-49c5-a070-7b96b8ec59dd`
</details>
<details>
<summary>📥 Commits</summary>
Reviewing files that changed from the base of the PR and between 1725a44f9b128d4048b0fb1d1a9ed0e910fa4c7a and f90b81acfdfa9d8b112629c31ee0cf72ca4fb080.
</details>
<details>
<summary>📒 Files selected for processing (1)</summary>
* `js/desktop/src/features/particles/stream-top-bar.tsx`
</details>
<details>
<summary>🚧 Files skipped from review as they are similar to previous changes (1)</summary>
* js/desktop/src/features/particles/stream-top-bar.tsx
</details>
</details>
---
<!-- walkthrough_start -->
<details>
<summary>📝 Walkthrough</summary>
## Walkthrough
MembersIndicator now excludes the current user when computing visible members, classifies visibility as network-wide, private (only current user), or multi-member, and renders a globe, lock, or avatar group plus updated tooltip text accordingly.
## Changes
**MembersIndicator Visibility States**
|Layer / File(s)|Summary|
|---|---|
|**Member visibility computation** <br> `js/desktop/src/features/particles/stream-top-bar.tsx`|Import of `Lock` and refactored member-id computation: builds `allMemberIds` from visibility, computes `othersIds` by excluding the current user, determines `isPrivate` from `othersIds` emptiness, and recalculates `shownMembers`/`overflow` from `othersIds`.|
|**Visibility rendering and tooltip** <br> `js/desktop/src/features/particles/stream-top-bar.tsx`|Button renders "Everyone" with globe icon for network-wide, "Private" with lock icon when no other members, or avatar group with overflow otherwise. Tooltip keeps network name for Everyone and uses `allMemberIds.length` for non-network cases.|
## Estimated code review effort
🎯 3 (Moderate) | ⏱️ ~20 minutes
## Poem
> 🐰 I hopped along the stream and peeked inside the view,
> Was it Everyone or Private? A lock or globe to cue.
> The avatars arranged in rows, the counts now clear and bright,
> A little rabbit clapped its paws and nodded with delight. 🌐🔒
</details>
<!-- walkthrough_end -->
<!-- pre_merge_checks_walkthrough_start -->
<details>
<summary>🚥 Pre-merge checks | ✅ 4 | ❌ 1</summary>
### ❌ Failed checks (1 warning)
| Check name | Status | Explanation | Resolution |
| :----------------: | :--------- | :----------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------- |
| Docstring Coverage | ⚠️ Warning | Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. | Write docstrings for the functions missing them to satisfy the coverage threshold. |
<details>
<summary>✅ Passed checks (4 passed)</summary>
| Check name | Status | Explanation |
| :------------------------: | :------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Description Check | ✅ Passed | Check skipped - CodeRabbit’s high-level summary is enabled. |
| Title check | ✅ Passed | The title accurately describes the main change: adding a private indicator to the MembersIndicator component for streams that should be marked as private. |
| Linked Issues check | ✅ Passed | Check skipped because no linked issues were found for this pull request. |
| Out of Scope Changes check | ✅ Passed | Check skipped because no linked issues were found for this pull request. |
</details>
<sub>✏️ Tip: You can configure your own custom pre-merge checks in the settings.</sub>
</details>
<!-- pre_merge_checks_walkthrough_end -->
<!-- finishing_touch_checkbox_start -->
<details>
<summary>✨ Finishing Touches</summary>
<details>
<summary>📝 Generate docstrings</summary>
- [ ] <!-- {"checkboxId": "7962f53c-55bc-4827-bfbf-6a18da830691"} --> Create stacked PR
- [ ] <!-- {"checkboxId": "3e1879ae-f29b-4d0d-8e06-d12b7ba33d98"} --> Commit on current branch
</details>
<details>
<summary>🧪 Generate unit tests (beta)</summary>
- [ ] <!-- {"checkboxId": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "radioGroupId": "utg-output-choice-group-unknown_comment_id"} --> Create PR with unit tests
- [ ] <!-- {"checkboxId": "6ba7b810-9dad-11d1-80b4-00c04fd430c8", "radioGroupId": "utg-output-choice-group-unknown_comment_id"} --> Commit unit tests in branch `show-private-for-personal-streams`
</details>
</details>
<!-- finishing_touch_checkbox_end -->
<!-- tips_start -->
---
<sub>Comment `@coderabbitai help` to get the list of available commands and usage tips.</sub>
<!-- tips_end -->
<!-- internal state start -->
<!-- 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 -->
<!-- internal state end -->
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary by CodeRabbit
No actionable comments were generated in the recent review. 🎉
ℹ️ Recent review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID:
4c0ad0a5-ec60-49c5-a070-7b96b8ec59dd📥 Commits
Reviewing files that changed from the base of the PR and between
1725a44f9bandf90b81acfd.📒 Files selected for processing (1)
js/desktop/src/features/particles/stream-top-bar.tsx🚧 Files skipped from review as they are similar to previous changes (1)
📝 Walkthrough
Walkthrough
MembersIndicator now excludes the current user when computing visible members, classifies visibility as network-wide, private (only current user), or multi-member, and renders a globe, lock, or avatar group plus updated tooltip text accordingly.
Changes
MembersIndicator Visibility States
js/desktop/src/features/particles/stream-top-bar.tsxLockand refactored member-id computation: buildsallMemberIdsfrom visibility, computesothersIdsby excluding the current user, determinesisPrivatefromothersIdsemptiness, and recalculatesshownMembers/overflowfromothersIds.js/desktop/src/features/particles/stream-top-bar.tsxallMemberIds.lengthfor non-network cases.Estimated code review effort
🎯 3 (Moderate) | ⏱️ ~20 minutes
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1
❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings.
✨ Finishing Touches
📝 Generate docstrings
🧪 Generate unit tests (beta)
show-private-for-personal-streamsComment
@coderabbitai helpto get the list of available commands and usage tips.