Commit Graph

3301 Commits

Author SHA1 Message Date
Innei e825b3ed36
Merge remote-tracking branch 'origin/dev' into release/desktop/0.6.3 2025-07-24 16:17:28 +08:00
lawvs 131f50f5f5 fix: hydrateSettings on initialize 2025-07-24 16:02:43 +08:00
Innei 33bcc2fbde
release(desktop): release v0.6.3 2025-07-24 15:41:51 +08:00
lawvs fbaf31daf3 fix: update pull-up navigation to use shared values for gesture state 2025-07-24 12:30:07 +08:00
Stephen Zhou c058c88af5
fix(mobile): use correct for trending preview 2025-07-24 12:21:49 +08:00
Stephen Zhou 845003319e
fix: improve subscription subscribe state update 2025-07-24 12:06:12 +08:00
Stephen Zhou 308822a16d
feat: preview trending feed, resolve FOL-2267 2025-07-24 11:28:41 +08:00
Whitewater 2c1e84faae
fix: update react-native-reanimated to version 3.19.0 (#4233) 2025-07-23 20:56:56 +00:00
Whitewater ab7efc34a7
feat: implement pull-up navigation on Android (#4228)
* feat: implement pull-up navigation on Android

* refactor: update folder structure

* feat: integrate scroll view progress into pull-up navigation

* refactor: extract PullUpIndicatorIos component

* fix: compatible custom text size

* chore: clean code
2025-07-24 04:43:47 +08:00
lawvs ad7c5ddb9b fix: update setCurrentPage to determine navigation direction based on index 2025-07-24 04:04:13 +08:00
Innei cd37104e15
fix(mobile): update Text component to support ref forwarding
- Modified Text component to accept a ref prop for better integration with React Native components.
- Updated NavigationLink to use the new ref type for improved type safety.

Signed-off-by: Innei <tukon479@gmail.com>
2025-07-24 01:54:35 +08:00
Innei 38553bfa85
feat(mobile): support custom text size. resolves FOL-2297
- Updated PlayerScreen to use consistent import statements and improved structure.
- Refactored CoverArt component to enhance animation handling with Reanimated.
- Added typography specifications to typography.ts for better text management.
- Extended Tailwind configuration to include custom font sizes.
- Implemented font scaling options in settings localization files for accessibility.
- Added a script to replace Text imports from react-native with a new import path.
- Updated package dependencies for Babel and added glob for file handling.

Signed-off-by: Innei <tukon479@gmail.com>
2025-07-24 01:40:02 +08:00
DIYgod c8e3a0e1d4
feat: entry content layout for ai 2025-07-23 22:13:04 +08:00
Innei 8b76fa3623
chore: move lightbox location
Signed-off-by: Innei <tukon479@gmail.com>
2025-07-23 21:30:01 +08:00
Innei db67ec878e
fix: add color highlight for entry link, resolves FOL-2288
Signed-off-by: Innei <tukon479@gmail.com>
2025-07-23 21:12:27 +08:00
Stephen Zhou 3a9cec4c64
feat: hide from timeline option (#4229) 2025-07-23 18:26:38 +08:00
Stephen Zhou 0b0e62825b
chore: disable expo updates for now 2025-07-23 15:45:46 +08:00
Stephen Zhou bd0a33c343
fix(mobile): add missing api client 2025-07-23 13:31:29 +08:00
Innei 01ed1c63b5
refactor: Progressive migration Client SDK (#4227)
* Implement code changes to enhance functionality and improve performance

Signed-off-by: Innei <tukon479@gmail.com>

* chore: update @follow-app/client-sdk to version 0.2.6 and add new dependencies
refactor: adjust types in server configs and features to use ExtractResponseData
feat: implement followApi for server configurations and API client context

Signed-off-by: Innei <tukon479@gmail.com>

* feat: move to client-sdk

Signed-off-by: Innei <tukon479@gmail.com>

* feat: update @follow-app/client-sdk to version 0.3.22 and add ShrinkingFocusBorder component

- Updated the version of @follow-app/client-sdk in pnpm-workspace.yaml from 0.3.15 to 0.3.22.
- Introduced a new ShrinkingFocusBorder component that animates a focus border effect using a canvas element.
- Implemented resize observer for persistent border and animation logic for visibility changes.

Signed-off-by: Innei <tukon479@gmail.com>

---------

Signed-off-by: Innei <tukon479@gmail.com>
2025-07-23 01:21:34 +08:00
Sunghyun Kim 26c96c2f22
fix: add missing AI translations for Electron build (#4226)
- Add ai_en and ai_ja imports to Electron default resources
- Include ai translations in all language configurations
- Use English fallback for zh-CN and zh-TW until translations are available
- Fixes AI settings page showing translation keys instead of text
2025-07-23 00:54:50 +08:00
Stephen Zhou f11bf3b77f
fix: hide action bar in header for wide view 2025-07-21 22:51:55 +08:00
DIYgod eb97dda359
refactor: adjust spacing and class names across entry column components
Updated various components in the entry column layout to improve spacing and styling. Changes include adjusting top margins in grid and list components, modifying item class names for consistency, and refining layout properties in the EntryColumnWrapper and EntryListHeader. Additionally, updated button sizes in action components for better alignment with design specifications.
2025-07-21 19:43:01 +08:00
Stephen Zhou ae4a106ba5
fix: make text in social media selectable, close #4186 2025-07-21 18:50:50 +08:00
Stephen Zhou cd4593604b
fix: typecheck 2025-07-21 17:40:22 +08:00
Stephen Zhou b11e7e9a36
fix: do not hide refresh button for star list 2025-07-21 17:35:00 +08:00
Stephen Zhou f67c0d0359
fix: do not invalidate when unstaring in the collection list, close #4213 2025-07-21 17:16:59 +08:00
Stephen Zhou 35d7f9e784
fix: sync unread when mismatched, close #4028 2025-07-21 16:52:37 +08:00
lawvs 71408ea923 fix: ensure default view resets correctly 2025-07-21 16:05:23 +08:00
lawvs 04b6f4c933 feat: enhance FollowFeed components to utilize defaultView 2025-07-21 14:49:21 +08:00
Konv Suu 037b8508f6
fix(desktop): don't allow dragging close for video (#4215) 2025-07-21 13:29:00 +08:00
Daniel Yan 47fe0aa76f
fix: button is not disabled when in starred list (#4204)
* fix: button is not disabled when in starred list

* fix: button is not disabled when in starred list

* rollback action-button.tsx

* refactor: rename isButtonHided to showButtons for clarity

* Update apps/desktop/layer/renderer/src/modules/entry-column/layouts/EntryListHeader.tsx

Co-authored-by: Innei <tukon479@gmail.com>

* rollback changes

---------

Co-authored-by: Innei <tukon479@gmail.com>
2025-07-21 13:28:31 +08:00
Cason Kervis 544c064179
revert: social media link click logic (#4211)
This reverts commit 60a9240b02.
2025-07-19 22:13:05 +08:00
Whitewater d45e4bac06
refactor: simplify audio state handling (#4188)
* chore: allow pause audio when playing

* refactor: update PlayerAction props to use state instead of isPlaying and isLoading

* refactor: remove playingAudioUrl from EntryExtraData

* refactor: simplify audio state

* refactor: simplify audio state handling

* chore: review
2025-07-19 15:14:34 +08:00
Stephen Zhou 7a4b7554e0
feat: use custom expo update server (#4206) 2025-07-19 00:54:48 +08:00
DIYgod 0e31170e8b
feat: enhance DateItem component to support AI feature toggle
Updated the DateItem component to conditionally render SocialMediaDateItem based on the AI feature flag. This allows for improved flexibility in displaying date items depending on the feature's availability.
2025-07-18 20:22:21 +08:00
DIYgod d3d1e05d59
fix: prevent auto-marking fresh entries as read after list refresh
Changed from range-based tracking to entry ID-based tracking to prevent
newly refreshed entries from being incorrectly marked as read. The bug
occurred when entry lists refreshed, causing the same range indices to
be processed again but with different content.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-18 20:20:01 +08:00
DIYgod 3c4b1522f2
fix: disable placeholders in waterfall to prevent layout redraws
Disabled placeholder items in picture waterfall to fix bug where
the layout would redraw when reaching the last page, causing
rendered elements to shift positions and degrading user experience.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-18 20:06:45 +08:00
DIYgod 82a3537f86
fix: picture waterfall item height calculation on first render
Fix issue where picture items in waterfall view had incorrect heights on first render due to timing issues with dimension loading. Changed stableRadio calculation to use useMemo and added proper fallback for initial render.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-18 19:29:25 +08:00
DIYgod 0e456d5b73
feat: ai column (#4203)
* feat: remove the entry content column

* feat: remove entryColWidth

* feat: entry list styles

* feat: ai column

* feat: implement EntryColumnLayout and integrate routing for entry content

- Added EntryColumnLayout component to manage entry display and interactions.
- Integrated Outlet for nested routing within the CenterColumnLayout.
- Updated EntryItemWrapper to navigate to entry content instead of using a modal.
- Enhanced EntryContent with scroll handling and exit functionality.
- Introduced new SVG icon for scroll hint in entry content.

* fix: date item bg

* refactor: simplify line clamping and layout adjustments in ListItem component

- Removed the settingWideMode dependency for line clamping calculations, standardizing title and description clamping values.
- Adjusted media width and audio cover width calculations for consistent layout.
- Updated class names and styles for improved readability and maintainability.

* feat: enhance feature management and layout adjustments

- Introduced a new `withFeature` higher-order component to manage feature toggling for the ListItem component.
- Updated the ListItem component to conditionally render based on the AI feature flag.
- Adjusted layout settings for entry columns, including entryColWidth and improved responsiveness.
- Added new templates for list items to support different display modes.
- Updated the CenterColumnLayout to integrate with the new feature management system.

* feat: implement feature flag management for AI functionality

- Introduced `useFeature` hook to manage feature toggling based on server configurations.
- Updated components to utilize the new `useFeature` hook for AI-related features, enhancing modularity and maintainability.
- Refactored `EntryLayoutContent`, `EntryItemWrapper`, and other components to check AI feature status through the new hook.
- Added a legacy list item template to support fallback rendering when AI features are disabled.

* refactor: comment out unused setTimeout in EntryItemWrapper

- Commented out the setTimeout function that dispatches an event to focus on the entry render, marking it as a TODO for future implementation.
- This change improves code clarity and prepares for potential feature adjustments.

* feat: debug feature
2025-07-18 19:21:23 +08:00
Innei d79b00d976
fix: unify ai header action button style
- Changed icon classes in ChatHeader and ChatMoreDropdown to improve visual consistency and styling.
- Updated icons to use new size and opacity classes for better integration with the overall UI design.

Signed-off-by: Innei <tukon479@gmail.com>
2025-07-17 23:43:47 +08:00
Whitewater 48004b1a7a
chore: remove deprecated Galeria modules and components (#4182) 2025-07-17 13:57:18 +08:00
Whitewater 46543560a6
fix: ensure player initialization (#4189) 2025-07-17 12:09:57 +08:00
Konv Suu e3e9fbfb93
feat(desktop): i18n supports for feeds settings (#4192) 2025-07-17 11:31:58 +08:00
lawvs f2656ccf15 fix: should not show skeleton when no data 2025-07-17 02:17:28 +08:00
Innei f6a64af4eb
feat: ai features (#4040)
* feat: ai panel

* feat: ai settings

* feat: ai entrances

* feat: shortcuts setting

* refactor: rename ai dialogue

* feat: merge dialogue input and shortcuts

* feat: textarea autoheight

* feat: ai dialogue input auto shrink

* feat: ai dialogue

* feat: ai icon

* feat: split text

* feat: mockDialogues

* feat: scrollable shortcuts

* fix

* feat: use vercel ai

* feat: rename

* feat: ai tool

* refactor: update font settings and layout adjustments

- Changed default font from "SN Pro" to "system-ui" in multiple components for consistency.
- Updated layout styles by removing unnecessary class names to streamline the design.
- Added a new translation key for "Follow System" to enhance localization support.

Signed-off-by: Innei <tukon479@gmail.com>

* refactor: reorganize dependencies and remove unused components

- Moved several dependencies from the main package.json to the layer renderer's package.json for better modularity.
- Removed the SplitText component and its associated files to streamline the codebase.
- Added new utility animations in the Tailwind CSS configuration for enhanced UI effects.

Signed-off-by: Innei <tukon479@gmail.com>

* feat: implement AI chat components and context management

- Added AIChatInput, AIChatPanel, AIChatRoot, AIMessageList, and AIChatShortcuts components to facilitate user interaction with AI chat functionality.
- Introduced AIChatContext for managing chat state and interactions.
- Updated entry content to integrate the new AI chat components, enhancing user experience with chat features.
- Removed the legacy panel.tsx file to streamline the codebase.

Signed-off-by: Innei <tukon479@gmail.com>

* feat: add AIChat hotkey scope and integrate Focusable component

- Introduced a new hotkey scope for AIChat in the constants file to support keyboard interactions.
- Wrapped the AIChatContext in a Focusable component within AIChatRoot to enhance accessibility and focus management.

Signed-off-by: Innei <tukon479@gmail.com>

* refactor: update AIChatInput and AIChatPanel components

- Replaced the Button component with a span in AIChatInput for improved styling consistency.
- Removed commented-out code in AIChatPanel to clean up the component structure.
- Adjusted layout in AIChatPanel for better organization of chat input and help sections.

Signed-off-by: Innei <tukon479@gmail.com>

* refactor: remove deprecated useGlobalFocusableScope hook and update TextArea styles

- Removed the deprecated `useGlobalFocusableScope` hook in favor of `useGlobalFocusableScopeSelector` for improved performance.
- Updated TextArea component styles to enhance visual consistency with new class names.

Signed-off-by: Innei <tukon479@gmail.com>

* feat: add SettingTextArea component and integrate into AI settings

- Introduced a new SettingTextArea component for improved text input handling.
- Updated the AI settings tab to utilize SettingTextArea for personalized prompts, enhancing user experience.
- Refactored existing SettingInput usage for better layout and consistency.

Signed-off-by: Innei <tukon479@gmail.com>

* fix: import path

* feat: optimzie ai displayFeeds

* feat: enhance AIChatPanel with tooltips and improved suggestion display

- Added tooltips for the "New Chat", "History", and "Personalize" buttons for better user guidance.
- Updated suggestion display logic to show a limited number of suggestions initially, with an option to expand for more.
- Changed icons in suggestions to use a consistent format and improved styling for better visual appeal.

Signed-off-by: Innei <tukon479@gmail.com>

* feat: integrate AIPanelRefsContext for improved reference management

- Introduced AIPanelRefsContext to manage references for the chat input and panel components.
- Updated AIChatInput to utilize the new context for textarea reference.
- Modified AIChatPanel to use the panel reference from the context.
- Enhanced AIChatRoot to provide the context with memoized references for better performance.

Signed-off-by: Innei <tukon479@gmail.com>

* feat: add EntryContentAccessories component for enhanced entry features

- Introduced EntryContentAccessories to encapsulate the ContainerToc and EntryAIChatInput components.
- Updated EntryContent to utilize EntryContentAccessories for improved layout and functionality.
- Added new ContainerToc and AIChatInput components to support table of contents and AI chat features.

Signed-off-by: Innei <tukon479@gmail.com>

* refactor: update imports for useSettingModal and clean up unused components

- Changed import path for useSettingModal to use a new hack version.
- Removed the unused ContainerToc component.
- Updated EntryContent to include AISmartSidebar.
- Commented out the EntryAIChatInput in EntryContentAccessories.
- Minor adjustments in use-register-hotkey for better readability.

Signed-off-by: Innei <tukon479@gmail.com>

* feat(ai-chat): implement AI chat components including message input, display, and demo functionality

- Added AIChatContainer for managing chat messages and displaying a welcome screen.
- Introduced AIChatInput for user message input with auto-resizing functionality.
- Created AIChatMessage for rendering individual chat messages with formatting support.
- Integrated AIChatDemo to showcase the chat functionality within the AIChatSidePanel.
- Added a new SVG icon for the send button.

Signed-off-by: Innei <tukon479@gmail.com>

* feat(ai-chat): enhance chat functionality with auto-scroll and message formatting

- Integrated auto-scroll feature in AIChatContainer to improve user experience during message updates.
- Added AIChatTypingIndicator to display typing status in chat.
- Updated AIChatMessage to support markdown parsing for better message formatting.
- Enhanced AIChatInput to manage empty state and disable send button accordingly.
- Refactored AIChat component structure for clarity and improved functionality.

Signed-off-by: Innei <tukon479@gmail.com>

* feat(ai-chat): add sending message animation and enhance chat input

- Introduced SendingMessageOverlay component for animated feedback when sending messages.
- Updated AIChatInput to trigger sending animation and manage input state.
- Enhanced AIChatMessage with animation effects for message display.
- Improved auto-scroll logic to handle programmatic scrolling more effectively.
- Added new SVG icons for chat functionalities.

Signed-off-by: Innei <tukon479@gmail.com>

* feat(ai-chat): improve chat input and message handling with enhanced animations

- Updated AIChatContainer to refine sending message animations and manage input states.
- Enhanced AIChatInput to include a stop button for ongoing processing and improved message sending logic.
- Refactored AIChatMessage to maintain animation consistency during message display.
- Improved comments for clarity and code maintainability.

Signed-off-by: Innei <tukon479@gmail.com>

* feat(ai-chat): enhance AI chat context management and input handling

- Introduced AIChatContextInfo for managing context information in AI chat.
- Updated AIChatInput to utilize context for default selection and improved user experience.
- Refactored AIChatRoot to manage context state and provide context information to child components.
- Enhanced AIChatContainer with a welcome message and improved message handling logic.
- Added EntryAIContext for managing entry-specific AI context, improving integration with chat functionalities.

Signed-off-by: Innei <tukon479@gmail.com>

* chore: hono update

- Introduced optional context properties in the AI chat message structure to support entryId and selectedText.
- Enhanced flexibility for managing chat context and improving user interactions.

Signed-off-by: Innei <tukon479@gmail.com>

* feat(ai-chat): enhance AI chat components with optional wrapping and improved styling

- Added `wrapFocusable` prop to `AIChatRoot` for conditional wrapping of focusable elements.
- Updated `AIChatMessage` to display a placeholder when the assistant is "thinking" and improved styling for message bubbles.
- Refined `AIChatContainer` layout with adjusted border styles for better visual separation.
- Enhanced `AIChatSidePanel` structure for improved component organization and functionality.

Signed-off-by: Innei <tukon479@gmail.com>

* feat(ai-chat): implement AI chat context store and enhance input handling

- Introduced a new context store for managing AI chat state, allowing for better organization of context information.
- Refactored AIChatInput and AIChatRoot components to utilize the new context store, improving state management and performance.
- Added AIChatContextBar for displaying context blocks and managing references within the chat.
- Enhanced input handling with improved styling and functionality, including dynamic resizing and context-aware features.

Signed-off-by: Innei <tukon479@gmail.com>

* feat(ai-chat): refactor message parts handling in AIChatMessage component

- Replaced the existing MessageParts component with a new AIMessageParts component to improve code organization and readability.
- Enhanced the rendering logic for message parts, including better handling of tool invocations and markdown parsing.
- Introduced a more structured approach to displaying message content, including support for code highlighting.

Signed-off-by: Innei <tukon479@gmail.com>

* feat(diagrams): integrate Mermaid for diagram rendering in AI chat

- Added Mermaid as a dependency to support diagram rendering within the AI chat interface.
- Implemented the MermaidDiagram component for rendering Mermaid diagrams based on provided code.
- Enhanced AIMarkdownMessage to parse and render Mermaid diagrams alongside other markdown content.
- Refactored AIChatContainer and AIChatInput components to improve structure and maintainability.
- Introduced AIPanelHeader for better management of the AI chat panel.

Signed-off-by: Innei <tukon479@gmail.com>

* feat(ai-chat): enhance AI message rendering and introduce ToolInvocationComponent

- Updated AIMarkdownMessage to accept an optional className prop for better styling flexibility.
- Refactored AIMessageParts to utilize the new ToolInvocationComponent for rendering tool invocation details, improving code organization and readability.
- Adjusted AIChatMessage styles for user messages to enhance visual distinction.
- Removed unused state management for tool expansion, simplifying the component logic.

Signed-off-by: Innei <tukon479@gmail.com>

* feat(ai-chat): integrate AIChatRoot and enhance auto-scroll functionality

- Wrapped the main content in AIChatRoot for improved focus management.
- Added auto-scroll behavior to the AIChatContainer for better user experience when new messages are loaded.
- Refactored AIChatPanelContainer and AIChatSidePanel to streamline layout and improve code organization.
- Updated styles and structure for better visual consistency and maintainability.

Signed-off-by: Innei <tukon479@gmail.com>

* feat(ai-chat): update AI SDK dependencies and enhance AI chat functionality

- Upgraded dependencies for '@ai-sdk/openai', '@ai-sdk/react', and 'ai' to their latest beta versions for improved features and performance.
- Introduced new utility functions for managing AI chat state, including getAIChatPinned.
- Refactored AIChat components to utilize the updated SDK, enhancing message handling and tool invocation rendering.
- Added global commands for toggling AI chat visibility and pinning, improving user interaction.

Signed-off-by: Innei <tukon479@gmail.com>

* feat(layout): implement resizable panel functionality and improve layout components

- Added PanelSplitter component for dynamic resizing of the AI chat panel.
- Integrated useResizable hook to manage panel dimensions in RightContent and SubscriptionColumn.
- Refactored AIChatPanelContainer to accept an optional className prop for better styling.
- Cleaned up unused refs and improved code organization in SubscriptionColumn.

Signed-off-by: Innei <tukon479@gmail.com>

* feat(ai-chat): update AI chat components and integrate new AI SDK features

- Refactored AIChatInput and AIChatMessage components to utilize the new AISpline icon for improved visual consistency.
- Enhanced AIChatRoot to accept a roomId prop for better context management.
- Updated message handling in AIChatMessage to include metadata for improved message tracking.
- Introduced AIChatBottom component for better organization of chat input and context display.
- Integrated new AI SDK features for enhanced chat functionality and user experience.

Signed-off-by: Innei <tukon479@gmail.com>

* feat(ai-chat): integrate node polyfills and enhance chat functionality

- Added vite-plugin-node-polyfills to support Node.js core modules in the chat application.
- Updated AIChatRoot to utilize the new roomId prop for better context management.
- Refactored message handling in AIChat components to improve user experience and maintainability.
- Introduced new hooks for loading and saving messages, enhancing chat state management.
- Updated database schema for ai_chat_messages to ensure message integrity and support new features.

Signed-off-by: Innei <tukon479@gmail.com>

* chore: update pnpm-lock and package.json to include @splinetool/react-spline and related dependencies

- Added @splinetool/react-spline version 4.0.0 to package.json.
- Updated pnpm-lock.yaml to reflect the addition of @splinetool/react-spline and its peer dependencies, including @splinetool/runtime and react-related packages.
- Included new dependency on on-change version 4.0.2 and updated other related packages.

This update enhances compatibility with the latest spline tool features.

Signed-off-by: Innei <tukon479@gmail.com>

* feat(ai): implement AI chat components and layout

- Added AIChatContextBar for managing chat context and entries.
- Introduced AIChatMessage and AIMessageParts for rendering chat messages.
- Created ToolInvocationComponent to display tool invocation details.
- Implemented auto-scrolling functionality with useAutoScroll hook.
- Developed AIChatLayout to structure the chat interface, including a welcome screen and message input.
- Integrated chat components into the entry content layout.

This update enhances the AI chat experience with a structured layout and improved message handling.

Signed-off-by: Innei <tukon479@gmail.com>

* feat(ai): enhance AI chat functionality and localization

- Added new AI namespace to constants for improved organization.
- Integrated AI localization by importing AI English resources and updating default resources.
- Enhanced AIChatLayout with translation support for chat-related prompts and messages.
- Updated AIPanelHeader to utilize translations for chat clearing confirmation.
- Introduced welcome message localization in the AI chat interface.

This update improves the AI chat experience with better localization and user interaction features.

Signed-off-by: Innei <tukon479@gmail.com>

* feat(ai): enhance AI settings with personalized prompts and shortcuts management

- Introduced PersonalizePromptSetting for customizing AI prompts with save functionality.
- Added AIShortcutsSection for managing AI shortcuts, including add, update, delete, and toggle features.
- Improved localization by updating translation keys for AI settings.
- Refactored components for better organization and clarity.

This update enhances user interaction with AI settings, allowing for personalized experiences and efficient shortcut management.

Signed-off-by: Innei <tukon479@gmail.com>

* feat(shortcuts): implement keyboard shortcut management and localization

- Added KeyRecorder component for recording keyboard shortcuts.
- Introduced ShortcutSetting for managing custom AI shortcuts, including add, update, and delete functionalities.
- Enhanced AI settings with new localization keys for shortcuts.
- Refactored existing components for improved organization and clarity.

This update streamlines the process of creating and managing keyboard shortcuts, enhancing user experience in AI settings.

Signed-off-by: Innei <tukon479@gmail.com>

* feat: update ai robot model

* feat(ai): introduce new analytics and display components

- Added components for displaying analytics, entries, feeds, and subscriptions.
- Implemented loading and error states for better user feedback.
- Refactored existing components to integrate new display functionalities.
- Introduced common state components for loading and error handling.

This update enhances the AI chat experience by providing detailed analytics and improved data presentation.

Signed-off-by: Innei <tukon479@gmail.com>

* refactor(ai): consolidate shared components for analytics displays

- Moved StatCard, ChartPlaceholder, and other common components to a shared module for reuse across analytics displays.
- Updated AIDisplayAnalyticsPart, AIDisplayEntriesPart, AIDisplayFeedsPart, and AIDisplaySubscriptionsPart to utilize the new shared components.
- Enhanced the layout and error handling for empty states in various display components.

This refactor improves code maintainability and consistency in the analytics display components.

Signed-off-by: Innei <tukon479@gmail.com>

* feat(ui): introduce GlassButton component and refactor modal actions

- Added a new GlassButton component with customizable styles and animations for enhanced UI consistency.
- Replaced existing button implementations in modal components with the new GlassButton for improved visual coherence.
- Updated PreviewMediaContent and other components to utilize GlassButton, enhancing user interaction and aesthetics.

This update streamlines button usage across the application and enhances the overall user experience.

Signed-off-by: Innei <tukon479@gmail.com>

* refactor(ai): enhance auto-scroll functionality in chat component

- Updated the useAutoScroll hook to improve user interaction handling and scrolling behavior.
- Introduced a debounce mechanism for resize observer to optimize performance.
- Modified the AIChatLayout to ensure proper scrolling to the bottom when new messages are loaded.
- Improved state management for user interactions and auto-scrolling logic.

These changes enhance the chat experience by ensuring smoother scrolling and better responsiveness to user actions.

Signed-off-by: Innei <tukon479@gmail.com>

* feat: add class-variance-authority for GlassButton variants

- Updated pnpm-lock.yaml to include class-variance-authority version 0.7.1.
- Modified GlassButton component to utilize class-variance-authority for managing size and color scheme variants.
- Updated PreviewMediaContent and other components to use the new variant prop for GlassButton.
- Removed the deprecated AIChatInput component and related references.
- Fixed import path for PanelSplitter in entry content layout.

Signed-off-by: Innei <tukon479@gmail.com>

* feat: enhance AI chat functionality and UI components

- Introduced AIChatSendButton component for improved send button functionality in AI chat.
- Updated AIChatMessage and AIPanelHeader to use new icon styles.
- Integrated AIChatSendButton into AIChatInput and AIChatLayout for consistent UI.
- Added toggleAIChatPinned command and updated related commands for better AI chat management.
- Refactored entry context menu to hide specific actions related to AI chat.
- Fixed import paths and updated localization for AI chat commands.

Signed-off-by: Innei <tukon479@gmail.com>

* refactor: update layout components and improve conditional rendering

- Refactored RightContent component to enhance conditional rendering logic for Grid and AIChatLayout based on realEntryId and isWideView.
- Updated EntryHeader component styles to use new text color classes for better consistency.
- Adjusted imports in hono.ts to reflect updated package versions for zod and drizzle-orm.

Signed-off-by: Innei <tukon479@gmail.com>

* feat: enhance AI chat features and session management

- Updated AI chat components to support new session management features, including room switching and title generation.
- Introduced session state management using Jotai for better handling of current room ID and title.
- Added hooks for managing chat history and session persistence.
- Implemented export functionality for chat sessions to Markdown format.
- Enhanced UI with new components for chat input and welcome screen.
- Updated localization for new chat features and actions.

Signed-off-by: Innei <tukon479@gmail.com>

* refactor: update AI chat components and improve styling

- Enhanced AIChatMessage with additional styling for better layout.
- Introduced MarkdownLink in AIMarkdownMessage for improved link rendering.
- Removed unused "step-start" case in AIMessageParts for cleaner code.
- Simplified ToolInvocationComponent by removing unnecessary div.
- Refactored useSettingModal to avoid circular dependency and improve clarity.

Signed-off-by: Innei <tukon479@gmail.com>

* feat: implement chat title generation and error handling in AI chat components

- Added title generation functionality in AIChatRoot, triggered by the first AI response.
- Updated ChatInput to display error messages with a new UI component.
- Refactored title generation logic to utilize the first user and AI messages.
- Removed unused props and streamlined session management in ChatInterface.
- Enhanced error handling in chat components for improved user experience.

Signed-off-by: Innei <tukon479@gmail.com>

* refactor: improve ChatHeader and ChatInterface components

- Adjusted ChatHeader height and updated mask image styling for better visual consistency.
- Enhanced ChatInterface with scroll detection and a "Scroll to Bottom" button for improved user experience.
- Introduced state management for scroll position to optimize chat interaction.
- Cleaned up event listeners and added necessary imports for new functionality.

Signed-off-by: Innei <tukon479@gmail.com>

* refactor: update layout styling in AI chat components

- Modified div elements in ToolInvocationComponent, AIDisplayEntriesPart, AIDisplayFeedsPart, and AIDisplaySubscriptionsPart to include max-width for improved responsiveness.
- Added a blank line in ChatInterface for better code readability.

Signed-off-by: Innei <tukon479@gmail.com>

* refactor: enhance AI settings and chat components

- Updated AI settings management by introducing aiServerSyncWhiteListKeys and integrating AISettings into the sync queue.
- Improved the PersonalizePromptSetting component with character limit validation and dynamic feedback for user input.
- Removed error toast in AIChatRoot for cleaner error handling.
- Added new suggestion to the WelcomeScreen for enhanced user experience.

Signed-off-by: Innei <tukon479@gmail.com>

* refactor: enhance ChatInput component functionality

- Integrated useInputComposition hook for improved key handling in ChatInput.
- Updated key event handling logic to ensure proper focus management based on user input.
- Streamlined textarea props by spreading inputProps for cleaner code.

Signed-off-by: Innei <tukon479@gmail.com>

* refactor: update layout styling in AI display components

- Removed max-width from div elements in AIDisplayEntriesPart, AIDisplayFeedsPart, and AIDisplaySubscriptionsPart for improved responsiveness.
- Ensured consistent styling across AI display components.

Signed-off-by: Innei <tukon479@gmail.com>

* refactor: remove AIChatShortcuts component and enhance shortcut handling

- Deleted the AIChatShortcuts component to streamline the codebase.
- Integrated shortcut handling directly into the ChatInput and WelcomeScreen components for improved user experience.
- Added functionality to process custom shortcuts and display them dynamically in the WelcomeScreen.

Signed-off-by: Innei <tukon479@gmail.com>

* refactor: implement CollapsibleError component for improved error display

- Introduced a new CollapsibleError component to enhance error handling in the ChatInput.
- Simplified error display logic by replacing inline error handling with the new component.
- Updated common-states to maintain consistent error presentation across the application.

Signed-off-by: Innei <tukon479@gmail.com>

* refactor: re-organize AI components

- Added AIChatContextBar, AIChatRoot, AIChatSendButton, and ToolInvocationComponent to improve chat interface.
- Implemented displays for analytics, entries, feeds, and subscriptions, enhancing data presentation in chat.
- Refactored ChatInput to integrate new components and streamline user interactions.
- Enhanced message handling with AIChatMessage and AIMarkdownMessage for better content rendering.

Signed-off-by: Innei <tukon479@gmail.com>

* refactor: enhance dropdown menu layout and shortcut display

- Updated DropdownMenuItem to improve spacing for shortcut display.
- Adjusted AIChatContextBar to align dropdown menu content and ensure consistent presentation of shortcuts.
- Removed redundant shortcut display logic for cleaner code.

Signed-off-by: Innei <tukon479@gmail.com>

* refactor: remove unused AI components and update imports

- Deleted AISpline and mockShortcuts components to streamline the codebase.
- Updated import paths for AISpline in WelcomeScreen and AIChatContainer to reflect the new structure.

Signed-off-by: Innei <tukon479@gmail.com>

* refactor: remove AI spline asset and update loader URL

- Deleted the ai.splinecode asset file to streamline the project.
- Updated AISplineLoader to use a direct URL for the AI spline asset, improving loading efficiency.

Signed-off-by: Innei <tukon479@gmail.com>

* refactor: enhance WelcomeScreen with settings modal integration

- Added a button to edit the personal prompt in the WelcomeScreen, linking to the settings modal.
- Improved layout for the personal prompt display by organizing elements within a flex container.

Signed-off-by: Innei <tukon479@gmail.com>

* refactor: streamline session state management and enhance UI components

- Refactored session state management by creating reusable atom hooks for current room ID, title, and session persistence.
- Updated AIChatRoot and related components to utilize the new hooks for improved state handling.
- Enhanced ChatHeader to animate the display of the current title.
- Adjusted ChatInterface to ensure proper state usage and maintain clean code structure.
- Modified RightContent to remove unnecessary props for better clarity.

Signed-off-by: Innei <tukon479@gmail.com>

* refactor: implement message editing functionality in chat interface

- Added EditableMessage component to allow users to edit their messages.
- Integrated editing state management into AIChatMessage for seamless user experience.
- Updated ChatInterface to handle error states and improve message display logic.
- Enhanced user interaction with action buttons for editing, retrying, and copying messages.

Signed-off-by: Innei <tukon479@gmail.com>

* refactor: optimize AI chat components with memoization

- Wrapped AIChatContextBar, ChatInput, and AIMessageParts components with memo for performance improvements.
- Updated imports to include memo and adjusted component definitions accordingly.
- Enhanced dropdown menu layout in ChatMoreDropdown for better usability and responsiveness.

Signed-off-by: Innei <tukon479@gmail.com>

* refactor: update MermaidDiagram and ChatInput components

- Removed loading icon from MermaidDiagram to simplify the rendering process.
- Added context menu propagation prevention in ChatInput to enhance user interaction and prevent unwanted actions.

Signed-off-by: Innei <tukon479@gmail.com>

* refactor: update GlassButton component and related usages

- Renamed 'variant' prop to 'theme' for clarity and introduced a new 'variant' prop for visual styles (glass and flat).
- Updated styles and default values in the GlassButton component to reflect the new structure.
- Adjusted usages of GlassButton across various components to align with the new prop names and styles.
- Modified ChatInput component to enhance shadow styles for the minimal variant.

Signed-off-by: Innei <tukon479@gmail.com>

* refactor: enhance ToolInvocationComponent and WelcomeScreen

- Updated ToolInvocationComponent to include a max-width style for better layout control.
- Introduced a DEFAULT_SHORTCUTS array in WelcomeScreen to streamline the management of default suggestions.
- Refactored the rendering logic in WelcomeScreen to utilize the new DEFAULT_SHORTCUTS array for displaying suggestions.

Signed-off-by: Innei <tukon479@gmail.com>

* feat: implement thinking indicator in AIMessageParts component

- Replaced the static "AI is thinking..." message with a dynamic ThinkingIndicator component that animates the text display.
- Integrated motion effects using the 'motion/react' library for a smoother user experience.
- Updated the ChatInterface to utilize the new ThinkingIndicator for better visual feedback during AI processing.

Signed-off-by: Innei <tukon479@gmail.com>

* feat: add RelatedEntryLink component for enhanced link handling in AIMarkdownMessage

- Introduced RelatedEntryLink to handle business ID links with a modal preview.
- Updated link rendering logic in AIMarkdownMessage to utilize RelatedEntryLink for improved user interaction.
- Enhanced markdown link handling by integrating peek modal functionality for business IDs.

Signed-off-by: Innei <tukon479@gmail.com>

* feat: update GlassButton styles and introduce EntryLayoutContent component

- Enhanced GlassButton component styles for light, dark, and auto themes, improving visual consistency.
- Added new EntryLayoutContent component to manage entry content display, integrating AI chat and entry content seamlessly.
- Updated EntryContentPlaceholder to utilize the new flat variant of GlassButton for better UI consistency.
- Refactored index export to use EntryLayoutContent as RightContentLayout.

Signed-off-by: Innei <tukon479@gmail.com>

* feat: integrate AI chat functionality and enhance toolbar interactions

- Added AI chat feature toggle in useEntryActions, controlling visibility based on server configurations.
- Updated the customize toolbar to include a warning for the AI chat pinned action.
- Wrapped AISmartSidebar in a React.Suspense component for improved loading behavior.
- Implemented error handling in AISmartSidebar to manage AI feature availability.
- Added localization for the AI chat pinned warning message.

Signed-off-by: Innei <tukon479@gmail.com>

* fix: update useEntryActions to streamline entry properties

- Added entry?.imagesLength and entry?.hasContent to the dependencies of useEntryActions for improved data handling.
- Removed entry?.hasContent from the previous dependencies to avoid redundancy.
- Adjusted the order of entry properties for better clarity and organization.

Signed-off-by: Innei <tukon479@gmail.com>

* ci: update Claude workflow to enhance PR assistance functionality

- Renamed workflow from "Claude Code Review" to "Claude PR Assistant"
- Updated event triggers to include issue comments, pull request review comments, and issues
- Simplified job conditions for running the Claude action
- Changed step name to "Run Claude PR Action" and adjusted parameters for improved integration

Signed-off-by: Innei <tukon479@gmail.com>

* refactor(shortcuts): remove unused shortcut settings component

- Deleted the `ShortcutSetting` component and its associated logic, including custom shortcut handling and reset functionality.
- Cleaned up related components and interfaces to streamline the shortcuts management code.

This change simplifies the shortcuts management by removing unnecessary complexity and unused code.

Signed-off-by: Innei <tukon479@gmail.com>

* Implement code changes to enhance functionality and improve performance

Signed-off-by: Innei <tukon479@gmail.com>

* fix: types

---------

Signed-off-by: Innei <tukon479@gmail.com>
Co-authored-by: DIYgod <i@diygod.me>
2025-07-16 21:54:32 +08:00
Stephen Zhou 51a243eeea
fix: toggle translation settings, close #4187 2025-07-16 21:02:57 +08:00
Konv Suu 1fdf482f35
feat: add notification for timeline switch (#4176) 2025-07-16 18:24:07 +08:00
DIYgod 341fd63bf5
fix(desktop): microsoft store build check
- Introduce MICROSOFT_STORE_BUILD constant to determine if the app is running from the Microsoft Store
- Update appUpdaterConfig to conditionally enable core updates based on the new constant
- Modify header creation logic to use MICROSOFT_STORE_BUILD for Windows platform detection

This change enhances the application's compatibility with Microsoft Store by ensuring proper update handling and header configuration.
2025-07-16 18:11:36 +08:00
Stephen Zhou 4ee723675b
fix: show custom feed title, close #4177 2025-07-16 15:57:40 +08:00
DIYgod ee52eec0b3
feat(desktop): enhance build configuration for Microsoft Store support
- Introduce a flag to determine if the build is for the Microsoft Store
- Conditionally include AppX maker for Microsoft Store builds and Squirrel maker for others
- Update build script to pass the new flag for Microsoft Store builds

This change improves the flexibility of the build process by allowing for different packaging strategies based on the target platform.
2025-07-16 13:01:22 +08:00
DIYgod 451ed295c1
fix(desktop): improve Windows AppX build by cleaning temporary files
Fixes ENOENT errors during AppX packaging by properly cleaning .tmp files
before build starts. Replaces glob pattern with explicit file iteration
to avoid "Illegal characters in path" errors.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-16 12:38:45 +08:00
DIYgod d05fb12cc6
feat(desktop): add preMake hook to clean temporary files before build
- Implement preMake hook to remove temporary files in the output directory
- Enhance build process by ensuring a clean state prior to execution
2025-07-16 12:32:40 +08:00
DIYgod 943ef31085
feat(desktop): add custom AppX manifest generation for Microsoft Store
- Create AppX manifest generation script using template file
- Add support for multiple languages (EN, ZH-CN, ZH-TW, JA)
- Include protocol handlers for folo and follow schemes
- Add OPML file type association
- Update Electron Forge config to use custom manifest
- Add build:electron-forge:ms script for Microsoft Store builds
- Update GitHub Actions workflow to use custom build for store distribution

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-16 12:13:59 +08:00
Stephen Zhou 3e8bc5840b
fix: allow mark read/unread for started entry, close #3514 2025-07-16 00:46:32 +08:00
Stephen Zhou acf493851b
feat: sort feed by subscription count or update per week, persist analytics data, close #4140 2025-07-16 00:32:32 +08:00
Stephen Zhou 18b7407534
fix(mobile): remove text in Logo 2025-07-15 18:18:03 +08:00
Stephen Zhou 55e270a89d
fix(android): splash icon, close #4174 2025-07-15 14:43:45 +08:00
Konv Suu eedcf7bebc
feat(desktop): return to back path in preview mode (#4168) 2025-07-15 10:24:55 +08:00
Stephen Zhou 8e73438758
feat: BitTorrent attachment and qBittorrent integration (#4173) 2025-07-15 10:23:49 +08:00
lawvs a097112f5e chore: tweak pager selected logic 2025-07-15 02:51:54 +08:00
lawvs 42e6ff600b fix: replace TouchableOpacity with NativePressable for improved touch handling 2025-07-15 01:27:29 +08:00
Cason Kervis 0f9aa59d6b
fix(icon): polished icon (#3956)
* fix(icon): reoptimized icon

* fix(compress): use svgo 4.0 compress

* fix: add svg title

* fix: update icon in Apps

* fix: update icon in ssr

* fix: optimize folo text svg

* fix: optimize two icon

* fix: optimize lots icons

- change viewbox to 24
- merge path

* fix: optimize many icon

* fix: update mobile icons define

* fix: optmize ArrowUndoCircle icon

* fix: compress using svgo

* fix: using icon in simple-icons

* fix: optimize one icon

* fix: change instapaper to vertical input

* revert mgc icon compress

* fix: fix style in ssr og

* fix: change rss icon and folo icon same size
2025-07-14 21:36:04 +08:00
DIYgod e7c8380647
fix(mobile): prevent incorrect read marking during pull-to-refresh
The entry list was incorrectly marking entries as read during pull-to-refresh
operations. This happened because when the refresh control rebounds from
negative contentOffset back to 0, the scroll direction is detected as "down"
causing entries to be mistakenly marked as read.

The fix adds a condition to only mark entries as read when:
1. Scroll direction is down (user swiping up)
2. Current offset is greater than 0 (not at the top or rebounding)

This ensures entries are only marked as read during genuine upward scrolling,
not during pull-to-refresh rebounds.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 19:37:00 +08:00
DIYgod 4ebff4d35d
feat(mobile): improve entry list loading states
- Add skeleton loading states for all entry list view types (Articles, Pictures, Social, Videos)
- Show loading skeleton when entries are not ready and no data yet
- Add proper padding to avoid overlap with header and tab bar
- Create realistic skeletons that match actual entry item structures:
  - Articles: 7 items with title, description, and image placeholders
  - Pictures: 8 items (4 per column) with varied heights and footer content
  - Social: 5 items with social-specific layout
  - Videos: 6 items (3 per column) with video thumbnail and metadata
- Improve UX by showing loading state instead of empty message during data fetch

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 19:00:39 +08:00
Stephen Zhou 6d0f9ce622
chore(desktop): allow delete user, close #4139 2025-07-14 18:06:56 +08:00
Cason Kervis c3ed8eeb2d
feat: hide view count when hideRecentReader is on (#4167) 2025-07-14 17:08:38 +08:00
Stephen Zhou 2c579c1e83
fix(android): can not open video in external app (#4172) 2025-07-14 16:55:08 +08:00
lawvs 9a194e5964 fix: improve image performance 2025-07-14 16:54:16 +08:00
DIYgod e81220de63
fix: subscription list loading status 2025-07-14 16:45:14 +08:00
DIYgod 584a5849d2
fix: entry list loading status 2025-07-14 16:08:08 +08:00
Stephen Zhou 946c103648
feat(desktop): persist discover search keyword state, close #4166 2025-07-14 15:51:00 +08:00
lawvs 672978ca25 fix: improve image size handling for Android, closes #4151 2025-07-14 05:03:33 +08:00
Innei b44bf710f2
fix: right context menu shortcut can't trigger
Signed-off-by: Innei <tukon479@gmail.com>
2025-07-13 13:57:41 +08:00
Whitewater b69800050e
fix: replace slugify with sanitizeFileName for file name processing (#4152)
* refactor: replace slugify with sanitizeFileName for fileName processing

* chore: remove unused slugify dependency
2025-07-13 13:29:52 +08:00
DIYgod d3b32d369b
Merge pull request #4136 from RSSNext/sync/main-to-dev-20250711
Sync main branch to dev branch
2025-07-11 23:04:16 +08:00
DIYgod 930ee7b03a
release(mobile): Release v0.2.3
release(mobile): Release v0.2.3
2025-07-11 23:03:36 +08:00
DIYgod cae7d21e83
Merge branch 'dev' into sync/main-to-dev-20250711 2025-07-11 23:02:40 +08:00
Innei 56a7593586
chore: update expo-image package to version 2.3.2 and remove iOS image loading workaround
Signed-off-by: Innei <tukon479@gmail.com>
2025-07-11 22:09:26 +08:00
DIYgod f8ecaab2b9
fix: adjust blurRadius for iOS image rendering 2025-07-11 22:04:57 +08:00
DIYgod 4c8a174eef
fix: ios image fuzzy 2025-07-11 22:00:20 +08:00
DIYgod c3a211f1c4
docs: update changelog 2025-07-11 21:31:35 +08:00
DIYgod a79df18590
docs: update changelog and writing 2025-07-11 21:23:49 +08:00
Innei 592f50e666
fix(ui): adjust heading margin in About section for better alignment
Signed-off-by: Innei <tukon479@gmail.com>
2025-07-11 20:02:19 +08:00
Innei f0c126223c
feat: enhance update checking functionality and UI in the About section
- Refactor `checkForUpdates` method to return a promise with update status and error handling.
- Update `checkForAppUpdates` to provide detailed update information.
- Improve the About section UI with new buttons and modals for legal information and update checks.
- Add new translations for update-related messages in multiple languages.

Signed-off-by: Innei <tukon479@gmail.com>
2025-07-11 20:01:17 +08:00
lawvs ccae8cbaec fix: stopPropagation when clicking MarkdownLink 2025-07-11 18:58:48 +08:00
lawvs f2ad2b911e fix: types 2025-07-11 18:52:38 +08:00
Whalko 435ecf8700
fix(ui): center platform icon by setting display to block (#4133)
* feat: add copy link functionality to MarkdownLink component

* fix(ui): Center platform icon by setting display to block

The SVG icon rendered by the PlatformIcon component was not properly
centered within its container. This was due to the <i> tag, an
inline element by default, which causes inconsistent alignment.

---------

Co-authored-by: lawvs <18554747+lawvs@users.noreply.github.com>
2025-07-11 18:51:29 +08:00
lawvs ef6f934714 fix: optimize mouse leave handler in SocialMediaItem component 2025-07-11 18:50:18 +08:00
DIYgod 093e47cb0a
feat: add fetch cache no-store and header cache-control no-store 2025-07-11 18:19:08 +08:00
DIYgod 3151a1a8ce
feat: add fetch cache no-store and header cache-control no-store 2025-07-11 18:16:18 +08:00
lawvs 170b0f61f2 feat: add copy link functionality to MarkdownLink component 2025-07-11 17:38:21 +08:00
Innei 6fc431c112
chore: conditionally manage sourcemap deletion based on staging mode
Signed-off-by: Innei <tukon479@gmail.com>
2025-07-11 17:32:09 +08:00
DIYgod 96485e06b0
chore: update CFBundleVersion to 112 in Info.plist 2025-07-11 16:01:50 +08:00
Innei 46346679ab
chore: add nanoid package and update api-fetch to use no-store cache
Signed-off-by: Innei <tukon479@gmail.com>
2025-07-11 16:00:41 +08:00
Innei 6bf6d3f9ab
chore: add nanoid package and update api-fetch to use no-store cache
Signed-off-by: Innei <tukon479@gmail.com>
2025-07-11 15:52:37 +08:00
Innei 5eb8763da9
chore: don't minify and generate sourcemap for staging debug
Signed-off-by: Innei <tukon479@gmail.com>
2025-07-11 15:30:55 +08:00
DIYgod 6e73cbc75d
chore: update version 2025-07-11 12:53:19 +08:00
DIYgod d10e4c7a8a
release(mobile): release v0.2.3 2025-07-11 12:52:32 +08:00
DIYgod b0f30ca55f
release(desktop): release v0.6.2 2025-07-11 12:51:58 +08:00
DIYgod a8f6475ef2
feat: login form styles 2025-07-11 12:49:36 +08:00