From bb43f42f2d837e3d63ef343f8340c1683f70b4ac Mon Sep 17 00:00:00 2001 From: "benjamin.747" Date: Sat, 25 Jul 2026 14:46:08 +0800 Subject: [PATCH] chore(moon)!: upgrade to Next 16, React 19, and Node 26 Move Moon to Node 26 / pnpm 11, Next 16.2.11, and React 19; refresh the pnpm catalog with deferred majors documented; drop unused Call surfaces; and land small-wave dependency bumps needed for a green web build. --- .github/workflows/web-sync-server-deploy.yml | 2 +- .github/workflows/web-test.yml | 6 +- .gitignore | 3 + moon/.gitignore | 1 + moon/.nvmrc | 2 +- moon/apps/sync-server/Dockerfile | 6 +- moon/apps/sync-server/package.json | 3 - moon/apps/sync-server/src/database.ts | 72 +- moon/apps/sync-server/src/index.ts | 24 +- moon/apps/sync-server/src/types.ts | 2 + moon/apps/sync-server/tsconfig.json | 3 - moon/apps/sync-server/turbo.json | 7 +- moon/apps/web/.eslintrc.js | 9 - moon/apps/web/.storybook/main.js | 8 +- moon/apps/web/Dockerfile | 6 +- moon/apps/web/atoms/call.ts | 24 - moon/apps/web/atoms/callToasts.ts | 21 - .../PendingAccountReviewButton.tsx | 2 +- .../apps/web/components/Activity/Activity.tsx | 2 +- .../AdminGroups/AddMembersDialog.tsx | 16 +- .../AdminGroups/AdminGroupEditDialog.tsx | 26 +- .../AdminGroups/CreateGroupDialog.tsx | 6 +- .../AdminGroups/DeleteGroupDialog.tsx | 2 +- .../AdminGroups/GroupMembersDialog.tsx | 10 +- moon/apps/web/components/AppBadge.tsx | 2 +- .../web/components/AttachmentGrid/index.tsx | 4 +- .../AttachmentLightbox/FigmaTip.tsx | 95 - .../AttachmentLightbox/FigmaToggleButton.tsx | 28 - .../AttachmentLightbox/FileDropdown.tsx | 14 +- .../AttachmentLightbox/GalleryThumbnail.tsx | 2 +- .../LightboxAttachmentRenderer.tsx | 22 +- .../NoteAttachmentLightboxComments.tsx | 2 +- .../NoteCommentAttachmentLightbox.tsx | 68 - .../components/AttachmentLightbox/index.tsx | 6 +- .../web/components/AvatarUploader/index.tsx | 4 +- moon/apps/web/components/Call/ActiveCall.tsx | 694 - .../components/Call/AutoplayBlockedError.tsx | 33 - moon/apps/web/components/Call/CallChat.tsx | 275 - moon/apps/web/components/Call/CallPeer.tsx | 160 - .../web/components/Call/CallPrepChecklist.tsx | 136 - moon/apps/web/components/Call/CallToasts.tsx | 38 - .../components/Call/ConnectionIndicator.tsx | 89 - .../Call/DesktopPermissionsDescription.tsx | 27 - .../Call/DesktopScreenShareSourcesDialog.tsx | 68 - .../Call/IncomingCallRoomInvitationToast.tsx | 122 - .../web/components/Call/InviteMembersForm.tsx | 71 - .../Call/InviteParticipantsPopover.tsx | 103 - moon/apps/web/components/Call/LeftCall.tsx | 18 - .../web/components/Call/LoggedOutPrompt.tsx | 63 - .../web/components/Call/NoiseCancellation.tsx | 39 - .../web/components/Call/PermissionsPrompt.tsx | 19 - .../web/components/Call/RecordingButton.tsx | 119 - .../components/Call/ScreenShareControls.tsx | 178 - .../components/Call/ScreenShareWithPeers.tsx | 55 - .../Call/StopScreensharingButton.tsx | 21 - .../components/Call/ToggleCallChatButton.tsx | 59 - .../apps/web/components/Call/useLeaveCall.tsx | 16 - moon/apps/web/components/CallRoom/index.tsx | 44 - .../CallProjectPermissions.tsx | 50 - .../CallSharePopover/CallProjectPicker.tsx | 85 - .../CallSharePopover/CallShareContent.tsx | 60 - .../CallSharePopover/CallShareDialog.tsx | 27 - .../web/components/CallSharePopover/index.tsx | 54 - .../CallView/CallFavoriteButton.tsx | 41 - .../CallView/CallFollowUpDropdown.tsx | 29 - .../web/components/CallView/CallFollowUps.tsx | 25 - moon/apps/web/components/CallView/index.tsx | 671 - moon/apps/web/components/CallView/schema.ts | 27 - .../components/Calls/CallForLaterDialog.tsx | 48 - .../web/components/Calls/CallOverflowMenu.tsx | 140 - .../web/components/Calls/CallsHoverCard.tsx | 143 - .../web/components/Calls/CallsIndexFilter.tsx | 48 - .../Calls/DeleteAllCallRecordingsDialog.tsx | 44 - .../components/Calls/MobileCallsTitlebar.tsx | 12 - .../web/components/Calls/NewCallButton.tsx | 22 - .../components/Calls/NewCallDropdownMenu.tsx | 66 - .../Calls/PersonalCallLinkDialog.tsx | 41 - moon/apps/web/components/Calls/index.tsx | 382 - .../components/Calls/useGetCallPeerUsers.tsx | 28 - .../CanvasComments/CanvasComment.tsx | 8 +- moon/apps/web/components/Catalyst/Heading.tsx | 27 - .../web/components/Chat/ChatHoverCard.tsx | 4 +- .../Chat/CreateChatThreadDialog.tsx | 2 +- .../Chat/ExistingThreadListItem.tsx | 2 +- .../web/components/ClBox/ChecksSection.tsx | 4 +- moon/apps/web/components/ClBox/MergeBox.tsx | 1 - .../web/components/ClBox/MergeSection.tsx | 6 +- .../ClBox/components/CheckGroup.tsx | 44 - .../ClBox/components/MergeCheckItem.tsx | 4 +- .../web/components/ClView/ApproveItem.tsx | 9 +- .../web/components/ClView/AssigneeItem.tsx | 12 +- moon/apps/web/components/ClView/CLComment.tsx | 17 +- moon/apps/web/components/ClView/CloseItem.tsx | 5 +- .../components/ClView/CommentDropdownMenu.tsx | 2 +- .../web/components/ClView/ConversationTab.tsx | 30 +- moon/apps/web/components/ClView/EditItem.tsx | 5 +- moon/apps/web/components/ClView/LabelItem.tsx | 9 +- .../apps/web/components/ClView/MergedItem.tsx | 5 +- .../apps/web/components/ClView/ReopenItem.tsx | 5 +- .../web/components/ClView/ReviewComment.tsx | 23 +- .../web/components/ClView/TimelineItems.tsx | 2 +- .../ClView/components/Checks/LogViewer.tsx | 12 +- .../ClView/components/Checks/ansi.ts | 1 - .../ClView/components/Checks/cpns/Task.tsx | 2 +- .../components/Checks/hooks/logUtils.ts | 1 - .../ClView/components/Checks/index.tsx | 14 +- .../components/ConvertToDraftDialog.tsx | 2 +- .../ClView/components/MegaUserLabel.tsx | 10 + .../ClView/filters/DropdownItems.tsx | 2 +- .../ClView/filters/FilterDropdown.tsx | 2 +- .../components/ClView/hook/useDraftClList.ts | 31 - moon/apps/web/components/ClView/index.tsx | 21 +- .../components/ClView/useReviewerSelector.tsx | 32 +- .../components/CodeBlockLanguagePicker.tsx | 8 +- .../CodeView/BlobView/BlobEditor.tsx | 106 +- .../CodeView/BlobView/CodeContent.tsx | 14 +- .../CodeView/BlobView/CommentEditor.tsx | 98 - .../CodeView/BlobView/CommentItem.tsx | 75 - .../CodeView/BlobView/CommentSection.tsx | 142 - .../BlobView/MegaCedarAdminPicker.tsx | 4 +- .../components/CodeView/CodeTable.module.css | 27 - .../components/CodeView/CodeViewHeader.tsx | 63 - .../web/components/CodeView/CommitDetails.tsx | 15 - .../web/components/CodeView/CommitHistory.tsx | 2 +- .../CodeView/CommitsView/detail/index.tsx | 24 +- .../CodeView/CommitsView/dropdown.tsx | 4 +- .../components/CodeView/CommitsView/index.tsx | 10 +- .../CodeView/NewCodeView/MarkdownEditor.tsx | 8 +- .../CodeView/NewCodeView/NewCodeView.tsx | 2 +- .../CodeView/NewCodeView/PathInput.tsx | 2 +- .../CodeView/TableWithLoading/index.tsx | 2 +- .../components/CodeView/Tags/MonoTagList.tsx | 2 +- .../CodeView/Tags/NewMonoTagDialog.tsx | 6 +- .../components/CodeView/Tags/TagSwitcher.tsx | 4 +- .../CodeView/TreeView/CloneTabs.tsx | 10 +- .../CodeView/TreeView/CustomTreeItem.tsx | 3 +- .../CodeView/TreeView/SyncRepoButton.tsx | 4 +- moon/apps/web/components/CodeView/index.tsx | 9 +- .../CommandMenu/LocalCommandMenu.tsx | 100 +- .../web/components/CommentFollowUpActions.tsx | 28 - moon/apps/web/components/Comments/Comment.tsx | 10 +- .../components/Comments/CommentComposer.tsx | 5 +- .../Comments/CommentHoverActions.tsx | 2 +- .../Comments/CommentMobileReplyComposer.tsx | 2 +- .../components/Comments/CommentRenderer.tsx | 2 +- .../Comments/hooks/useCommentForm.tsx | 4 +- .../web/components/Comments/utils/schema.ts | 2 +- .../CompactPost/ComfyCompactPost.tsx | 10 +- .../components/CompactPost/CompactPost.tsx | 10 +- .../web/components/CopyLinkButton/index.tsx | 35 - .../web/components/CoverPhoto/Previewer.tsx | 2 +- .../web/components/CoverPhoto/Uploader.tsx | 2 +- .../components/DateAndTimePicker/index.tsx | 9 +- moon/apps/web/components/DesktopAppUpsell.tsx | 100 - .../apps/web/components/DiffView/FileDiff.tsx | 4 +- .../DiffView/TreeView/CustomTreeItem.tsx | 3 +- .../DiffView/comment/CommentForm.tsx | 8 +- .../DiffView/comment/CommentThread.tsx | 12 +- .../web/components/DiffView/comment/types.ts | 23 - .../web/components/DiffView/comment/utils.ts | 12 +- .../EditorBubbleMenu/BubbleMenuSeparator.tsx | 2 +- .../EditorBubbleMenu/EditorBubbleMenu.tsx | 43 +- moon/apps/web/components/EmptyState/index.tsx | 2 +- moon/apps/web/components/EnablePush/index.tsx | 4 +- moon/apps/web/components/Error/index.tsx | 4 +- moon/apps/web/components/FacePile/index.tsx | 2 +- .../components/Feed/EmptySearchResults.tsx | 4 +- .../Feed/ViewerRoleInlineComposerUpsell.tsx | 2 +- .../components/Feedback/FeedbackDialog.tsx | 4 +- .../Feedback/FeedbackFilePreview.tsx | 6 +- .../web/components/FileAttachment/index.tsx | 2 +- moon/apps/web/components/FileTypeIcon.tsx | 12 +- .../components/FloatingButtons/NewCall.tsx | 29 - .../web/components/FloatingButtons/NewDoc.tsx | 2 +- .../components/FloatingButtons/NewPost.tsx | 2 +- .../FollowUp/FollowUpCalendarDialog.tsx | 7 +- .../components/FollowUp/FollowUpDropdown.tsx | 7 +- .../web/components/Gifs/ComposerGifPicker.tsx | 2 +- moon/apps/web/components/Gifs/GifPicker.tsx | 2 +- moon/apps/web/components/GuestBadge.tsx | 2 +- .../web/components/HTMLRenderer/index.tsx | 4 +- .../components/Home/HomeFollowUpDialog.tsx | 17 +- moon/apps/web/components/Home/HomeSidebar.tsx | 17 +- .../web/components/Home/NewPostButton.tsx | 6 +- .../components/Home/UpdateStatusDialog.tsx | 8 +- .../InboxItems/FollowUpListItem.tsx | 8 +- .../components/InboxItems/InboxHoverCard.tsx | 2 +- .../InboxItems/InboxNotificationItem.tsx | 17 +- .../InboxItems/InboxProjectPreviewCard.tsx | 4 +- .../components/InboxItems/InboxSplitView.tsx | 8 +- .../InboxItems/NotificationListItem.tsx | 17 +- .../web/components/IndexPages/components.tsx | 4 +- .../components/InlineAttachmentRenderer.tsx | 23 +- .../InlinePost/AutoBlockquoteReply.tsx | 8 +- .../InlinePost/InlinePostEngagements.tsx | 2 +- .../InlinePost/InlinePostFollowUpDropdown.tsx | 2 +- .../InlinePost/InlinePostRenderer.tsx | 2 +- .../components/InlinePost/InlinePostTags.tsx | 2 +- .../components/InlinePost/InlinePostTitle.tsx | 6 +- .../components/InlinePost/MemberHovercard.tsx | 2 +- .../InlinePost/ProjectHovercard.tsx | 2 +- .../web/components/InlinePost/Resolution.tsx | 10 +- .../InlineResourceMentionRenderer.tsx | 23 +- .../web/components/Issues/IssueDetailPage.tsx | 2 +- .../web/components/Issues/IssueNewPage.tsx | 30 +- .../web/components/Issues/IssueSearch.tsx | 10 +- moon/apps/web/components/Issues/Search.tsx | 122 - .../components/Issues/WorkWithChatDialog.tsx | 6 +- .../web/components/Issues/utils/consts.ts | 97 - .../components/Issues/utils/extractText.ts | 2 +- .../Issues/utils/generateAllMenuItems.ts | 37 - .../components/Issues/utils/mergeDuplicate.ts | 22 - .../components/Issues/utils/sideEffect.tsx | 36 +- .../web/components/JoinCommunity/index.tsx | 4 +- .../web/components/Labels/NewLabelDialog.tsx | 6 +- moon/apps/web/components/Layout/AppLayout.tsx | 2 +- moon/apps/web/components/Layout/TabLayout.tsx | 26 +- .../components/MarkdownEditor/MentionList.tsx | 4 +- .../MarkdownEditor/ResourceMentionList.tsx | 35 +- .../web/components/MarkdownEditor/index.tsx | 5 +- .../useCreateLinkAttachment.tsx | 60 +- .../components/MediaGallery/Pagination.tsx | 6 +- .../web/components/MediaGallery/index.tsx | 4 +- moon/apps/web/components/MyWork/index.tsx | 2 - .../web/components/NavigationBar/index.tsx | 73 +- .../NavigationBar/useNavigationTabAction.ts | 15 - .../NavigationSidebar/ChangelogDropdown.tsx | 22 +- .../NavigationSidebar/DevModeBanner.tsx | 17 - .../OrganizationSwitcher.tsx | 8 +- .../NavigationSidebar/ProfileDropdown.tsx | 31 +- .../NavigationSidebar/RefreshAppBanner.tsx | 2 +- .../web/components/NewOrganizationForm.tsx | 6 +- .../web/components/NoteComments/Comment.tsx | 14 +- .../NoteComments/HighlightCommentPopover.tsx | 4 +- .../NoteComments/NoteCommentsPopover.tsx | 2 +- moon/apps/web/components/NoteEditor/index.tsx | 2 +- .../NoteSharePopover/PublishTab.tsx | 94 - .../components/NoteSharePopover/ShareTab.tsx | 4 +- .../NoteView/NoteFollowUpDropdown.tsx | 37 - moon/apps/web/components/NoteView/index.tsx | 2 +- .../web/components/NotesIndex/NotesGrid.tsx | 10 +- .../components/NotesIndex/NotesHoverCard.tsx | 2 +- .../components/Onboarding/OnboardingPosts.tsx | 2 +- .../Onboarding/UserFeedOnboarding.tsx | 73 - moon/apps/web/components/OpenGraphCard.tsx | 2 +- .../OauthApplications/GeneralSettings.tsx | 16 +- .../OauthApplicationFormDialog.tsx | 16 +- .../OauthApplications/OauthSettings.tsx | 24 +- .../OauthApplications/Webhooks.tsx | 25 +- .../OrgSettings/OauthApplications/index.tsx | 2 +- .../CreateCustomReactionDialog.tsx | 2 +- .../CustomReactionsPacks.tsx | 4 +- .../components/OrgSettings/PageWrapper.tsx | 2 +- .../components/OrgSettings/ProfileDisplay.tsx | 4 +- .../SingleSignOn/DisableSSODialog.tsx | 49 - .../SingleSignOn/EnableSSODialog.tsx | 138 - .../OrganizationMemberPageComponent.tsx | 2 +- .../components/OrionClient/ClientsTable.tsx | 8 +- moon/apps/web/components/PWAUpsell.tsx | 107 - .../web/components/People/InboundRequests.tsx | 4 +- .../components/People/InvitedPeopleList.tsx | 4 +- .../People/PeopleIndexMemberRow.tsx | 2 +- .../components/People/PeopleSearchFilter.tsx | 2 +- .../components/Post/LinkUnfurlRenderer.tsx | 6 +- .../Notes/Attachments/LottieAttachment.tsx | 4 +- .../Notes/Attachments/useUploadAttachments.ts | 3 +- .../components/Post/Notes/CommentRenderer.tsx | 2 +- .../components/Post/Notes/EmbedContainer.tsx | 4 +- .../components/Post/Notes/SlashCommand.tsx | 2 +- .../components/Post/Notes/useEditorSync.ts | 37 +- .../components/Post/Notes/useNoteEditor.tsx | 10 +- .../Post/PostEmbeds/transformUrl.ts | 42 +- .../web/components/Post/PostInlineIssues.tsx | 2 +- .../components/Post/PostInlineReferences.tsx | 2 +- .../components/Post/PostMoveProjectDialog.tsx | 2 +- .../web/components/Post/PostShareControls.tsx | 4 +- moon/apps/web/components/Post/PostView.tsx | 4 +- .../components/Post/PostViewersPopover.tsx | 4 +- .../web/components/Post/ResolveDialog.tsx | 2 +- moon/apps/web/components/Post/TLDR.tsx | 2 +- .../components/Post/UnseenCommentsButton.tsx | 2 +- moon/apps/web/components/Post/schema.ts | 12 +- .../components/PostComposer/PostComposer.tsx | 8 +- .../PostComposerFeedbackManager.tsx | 2 +- .../PostComposer/PostComposerForm.tsx | 10 +- .../PostComposerHeaderActions.tsx | 2 +- .../PostComposerInteractiveAttachments.tsx | 2 +- .../PostComposer/PostComposerPolls.tsx | 2 +- .../PostComposer/PostComposerRemoveButton.tsx | 6 +- .../PostComposer/hooks/usePostComposer.ts | 23 +- .../hooks/usePostComposerCreatePost.ts | 7 +- .../components/PostComposer/utils/index.ts | 3 - .../PreviewCards/CallPreviewCard.tsx | 60 - .../PreviewCards/CommentPreviewCard.tsx | 2 +- .../PreviewCards/NotePreviewCard.tsx | 4 +- .../PreviewCards/ProjectPreviewCard.tsx | 6 +- .../apps/web/components/PreviewCards/jlksd.ts | 0 moon/apps/web/components/ProjectTag.tsx | 6 +- .../Projects/Create/CreateProjectDialog.tsx | 5 +- .../Projects/MoveNoteProjectDialog.tsx | 4 +- .../Projects/ProjectArchiveBanner.tsx | 2 +- .../ProjectBookmarks/BookmarkIcon.tsx | 4 - .../components/Projects/ProjectCallButton.tsx | 49 - .../web/components/Projects/ProjectCalls.tsx | 51 - .../web/components/Projects/ProjectChat.tsx | 2 - .../ProjectDialogs/ProjectEditDialog.tsx | 4 +- .../components/Projects/ProjectPinnedFeed.tsx | 5 +- .../ProjectSidebarBookmarks.tsx | 4 +- .../ProjectSidebar/ProjectSidebarMembers.tsx | 5 +- .../Projects/ProjectSidebar/index.tsx | 6 +- .../web/components/Projects/ProjectView.tsx | 23 - .../web/components/Projects/ProjectsIndex.tsx | 8 +- .../Projects/ProjectsIndexSearch.tsx | 2 +- .../Projects/ProjectsManagement.tsx | 2 +- .../components/Providers/AuthAppProviders.tsx | 63 +- .../web/components/Providers/AuthProvider.tsx | 6 - .../Providers/DesktopProtocolUrlHandler.tsx | 31 - .../Providers/HMSRoomStateSubscriber.ts | 16 - .../web/components/Providers/MetaTags.tsx | 80 +- moon/apps/web/components/QueueView/items.tsx | 2 +- moon/apps/web/components/QueueView/mock.ts | 137 - moon/apps/web/components/QueueView/stats.tsx | 6 +- .../Reactions/ComposerReactionPicker.tsx | 2 +- .../Reactions/DesktopReactionPicker.tsx | 2 +- .../Reactions/MobileReactionPicker.tsx | 6 +- .../components/Reactions/ReactionPicker.tsx | 2 +- .../web/components/ReplyContent/index.tsx | 2 +- moon/apps/web/components/RichLinkCard.tsx | 7 +- .../handlers/DetailsContent.tsx | 2 +- .../handlers/RelativeTime.tsx | 2 +- .../web/components/RichTextRenderer/index.tsx | 7 +- .../components/Rust/Cve-graph/Cve-graph.tsx | 253 - .../components/Rust/Graph/DependencyGraph.tsx | 266 - .../VersionSelectorDropdown.tsx | 117 - .../web/components/ScrollableContainer.tsx | 2 +- .../components/SearchIndex/RecentSearches.tsx | 2 +- .../components/SearchIndex/SearchIndex.tsx | 56 +- .../SearchIndex/SearchResultPostItem.tsx | 2 +- moon/apps/web/components/Setting/GPGKeys.tsx | 6 +- .../web/components/Setting/PersonalToken.tsx | 4 +- moon/apps/web/components/Setting/SSHKeys.tsx | 6 +- .../web/components/Sidebar/PostsHoverCard.tsx | 119 - .../RecentlyViewed/RecentlyViewedItem.tsx | 21 +- .../RecentlyViewed/RecentlyViewedPopover.tsx | 12 +- .../Sidebar/RecentlyViewed/utils.ts | 30 +- .../Sidebar/SidebarChatSectionGroup.tsx | 2 +- .../components/Sidebar/SidebarChatThread.tsx | 19 +- .../Sidebar/SidebarCollapsibleButton.tsx | 2 +- .../components/Sidebar/SidebarCratespro.tsx | 15 - .../components/Sidebar/SidebarFavorite.tsx | 10 +- .../Sidebar/SidebarFavoritesGroup.tsx | 4 +- .../Sidebar/SidebarLink.stories.tsx | 2 +- .../web/components/Sidebar/SidebarLink.tsx | 8 +- .../SidebarMenu/DynamicSidebarItem.tsx | 7 +- .../Sidebar/SidebarMenu/MenuPicker.tsx | 10 +- .../components/Sidebar/SidebarMyWorkGroup.tsx | 39 +- .../components/Sidebar/SidebarOrgSwitcher.tsx | 4 +- .../Sidebar/SidebarProjectsGroup.tsx | 6 +- moon/apps/web/components/Sidebar/index.tsx | 6 +- .../SimpleNoteEditor/useSimpleNoteEditor.tsx | 2 +- .../apps/web/components/SlimOpenGraphCard.tsx | 4 +- .../components/SplitView/SplitViewDetail.tsx | 4 - .../hooks/useIsSplitViewAvailable.ts | 7 +- .../SplitView/hooks/useIsSplitViewVisible.ts | 4 +- moon/apps/web/components/SuggestionList.tsx | 12 +- moon/apps/web/components/Tags/TagList.tsx | 2 +- .../components/Theme/ThemePicker/index.tsx | 2 +- .../ThemedMarkdown/ThemedMarkdown.module.css | 5 +- .../Bubble/AttachmentCard/LinkAttachment.tsx | 4 +- .../AttachmentCard/LinkAttachmentStatic.tsx | 2 +- .../AttachmentCard/LottieAttachment.tsx | 2 +- .../Thread/Bubble/AttachmentCard/index.tsx | 3 +- .../components/Thread/Bubble/Attachments.tsx | 4 +- .../Thread/Bubble/BubbleReactions.tsx | 2 +- .../Thread/Bubble/MessageCallBubble.tsx | 192 - .../web/components/Thread/Bubble/Overflow.tsx | 2 +- .../components/Thread/Bubble/SharedPost.tsx | 4 +- .../web/components/Thread/Bubble/index.tsx | 17 +- moon/apps/web/components/Thread/Composer.tsx | 12 +- .../web/components/Thread/ComposerActions.tsx | 10 +- .../Thread/ManageGroupChatMembersDialog.tsx | 2 +- moon/apps/web/components/Thread/Messages.tsx | 2 +- .../web/components/ThreadAvatar/index.tsx | 8 +- .../ThreadSplitView/ThreadSplitView.tsx | 2 +- .../components/ThreadView/ThreadHoverCard.tsx | 14 +- .../web/components/ThreadView/ThreadView.tsx | 4 +- .../ThreadView/ThreadViewTitlebar.tsx | 30 +- .../TimelineEventLinearAccessories.tsx | 2 +- .../TimelineEvent/TimelineEventSubject.tsx | 1 - moon/apps/web/components/TitleTextField.tsx | 2 +- .../Titlebar/BreadcrumbPageIcons.tsx | 11 +- .../Titlebar/BreadcrumbTitlebar.tsx | 4 +- .../web/components/TweetPreview/index.tsx | 6 +- .../components/Upsell/ViewerUpsellDialog.tsx | 2 +- .../AccountReview/AccountReviewSection.tsx | 4 +- .../UserSettings/CalDotComIntegration.tsx | 88 - .../UserSettings/FigmaIntegration.tsx | 94 - .../Notifications/NotificationSettings.tsx | 2 +- .../PushNotificationSettings.tsx | 4 +- .../components/UserSettings/PageWrapper.tsx | 4 +- .../UserSettings/PersonalCallLinks.tsx | 85 - .../UserSettings/ProfileDisplay.tsx | 2 +- .../SlackNotificationSettings.tsx | 2 +- .../EnableTwoFactorAuthenticationDialog.tsx | 4 +- .../ZoomPane/ZoomCanvasTileRenderer.tsx | 4 +- moon/apps/web/components/ZoomPane/atom.ts | 3 + moon/apps/web/contexts/WebPush.tsx | 3 +- moon/apps/web/contexts/scope.tsx | 17 +- moon/apps/web/eslint.config.mjs | 107 + moon/apps/web/hooks/CL/useClFilesChanged.ts | 12 - moon/apps/web/hooks/CL/useGetClDetail.ts | 1 - moon/apps/web/hooks/CL/useGetClFileChanged.ts | 1 - moon/apps/web/hooks/CL/usePostClMerge.ts | 19 - .../hooks/OrionClient/useGetRunnerStatus.ts | 1 + .../hooks/OrionClient/usePostStartRunner.ts | 1 + .../web/hooks/Sidebar/usePostSidebarNew.ts | 11 - .../hooks/Sidebar/usePostSidebarUpdateById.ts | 15 - .../admin/useGetAdminResourcePermissions.ts | 25 - .../web/hooks/admin/useGetUserPermissions.ts | 30 - .../apps/web/hooks/admin/useNotePermission.ts | 28 - .../admin/useUpdateResourcePermissions.ts | 41 - .../web/hooks/commits/useGetCommitsDetail.ts | 21 - moon/apps/web/hooks/useAVPermissionState.ts | 72 - moon/apps/web/hooks/useAutoScroll.ts | 2 +- moon/apps/web/hooks/useCallChannel.ts | 27 - moon/apps/web/hooks/useCallDeviceToasts.tsx | 53 - moon/apps/web/hooks/useCallRoomChannel.ts | 27 - .../web/hooks/useCallRoomSubscriptions.ts | 29 - moon/apps/web/hooks/useCallSubscriptions.ts | 36 - moon/apps/web/hooks/useCallsSubscriptions.ts | 21 - moon/apps/web/hooks/useCreateCallFavorite.ts | 45 - moon/apps/web/hooks/useCreateCallFollowUp.ts | 38 - moon/apps/web/hooks/useCreateCallPin.ts | 43 - moon/apps/web/hooks/useCreateCallRoom.ts | 16 - .../web/hooks/useCreateCallRoomInvitation.ts | 16 - .../web/hooks/useCreateCommentReaction.ts | 4 +- .../web/hooks/useCreateFigmaFileAttachment.ts | 15 - .../web/hooks/useCreateMessageReaction.ts | 4 +- .../web/hooks/useCreateOnboardProjects.ts | 26 - moon/apps/web/hooks/useCreatePostReaction.ts | 4 +- .../web/hooks/useCurrentUserSubscriptions.ts | 46 - .../web/hooks/useDeleteAllCallRecordings.ts | 42 - moon/apps/web/hooks/useDeleteCallFavorite.ts | 41 - moon/apps/web/hooks/useDeleteCallFollowUp.ts | 31 - moon/apps/web/hooks/useDeleteCallPin.ts | 47 - .../hooks/useDeleteCallProjectPermission.ts | 35 - moon/apps/web/hooks/useDeleteStatus.ts | 4 +- moon/apps/web/hooks/useDisableSSO.ts | 12 - moon/apps/web/hooks/useEnableSSO.ts | 14 - .../web/hooks/useFigmaAuthorizationUrl.ts | 29 - moon/apps/web/hooks/useFigmaEmbedLoaded.ts | 19 - moon/apps/web/hooks/useFigmaEmbedSelected.ts | 13 - moon/apps/web/hooks/useFollowUpActions.ts | 13 +- .../apps/web/hooks/useFollowUpMenuBuilder.tsx | 4 +- moon/apps/web/hooks/useGetBlame.ts | 1 - moon/apps/web/hooks/useGetBlob.ts | 1 - .../web/hooks/useGetCalDotComIntegration.ts | 12 - moon/apps/web/hooks/useGetCall.ts | 25 - .../hooks/useGetCallRecordingTranscription.ts | 19 - moon/apps/web/hooks/useGetCallRecordings.ts | 24 - moon/apps/web/hooks/useGetCallRoom.ts | 21 - moon/apps/web/hooks/useGetCalls.ts | 31 - moon/apps/web/hooks/useGetFigmaIntegration.ts | 19 - moon/apps/web/hooks/useGetLabelById.ts | 12 - moon/apps/web/hooks/useGetMemberByUsername.ts | 20 - moon/apps/web/hooks/useGetPersonalCallRoom.ts | 22 - moon/apps/web/hooks/useGetProjectCalls.ts | 28 - moon/apps/web/hooks/useGetTree.ts | 1 - moon/apps/web/hooks/useGetTreeCommitInfo.ts | 1 - moon/apps/web/hooks/useGetTreePathCanClone.ts | 1 - .../hooks/useHandleFigmaConnectionSuccess.ts | 37 - moon/apps/web/hooks/useHasPermissionsApi.ts | 26 - moon/apps/web/hooks/useIsRecording.ts | 7 - moon/apps/web/hooks/useJoinCallRoom.ts | 72 - .../web/hooks/useJoinMessageThreadCall.tsx | 31 - moon/apps/web/hooks/useMentionInteraction.ts | 2 +- .../web/hooks/useNotificationScheduleForm.ts | 22 +- moon/apps/web/hooks/useOptimisticMutation.ts | 12 +- moon/apps/web/hooks/useRefsFromRouter.ts | 31 - moon/apps/web/hooks/useScrollRestoration.ts | 5 +- moon/apps/web/hooks/useScrollToBottom.ts | 4 +- moon/apps/web/hooks/useSearchMixed.ts | 9 +- .../hooks/useUpdateCalDotComOrganization.ts | 22 - moon/apps/web/hooks/useUpdateCall.ts | 26 - .../hooks/useUpdateCallProjectPermission.ts | 47 - .../apps/web/hooks/useUpdateNoteVisibility.ts | 30 - moon/apps/web/hooks/useUploadFile.ts | 5 +- moon/apps/web/hooks/useVideoTimestamp.ts | 2 +- moon/apps/web/instrumentation.ts | 9 - moon/apps/web/lib/figma.ts | 3 - moon/apps/web/next-env.d.ts | 3 +- moon/apps/web/next.config.js | 60 +- moon/apps/web/package.json | 44 +- .../web/pages/[org]/calls/[callId]/index.tsx | 32 - moon/apps/web/pages/[org]/calls/index.tsx | 28 - .../[org]/calls/join/[callRoomId]/index.tsx | 84 - moon/apps/web/pages/[org]/cl/[link]/index.tsx | 4 +- .../code/blob/[version]/[...path]/index.tsx | 15 +- .../pages/[org]/code/commit/[sha]/index.tsx | 11 +- .../commits/[version]/[...path]/index.tsx | 11 +- .../code/tree/[version]/[...path]/index.tsx | 15 +- moon/apps/web/pages/[org]/home/index.tsx | 18 +- moon/apps/web/pages/[org]/index.tsx | 5 +- moon/apps/web/pages/[org]/labels/index.tsx | 29 +- moon/apps/web/pages/[org]/oc/index.tsx | 8 +- .../apps/web/pages/[org]/onboard/channels.tsx | 4 +- .../apps/web/pages/[org]/p/notes/[noteId].tsx | 52 +- .../web/pages/[org]/posts/[postId]/index.tsx | 2 - .../[org]/projects/[projectId]/calls.tsx | 43 - moon/apps/web/pages/[org]/rust/index.tsx | 279 - .../[name]/[version]/compare/index.tsx | 1463 - .../[name]/[version]/cves/index.tsx | 293 - .../[version]/dependencies/graph/index.tsx | 249 - .../[name]/[version]/dependencies/index.tsx | 590 - .../[name]/[version]/dependents/index.tsx | 481 - .../[nsbehind]/[name]/[version]/index.tsx | 1006 - .../[nsbehind]/[name]/[version]/layout.tsx | 420 - .../[name]/[version]/versions/index.tsx | 351 - .../cve-info/cve-graph/index.tsx | 108 - .../ecosystem-cve/cve-info/index.tsx | 844 - .../rust-ecosystem/ecosystem-cve/index.tsx | 381 - .../pages/[org]/rust/rust-ecosystem/index.tsx | 508 - .../rust/rust-ecosystem/search/index.tsx | 406 - .../web/pages/[org]/rust/rust-news/index.tsx | 289 - moon/apps/web/pages/_app.tsx | 2 +- moon/apps/web/pages/_document.tsx | 3 +- moon/apps/web/pages/_error.tsx | 5 - moon/apps/web/pages/api/og.tsx | 88 +- .../pages/figma-connection-success/index.tsx | 34 - moon/apps/web/pages/internal/error.tsx | 4 +- moon/apps/web/pages/join/[token].tsx | 2 +- .../web/pages/me/settings/cla/sign/index.tsx | 8 +- moon/apps/web/pages/me/settings/index.tsx | 2 - moon/apps/web/pages/new/index.tsx | 8 +- moon/apps/web/{middleware.ts => proxy.ts} | 2 +- moon/apps/web/public/img/embed/figma.png | Bin 2776 -> 0 bytes moon/apps/web/public/img/services/figma.png | Bin 765 -> 0 bytes moon/apps/web/public/rust/Crate Ecosystem.png | Bin 4236 -> 0 bytes moon/apps/web/public/rust/Rust-Distribth.png | Bin 3474 -> 0 bytes moon/apps/web/public/rust/Rust-News.png | Bin 2583 -> 0 bytes moon/apps/web/public/rust/Rust-Tour-Doc.png | Bin 5145 -> 0 bytes moon/apps/web/public/rust/logo.png | Bin 1128 -> 0 bytes moon/apps/web/public/rust/normal.png | Bin 201624 -> 0 bytes .../public/rust/rust-ecosystem/Frame 166.png | Bin 101782 -> 0 bytes .../Objects - magnifying-glass.png | Bin 444 -> 0 bytes .../web/public/rust/rust-ecosystem/code.png | Bin 12779 -> 0 bytes .../rust/rust-ecosystem/crate-info/Frame.png | Bin 904 -> 0 bytes .../crate-info/compare/exchange.png | Bin 904 -> 0 bytes .../dependencies/Components - table.png | Bin 253 -> 0 bytes ...-\350\257\246\346\203\205-dependencis.png" | Bin 125552 -> 0 bytes .../dependencies/double-arrow-up.png | Bin 317 -> 0 bytes .../web/public/rust/rust-ecosystem/crate.png | Bin 13120 -> 0 bytes .../web/public/rust/rust-ecosystem/cve.png | Bin 13683 -> 0 bytes .../web/public/rust/rust-ecosystem/down.png | Bin 275 -> 0 bytes .../rust-ecosystem/ecosystem-cve/Frame.png | Bin 553 -> 0 bytes .../rust-ecosystem/ecosystem-cve/cve-info.png | Bin 156964 -> 0 bytes .../ecosystem-cve/cve-info/Frame.png | Bin 384 -> 0 bytes .../ecosystem-cve/cve-info/cve-info.png | Bin 187186 -> 0 bytes .../public/rust/rust-ecosystem/homepage.png | Bin 354475 -> 0 bytes .../web/public/rust/rust-ecosystem/rust.png | Bin 13201 -> 0 bytes .../public/rust/rust-ecosystem/search-bg.png | Bin 73810 -> 0 bytes ...\345\244\264-\345\270\270\346\200\201.png" | Bin 280 -> 0 bytes ...\213\347\256\255\345\244\264-hover(1).png" | Bin 283 -> 0 bytes ...270\213\347\256\255\345\244\264-hover.png" | Bin 284 -> 0 bytes .../web/public/rust/rust-news/up-icon.png | Bin 1686 -> 0 bytes moon/apps/web/public/rust/search-icon.png | Bin 557 -> 0 bytes moon/apps/web/public/sounds/call-end.mp3 | Bin 32883 -> 0 bytes .../apps/web/public/sounds/call-peer-join.mp3 | Bin 36727 -> 0 bytes .../web/public/sounds/call-peer-leave.mp3 | Bin 30000 -> 0 bytes .../public/sounds/call-recording-start.mp3 | Bin 30000 -> 0 bytes .../web/public/sounds/call-recording-stop.mp3 | Bin 30961 -> 0 bytes moon/apps/web/public/sounds/call-start.mp3 | Bin 44415 -> 0 bytes moon/apps/web/sentry.client.config.ts | 128 - moon/apps/web/sentry.edge.config.ts | 12 - moon/apps/web/sentry.server.config.ts | 12 - moon/apps/web/styles/editor.css | 6 +- moon/apps/web/styles/global.css | 190 +- moon/apps/web/styles/prose.css | 40 +- moon/apps/web/tailwind.config.js | 1 - moon/apps/web/tsconfig.json | 15 +- moon/apps/web/types.d.ts | 10 +- moon/apps/web/types/pierre-diffs.d.ts | 7 - .../web/types/primer-react-experimental.d.ts | 3 - .../__tests__/setToStorageWithDefault.test.ts | 32 +- moon/apps/web/utils/apiCookieHeaders.ts | 1 + moon/apps/web/utils/commandListSubject.ts | 23 +- .../web/utils/convertNumberToTimestring.ts | 11 - .../web/utils/createFileUploadPipeline.ts | 3 +- moon/apps/web/utils/getFileMetadata.ts | 12 +- moon/apps/web/utils/getInboxItemRoutePath.ts | 2 +- moon/apps/web/utils/megaUser.ts | 22 + moon/apps/web/utils/normy/core/types.ts | 1 - moon/apps/web/utils/optimisticFollowUps.ts | 5 +- moon/apps/web/utils/queryClient.ts | 1 + moon/apps/web/utils/reactions/data.ts | 11 +- .../apps/web/utils/setToStorageWithDefault.ts | 11 +- moon/apps/web/utils/timezones.ts | 1 - moon/apps/web/utils/vttParser.ts | 109 - moon/package.json | 13 +- moon/packages/config/src/index.ts | 1 - moon/packages/editor/package.json | 17 +- .../editor/src/extensions/AutoJoiner.ts | 2 +- .../editor/src/extensions/BulletList.ts | 2 +- .../src/extensions/CodeBlockHighlighted.ts | 2 +- .../packages/editor/src/extensions/Details.ts | 11 +- .../editor/src/extensions/Dropcursor.ts | 5 +- .../packages/editor/src/extensions/History.ts | 5 +- moon/packages/editor/src/extensions/Link.ts | 2 +- .../editor/src/extensions/ListItem.ts | 2 +- .../editor/src/extensions/ListKeyMap.ts | 2 +- .../editor/src/extensions/OrderedList.ts | 2 +- .../editor/src/extensions/PasteHandler.ts | 20 +- .../editor/src/extensions/Placeholder.ts | 2 +- .../editor/src/extensions/TaskItem.ts | 11 +- .../editor/src/extensions/TaskList.ts | 4 +- .../extensions/__tests__/LinkUnfurl.test.ts | 6 + moon/packages/editor/src/extensions/index.ts | 2 + moon/packages/editor/src/index.ts | 2 + moon/packages/editor/src/markdown.ts | 10 +- moon/packages/editor/src/types/markdown-it.ts | 4 + .../editor/src/types/tiptap-markdown.ts | 22 + .../editor/src/utils/MarkdownParser.ts | 3 +- .../createMarkdownParser.test.ts.snap | 112 +- .../src/utils/codeHighlightedLanguages.ts | 90 +- .../editor/src/utils/createMarkdownParser.ts | 4 +- .../editor/src/utils/handleBackspace.ts | 2 +- .../src/utils/inlineLinkAttachmentType.ts | 10 - moon/packages/editor/src/utils/isUrl.ts | 6 - .../editor/src/utils/markdownItTasks.ts | 3 +- moon/packages/editor/tsconfig.json | 6 +- moon/packages/eslint-config-gitmono/next.js | 6 +- moon/packages/regex/src/index.ts | 2 - moon/packages/ui/package.json | 12 +- moon/packages/ui/postcss.config.js | 4 +- moon/packages/ui/src/Avatar/Avatar.tsx | 4 +- .../ui/src/Avatar/AvatarFacepileClip.tsx | 12 +- .../ui/src/Avatar/AvatarOnlineClip.tsx | 12 +- moon/packages/ui/src/Badge/index.tsx | 2 +- moon/packages/ui/src/Button/Button.tsx | 8 +- moon/packages/ui/src/Calendar/Calendar.tsx | 130 +- moon/packages/ui/src/Command/Command.tsx | 16 +- .../ui/src/Command/HighlightedCommandItem.tsx | 2 +- .../ui/src/ContextMenu/ContextMenu.tsx | 12 +- moon/packages/ui/src/Dialog/Dialog.tsx | 2 +- .../DismissibleLayerDevtools.tsx | 2 +- .../src/DismissibleLayer/useLayeredHotkeys.ts | 3 +- .../src/DropdownMenu/DesktopDropdownMenu.tsx | 20 +- moon/packages/ui/src/ErrorBoundary.tsx | 5 +- moon/packages/ui/src/Icons/index.tsx | 52 - moon/packages/ui/src/Link/Link.tsx | 11 +- moon/packages/ui/src/Link/utils.ts | 31 +- .../packages/ui/src/Menu/MobileDrawerMenu.tsx | 12 +- moon/packages/ui/src/Popover/Popover.tsx | 7 +- moon/packages/ui/src/Radio/RadioGroup.tsx | 2 +- moon/packages/ui/src/Select/SelectCommand.tsx | 8 +- moon/packages/ui/src/Switch/Switch.tsx | 2 +- .../ui/src/TextField/LimitIndicator.tsx | 2 +- moon/packages/ui/src/TextField/TextField.tsx | 6 +- .../ui/src/ToggleGroup/ToggleGroup.tsx | 2 +- moon/packages/ui/src/Tooltip/Tooltip.tsx | 4 +- moon/packages/ui/src/styles/global.css | 21 +- moon/packages/ui/src/styles/reference.css | 3 + moon/packages/ui/src/styles/theme.css | 404 + moon/packages/ui/tailwind.config.js | 262 - moon/patches/@radix-ui__react-popper.patch | 142 - .../@radix-ui__react-popper@1.2.7.patch | 112 + moon/pnpm-lock.yaml | 25686 ++++++---------- moon/pnpm-workspace.yaml | 482 +- moon/turbo.json | 3 - 669 files changed, 12861 insertions(+), 36416 deletions(-) delete mode 100644 moon/apps/web/.eslintrc.js delete mode 100644 moon/apps/web/atoms/call.ts delete mode 100644 moon/apps/web/atoms/callToasts.ts delete mode 100644 moon/apps/web/components/AttachmentLightbox/FigmaTip.tsx delete mode 100644 moon/apps/web/components/AttachmentLightbox/FigmaToggleButton.tsx delete mode 100644 moon/apps/web/components/AttachmentLightbox/NoteCommentAttachmentLightbox.tsx delete mode 100644 moon/apps/web/components/Call/ActiveCall.tsx delete mode 100644 moon/apps/web/components/Call/AutoplayBlockedError.tsx delete mode 100644 moon/apps/web/components/Call/CallChat.tsx delete mode 100644 moon/apps/web/components/Call/CallPeer.tsx delete mode 100644 moon/apps/web/components/Call/CallPrepChecklist.tsx delete mode 100644 moon/apps/web/components/Call/CallToasts.tsx delete mode 100644 moon/apps/web/components/Call/ConnectionIndicator.tsx delete mode 100644 moon/apps/web/components/Call/DesktopPermissionsDescription.tsx delete mode 100644 moon/apps/web/components/Call/DesktopScreenShareSourcesDialog.tsx delete mode 100644 moon/apps/web/components/Call/IncomingCallRoomInvitationToast.tsx delete mode 100644 moon/apps/web/components/Call/InviteMembersForm.tsx delete mode 100644 moon/apps/web/components/Call/InviteParticipantsPopover.tsx delete mode 100644 moon/apps/web/components/Call/LeftCall.tsx delete mode 100644 moon/apps/web/components/Call/LoggedOutPrompt.tsx delete mode 100644 moon/apps/web/components/Call/NoiseCancellation.tsx delete mode 100644 moon/apps/web/components/Call/PermissionsPrompt.tsx delete mode 100644 moon/apps/web/components/Call/RecordingButton.tsx delete mode 100644 moon/apps/web/components/Call/ScreenShareControls.tsx delete mode 100644 moon/apps/web/components/Call/ScreenShareWithPeers.tsx delete mode 100644 moon/apps/web/components/Call/StopScreensharingButton.tsx delete mode 100644 moon/apps/web/components/Call/ToggleCallChatButton.tsx delete mode 100644 moon/apps/web/components/Call/useLeaveCall.tsx delete mode 100644 moon/apps/web/components/CallRoom/index.tsx delete mode 100644 moon/apps/web/components/CallSharePopover/CallProjectPermissions.tsx delete mode 100644 moon/apps/web/components/CallSharePopover/CallProjectPicker.tsx delete mode 100644 moon/apps/web/components/CallSharePopover/CallShareContent.tsx delete mode 100644 moon/apps/web/components/CallSharePopover/CallShareDialog.tsx delete mode 100644 moon/apps/web/components/CallSharePopover/index.tsx delete mode 100644 moon/apps/web/components/CallView/CallFavoriteButton.tsx delete mode 100644 moon/apps/web/components/CallView/CallFollowUpDropdown.tsx delete mode 100644 moon/apps/web/components/CallView/CallFollowUps.tsx delete mode 100644 moon/apps/web/components/CallView/index.tsx delete mode 100644 moon/apps/web/components/CallView/schema.ts delete mode 100644 moon/apps/web/components/Calls/CallForLaterDialog.tsx delete mode 100644 moon/apps/web/components/Calls/CallOverflowMenu.tsx delete mode 100644 moon/apps/web/components/Calls/CallsHoverCard.tsx delete mode 100644 moon/apps/web/components/Calls/CallsIndexFilter.tsx delete mode 100644 moon/apps/web/components/Calls/DeleteAllCallRecordingsDialog.tsx delete mode 100644 moon/apps/web/components/Calls/MobileCallsTitlebar.tsx delete mode 100644 moon/apps/web/components/Calls/NewCallButton.tsx delete mode 100644 moon/apps/web/components/Calls/NewCallDropdownMenu.tsx delete mode 100644 moon/apps/web/components/Calls/PersonalCallLinkDialog.tsx delete mode 100644 moon/apps/web/components/Calls/index.tsx delete mode 100644 moon/apps/web/components/Calls/useGetCallPeerUsers.tsx delete mode 100644 moon/apps/web/components/Catalyst/Heading.tsx delete mode 100644 moon/apps/web/components/ClBox/components/CheckGroup.tsx create mode 100644 moon/apps/web/components/ClView/components/MegaUserLabel.tsx delete mode 100644 moon/apps/web/components/ClView/hook/useDraftClList.ts delete mode 100644 moon/apps/web/components/CodeView/BlobView/CommentEditor.tsx delete mode 100644 moon/apps/web/components/CodeView/BlobView/CommentItem.tsx delete mode 100644 moon/apps/web/components/CodeView/BlobView/CommentSection.tsx delete mode 100644 moon/apps/web/components/CodeView/CodeTable.module.css delete mode 100644 moon/apps/web/components/CodeView/CodeViewHeader.tsx delete mode 100644 moon/apps/web/components/CodeView/CommitDetails.tsx delete mode 100644 moon/apps/web/components/CommentFollowUpActions.tsx delete mode 100644 moon/apps/web/components/CopyLinkButton/index.tsx delete mode 100644 moon/apps/web/components/DesktopAppUpsell.tsx delete mode 100644 moon/apps/web/components/DiffView/comment/types.ts delete mode 100644 moon/apps/web/components/FloatingButtons/NewCall.tsx delete mode 100644 moon/apps/web/components/Issues/Search.tsx delete mode 100644 moon/apps/web/components/Issues/utils/consts.ts delete mode 100644 moon/apps/web/components/Issues/utils/generateAllMenuItems.ts delete mode 100644 moon/apps/web/components/Issues/utils/mergeDuplicate.ts delete mode 100644 moon/apps/web/components/NavigationSidebar/DevModeBanner.tsx delete mode 100644 moon/apps/web/components/NoteSharePopover/PublishTab.tsx delete mode 100644 moon/apps/web/components/NoteView/NoteFollowUpDropdown.tsx delete mode 100644 moon/apps/web/components/Onboarding/UserFeedOnboarding.tsx delete mode 100644 moon/apps/web/components/OrgSettings/SingleSignOn/DisableSSODialog.tsx delete mode 100644 moon/apps/web/components/OrgSettings/SingleSignOn/EnableSSODialog.tsx delete mode 100644 moon/apps/web/components/PWAUpsell.tsx delete mode 100644 moon/apps/web/components/PreviewCards/CallPreviewCard.tsx delete mode 100644 moon/apps/web/components/PreviewCards/jlksd.ts delete mode 100644 moon/apps/web/components/Projects/ProjectCallButton.tsx delete mode 100644 moon/apps/web/components/Projects/ProjectCalls.tsx delete mode 100644 moon/apps/web/components/Providers/HMSRoomStateSubscriber.ts delete mode 100644 moon/apps/web/components/QueueView/mock.ts delete mode 100644 moon/apps/web/components/Rust/Cve-graph/Cve-graph.tsx delete mode 100644 moon/apps/web/components/Rust/Graph/DependencyGraph.tsx delete mode 100644 moon/apps/web/components/Rust/VersionSelector/VersionSelectorDropdown.tsx delete mode 100644 moon/apps/web/components/Sidebar/PostsHoverCard.tsx delete mode 100644 moon/apps/web/components/Sidebar/SidebarCratespro.tsx delete mode 100644 moon/apps/web/components/Thread/Bubble/MessageCallBubble.tsx delete mode 100644 moon/apps/web/components/UserSettings/CalDotComIntegration.tsx delete mode 100644 moon/apps/web/components/UserSettings/FigmaIntegration.tsx delete mode 100644 moon/apps/web/components/UserSettings/PersonalCallLinks.tsx create mode 100644 moon/apps/web/eslint.config.mjs delete mode 100644 moon/apps/web/hooks/CL/useClFilesChanged.ts delete mode 100644 moon/apps/web/hooks/CL/usePostClMerge.ts delete mode 100644 moon/apps/web/hooks/Sidebar/usePostSidebarNew.ts delete mode 100644 moon/apps/web/hooks/Sidebar/usePostSidebarUpdateById.ts delete mode 100644 moon/apps/web/hooks/admin/useGetAdminResourcePermissions.ts delete mode 100644 moon/apps/web/hooks/admin/useGetUserPermissions.ts delete mode 100644 moon/apps/web/hooks/admin/useNotePermission.ts delete mode 100644 moon/apps/web/hooks/admin/useUpdateResourcePermissions.ts delete mode 100644 moon/apps/web/hooks/commits/useGetCommitsDetail.ts delete mode 100644 moon/apps/web/hooks/useAVPermissionState.ts delete mode 100644 moon/apps/web/hooks/useCallChannel.ts delete mode 100644 moon/apps/web/hooks/useCallDeviceToasts.tsx delete mode 100644 moon/apps/web/hooks/useCallRoomChannel.ts delete mode 100644 moon/apps/web/hooks/useCallRoomSubscriptions.ts delete mode 100644 moon/apps/web/hooks/useCallSubscriptions.ts delete mode 100644 moon/apps/web/hooks/useCallsSubscriptions.ts delete mode 100644 moon/apps/web/hooks/useCreateCallFavorite.ts delete mode 100644 moon/apps/web/hooks/useCreateCallFollowUp.ts delete mode 100644 moon/apps/web/hooks/useCreateCallPin.ts delete mode 100644 moon/apps/web/hooks/useCreateCallRoom.ts delete mode 100644 moon/apps/web/hooks/useCreateCallRoomInvitation.ts delete mode 100644 moon/apps/web/hooks/useCreateFigmaFileAttachment.ts delete mode 100644 moon/apps/web/hooks/useCreateOnboardProjects.ts delete mode 100644 moon/apps/web/hooks/useDeleteAllCallRecordings.ts delete mode 100644 moon/apps/web/hooks/useDeleteCallFavorite.ts delete mode 100644 moon/apps/web/hooks/useDeleteCallFollowUp.ts delete mode 100644 moon/apps/web/hooks/useDeleteCallPin.ts delete mode 100644 moon/apps/web/hooks/useDeleteCallProjectPermission.ts delete mode 100644 moon/apps/web/hooks/useDisableSSO.ts delete mode 100644 moon/apps/web/hooks/useEnableSSO.ts delete mode 100644 moon/apps/web/hooks/useFigmaAuthorizationUrl.ts delete mode 100644 moon/apps/web/hooks/useFigmaEmbedLoaded.ts delete mode 100644 moon/apps/web/hooks/useFigmaEmbedSelected.ts delete mode 100644 moon/apps/web/hooks/useGetCalDotComIntegration.ts delete mode 100644 moon/apps/web/hooks/useGetCall.ts delete mode 100644 moon/apps/web/hooks/useGetCallRecordingTranscription.ts delete mode 100644 moon/apps/web/hooks/useGetCallRecordings.ts delete mode 100644 moon/apps/web/hooks/useGetCallRoom.ts delete mode 100644 moon/apps/web/hooks/useGetCalls.ts delete mode 100644 moon/apps/web/hooks/useGetFigmaIntegration.ts delete mode 100644 moon/apps/web/hooks/useGetLabelById.ts delete mode 100644 moon/apps/web/hooks/useGetMemberByUsername.ts delete mode 100644 moon/apps/web/hooks/useGetPersonalCallRoom.ts delete mode 100644 moon/apps/web/hooks/useGetProjectCalls.ts delete mode 100644 moon/apps/web/hooks/useHandleFigmaConnectionSuccess.ts delete mode 100644 moon/apps/web/hooks/useHasPermissionsApi.ts delete mode 100644 moon/apps/web/hooks/useIsRecording.ts delete mode 100644 moon/apps/web/hooks/useJoinCallRoom.ts delete mode 100644 moon/apps/web/hooks/useJoinMessageThreadCall.tsx delete mode 100644 moon/apps/web/hooks/useRefsFromRouter.ts delete mode 100644 moon/apps/web/hooks/useUpdateCalDotComOrganization.ts delete mode 100644 moon/apps/web/hooks/useUpdateCall.ts delete mode 100644 moon/apps/web/hooks/useUpdateCallProjectPermission.ts delete mode 100644 moon/apps/web/hooks/useUpdateNoteVisibility.ts delete mode 100644 moon/apps/web/instrumentation.ts delete mode 100644 moon/apps/web/lib/figma.ts delete mode 100644 moon/apps/web/pages/[org]/calls/[callId]/index.tsx delete mode 100644 moon/apps/web/pages/[org]/calls/index.tsx delete mode 100644 moon/apps/web/pages/[org]/calls/join/[callRoomId]/index.tsx delete mode 100644 moon/apps/web/pages/[org]/projects/[projectId]/calls.tsx delete mode 100644 moon/apps/web/pages/[org]/rust/index.tsx delete mode 100644 moon/apps/web/pages/[org]/rust/rust-ecosystem/crate-info/[nsfront]/[nsbehind]/[name]/[version]/compare/index.tsx delete mode 100644 moon/apps/web/pages/[org]/rust/rust-ecosystem/crate-info/[nsfront]/[nsbehind]/[name]/[version]/cves/index.tsx delete mode 100644 moon/apps/web/pages/[org]/rust/rust-ecosystem/crate-info/[nsfront]/[nsbehind]/[name]/[version]/dependencies/graph/index.tsx delete mode 100644 moon/apps/web/pages/[org]/rust/rust-ecosystem/crate-info/[nsfront]/[nsbehind]/[name]/[version]/dependencies/index.tsx delete mode 100644 moon/apps/web/pages/[org]/rust/rust-ecosystem/crate-info/[nsfront]/[nsbehind]/[name]/[version]/dependents/index.tsx delete mode 100644 moon/apps/web/pages/[org]/rust/rust-ecosystem/crate-info/[nsfront]/[nsbehind]/[name]/[version]/index.tsx delete mode 100644 moon/apps/web/pages/[org]/rust/rust-ecosystem/crate-info/[nsfront]/[nsbehind]/[name]/[version]/layout.tsx delete mode 100644 moon/apps/web/pages/[org]/rust/rust-ecosystem/crate-info/[nsfront]/[nsbehind]/[name]/[version]/versions/index.tsx delete mode 100644 moon/apps/web/pages/[org]/rust/rust-ecosystem/ecosystem-cve/cve-info/cve-graph/index.tsx delete mode 100644 moon/apps/web/pages/[org]/rust/rust-ecosystem/ecosystem-cve/cve-info/index.tsx delete mode 100644 moon/apps/web/pages/[org]/rust/rust-ecosystem/ecosystem-cve/index.tsx delete mode 100644 moon/apps/web/pages/[org]/rust/rust-ecosystem/index.tsx delete mode 100644 moon/apps/web/pages/[org]/rust/rust-ecosystem/search/index.tsx delete mode 100644 moon/apps/web/pages/[org]/rust/rust-news/index.tsx delete mode 100644 moon/apps/web/pages/figma-connection-success/index.tsx rename moon/apps/web/{middleware.ts => proxy.ts} (95%) delete mode 100644 moon/apps/web/public/img/embed/figma.png delete mode 100644 moon/apps/web/public/img/services/figma.png delete mode 100644 moon/apps/web/public/rust/Crate Ecosystem.png delete mode 100644 moon/apps/web/public/rust/Rust-Distribth.png delete mode 100644 moon/apps/web/public/rust/Rust-News.png delete mode 100644 moon/apps/web/public/rust/Rust-Tour-Doc.png delete mode 100644 moon/apps/web/public/rust/logo.png delete mode 100644 moon/apps/web/public/rust/normal.png delete mode 100644 moon/apps/web/public/rust/rust-ecosystem/Frame 166.png delete mode 100644 moon/apps/web/public/rust/rust-ecosystem/Objects - magnifying-glass.png delete mode 100644 moon/apps/web/public/rust/rust-ecosystem/code.png delete mode 100644 moon/apps/web/public/rust/rust-ecosystem/crate-info/Frame.png delete mode 100644 moon/apps/web/public/rust/rust-ecosystem/crate-info/compare/exchange.png delete mode 100644 moon/apps/web/public/rust/rust-ecosystem/crate-info/dependencies/Components - table.png delete mode 100644 "moon/apps/web/public/rust/rust-ecosystem/crate-info/dependencies/crate-\350\257\246\346\203\205-dependencis.png" delete mode 100644 moon/apps/web/public/rust/rust-ecosystem/crate-info/dependencies/double-arrow-up.png delete mode 100644 moon/apps/web/public/rust/rust-ecosystem/crate.png delete mode 100644 moon/apps/web/public/rust/rust-ecosystem/cve.png delete mode 100644 moon/apps/web/public/rust/rust-ecosystem/down.png delete mode 100644 moon/apps/web/public/rust/rust-ecosystem/ecosystem-cve/Frame.png delete mode 100644 moon/apps/web/public/rust/rust-ecosystem/ecosystem-cve/cve-info.png delete mode 100644 moon/apps/web/public/rust/rust-ecosystem/ecosystem-cve/cve-info/Frame.png delete mode 100644 moon/apps/web/public/rust/rust-ecosystem/ecosystem-cve/cve-info/cve-info.png delete mode 100644 moon/apps/web/public/rust/rust-ecosystem/homepage.png delete mode 100644 moon/apps/web/public/rust/rust-ecosystem/rust.png delete mode 100644 moon/apps/web/public/rust/rust-ecosystem/search-bg.png delete mode 100644 "moon/apps/web/public/rust/rust-ecosystem/\344\270\212\347\256\255\345\244\264-\345\270\270\346\200\201.png" delete mode 100644 "moon/apps/web/public/rust/rust-ecosystem/\344\270\213\347\256\255\345\244\264-hover(1).png" delete mode 100644 "moon/apps/web/public/rust/rust-ecosystem/\344\270\213\347\256\255\345\244\264-hover.png" delete mode 100644 moon/apps/web/public/rust/rust-news/up-icon.png delete mode 100644 moon/apps/web/public/rust/search-icon.png delete mode 100644 moon/apps/web/public/sounds/call-end.mp3 delete mode 100644 moon/apps/web/public/sounds/call-peer-join.mp3 delete mode 100644 moon/apps/web/public/sounds/call-peer-leave.mp3 delete mode 100644 moon/apps/web/public/sounds/call-recording-start.mp3 delete mode 100644 moon/apps/web/public/sounds/call-recording-stop.mp3 delete mode 100644 moon/apps/web/public/sounds/call-start.mp3 delete mode 100644 moon/apps/web/sentry.client.config.ts delete mode 100644 moon/apps/web/sentry.edge.config.ts delete mode 100644 moon/apps/web/sentry.server.config.ts delete mode 100644 moon/apps/web/tailwind.config.js delete mode 100644 moon/apps/web/types/pierre-diffs.d.ts delete mode 100644 moon/apps/web/types/primer-react-experimental.d.ts delete mode 100644 moon/apps/web/utils/convertNumberToTimestring.ts create mode 100644 moon/apps/web/utils/megaUser.ts delete mode 100644 moon/apps/web/utils/vttParser.ts create mode 100644 moon/packages/editor/src/types/markdown-it.ts create mode 100644 moon/packages/editor/src/types/tiptap-markdown.ts delete mode 100644 moon/packages/editor/src/utils/inlineLinkAttachmentType.ts create mode 100644 moon/packages/ui/src/styles/reference.css create mode 100644 moon/packages/ui/src/styles/theme.css delete mode 100644 moon/packages/ui/tailwind.config.js delete mode 100644 moon/patches/@radix-ui__react-popper.patch create mode 100644 moon/patches/@radix-ui__react-popper@1.2.7.patch diff --git a/.github/workflows/web-sync-server-deploy.yml b/.github/workflows/web-sync-server-deploy.yml index 02ee94bab..ce690804c 100644 --- a/.github/workflows/web-sync-server-deploy.yml +++ b/.github/workflows/web-sync-server-deploy.yml @@ -31,7 +31,7 @@ jobs: - uses: actions/setup-node@v4 with: - node-version: "20" + node-version: "26" - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v4 diff --git a/.github/workflows/web-test.yml b/.github/workflows/web-test.yml index 2db134797..40c24b601 100644 --- a/.github/workflows/web-test.yml +++ b/.github/workflows/web-test.yml @@ -21,12 +21,12 @@ jobs: - uses: actions/setup-node@v4 with: - node-version: '20' + node-version: '26' - name: Setup pnpm - uses: pnpm/action-setup@v4.0.0 + uses: pnpm/action-setup@v4 with: - version: 9 + package_json_file: moon/package.json - name: Get pnpm store directory shell: bash diff --git a/.gitignore b/.gitignore index 4bafee42c..4e0379e11 100644 --- a/.gitignore +++ b/.gitignore @@ -63,6 +63,9 @@ orion-server/docker-compose.override.yml # Claude Code configuration and cache .claude +# pnpm content-addressable store (local / custom store-dir) +.pnpm-store + tools/** .libra diff --git a/moon/.gitignore b/moon/.gitignore index 757a9ed20..c30898020 100644 --- a/moon/.gitignore +++ b/moon/.gitignore @@ -4,6 +4,7 @@ node_modules .pnp .pnp.js +.pnpm-store dist *.tsbuildinfo diff --git a/moon/.nvmrc b/moon/.nvmrc index 209e3ef4b..6f4247a62 100644 --- a/moon/.nvmrc +++ b/moon/.nvmrc @@ -1 +1 @@ -20 +26 diff --git a/moon/apps/sync-server/Dockerfile b/moon/apps/sync-server/Dockerfile index b831accda..d5403fc9e 100644 --- a/moon/apps/sync-server/Dockerfile +++ b/moon/apps/sync-server/Dockerfile @@ -1,11 +1,11 @@ # syntax = docker/dockerfile:1 -FROM node:22-slim AS base +FROM node:26-slim AS base -# configure pnpm +# configure pnpm (node:26 images no longer ship corepack) ENV PNPM_HOME="/pnpm" ENV PATH="$PNPM_HOME/bin:$PNPM_HOME:$PATH" -RUN corepack enable && corepack prepare pnpm@9.7.1 --activate +RUN npm install -g pnpm@11.17.0 # ENV SENTRY_PROPERTIES=sentry.properties diff --git a/moon/apps/sync-server/package.json b/moon/apps/sync-server/package.json index 173e17c5a..515796171 100644 --- a/moon/apps/sync-server/package.json +++ b/moon/apps/sync-server/package.json @@ -6,7 +6,6 @@ "build": "tsup", "clean": "rm -rf .turbo dist node_modules", "dev": "tsup --watch --onSuccess \"node dist/index.mjs\"", - "sentry:sourcemaps": "sentry-cli sourcemaps inject --org mega --project sync-server ./dist && sentry-cli sourcemaps upload --org mega --project sync-server --log-level=debug ./dist", "start": "node dist/index.mjs" }, "dependencies": { @@ -16,7 +15,6 @@ "@hocuspocus/extension-logger": "catalog:", "@hocuspocus/server": "catalog:", "@hocuspocus/transformer": "catalog:", - "@sentry/node": "catalog:", "@tiptap/core": "catalog:", "@tiptap/html": "catalog:", "@tiptap/pm": "catalog:", @@ -27,7 +25,6 @@ "devDependencies": { "@flydotio/dockerfile": "catalog:", "@gitmono/tsconfig": "workspace:*", - "@sentry/cli": "catalog:", "tsup": "catalog:", "typescript": "catalog:" } diff --git a/moon/apps/sync-server/src/database.ts b/moon/apps/sync-server/src/database.ts index 6131ed2a7..65d1d3083 100644 --- a/moon/apps/sync-server/src/database.ts +++ b/moon/apps/sync-server/src/database.ts @@ -1,7 +1,6 @@ import { Database } from '@hocuspocus/extension-database' import { Document } from '@hocuspocus/server' import { TiptapTransformer } from '@hocuspocus/transformer' -import * as Sentry from '@sentry/node' import { generateHTML, generateJSON } from '@tiptap/html' import { fromUint8Array, toUint8Array } from 'js-base64' import * as Y from 'yjs' @@ -14,14 +13,14 @@ import { Context } from './types' const extensions = getNoteExtensions() export function sendVersionToConnections(document: Document, version: number) { - document.connections.forEach((connection) => { - const connectionSchemaVersion = connection.connection.context.schemaVersion ?? 0 + document.getConnections().forEach((connection) => { + const connectionSchemaVersion = (connection.context as Context | undefined)?.schemaVersion ?? 0 // Update connections to readOnly if the schema version is lower than the current version - connection.connection.readOnly = connectionSchemaVersion < version + connection.readOnly = connectionSchemaVersion < version // Send the schema version to the client - connection.connection.sendStateless( + connection.sendStateless( JSON.stringify({ type: 'schema', version @@ -45,20 +44,41 @@ export async function getResource({ token, id, type, organization }: GetResource } } +function resolveContext(data: { + context?: Context + lastContext?: Context + requestParameters?: URLSearchParams +}): Context | undefined { + const fromPayload = data.lastContext ?? data.context + + if (fromPayload?.token && fromPayload.organization) { + return fromPayload + } + + const organization = data.requestParameters?.get('organization') ?? fromPayload?.organization + const type = data.requestParameters?.get('type') ?? fromPayload?.type ?? null + const token = fromPayload?.token + const schemaVersion = fromPayload?.schemaVersion ?? 0 + + if (!token || !organization) return fromPayload + + return { token, schemaVersion, organization, type } +} + export const database = new Database({ /** * Fetch the document state from Campsite, or generate a new document from the existing * HTML if the document has never been edited before. */ async fetch(data) { - const context: Context = data.context + const context = resolveContext(data) const id = data.documentName - const organization = data.requestParameters.get('organization') - const type = data.requestParameters.get('type') + const organization = context?.organization + const type = context?.type ?? null try { - if (!organization) return new Uint8Array() + if (!context?.token || !organization) return new Uint8Array() const state = await getResource({ token: context.token, id, type, organization }) @@ -79,16 +99,11 @@ export const database = new Database({ return Y.encodeStateAsUpdate(ydoc) } catch (error) { - Sentry.setContext('document', { - id, - organization, - type - }) - Sentry.setContext('context', { - schemaVersion: context.schemaVersion, - token: context.token + console.error('database.fetch failed', { + document: { id, organization, type }, + schemaVersion: context?.schemaVersion, + error }) - Sentry.captureException(error) throw error } }, @@ -97,14 +112,14 @@ export const database = new Database({ * Store the document state in Campsite. */ async store(data) { - const context: Context = data.context + const context = resolveContext(data) const id = data.documentName - const organization = data.requestParameters.get('organization') - const type = data.requestParameters.get('type') + const organization = context?.organization + const type = context?.type ?? null try { - if (!organization) return + if (!context?.token || !organization) return // Generate a state from the Yjs document const state = Y.encodeStateAsUpdate(data.document) @@ -128,16 +143,11 @@ export const database = new Database({ } ) } catch (error) { - Sentry.setContext('document', { - id, - organization, - type - }) - Sentry.setContext('context', { - schemaVersion: context.schemaVersion, - token: context.token + console.error('database.store failed', { + document: { id, organization, type }, + schemaVersion: context?.schemaVersion, + error }) - Sentry.captureException(error) throw error } } diff --git a/moon/apps/sync-server/src/index.ts b/moon/apps/sync-server/src/index.ts index 157049a46..c56636fab 100644 --- a/moon/apps/sync-server/src/index.ts +++ b/moon/apps/sync-server/src/index.ts @@ -1,12 +1,11 @@ import { Logger } from '@hocuspocus/extension-logger' -import { Hocuspocus } from '@hocuspocus/server' -import * as Sentry from '@sentry/node' +import { Server } from '@hocuspocus/server' import { PORT } from './config' import { database, getResource, sendVersionToConnections } from './database' import { AuthenticationError, Context } from './types' -const server = new Hocuspocus({ +const server = new Server({ port: PORT, async onAuthenticate(data): Promise { @@ -32,23 +31,20 @@ const server = new Hocuspocus({ const document = data.instance.documents.get(data.documentName) if (document) sendVersionToConnections(document, state.description_schema_version) - data.connection.readOnly = schemaVersion < state.description_schema_version + data.connectionConfig.readOnly = schemaVersion < state.description_schema_version return { token: data.token, - schemaVersion - } - } catch (error) { - Sentry.setContext('document', { - id: data.documentName, + schemaVersion, organization, type + } + } catch (error) { + console.error('onAuthenticate failed', { + document: { id: data.documentName, organization, type }, + schemaVersion, + error }) - Sentry.setContext('context', { - schemaVersion: schemaVersion, - token: data.token - }) - Sentry.captureException(error) throw error } }, diff --git a/moon/apps/sync-server/src/types.ts b/moon/apps/sync-server/src/types.ts index c27bedef7..40d280f30 100644 --- a/moon/apps/sync-server/src/types.ts +++ b/moon/apps/sync-server/src/types.ts @@ -1,6 +1,8 @@ export interface Context { token: string schemaVersion: number + organization: string + type: string | null } export type AuthenticationErrorType = 'no-token' | 'invalid-type' diff --git a/moon/apps/sync-server/tsconfig.json b/moon/apps/sync-server/tsconfig.json index c2b0d618d..8065e6e21 100644 --- a/moon/apps/sync-server/tsconfig.json +++ b/moon/apps/sync-server/tsconfig.json @@ -7,9 +7,6 @@ "outDir": "./dist", "sourceMap": true, "inlineSources": true, - // Set `sourceRoot` to "/" to strip the build path prefix - // from generated source code references. - // This improves issue grouping in Sentry. "sourceRoot": "/" } } diff --git a/moon/apps/sync-server/turbo.json b/moon/apps/sync-server/turbo.json index a8ca1c7f1..2e51c1a6e 100644 --- a/moon/apps/sync-server/turbo.json +++ b/moon/apps/sync-server/turbo.json @@ -3,14 +3,11 @@ "extends": ["//"], "tasks": { "dev": { - "dependsOn": ["build"], + "dependsOn": ["^build", "build"], "passThroughEnv": ["PORT"] }, "build": { - "env": ["SENTRY_AUTH_TOKEN", "SENTRY_ORG", "SENTRY_PROJECT", "TIPTAP_PRIVATE_REGISTRY_KEY", "NODE_ENV", "PORT"] - }, - "sentry:sourcemaps": { - "env": ["SENTRY_AUTH_TOKEN", "SENTRY_ORG", "SENTRY_PROJECT"] + "env": ["TIPTAP_PRIVATE_REGISTRY_KEY", "NODE_ENV", "PORT"] } } } diff --git a/moon/apps/web/.eslintrc.js b/moon/apps/web/.eslintrc.js deleted file mode 100644 index 517f3b456..000000000 --- a/moon/apps/web/.eslintrc.js +++ /dev/null @@ -1,9 +0,0 @@ -/** @type {import("eslint").Linter.Config} */ -module.exports = { - root: true, - extends: ['@gitmono/eslint-config/base.js', '@gitmono/eslint-config/next.js', 'plugin:storybook/recommended'], - rules: { - // 禁用文件最大行数限制 - 'max-lines': 'off' - } -} diff --git a/moon/apps/web/.storybook/main.js b/moon/apps/web/.storybook/main.js index 7b344e5fb..7e2b6ef30 100644 --- a/moon/apps/web/.storybook/main.js +++ b/moon/apps/web/.storybook/main.js @@ -11,12 +11,7 @@ function getAbsolutePath(value) { /** @type { import('@storybook/nextjs').StorybookConfig } */ const config = { stories: ['../**/*.stories.@(js|jsx|mjs|ts|tsx)', '../../../packages/ui/**/*.stories.@(js|jsx|mjs|ts|tsx)'], - addons: [ - getAbsolutePath('@storybook/addon-links'), - getAbsolutePath('@storybook/addon-essentials'), - getAbsolutePath('@storybook/addon-interactions'), - getAbsolutePath('@storybook/addon-docs') - ], + addons: [getAbsolutePath('@storybook/addon-links'), getAbsolutePath('@storybook/addon-docs')], framework: { name: getAbsolutePath('@storybook/nextjs'), options: {} @@ -36,4 +31,5 @@ const config = { // }, staticDirs: ['../public'] } + export default config diff --git a/moon/apps/web/Dockerfile b/moon/apps/web/Dockerfile index 94c37e9e8..0279c7ab7 100644 --- a/moon/apps/web/Dockerfile +++ b/moon/apps/web/Dockerfile @@ -1,11 +1,11 @@ # syntax = docker/dockerfile:1 -FROM node:20-slim AS base +FROM node:26-slim AS base -# configure pnpm +# configure pnpm (node:26 images no longer ship corepack) ENV PNPM_HOME="/pnpm" ENV PATH="$PNPM_HOME/bin:$PNPM_HOME:$PATH" -RUN corepack enable && corepack prepare pnpm@9.7.1 --activate +RUN npm install -g pnpm@11.17.0 # Throw-away build stage to reduce size of final image diff --git a/moon/apps/web/atoms/call.ts b/moon/apps/web/atoms/call.ts deleted file mode 100644 index 01eac4cda..000000000 --- a/moon/apps/web/atoms/call.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { HMSRoomState } from '@100mslive/react-sdk' -import { atom } from 'jotai' - -import { CallPeer, OrganizationMember } from '@gitmono/types' - -export const titleAtom = atom(null) -export const incomingCallRoomInvitationAtom = atom(undefined) -export const callRoomStateAtom = atom(HMSRoomState.Disconnected) -export const callChatOpenAtom = atom(false) - -export interface CallRoomInvitation { - call_room_id: string - call_room_url: string - creator_member: OrganizationMember - other_active_peers: CallPeer[] - skip_push: boolean -} - -type CallRoomState = HMSRoomState | 'Login' | 'Left' - -export const joinCallAtom = atom(null, (_get, set, payload: { title: string | null }) => { - set(titleAtom, payload.title) - set(incomingCallRoomInvitationAtom, undefined) -}) diff --git a/moon/apps/web/atoms/callToasts.ts b/moon/apps/web/atoms/callToasts.ts deleted file mode 100644 index c73dbfcae..000000000 --- a/moon/apps/web/atoms/callToasts.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { atom } from 'jotai' -import { v4 as uuid } from 'uuid' - -export const callToastsAtom = atom>(new Map()) - -export const addCallToastAtom = atom(undefined, (get, set, message: string) => { - const newMessageId = uuid() - - set(callToastsAtom, new Map(get(callToastsAtom).set(newMessageId, message))) - - setTimeout(() => { - set(deleteCallToastAtom, newMessageId) - }, 6000) -}) - -const deleteCallToastAtom = atom(undefined, (get, set, id: string) => { - const callToastMessages = get(callToastsAtom) - - callToastMessages.delete(id) - set(callToastsAtom, new Map(callToastMessages)) -}) diff --git a/moon/apps/web/components/AccountReview/PendingAccountReviewButton.tsx b/moon/apps/web/components/AccountReview/PendingAccountReviewButton.tsx index 903b14916..b79c04b31 100644 --- a/moon/apps/web/components/AccountReview/PendingAccountReviewButton.tsx +++ b/moon/apps/web/components/AccountReview/PendingAccountReviewButton.tsx @@ -20,7 +20,7 @@ export function PendingAccountReviewButton() { tooltip={`${pendingCount} user${pendingCount === 1 ? '' : 's'} pending review`} className='text-tertiary hover:text-primary' /> - + {pendingCount > 99 ? '99+' : pendingCount} diff --git a/moon/apps/web/components/Activity/Activity.tsx b/moon/apps/web/components/Activity/Activity.tsx index c82ed068e..6397cffb6 100644 --- a/moon/apps/web/components/Activity/Activity.tsx +++ b/moon/apps/web/components/Activity/Activity.tsx @@ -50,7 +50,7 @@ export function Activity() { setActivityOpen(false) }} className={cn( - 'text-primary group relative -mx-1 flex flex-none cursor-pointer select-none scroll-m-2 scroll-mt-12 items-start gap-3 rounded-lg px-2.5 py-3 text-[15px] outline-none ease-in-out will-change-[background,_color] focus-within:border-none focus-within:outline-none focus-within:ring-0 focus:border-none focus:outline-none focus:ring-0', + 'text-primary group relative -mx-1 flex flex-none cursor-pointer scroll-m-2 scroll-mt-12 items-start gap-3 rounded-lg px-2.5 py-3 text-[15px] outline-hidden ease-in-out will-change-[background,_color] select-none focus-within:border-none focus-within:ring-0 focus-within:outline-hidden focus:border-none focus:ring-0 focus:outline-hidden', { 'bg-blue-500/10 dark:bg-blue-500/20': !n.activity_seen, 'hover:bg-blue-500/15 aria-selected:bg-blue-500/15 dark:hover:bg-blue-500/25 dark:aria-selected:bg-blue-500/25': diff --git a/moon/apps/web/components/AdminGroups/AddMembersDialog.tsx b/moon/apps/web/components/AdminGroups/AddMembersDialog.tsx index f86579be4..294dc4fff 100644 --- a/moon/apps/web/components/AdminGroups/AddMembersDialog.tsx +++ b/moon/apps/web/components/AdminGroups/AddMembersDialog.tsx @@ -75,10 +75,10 @@ export const AddMembersDialog = ({ groupId, onClose }: AddMembersDialogProps) => if (groupId === null) return null return ( -
+
{/* Fixed header */} -
+

