Skip to content

Commit 377a40e

Browse files
Release 0.3.20
* refactor: Implement ContextMenu class for dynamic context menu options - Introduced a new ContextMenu class to manage various context menu items across the application. - Refactored existing context menu implementations in multiple components to utilize the new ContextMenu class, enhancing code consistency and maintainability. - Added new context menu hooks for announcement area, message area, and voice mode, improving user interaction capabilities. - Updated the ServerPageComponent and ChannelEvent components to integrate the new context menu functionality, streamlining user experience. * refactor: Remove unnecessary comments and improve code clarity across multiple components - Eliminated commented-out code and unnecessary comments in various components to enhance readability. - Streamlined the structure of components by removing redundant hooks and state declarations. - Improved the overall organization of code, ensuring a cleaner and more maintainable codebase. * refactor: update component imports and enhance user interface consistency - Added missing imports for `useAppSelector` in multiple components to ensure proper state management. - Updated the `largeImageText` in various components from 'RC Voice' to 'RiceCall' for consistent branding. - Refactored the `PopupPageComponent` to utilize a new `PopupHeader` component, improving code organization and readability. - Streamlined header management in the popup component to enhance user experience and maintainability. * refactor: update PopupHeader component to use consistent styles - Renamed the imported CSS module from `headerStyles` to `styles` for clarity. - Updated class references in the PopupHeader component to align with the new styles import, enhancing maintainability and consistency across the UI. * refactor: file structure (#262) * refactor: update file structure and enhance component imports - Modified the main entry point for Electron to point to the new `electron.js` file. - Updated various component imports to reflect the new file paths, improving clarity and maintainability. - Added new entries to `.gitignore` for configuration files and development artifacts. - Removed outdated `.vscode` configuration files to streamline project setup. - Refactored context menu logic in `ContextMenu` to utilize updated permission checks for better clarity. - Introduced new components for handling action links and announcements, enhancing UI consistency. * feat: add global styles and enhance component structure - Introduced a new `globals.css` file to define global CSS variables and styles for consistent theming across the application. - Updated component imports to reflect the new file structure, improving clarity and maintainability. - Added new styles for the `AnnouncementEditor` and `AuthHeader` components, enhancing their visual presentation and user interaction. - Removed outdated styles from the `ActionLink` component to streamline the codebase. - Implemented new styles for the `EmbedLinkInput` and `EmojiPicker` components, improving their layout and functionality. * feat: add LoadingOverlay component for improved loading state management - Introduced a new `LoadingOverlay` component to provide a consistent loading experience across the application. - Added accompanying CSS styles for the loading overlay, enhancing visual presentation and user interaction. - Updated the `LoadingProvider` to utilize the new `LoadingOverlay`, streamlining loading state handling and improving code clarity. * feat: implement CategoryTab and ChannelTab components for enhanced channel management - Added `CategoryTab` and `ChannelTab` components to improve the organization and display of channels and categories within the EditChannelOrder popup. - Updated the CSS module to reflect new styles for the tabs, enhancing visual presentation and user interaction. - Refactored the `EditChannelOrderPopup` to utilize the new components, streamlining the channel management process and improving code clarity. - Enhanced event handling for tab selection and expansion, providing a more intuitive user experience. * feat: enhance ChatHistory component with new friend group tab styles - Updated the CSS for the ChatHistory component to improve layout and styling of the friend group tab. - Introduced new styles for the friend group tab, including hover effects and a toggle icon for better user interaction. - Refactored the ChatHistory component to utilize the new styles, enhancing the overall user experience and visual consistency. * feat: refactor UserTab styles and improve file structure - Updated the UserTab component to import styles from a new dedicated CSS module, enhancing organization and maintainability. - Introduced a new UserTab.module.css file with styles specific to the UserTab component, improving visual presentation and user interaction. - Adjusted imports in Home and Server pages to reflect the new file structure, ensuring consistency across the application. * feat: enhance MicVolumeSlider and SpeakerVolumeSlider components with new styles and functionality - Refactored MicVolumeSlider to include a mic mode dropdown menu, improving user interaction and accessibility. - Introduced a new CSS module for MicVolumeSlider, enhancing styling and organization. - Updated SpeakerVolumeSlider to utilize a dedicated CSS module, improving maintainability and visual consistency. - Removed outdated styles from the Server module, streamlining the codebase and improving clarity. * feat: implement ServerPageSidebar component for enhanced server management - Introduced a new `ServerPageSidebar` component to replace the previous `ChannelList`, improving organization and functionality within the server page. - Updated the `Server` page to utilize the new sidebar component, enhancing user interaction and visual consistency. - Refactored state management and context hooks within the sidebar for better performance and maintainability. * refactor: restructure ServerSearchBar component and related files - Removed the old `SearchResultItem` component and created a new `ServerSearchBar` component to enhance server search functionality. - Introduced a dedicated CSS module for the `ServerSearchBar`, improving styling and organization. - Updated the `Home` and `Server` pages to reflect the new component structure, ensuring consistency across the application. - Cleaned up outdated styles and imports, streamlining the codebase for better maintainability. * feat: enhance ServerList component with new server card functionality - Introduced `ServerCard` and `RecommendServerCard` components to display server information, improving user interaction and visual organization. - Updated `ServerList` to handle both regular and recommended servers, enhancing flexibility in server display. - Created a new CSS module for `ServerList`, streamlining styles and improving maintainability. - Removed outdated styles from the `Home` module, ensuring a cleaner codebase and consistent styling across components. * refactor: update VIP styling and component structure across user-related components - Removed outdated VIP styling from globals.css and replaced it with new styles in dedicated CSS modules for UserTab, UserInfoCard, and FriendTab components. - Updated component implementations to utilize the new VIP styles, enhancing visual consistency and maintainability. - Refactored related components to improve structure and organization, ensuring a cleaner codebase. * feat: add MicModeMenu component for enhanced microphone control - Introduced a new `MicModeMenu` component within the `MicVolumeSlider`, allowing users to select between key and auto speaking modes. - Implemented a voice threshold slider for adjusting microphone sensitivity, improving user interaction and accessibility. - Updated CSS styles for the `MicVolumeSlider` to accommodate the new menu, enhancing visual organization and maintainability. - Removed outdated mic mode styles from the `Server` module, streamlining the codebase. * feat: introduce CategoryTab and ChannelTab components with dedicated CSS modules - Added new `CategoryTab` and `ChannelTab` components to enhance channel organization and display. - Created separate CSS modules for both components, improving styling and maintainability. - Updated existing components to utilize the new styles, ensuring consistency and clarity in the codebase. - Removed outdated styles from the `Server` module, streamlining the overall styling structure. * feat: add setting overlay to ServerPageSidebar for new member applications - Introduced a new `setting-overlay` style in the CSS module to visually indicate new member applications. - Updated the `ServerPageSidebar` component to utilize the new overlay, enhancing user interaction and clarity. - Streamlined the styling structure by replacing commented-out code with the new implementation. * refactor: streamline Server component structure and styles - Removed unused styles from `QueueUserTab.module.css` to enhance clarity and maintainability. - Refactored `Server` page components, consolidating functionality into a new `ServerPageContent` component for improved organization. - Updated CSS classes in `Server.module.css` and `ServerPageSidebar` for consistency and clarity, renaming classes to better reflect their purpose. - Cleaned up the sidebar structure and improved the layout for better user interaction. * refactor: rename CSS classes and restructure components for clarity - Updated CSS class names in `ChangeServer`, `Login`, and `Register` components for improved clarity and consistency. - Refactored component structures to align with new class names, enhancing maintainability. - Introduced new loading text styles and adjusted layout properties for better user experience. * refactor: rename CSS classes and introduce new Home page components - Renamed CSS classes in `Home.module.css` for improved clarity and consistency. - Introduced new components: `HomePageHeader`, `HomePageContent`, `HomePagePersonalExclusive`, `HomePageNotAvailable` to enhance structure and maintainability. - Updated the `index.tsx` file to utilize the new components, streamlining the Home page layout and functionality. - Removed unused styles and components, ensuring a cleaner codebase. * feat: implement Friend page components and restructure styles - Introduced new components: `FriendPageHeader`, `FriendPageSidebar`, and `FriendPageContent` to enhance the structure and functionality of the Friend page. - Added `FriendActivity` component to display user activities, improving user engagement. - Created a dedicated CSS module for `FriendActivity` and updated styles in `Friend.module.css` for better organization and clarity. - Removed outdated styles and components from the Friend page, streamlining the codebase and improving maintainability. * feat: add socket module export and refactor token retrieval - Added export for the new socket module from `@/main/socket/web` to enhance functionality. - Refactored token retrieval to use `store.get('token')` instead of `localStorage`, improving state management and consistency. * fix: adjust margin for user signature in DirectMessage styles - Updated the margin-left property of the .user-signature class from 23px to 18px for improved alignment and visual consistency in the DirectMessage component. * refactor: enhance PopupHeader styles and structure - Added a data attribute for draggable functionality to the PopupHeader component. - Updated title rendering to use a dedicated CSS class for improved styling and maintainability. - Introduced a new CSS class for title text to standardize font size and text overflow handling. * refactor: enhance CategoryTab and ChannelTab components for improved member sorting - Updated CategoryTab to include a new useMemo hook for sorting category members based on friendship status and permission level. - Removed the sortChannelMembersWithRules prop from ChannelTab, simplifying the component's interface and logic. - Adjusted sorting logic in ChannelTab to maintain clarity and consistency in member display. - Added new CSS styles for a location icon in UserTab to enhance user interface elements. * chore: update configuration and logging structure - Added page extensions to the Next.js configuration for improved file handling. - Updated TypeScript configuration to include specific Electron entry points. - Refactored i18n initialization logic for better readability and structure. - Removed logging handlers and related imports from the main process to streamline the codebase. - Introduced new logging methods in the preload script for enhanced logging capabilities. * fix: build * refactor: restructure API data handling and authentication - Removed the old data.ts file and replaced it with a new data.ts file under the api directory, enhancing organization and clarity. - Introduced a new auth.ts file for handling user authentication, including registration, login, and auto-login functionalities. - Updated import paths in various files to reflect the new structure, ensuring consistent access to API methods. - Improved error handling and response management in the API request functions for better reliability. * refactor: streamline environment handling and improve context menu logic - Refactored environment loading to utilize a new Env class for better structure and clarity. - Updated context menu components to simplify logic and improve readability by consolidating multiline expressions into single lines. - Removed deprecated token management from the token.ts file and integrated token handling directly into the api module. - Enhanced error handling in various modules to ensure consistent behavior across the application. * refactor: remove RecommendServerCategory type and associated categories - Eliminated the RecommendServerCategory type definition and all related category entries from the constants file. - Streamlined the constants file by removing unused code, enhancing clarity and maintainability. * refactor: replace permission utility functions with Permission enum - Removed utility functions for permission checks and replaced them with a Permission enum for better clarity and maintainability. - Updated various components and context menus to utilize the new Permission enum, simplifying permission level checks throughout the codebase. - Enhanced readability by consolidating permission logic into a single source of truth, reducing potential errors and improving code consistency. * refactor: update getPermissionText function to use Permission enum - Modified the getPermissionText function to accept a Permission enum instead of a number, enhancing type safety and clarity. - Updated the permission mapping to utilize the enum values, improving maintainability and reducing potential errors in permission handling. * refactor: rename FindMe context to LocateMe and update related components - Replaced the FindMe context with LocateMe, updating all related imports and hooks across components. - Adjusted function names and references to align with the new context, enhancing clarity and consistency in the codebase. - Removed the obsolete FindMe provider and introduced the LocateMe provider to encapsulate the new functionality. * refactor: update AuthHeader and PopupHeader components for improved prop handling - Changed optional props to required in AuthHeader and PopupHeader components, enhancing type safety. - Simplified event handler functions in PopupHeader by directly invoking props, improving readability and consistency. - Ensured consistent function usage across both components for minimize, maximize, restore, and close actions. * feat: enhance ChatHistory component with pagination and message selection - Introduced pagination functionality to the ChatHistory component, allowing users to navigate through multiple pages of messages. - Added state management for the current page and selected message, improving user interaction and experience. - Updated the layout and styles in ChatHistory.module.css to accommodate new pagination controls and message item selection. - Enhanced the visual presentation of messages with hover effects and improved styling for better clarity. * refactor: update language handling to systemSettings - Replaced direct language handling in the IPC and provider components with a new systemSettings structure for better organization and maintainability. - Removed obsolete language-related files and imports, streamlining the codebase. - Updated language change logic in the ProvidersComponent and Header to utilize the new systemSettings API, enhancing clarity and consistency across the application. * refactor: streamline disconnectSocket function in electron and web modules - Removed unnecessary event listener cleanup code from the disconnectSocket function in both electron.ts and web.ts files, simplifying the disconnection process. - Enhanced code clarity and maintainability by focusing on essential socket disconnection logic. * refactor: update app icon paths for development and production environments - Adjusted the APP_ICON and APP_TRAY_ICON paths to accommodate different directory structures in development mode, ensuring correct resource loading. - Enhanced clarity by consolidating platform-specific icon paths within conditional statements for better maintainability. * refactor: enhance electron module with logging and window management - Added mainWindow, authWindow, and popups variables for better window management in the Electron application. - Introduced configureLogger function to set up logging with file transport and remote logging capabilities, improving debugging and monitoring. - Removed duplicate logger configuration from the previous location, streamlining the codebase. * refactor: optimize functional components with React.memo for performance - Wrapped multiple functional components including ImageViewer, ServerSearchBar, UnreadMessageAlert, HomePageHeader, EditSection, SendSection, and SentSection with React.memo to enhance rendering performance by preventing unnecessary re-renders. - Updated the createPopup function to set a default value for initialData, improving flexibility in popup creation. - Ensured consistent display names for memoized components to aid in debugging and maintainability. * feat: add MicButton component for microphone control in server page - Introduced a new MicButton component to manage microphone functionality, including taking and releasing the mic based on user permissions and channel state. - Integrated context menu options for mic control in queue mode, enhancing user interaction. - Updated ServerPageContent to include the MicButton, streamlining microphone management within the server interface. * refactor: update IPC imports and type declarations across components - Changed imports from default to named exports for the IPC module in multiple files, enhancing clarity and consistency in module usage. - Updated type imports from `* as Types` to `type * as Types` to improve type safety and align with TypeScript best practices. - Ensured consistent import patterns across various components, including action and popup files, to streamline the codebase and improve maintainability. * refactor: streamline tray and window management in electron module - Consolidated tray configuration and window management logic by introducing the openAppWindow function for better clarity and reusability. - Updated setTrayDetail to directly utilize the isLogin parameter, enhancing readability and maintainability. - Removed redundant code and improved event handling for tray interactions, ensuring a more efficient user experience. * refactor: update tab components to use centralized store actions - Replaced direct imports of setSelectedItemId from the UI slice with centralized store actions in CategoryTab, ChannelTab, FriendGroupTab, FriendTab, QueueUserTab, UserTab, and others for improved consistency and maintainability. - Enhanced clarity by consolidating dispatch calls to the Store module across multiple components, streamlining state management and reducing redundancy. - Updated related components to ensure uniformity in handling selected item states, improving overall code organization. * fix: update server limit message key for consistency in localization - Changed the key for the server limit message from "server-limit-reached" to "server-limit-exceeded" in the Chinese (Taiwan) localization file to enhance clarity and maintain consistency with other message keys. * refactor: standardize formatting and improve code clarity across components - Updated various components to ensure consistent formatting, including removing unnecessary spaces in function calls and improving readability. - Enhanced CSS styles for better layout and alignment in the ChatHistory and other popups, ensuring a more cohesive user interface. - Refactored logic in MessageContent and other components to streamline state management and improve performance. - Applied React.memo to additional components to optimize rendering and prevent unnecessary re-renders. * fix: correct padding syntax in ChatHistory CSS for consistency - Updated padding values in ChatHistory.module.css to use the correct syntax with units (px), ensuring proper styling and layout. - Added a newline at the end of the file to adhere to coding standards. * refactor: update linting scripts for improved code quality - Combined ESLint and Stylelint commands into a single "lint" script in package.json for streamlined code quality checks. - This change enhances the development workflow by ensuring both JavaScript and CSS files are linted in one command. * refactor: change all webp to svg * refactor: update CSS styles and structure in Server and EditChannelOrder components - Modified CSS for the Server component to set height and width, improving layout consistency. - Refactored CategoryTab component to use a fragment instead of a div for better semantic structure. - Adjusted CSS in EditChannelOrder to ensure full-width layout and removed unnecessary properties for cleaner styling. * refactor: update image handling and CSS styles across components - Replaced background images with <Image> component from Next.js for better performance and optimization in various components including FriendActivity, ServerList, and UserInfoCard. - Standardized avatar dimensions in CSS for consistency across different components. - Improved accessibility by updating alt attributes for images to provide clearer descriptions. * refactor: update class names for improved clarity in ServerBroadcastPopup - Changed the class name from "content" to "dialog-content" in the ServerBroadcastPopup component to enhance semantic meaning and improve code readability. * refactor: update class name for consistency in InviteMemberPopup - Changed the class name from "content" to "popup-content" in the InviteMemberPopup component to enhance clarity and maintain consistency with other popup components. * refactor: update background image path in ChangeTheme module - Changed the background image URL in ChangeTheme.module.css to reflect the new directory structure, ensuring proper loading of assets. * refactor: update class names and styles in MessageInputBox component - Renamed CSS classes for better clarity and consistency, changing 'textarea' to 'input-area' and 'message-input-length-text' to 'input-length-text'. - Introduced a new 'emoji-btn' class for the emoji button, enhancing its styling and hover effects for improved user interaction. * refactor: update class names and localization keys in Friend components - Renamed CSS classes for improved clarity and consistency across Friend components, changing names like 'friend-page-header' to 'header' and 'friend-page-body' to 'body'. - Updated localization key from 'friend-active' to 'friend-activity' in the app.json file to enhance clarity in the user interface. * feat: add FavoriteServerCard, JoinedServerCard, and RecentServerCard components - Introduced three new components: FavoriteServerCard, JoinedServerCard, and RecentServerCard for displaying user server information. - Each card component supports double-click functionality to select the corresponding server. - Updated UserInfoPopup to integrate the new card components and manage server views effectively. - Refactored CSS styles for improved layout and consistency across user information components. * refactor: remove unused emoji styles and add no-drag class - Deleted the unused emoji icon styles from globals.css to clean up the codebase. - Introduced a new .no-drag class to prevent drag interactions in specific areas, enhancing user experience. * refactor: update UserInfoPopup styles and class names - Replaced instances of the 'user-recent-visits-private' class with 'server-list-tips' for better clarity in the UserInfoPopup component. - Introduced a new CSS class 'server-list-tips' with updated styles for displaying server-related messages, enhancing the user interface. - Cleaned up the UserSetting.module.css by removing the old class definition to streamline the codebase. * refactor: update sound effect styles and class names in SystemSetting component - Removed old sound effect styles from globals.css to streamline the codebase. - Introduced a new CSS module for SystemSetting with updated class names for sound effect previews and enable text, enhancing clarity and maintainability. - Updated the SystemSetting component to utilize the new styles, improving the user interface for sound effect interactions. * refactor: introduce ApplyFriend CSS module and update component styles - Added a new CSS module for ApplyFriend to encapsulate styles for user avatars, information layout, and section separators, enhancing maintainability. - Updated EditSection, SendSection, and SentSection components to utilize the new styles, improving the visual consistency and clarity of the friend application interface. - Renamed event handler props for better clarity, aligning with the updated component structure. * feat: implement ApplyMember popup with structured sections for application process - Introduced the ApplyMember popup, featuring distinct sections: SendSection, SentSection, and EditSection, to streamline the member application workflow. - Added a new CSS module for styling, enhancing the visual layout of server information and application notes. - Updated the main ApplyMember component to manage state transitions between sections, improving user experience and interaction clarity. * feat: add structured sections for InviteMember popup - Introduced new components: EditSection, SendSection, and SentSection to enhance the InviteMember popup functionality, allowing for better user interaction during the invitation process. - Added a CSS module for styling, improving the visual layout of member information and invitation notes. - Updated the main InviteMember component to manage state transitions between sections, streamlining the user experience. * feat: integrate StoreSyncer and PopupSocketManager components - Added StoreSyncer component to synchronize application state with the store, ensuring real-time updates across the application. - Introduced PopupSocketManager component to manage socket connections specifically for the popup, enhancing modularity and separation of concerns. - Updated RootPageComponent and PopupPageComponent to include the new components, improving overall application architecture. - Refactored SocketManager to streamline state management and reduce redundancy in the codebase. * refactor: simplify userInfo function and update UserInfoPopup component - Removed the unused friend data from the userInfo function, streamlining the data retrieval process. - Updated UserInfoPopup to eliminate the friend prop, enhancing clarity and reducing unnecessary complexity in the component's props. - Adjusted the logic for determining friendship status to utilize the global friends state, improving accuracy in user interactions. * refactor: remove unused friend verification and invitation functions - Deleted the friendVerification and memberInvitation functions from the loader, streamlining the codebase by removing unused functionality. - Updated the serverSetting function to eliminate the userPromise, simplifying the data retrieval process while maintaining necessary functionality. - Enhanced the ServerSettingPopup component to include memberApplications, improving the handling of member application data within the UI. - Added socket listeners in ServerSettingPopup for real-time updates on member applications, enhancing user interaction and responsiveness. * refactor: replace PopupSocketManager with StoreSyncer components - Replaced the PopupSocketManager component with StoreSyncer.Master and StoreSyncer.Slave in RootPageComponent and PopupPageComponent, respectively, to enhance modularity and maintainability. - Deleted the PopupSocketManager component, consolidating socket management functionality within the StoreSyncer component. - Updated StoreSyncer to include both Master and Slave functionalities for improved state synchronization across the application. * refactor: update environment configuration and remove Crowdin integration - Updated the .env.example file to include new environment variables for static files and i18n settings, replacing the deprecated Crowdin settings. - Modified next.config.ts and src/env.ts to reflect the removal of Crowdin integration and the addition of I18N_BASE_URL and DOCS_BASE_URL. - Adjusted README.md to document the new environment variables for better clarity. - Removed unused localization files and related code, streamlining the i18n implementation. - Updated GitHub workflows to accommodate the new environment variable structure. * refactor: update API endpoints to use environment configuration - Modified the useCountries and useStaffList hooks to fetch data from the new environment-based API endpoints, enhancing flexibility and maintainability. - Replaced hardcoded URLs with dynamic references to DOCS_BASE_URL, ensuring consistency across the application. * docs: update README.md to clarify environment variable settings - Revised the server settings section for improved clarity, removing unnecessary comments and adding descriptions for new environment variables. - Updated the i18n settings to include the new DOCS_BASE_URL and clarified the usage of I18N_BASE_URL for static file fetching. - Simplified the build instructions by consolidating commands for better readability. * refactor: update environment variable settings for static files and i18n - Revised .env.example and README.md to simplify the base URLs for static files and i18n, removing unnecessary paths. - Updated next.config.ts and src/env.ts to ensure DOCS_BASE_URL and I18N_BASE_URL are required environment variables. - Adjusted i18n index to remove fallback for I18N_BASE_URL, ensuring stricter type enforcement. * refactor: streamline base URL retrieval in i18n index - Removed the getBaseUrl function, directly accessing I18N_BASE_URL from the Env module to simplify the code. - Ensured stricter type enforcement by eliminating unnecessary fallback logic for I18N_BASE_URL. * fix: correct alignment property in ChatHistory CSS - Updated the alignment property in the .message-date class from 'end' to 'flex-end' for improved layout consistency. - Added a newline at the end of the file to adhere to coding standards. * refactor: remove SVG conversion script and related npm script - Deleted the webp-to-svg conversion script from the scripts directory to streamline the codebase. - Removed the corresponding npm script for SVG conversion from package.json, simplifying build commands. * refactor: integrate auto-updater functionality into main electron file - Moved auto-updater logic from auto-updater.ts to electron.ts, consolidating update management within the main application file. - Updated the checkForUpdates, startCheckForUpdates, and stopCheckForUpdates functions to maintain existing functionality. - Adjusted import statements across various files to reflect the new structure, ensuring seamless integration of update features. * refactor: enhance i18n integration and update dialog labels in electron and web files - Updated import statements to include i18nReady for improved internationalization readiness. - Modified dialog titles and messages in electron.ts to use namespaced keys for better organization. - Adjusted the onReady function in web.ts to ensure environment loading and i18n readiness are handled asynchronously. * fix: correct tray icon logic in electron.ts - Updated the tray icon path assignment to use the internal _isLogin state instead of the function parameter, ensuring accurate icon display based on user login status. * feat: implement profile-based user data path and protocol handling in electron.ts - Added support for profile-based user data paths, allowing different configurations based on the provided profile argument. - Enhanced protocol handling to manage deep links and local resource fetching, improving application responsiveness to external requests. - Updated the main title and version title to reflect the active profile, ensuring clarity in the application branding. * refactor: remove waitForPort function and streamline net import in electron.ts - Eliminated the waitForPort function to simplify the codebase, as it was no longer necessary for port checking. - Updated the import statement to directly use 'net' from 'electron' instead of aliasing it, enhancing clarity and consistency in the code. * refactor: rename target to receiver in friend application popups and related functions - Updated function parameters and variable names from 'target' to 'receiver' in friend application popups for clarity and consistency. - Adjusted related components and functions to reflect the new naming convention, enhancing code readability and maintainability. - Removed unused imports and streamlined the code in several sections to improve overall performance. * style: sorting action.ts * refactor: simplify function parameters in action.ts and related components - Removed unnecessary parameters from several functions in action.ts, enhancing clarity and reducing complexity. - Updated related components and hooks to align with the new function signatures, improving overall code maintainability. - Streamlined context menu integration by removing unused user and server parameters, ensuring a cleaner implementation. * docs: add i18n localStorage cache design spec * docs: add i18n localStorage cache implementation plan * feat(i18n): add localStorage cache helpers * feat(i18n): add manifest.json version check for cache invalidation * feat(i18n): use localStorage cache in HttpBackend * feat(i18n): await version check before i18next init * docs: add i18n storage abstraction spec and plan * feat(i18n): add environment-aware storage abstraction * feat(i18n): use storage abstraction, fix DOCS_BASE_URL bug * refactor(i18n): streamline language handling and storage logic - Replaced direct i18n language calls with a centralized changeLanguage function for better maintainability. - Updated language retrieval in the registration process to use system settings instead of i18n directly. - Introduced a NoopStorage class for scenarios where no storage is needed, enhancing the storage abstraction. - Adjusted cache version check to use DOCS_BASE_URL instead of I18N_BASE_URL, fixing a potential bug. * refactor: update imports and streamline context menu handling - Changed import paths for Logger and Env to use the utils directory for better organization. - Removed unnecessary translation function calls in several components, simplifying timestamp formatting. - Introduced a new ContextMenu class to centralize context menu management, enhancing maintainability and readability. - Updated various components to utilize the new context menu structure, improving code consistency. * feat(api): implement loader functions for member and server operations - Added new loader functions to handle member applications, friend applications, channel settings, and server settings. - Introduced functions for managing direct messages, editing channel orders, and user information retrieval. - Updated import paths in popup files to reference the new loader module for improved organization. * refactor(api): remove unused authentication and data API files - Deleted obsolete authentication functions and data retrieval methods to streamline the API structure. - Cleaned up the loader module by removing unnecessary imports and functions, enhancing maintainability. - Updated various components to reflect the removal of these API methods, ensuring consistency across the codebase. * chore(deps): remove zod from dependencies in package.json and yarn.lock - Deleted zod from both package.json and yarn.lock to clean up unused dependencies, reducing project bloat. * refactor(env): remove I18N_BASE_URL from environment configuration - Deleted I18N_BASE_URL from .env.example, next.config.ts, and various workflow files to streamline environment settings. - Updated i18n handling in the codebase to use DOCS_BASE_URL instead, ensuring consistency and reducing redundancy. * chore(deps): update package resolutions in yarn.lock - Changed package resolutions in yarn.lock to use the Yarn registry instead of npm for several dependencies, ensuring consistency in package management. - Updated integrity hashes for affected packages to reflect the new resolutions. * refactor(i18n): update time difference formatting for translations - Changed the structure of time difference intervals to use translation keys instead of direct labels, enhancing localization support. - Updated the return format for time differences to utilize the new translation keys, improving consistency in language handling. * refactor(i18n): enhance time difference translation handling - Updated the time difference formatting to utilize translation parameters, improving localization support. - Ensured consistency in language handling by adopting a parameterized approach for count values in translations. * refactor(context-menu): simplify channel creation option handling - Updated the context menu options for channel creation across multiple components to remove unnecessary channelId parameters, enhancing consistency in function calls. - Modified the createChannel function to accept an optional channelId, improving flexibility in channel management. - Cleaned up the DirectMessagePopup component by removing unused friend state and related effects, streamlining the codebase. * refactor(direct-message): update shake window functionality and file upload handling - Modified SHAKE_COOLDOWN to be in milliseconds for improved timing accuracy. - Replaced cooldown state with canShakeWindow state to manage shake window interactions more effectively. - Introduced file input handling for image uploads, including validation for file size and integration with the messaging editor. - Cleaned up unused cooldown references and adjusted related logic for better performance and readability. * docs: add CSS module naming convention * refactor(css): standardize naming in components ActionLink–FriendTab Remove component-name prefixes, pluralize corrections, and apply full-word conventions across 9 CSS modules and their TSX consumers. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * refactor(css): fix missed renames in FriendGroupTab * refactor(css): standardize naming in components Header–UserTab Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(css): rename and define missing ServerSearchBar dropdown-item-id sub-classes Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * refactor(css): standardize naming in page-components Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(css): correct ChangeServer TSX class references body and footer * refactor(css): standardize naming in popups About–EditChannelOrder Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * refactor(css): standardize naming in popups InviteFriend–UserInfo Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * refactor(css): remove unused avatar-related styles from globals.css * refactor(css): clean up and standardize styles across various components - Adjusted formatting in storage.ts for consistency. - Updated CSS styles in Friend, Server, ApplyFriend, ApplyMember, EditChannelOrder, UserInfo, and region.ts for improved readability and organization. - Ensured proper newline endings in CSS files. * docs: add CSS Module Naming Standardization implementation plan - Introduced a comprehensive plan for standardizing CSS module naming conventions across the project. - Defined rules for naming, including kebab-case usage, removal of component-name prefixes, and guidelines for self-descriptive names. - Included step-by-step instructions for executing the renaming tasks and updating TSX references accordingly. * refactor(css): update class names and styles in FriendGroupTab for consistency - Renamed CSS classes for friend count and content to improve clarity and adhere to naming standards. - Added overflow handling and text styling to the label for better UI presentation. - Ensured consistent use of class names in the FriendGroupTab component. * refactor(SearchUserPopup): enhance error handling and update class names - Improved error handling in the searchUser function to provide user feedback when no target is found or when an error occurs during the API call. - Updated class names for error display to enhance clarity and maintain consistency with naming conventions. * fix(yarn.lock): update register-scheme dependency resolution URL - Changed the resolution URL for the register-scheme package from a GitHub link to a direct npm registry link for improved reliability and consistency in package management. * chore(package.json): update version and add resolutions for register-scheme - Bumped the version to 0.3.20-dev.20260512. - Added resolutions field to specify a direct npm registry link for the register-scheme package. * feat(i18n): implement environment-aware storage abstraction - Created a new storage abstraction to replace hardcoded localStorage calls with an interface that adapts to the environment (renderer/web vs Electron main process). - Introduced LocalStorageAdapter and FsAdapter to handle storage operations based on the execution context. - Updated i18n logic to utilize the new storage abstraction, removing unnecessary isElectron checks and fixing a bug in cache version checking. - Ensured that the i18n initialization process awaits storage loading before proceeding, enhancing reliability and performance. --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 4df3585 commit 377a40e

1,716 files changed

Lines changed: 1316009 additions & 47312 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.env.example

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
# Server Settings (All variables must be filled)
1+
# Server Settings
22
API_URL=http://localhost:4500 # Do not include the trailing slash
33
WS_URL=http://localhost:4500 # Use the same URL if your server runs locally
44

5-
# Crowdin Settings (Optional)
6-
CROWDIN_DISTRIBUTION_HASH= # If not provided, will use local files (./src/i18n/locales/[lang]/[ns]) instead
5+
# Static Files Settings
6+
DOCS_BASE_URL=https://your-host # Base URL of the static files server
77

88
# Error Submission URL (Optional)
99
ERROR_SUBMISSION_URL=https://error-submission.example.com # If not provided, errors will not be submitted

.github/workflows/dev-release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ jobs:
6060
echo "API_URL=${{ secrets.API_DEV_URL }}" >> .env.dev
6161
echo "WS_URL=${{ secrets.WS_URL }}" >> .env
6262
echo "WS_URL=${{ secrets.WS_DEV_URL }}" >> .env.dev
63-
echo "CROWDIN_DISTRIBUTION_HASH=${{ secrets.CROWDIN_DISTRIBUTION_HASH }}" >> .env
63+
echo "DOCS_BASE_URL=${{ secrets.DOCS_BASE_URL }}" >> .env
6464
echo "ERROR_SUBMISSION_URL=${{ secrets.ERROR_SUBMISSION_URL }}" >> .env
6565
6666
- name: Build electron

.github/workflows/main-release.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ jobs:
6060
echo "API_URL=${{ secrets.API_DEV_URL }}" >> .env.dev
6161
echo "WS_URL=${{ secrets.WS_URL }}" >> .env
6262
echo "WS_URL=${{ secrets.WS_DEV_URL }}" >> .env.dev
63+
echo "DOCS_BASE_URL=${{ secrets.DOCS_BASE_URL }}" >> .env
6364
echo "ERROR_SUBMISSION_URL=${{ secrets.ERROR_SUBMISSION_URL }}" >> .env
6465
6566
- name: Build electron

.gitignore

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,10 @@ next-env.d.ts
4141

4242
# lock files
4343
package-lock.json
44-
tempfix
44+
45+
# config files
4546
.gemini
4647
.geminiignore
47-
agent-follow.md
48-
RiceCall_previous_stable
48+
.vscode
49+
.cursor
50+
.claude

.vscode/launch.json

Lines changed: 0 additions & 36 deletions
This file was deleted.

.vscode/settings.json

Lines changed: 0 additions & 3 deletions
This file was deleted.

README.md

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -105,12 +105,12 @@ RiceCall
105105
### 1. Copy `.env.example` to `.env` and fill in all required options
106106

107107
```env
108-
# Server Settings (All variables must be filled)
108+
# Server Settings
109109
API_URL=http://localhost:4500 # Do not include the trailing slash
110110
WS_URL=http://localhost:4500 # Use the same URL if your server runs locally
111111
112-
# Crowdin Settings (Optional)
113-
CROWDIN_DISTRIBUTION_HASH= # If not provided, will use local files (./src/i18n/locales/[lang]/[ns]) instead
112+
# Static Files Settings
113+
DOCS_BASE_URL=https://your-host # Base URL of the static files server
114114
115115
# Error Submission URL (Optional)
116116
ERROR_SUBMISSION_URL=https://error-submission.example.com # If not provided, errors will not be submitted
@@ -131,9 +131,7 @@ yarn dev
131131
### 4. Build the application
132132

133133
```bash
134-
yarn build # Build for all platforms
135-
yarn build:deb # Build Linux .deb package
136-
yarn build:dmg # Build macOS .dmg package
134+
yarn build
137135
```
138136

139137
### Other Scripts

docs/css-naming-convention.md

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
# CSS Module Naming Convention
2+
3+
## Format
4+
5+
- **kebab-case** for all class names.
6+
- Processed by CSS Modules — access in TSX via bracket notation: `styles['class-name']`.
7+
8+
## No Component Prefix
9+
10+
CSS Modules already scopes classes to their file. Do not prefix with the component name.
11+
12+
```css
13+
/* Bad — in FriendTab.module.css */
14+
.friend-tab-name-text { }
15+
16+
/* Good */
17+
.name-text { }
18+
```
19+
20+
Exception: when two structural levels coexist in the same file (e.g. a list and its cards), a short qualifier prevents ambiguity:
21+
22+
```css
23+
/* Good — ServerList.module.css has both list and card elements */
24+
.list { }
25+
.card { }
26+
.card-avatar { }
27+
.card-name-text { }
28+
```
29+
30+
## Self-Descriptive Names
31+
32+
The class name alone must identify the element's purpose. Prefer concrete nouns over vague words like `box`, `wrapper`, `container` — use them only when no more specific term applies.
33+
34+
## Suffixes
35+
36+
| Suffix | Use for |
37+
|--------|---------|
38+
| `-button` | Any clickable interactive element (div, span, or button tag with cursor:pointer) |
39+
| `-icon` | Decorative non-clickable image or SVG |
40+
| `-text` | Text display element |
41+
| `-input` | Form input |
42+
| `-list` | List container |
43+
| `-item` | List item |
44+
| `-section` | Logical grouping within a layout |
45+
| `-bar` | Horizontal toolbar or progress bar |
46+
| `-tab` / `-tabs` | Tab navigation element / container |
47+
| `-dropdown` | Dropdown container |
48+
| `-overlay` | Overlay layer |
49+
50+
## State Classes
51+
52+
Use plain semantic names without a prefix:
53+
54+
```css
55+
.selected { }
56+
.active { }
57+
.expanded { }
58+
.disabled { }
59+
.loading { }
60+
.muted { }
61+
.hidden { }
62+
.visible { }
63+
```
64+
65+
## Full Words, No Abbreviations
66+
67+
| Avoid | Use |
68+
|-------|-----|
69+
| `btn` | `button` |
70+
| `navegate` | `navigate` |
71+
| `saperator` | `separator` |
72+
| `spliter` | `splitter` |
73+
| `slogen` | `slogan` |
74+
| `datail` | `detail` |
75+
| `ct-` | full name |
76+
77+
## Reference
78+
79+
`src/page-components/Friend/Friend.module.css` is the canonical example of a well-named CSS module in this project.

0 commit comments

Comments
 (0)