Add Members to Group

{/* Debug info */} @@ -114,7 +114,7 @@ export const AddMembersDialog = ({ groupId, onClose }: AddMembersDialogProps) => type='text' value={memberSearchQuery} onChange={(e) => setMemberSearchQuery(e.target.value)} - className='border-primary bg-secondary text-primary w-full rounded-md border px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500' + className='border-primary bg-secondary text-primary w-full rounded-md border px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:outline-hidden' placeholder='Search members by name or username...' disabled={!!membersError} /> @@ -180,7 +180,7 @@ export const AddMembersDialog = ({ groupId, onClose }: AddMembersDialogProps) => {member.user.display_name}

@@ -188,7 +188,7 @@ export const AddMembersDialog = ({ groupId, onClose }: AddMembersDialogProps) =>

@{member.user.username}

-
+
{member.user.display_name}

{member.user.display_name}

@{member.user.username}

-
+
{/* Fixed bottom buttons */} -
+
@@ -283,7 +283,7 @@ export function AdminGroupEditDialog({ open, onOpenChange, groupId, onSuccess }:
@@ -334,7 +334,7 @@ export function AdminGroupEditDialog({ open, onOpenChange, groupId, onSuccess }: > Basic Info {activeTab === 'basic' && ( -
+
)}
@@ -391,7 +391,7 @@ export function AdminGroupEditDialog({ open, onOpenChange, groupId, onSuccess }: onChange={(e) => setDescription(e.target.value)} placeholder='Enter group description' rows={3} - className='w-full rounded-md border border-gray-300 px-3 py-2 text-sm focus:border-blue-500 focus:outline-none focus:ring-1 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-100' + className='w-full rounded-md border border-gray-300 px-3 py-2 text-sm focus:border-blue-500 focus:ring-1 focus:ring-blue-500 focus:outline-hidden dark:border-gray-600 dark:bg-gray-800 dark:text-gray-100' />
@@ -409,27 +409,27 @@ export function AdminGroupEditDialog({ open, onOpenChange, groupId, onSuccess }:
) : ( <> -
+
- - - - - - @@ -559,7 +559,7 @@ export function AdminGroupEditDialog({ open, onOpenChange, groupId, onSuccess }:
+ Resource + Project + Read + Write + Admin + Actions