Commit Graph

1217 Commits

Author SHA1 Message Date
EYHN 8f352580a7 feat(core): support draft filter (#12400)
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **New Features**
  - Added support for draft mode and completion callbacks across filter components, enabling stepwise filter creation and editing.
  - Enhanced filter menus and editors with external control via refs and new callback props for open/close state management.
  - Introduced new filter option group component for multi-step filter interactions.
  - Expanded tag filter methods for more granular filtering options.
  - Enabled controlled open state and close event handling for desktop and mobile menus.
  - Added programmatic control and completion callbacks to member selector and tags inline editors.

- **Improvements**
  - Updated filter and tag editors with improved UI layouts and added "Done" buttons for easier completion.
  - Improved menu and editor accessibility by allowing programmatic open/close and completion event handling.
  - Refactored date filter components for modularity and consistent draft handling.
  - Separated draft filter state management in filter UI for clearer user interactions.

- **Bug Fixes**
  - Refined date filter logic for more accurate "after" and "before" comparisons.

- **Style**
  - Adjusted styles for draft filters and editor layouts to enhance visual clarity and user experience.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-21 04:49:44 +00:00
CatsJuice 0737cef9b2 fix(core): correct card view properties display (#12401)
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

## Summary by CodeRabbit

- **Refactor**
  - Improved the layout of property display in the card view by consolidating all properties into a single container and streamlining the rendering structure.
  - Updated filtering to exclude properties of type "tags" from stack properties.
- **Style**
  - Simplified the visual structure for properties, removing unnecessary nested containers for a cleaner appearance.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-20 14:50:45 +00:00
EYHN 20665575d0 feat(core): add new doc button in new all docs header (#12390) 2025-05-20 16:10:20 +08:00
EYHN 59ef4b227b refactor(nbstore): improve doc state management (#12359)
Move the `waitForSynced` method from `frontend` to `nbstore worker` to make the wait more reliable

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **New Features**
  - Added explicit tracking of document updating state to indicate when data is being applied or saved.
  - Introduced new methods to wait for update and synchronization completion with abort support.

- **Improvements**
  - Applied throttling with leading and trailing emissions to state observables for smoother UI updates.
  - Refined synchronization waiting logic for clearer separation between update completion and sync completion.
  - Removed throttling in workspace selector component for more immediate state feedback.
  - Updated import and clipper services to use the new synchronization waiting methods.
  - Simplified asynchronous waiting logic in indexer synchronization methods.

- **Bug Fixes**
  - Enhanced accuracy and reliability of document update and sync status indicators.

- **Tests**
  - Increased wait timeout in avatar selection test to improve stability.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-20 07:33:20 +00:00
EYHN 151f499154 fix(core): fix all docs group header (#12334)
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **New Features**
  - Improved document grouping logic in the explorer view, allowing for more dynamic and responsive updates when changing grouping criteria.

- **Bug Fixes**
  - Prevented unnecessary synchronization operations in local workspace environments, ensuring sync only occurs for applicable workspace types.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-20 06:55:56 +00:00
EYHN 6abd4bf427 feat(core): add default display preference (#12333) 2025-05-20 10:31:11 +08:00
JimmFly 65b910868f feat(core): add team badge to user info menu (#12144)
close AF-2545

fix(core): go to workspace command does not work using CMDK

feat(core): add team badge to user info

![CleanShot 2025-05-06 at 16 35 00@2x](https://github.com/user-attachments/assets/ff915ea5-761b-4851-9429-86cbb3041776)

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

## Summary by CodeRabbit

- **New Features**
  - Introduced a redesigned user info section in the sidebar, including enhanced account details, cloud and AI usage indicators, and team workspace listing with improved navigation.
  - Workspace selector now supports controlled open/close state for smoother sidebar integration.
  - Team workspaces are grouped and displayed with role-based badges and tooltips.
  - Added new localization for team roles and workspace tooltips.

- **Improvements**
  - Updated theming and styling for user plan buttons and usage indicators for a more consistent look.
  - Sidebar user info UI is now more modular and responsive.

- **Bug Fixes**
  - Improved error handling and loading states for quota and usage displays.

- **Chores**
  - Refactored internal state management and code structure for better maintainability.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-19 10:15:42 +00:00
forehalo a2354f69a3 chore(core): switch position of collection and tag section in sidebar (#12327)
close AF-2551

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

## Summary by CodeRabbit

- **Style**
  - Updated the sidebar layout by reordering the Collections and Tags panels for improved navigation experience.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-19 09:45:37 +00:00
EYHN 91e7b28dd5 feat(core): add system property types support (#12332) 2025-05-19 09:15:37 +00:00
EYHN fbf590ddd4 feat(core): support save and restore display preference in all docs (#12315)
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **New Features**
  - Display preferences and selected collections are now saved and restored across sessions, providing a persistent and personalized experience in the All Documents page.

- **Refactor**
  - Display settings menus and related components have been updated to use a controlled component pattern, allowing preferences to be managed externally for improved consistency and flexibility.
  - Preference state management has been consolidated, simplifying how display options are handled throughout the interface.
  - Various headers and detail views now accept display preferences and update callbacks as props, enabling external control of display settings.
  - Components previously relying on internal context and reactive streams were refactored to receive explicit props and callbacks for state management.

- **Bug Fixes**
  - Improved collection activation logic to prevent unnecessary updates when the selected collection is already active.
  - Added fallback default view to ensure consistent display in document list items.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-19 09:15:37 +00:00
CatsJuice 85bb728ca8 feat(core): new docs list for tag detail (#12298)
close AF-2583

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

## Summary by CodeRabbit

- **New Features**
  - Introduced a new tag list header with breadcrumb navigation and a tag selector dropdown for improved navigation and tag management.
  - Added a searchable dropdown menu for selecting and switching between tags.

- **Improvements**
  - Updated the tag detail page to use a more dynamic, subscription-based document explorer for displaying tagged content.
  - Enhanced header controls with an updated display menu button.

- **Style**
  - Added comprehensive new styles for the tag list header and tag selector components.
  - Introduced a new scroll area style for flexible layout.

- **Documentation**
  - Marked an older page list header component as deprecated.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-19 02:56:03 +00:00
CatsJuice 8b669b725b feat(core): new doc list for collection detail (#12278)
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **New Features**
  - Introduced a new document list view with support for different layouts (list, grid, masonry) and improved multi-selection and batch deletion capabilities.
  - Added a view toggle control for switching between document list layouts across relevant pages.
  - Implemented a new collection list header with breadcrumb navigation and streamlined actions for editing collections and creating new pages.

- **Improvements**
  - Simplified and unified document list rendering by delegating logic to a shared component.
  - Enhanced document selection behavior, allowing toggling of individual items in select mode.
  - Updated styles for document lists, group headers, and collection pages for a more consistent appearance.
  - Refined wrapper component styling to prevent unintended HTML attribute forwarding.

- **Refactor**
  - Replaced local implementations of view toggles and document grouping with shared components for easier maintenance.
  - Removed deprecated and unused styles and props to streamline components and improve code clarity.
  - Refactored collection detail and header components to adopt new context-driven document explorer architecture.

- **Documentation**
  - Added deprecation notice to an outdated collection page list header component.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-19 01:59:38 +00:00
yoyoyohamapi 6c9f28e08b feat(core): workspace embedding settings (#11801)
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **New Features**
  - Introduced "Indexer & Embedding" workspace settings to manage AI embedding for local content, including document ignoring and attachment uploads.
  - Added UI components for embedding settings, attachments, and ignored documents with pagination and deletion capabilities.
  - Provided comprehensive file-type icons for attachments.

- **Improvements**
  - Added a new tab for indexing and embedding in workspace settings navigation.
  - Included test identifiers on key UI elements to enhance automated testing.

- **Localization**
  - Added English localization strings covering all embedding-related UI text and actions.

- **Bug Fixes**
  - Enabled previously skipped end-to-end tests for embedding settings to improve reliability.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-15 09:36:28 +00:00
akumatus 9fee8147cb feat(core): add ai model switch ui (#12266)
Close [AI-86](https://linear.app/affine-design/issue/AI-86)

![截屏2025-05-14 11.32.41.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/sJGviKxfE3Ap685cl5bj/b92d5c32-fa5a-4afd-93e6-3699347575be.png)

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

## Summary by CodeRabbit

- **New Features**
  - Introduced AI model switching in chat, allowing users to select from multiple AI models during conversations.
  - Added a floating menu for easy AI model selection within the chat interface.
  - Enabled visibility of the AI model switcher through a new experimental feature flag, configurable in workspace settings (canary builds only).

- **Enhancements**
  - Improved session management in the chat panel for smoother model switching and state handling.
  - Updated localization to support the new AI model switch feature in settings.

- **Bug Fixes**
  - None.

- **Chores**
  - Registered new components and services to support AI model switching functionality.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-15 06:29:37 +00:00
EYHN 61b99c5934 feat(core): add pinned collections to all docs (#12269) 2025-05-14 18:18:43 +09:00
EYHN fa3b08274c feat(core): adjust collection rules (#12268)
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **New Features**
  - Trashed page titles are now visually indicated with a strikethrough style in collection editor dialogs.

- **Bug Fixes**
  - Trashed pages are now properly excluded from allowed lists and filtered views.

- **Refactor**
  - Improved filtering logic for collections and page lists, separating user filters from system filters for more consistent results.
  - Enhanced filter configuration options for more flexible and maintainable filtering behavior.

- **Style**
  - Added a new style for displaying trashed items with a strikethrough effect.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-14 07:04:56 +00:00
Saul-Mirone 2f8d8dbc1e refactor(editor): finish the extension provider migration (#12259)
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **New Features**
  - Added AI-powered store extension to support chat and transcription block schemas.
  - Introduced a new database view extension for enhanced database block integration.

- **Refactor**
  - Updated and reorganized import paths for improved code structure and maintainability.
  - Consolidated and streamlined extension registration for store and view managers.

- **Chores**
  - Removed deprecated or redundant extension classes and imports.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-14 02:18:21 +00:00
EYHN 13d882d6d8 refactor(core): refactor collection to use new filter system (#12228)
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **New Features**
  - Introduced a new Collection entity and store with reactive management and real-time updates.
  - Added reactive favorite and shared filters with expanded filtering options.
- **Refactor**
  - Overhauled collection and filtering logic for better performance and maintainability.
  - Replaced legacy filtering UI and logic with a streamlined, service-driven rules system.
  - Updated collection components to use reactive data streams and simplified props.
  - Simplified collection creation by delegating ID generation and instantiation to the service layer.
  - Removed deprecated hooks and replaced state-based filtering with observable-driven filtering.
- **Bug Fixes**
  - Improved accuracy and consistency of tag and favorite filtering in collections.
- **Chores**
  - Removed deprecated and unused filter-related files, types, components, and styles to reduce complexity.
  - Cleaned up imports and removed unused code across multiple components.
- **Documentation**
  - Corrected inline documentation for improved clarity.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-13 08:28:02 +00:00
JimmFly cfe7b7cf29 refactor(core): use workspace role query instead of isOwner query (#12118)
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **Refactor**
  - Updated workspace permission handling to use a unified role field within workspace data instead of separate admin and owner flags.
  - Permission checks now rely on the workspace role for determining admin and owner status.
- **Chores**
  - Removed deprecated queries and types related to admin and owner status.
  - Cleaned up internal logic and variable naming for improved consistency.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-13 03:21:23 +00:00
Saul-Mirone bc00a58ae1 feat(editor): feature flag store extension builder (#12235)
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

## Summary by CodeRabbit

- **New Features**
  - Introduced feature flag synchronization for enhanced control over feature availability.
  - Added new configuration options for store management, allowing initialization and feature flag setup.

- **Improvements**
  - Updated how store extensions are accessed throughout the app for more robust initialization and configuration.
  - Enhanced workspace entities to support feature flag services, improving flexibility for workspace-specific features.
  - Centralized configuration of storage implementations for Electron environments.

- **Refactor**
  - Simplified editor module by removing direct feature flag synchronization logic.
  - Streamlined imports and configuration for storage modules, especially in Electron-based apps.

- **Bug Fixes**
  - Ensured consistent retrieval of store extensions across various modules and platforms.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-12 09:29:15 +00:00
EYHN a6394b7988 feat(core): add default filter rules for all docs (#12197)
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **New Features**
  - Introduced a filter to exclude empty journals from document collections.
  - Added a live-updating list of non-trashed document IDs for improved document management.

- **Improvements**
  - Default filters in the document explorer have been updated to show all items, including trashed ones, unless filters are applied.
  - Enhanced filtering in workspace views to automatically exclude empty journals and trashed documents.
  - Increased the responsiveness of grouped document updates for a smoother user experience.

- **Bug Fixes**
  - Removed unnecessary debug output from the document synchronization, member search, session management, and member selector components.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-12 02:05:12 +00:00
CatsJuice 66500669c8 perf(core): optimize rendering of all docs (#12188)
close AF-2605

[CleanShot 2025-05-08 at 13.56.38.mp4 <span class="graphite__hidden">(uploaded via Graphite)</span> <img class="graphite__hidden" src="https://app.graphite.dev/api/v1/graphite/video/thumbnail/LakojjjzZNf6ogjOVwKE/4e36e838-7c7f-4f0a-89a8-fd582c2ef573.mp4" />](https://app.graphite.dev/media/video/LakojjjzZNf6ogjOVwKE/4e36e838-7c7f-4f0a-89a8-fd582c2ef573.mp4)

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

## Summary by CodeRabbit

- **Refactor**
  - Centralized state management in the document explorer using a reactive context, replacing prop drilling and local state with observable streams for preferences, selection, grouping, and view options.
  - Updated multiple components (display menus, quick actions, doc list items, group headers) to consume and update state directly via context observables.
  - Simplified component signatures by removing now-unnecessary props related to preferences and state handlers.

- **Style**
  - Adjusted user avatar display: avatars now only have right margin when user names are shown, and vertical alignment was improved.

- **New Features**
  - User avatar elements now include a data attribute to indicate if the user name is displayed.

- **Bug Fixes**
  - Improved handling of document tags to prevent errors when tags are not in the expected format.

- **Documentation**
  - Added missing group header property for updated date fields in workspace property types.

- **Chores**
  - Clarified and renamed internal types for quick actions to improve code clarity.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-10 07:01:49 +00:00
CatsJuice 7013f9b804 feat(core): new all docs header (#12182)
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **New Features**
  - Introduced a new grouped document explorer with a masonry layout, advanced filtering, and multi-select capabilities.
  - Added a floating toolbar for batch actions, such as deleting multiple documents.
  - Implemented a feature flag to enable the new "All Docs" page, allowing gradual rollout.
  - Added a new navigation component with links for Docs, Collections, and Tags.
  - Introduced a display menu button supporting additional menu properties.

- **Enhancements**
  - Redesigned navigation headers across document, collection, and tag pages for improved consistency and usability.
  - Added new display and view toggling options for document lists.
  - Improved styling and responsiveness for explorer and header components.
  - Updated context to support dynamic view switching in the document explorer.

- **Bug Fixes**
  - Updated context and prop types to enhance state management and user interactions.

- **Refactor**
  - Replaced legacy page list views with a modern, grouped explorer interface.
  - Simplified and modularized header components and styles for better maintainability.
  - Removed workspace-specific controls from document headers to focus on explorer functionality.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-09 09:38:48 +00:00
CatsJuice 2e3b721603 feat(core): new all docs list ui (#12102)
### New all docs list ui
close AF-2531, AF-2585, AF-2586, AF-2580

### What changed

- a new `display-menu` component
  - properties visibility
  - quick actions visibility
- extend DocPropertyType definition
  - `showInDocList`: configure whether to show in doc and how to show (stack | inline)
  - `docListProperty`: define how to render property in doc
  - `groupHeader`: define how to render group header when grouped
- implement all properties's `docListProperty` renderer and `groupHeader` renderer
- new `docs-view` component
  - render doc in `card` | `list` view
  - split doc card into minimal components for reuse in list and card views, as well as visibility control
- implement docs-list with `<Masonry />` and multi-view support
  - for list view, make masonry column count always `1`

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **New Features**
  - Redesigned document explorer with multiple view modes (list, grid, masonry), grouping, selection, and multi-delete.
  - Added customizable display properties and quick actions (favorite, trash, split view, new tab, select) for documents.
  - Introduced new group header and document item components with improved styling and interaction.
  - Enabled dynamic rendering of document properties including tags, dates, users, templates, and themes.
  - Added filtering support for trash status and enhanced localization for UI elements.
  - Introduced drag handle size customization and expanded masonry layout configurability.
  - Added contextual "More" menu with document operations like favorite, info, duplicate, and trash.
  - Implemented shared context for explorer state management and multi-selection logic.

- **Enhancements**
  - Improved virtual scrolling with active item tracking and configurable preload and debounce settings.
  - Responsive, theme-aware styling applied across explorer and property components.
  - Configurable UI elements and quick actions via user preferences.
  - Enhanced error messages for unsupported property types in filters.
  - Refined padding and layout calculations in masonry component for better visual consistency.
  - Avatar and date components refactored for explicit prop-driven rendering and customization.

- **Bug Fixes**
  - Improved error messages for unsupported property types in filters.

- **Documentation**
  - Added new localization keys and updated language completeness for new features.

- **Chores**
  - Modularized workspace property types with list and group header display components.
  - Consolidated imports and enhanced code maintainability.
  - Added new CSS styling modules for explorer components and workspace property types.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-09 05:31:11 +00:00
EYHN 8399d99e79 feat(core): add collection rules module (#11683)
whats changed:

### orm

add a new `select$` method, can subscribe on only one field to improve batch subscribe performance

### yjs-observable

add a new `yjsObservePath` method, which can subscribe to changes from specific path in yjs. Improves batch subscribe performance

```ts
yjsGetPath(
      this.workspaceService.workspace.rootYDoc.getMap('meta'),
      'pages'
    ).pipe(
      switchMap(pages => yjsObservePath(pages, '*.tags')),
      map(pages => {
          // only when tags changed
      })
)
```

### standard property naming

All `DocProperty` components renamed to `WorkspaceProperty` which is consistent with the product definition.

### `WorkspacePropertyService`

Split the workspace property management logic from the `doc` module and create a new `WorkspacePropertyService`. The new service manages the creation and modification of properties, and the `docService` is only responsible for storing the property value data.

### new `<Filters />` component

in `core/component/filter`

### new `<ExplorerDisplayMenuButton />` component

in `core/component/explorer/display-menu`

![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/g3jz87HxbjOJpXV3FPT7/c47ab43c-ac53-4ab6-922e-03127d07bef3.png)

### new `/workspace/xxx/all-new` route

New route for test components and functions

### new collection role service

Implemented some filter group order rules

see `collection-rules/index.ts`

### standard property type definition

define type in `modules\workspace-property\types.ts`

![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/g3jz87HxbjOJpXV3FPT7/4324453a-4fab-4d1e-83bb-53693e68e87a.png)

define components (name,icon,....) in `components\workspace-property-types\index.ts`

![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/g3jz87HxbjOJpXV3FPT7/93a23947-aaff-480d-a158-dd4075baae17.png)

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **New Features**
  - Introduced comprehensive filtering, grouping, and ordering capabilities for workspace documents with reactive updates.
  - Added a new "All Pages" workspace view supporting dynamic filters and display preferences.
  - Developed UI components for filter creation, condition editing, and display menu controls.
  - Launched enhanced tag management with inline editors, selection, creation, and deletion workflows.
  - Added workspace property types with dedicated filter UIs including checkbox, date, tags, and text.
  - Introduced workspace property management replacing document property handling.
  - Added modular providers for filters, group-by, and order-by operations supporting various property types and system attributes.

- **Improvements**
  - Standardized tag and property naming conventions across the application (using `name` instead of `value` or `title`).
  - Migrated document property handling to workspace property-centric logic.
  - Enhanced internationalization with additional filter and display menu labels.
  - Improved styling for filter conditions, display menus, and workspace pages.
  - Optimized reactive data subscriptions and state management for performance.
  - Refined schema typings and type safety for workspace properties.
  - Updated imports and component references to workspace property equivalents throughout frontend.

- **Bug Fixes**
  - Resolved tag property inconsistencies affecting display and filtering.
  - Fixed filter and tag selection behaviors for accurate and reliable UI interactions.

- **Chores**
  - Added and refined test cases for ORM, observables, and filtering logic.
  - Cleaned up legacy document property code and improved type safety.
  - Modularized and restructured components for better maintainability.
  - Introduced new CSS styles for workspace pages and display menus.
  - Added framework module configurations for collection rules and workspace property features.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-08 08:38:56 +00:00
EYHN 2d1600fa00 refactor(core): implement doc created/updated by service (#12150)
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **New Features**
  - Documents now automatically track and display "created by" and "updated by" user information.
  - Document creation and update timestamps are now managed and shown more accurately.
  - Workspace and document metadata (name, avatar) updates are more responsive and reliable.
  - Document creation supports middleware for customizing properties and behavior.

- **Improvements**
  - Simplified and unified event handling for document list updates, reducing redundant event subscriptions.
  - Enhanced integration of editor and theme settings into the document creation process.
  - Explicit Yjs document initialization for improved workspace stability and reliability.
  - Consolidated journal-related metadata display in document icons and titles for clarity.

- **Bug Fixes**
  - Fixed inconsistencies in how workspace and document names are set and updated.
  - Improved accuracy of "last updated" indicators by handling timestamps automatically.

- **Refactor**
  - Removed deprecated event subjects and direct metadata manipulation in favor of more robust, reactive patterns.
  - Streamlined document creation logic across various features (quick search, journal, recording, etc.).
  - Simplified user avatar display components and removed cloud metadata dependencies.
  - Removed legacy editor setting and theme service dependencies from multiple modules.

- **Chores**
  - Updated internal APIs and interfaces to support new metadata and event handling mechanisms.
  - Cleaned up unused code and dependencies related to editor settings and theme services.
  - Skipped flaky end-to-end test to improve test suite stability.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-08 07:53:33 +00:00
akumatus 807cba03ee feat(core): add reasoning icon button (#11941)
Close [AI-58](https://linear.app/affine-design/issue/AI-58).

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

## Summary by CodeRabbit

- **New Features**
  - Introduced a toggleable AI reasoning feature in the chat interface, allowing users to enable or disable advanced reasoning during AI chat interactions.
  - Added a new reasoning button to the chat input for quick access and control.
- **Enhancements**
  - Improved chat configuration options to include reasoning settings, providing more flexibility for AI responses.
  - Streamlined network search and image upload interactions for a smoother user experience.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-04-24 14:32:54 +00:00
EYHN eaa1bc6bf1 refactor(core): adjust effect api (#11935) 2025-04-24 10:06:12 +00:00
L-Sun 27ff9ab9f4 refactor(core): move actions to footer of notification card (#11894)
This PR move all actions button to the footer of `NotificationCard`. There are some example as following:

### No Changes
![CleanShot 2025-04-22 at 20.02.58@2x.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/MyRfgiN4RuBxJfrza3SG/1207cbfb-6033-48f4-8a7b-b7b024f16881.png)

![CleanShot 2025-04-22 at 20.03.42@2x.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/MyRfgiN4RuBxJfrza3SG/6da27303-06c3-4f40-b3f9-3cf88759f685.png)

![CleanShot 2025-04-22 at 20.03.57@2x.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/MyRfgiN4RuBxJfrza3SG/a53d2bdf-a103-4275-9833-a55387af6f09.png)

### Changes
### Before
![CleanShot 2025-04-22 at 20.07.40@2x.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/MyRfgiN4RuBxJfrza3SG/d785b12b-480c-4b9d-bb0b-d93dd18939a2.png)

#### After
![CleanShot 2025-04-22 at 20.05.51@2x.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/MyRfgiN4RuBxJfrza3SG/242a9956-6a68-46a7-865a-454117ee997c.png)
2025-04-23 05:41:14 +00:00
Saul-Mirone 730ed16fc5 refactor(editor): remove old specs (#11909) 2025-04-23 02:57:01 +00:00
Saul-Mirone 99ad4e871e feat(editor): use migrated extensions (#11886)
Closes: BS-3283
2025-04-22 15:51:22 +00:00
EYHN e4d6833296 refactor(core): rename explorer to navigation-panel (#11876) 2025-04-22 12:47:35 +08:00
JimmFly a5061cee93 chore: adjust tag editor style (#11757)
close AF-2006
![CleanShot 2025-04-17 at 12 43 26@2x](https://github.com/user-attachments/assets/e7498ace-7294-410d-a2d3-83b92dbde036)
![CleanShot 2025-04-17 at 12 43 17@2x](https://github.com/user-attachments/assets/8617cea0-3200-4020-ad5b-b76a70680844)
2025-04-18 05:15:00 +00:00
JimmFly 37e07e91a3 fix(core): add tooltip to cloud server selector (#11755)
close AF-2438
2025-04-18 04:47:24 +00:00
JimmFly 178954a18c fix(core): handle incorrect style of the confirm delete button (#11725)
close AF-2401
2025-04-18 04:34:24 +00:00
JimmFly 3355277e28 chore: remove cmd+s toast (#11754)
close AF-2345
2025-04-18 04:08:08 +00:00
akumatus 203e931e30 fix(core): filter embedding results to return only user-selected tags and documents (#11770)
Close [AI-73](https://linear.app/affine-design/issue/AI-73)
2025-04-18 03:25:30 +00:00
EYHN dd51180acb feat(core): replace onboarding template (#11768) 2025-04-18 02:31:13 +00:00
EYHN a9e4690d2d fix(core): fix ai with multiple server (#11570) 2025-04-17 13:31:53 +00:00
JimmFly c2c106f508 feat(core): add new loading doc component (#11737) 2025-04-17 18:54:38 +08:00
pengx17 51316217af feat(core): audio playback rate (#11702)
fix AF-2470
2025-04-16 07:49:12 +00:00
pengx17 220087c172 fix(mobile): cannot change tag color (#11708)
fix AF-2402
2025-04-15 13:36:22 +00:00
forehalo 7257f1b55b chore(server): remove enable flag in mail config (#11680)
close #11625
2025-04-15 09:18:10 +00:00
pengx17 7b2ae7f573 feat(core): adjust history modal styles (#11675)
- add avatar/name info to each history snapshot item
- add avatar to audio transcription job owner

fix AF-2483

![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/T2klNLEk0wxLh4NRDzhk/4a2b88c2-311a-470e-a8a9-113931cdf17e.png)
2025-04-15 07:16:53 +00:00
pengx17 575aa3c1c1 fix(editor): rework disable middle click settings for linux (#11556)
fix BS-3028
Unfortunately, I don't find out a way to disable this behavior on ff linux
2025-04-15 04:44:26 +00:00
renovate 1fc51bf95e chore: bump up animejs version to v4 (#11466)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [animejs](https://animejs.com) ([source](https://redirect.github.com/juliangarnier/anime)) | [`^3.2.2` -> `^4.0.0`](https://renovatebot.com/diffs/npm/animejs/3.2.2/4.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/animejs/4.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/animejs/4.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/animejs/3.2.2/4.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/animejs/3.2.2/4.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>juliangarnier/anime (animejs)</summary>

### [`v4.0.0`](https://redirect.github.com/juliangarnier/anime/releases/tag/4.0.0)

[Compare Source](https://redirect.github.com/juliangarnier/anime/compare/v3.2.2...4.0.0)

> **I'm still finalizing the release notes as there are MANY changes, but in the meantime, you can check out the brand new documentation [here](https://animejs.com/documentation).**

The brand new Anime.js.

### API Breaking changes

Every Anime.js feature is now exported as an ES Module.
This is great for tree shaking, you don't have to ship the entire library anymore, only what you need.

#### Animation

The `anime(parameters)` function has been replaced with the `animate(targets, parameters)` module.
The `targets` parameter has been replaced with a dedicated function parameter: `animate(targets, parameters)`.

V3:

```javascript
import anime from 'animejs';

const animation = anime({
  targets: 'div',
  translateX: 100,
});
```

V4:

```javascript
import { animate } from 'animejs';

const animation = animate('div', {
  translateX: 100,
});
```

#### Easings names

The `ease` prefix has been removed: 'easeInOutQuad' -> 'inOutQuad'.

#### Callbacks

Callbacks have have been renamed like this:

-   `begin()` -> `onBegin()`
-   `update()` -> `onUpdate()`

Here's all the change to the API

```diff
- import anime from 'animejs';
+ import { animate, createSpring, utils } from 'animejs';

- anime({
-   targets: 'div',
+ animate('div', {
    translateX: 100,
      rotate: {
-     value: 360,
+     to: 360,
-     easing: 'spring(.7, 80, 10, .5)',
+     ease: createSpring({ mass: .7, damping: 80, stiffness: 10, velocity: .5}),
    },
-   easing: 'easeinOutExpo',
+   ease: 'inOutExpo',
-   easing: () => t => Math.cos(t),
+   ease: t => Math.cos(t),
-   direction: 'reverse',
+   reversed: true,
-   direction: 'alternate',
+   alternate: true,
-   loop: 1,
+   loop: 0,
-   round: 100,
+   modifier: utils.round(2),
-   begin: () => {},
+   onBegin: () => {},
-   update: () => {},
+   onUpdate: () => {},
-   change: () => {},
+   onRender: () => {},
-   changeBegin: () => {},
-   changeComplete: () => {},
-   loopBegin: () => {},
-   loopComplete: () => {},
+   onLoop: () => {},
-   complete: () => {},
+   onComplete: () => {},
  });
```

#### Promises

No more `.finished` property, promises are now handled directly with `animation.then()`:

```diff
- import anime from 'animejs';
+ import { animate, utils } from 'animejs';

- anime({ targets: target, prop: x }).finished.then(() => {});
+ animate(target, { prop: x }).then(() => {});
```

#### Values

##### To

The object syntax `value` property has been renamed `to`:

```diff
- translateX: { value: 100 }
+ translateX: { to: 100 }
```

#### Animation parameters

##### Default `easing`

The new default easing is `'outQuad'` instead of `'easeOutElastic(1, .5)'`.

##### `composition`

In V3 all animations coexist and overlaps with each other. This can cause animations with the same targets and animated properties to create weird results.
V4 cancels a running tween if a new one is created on the same target with the same property. This behaviour can be confifugred using the new `composition` parameter.

`composition: 'none'` // The old V3 behaviour, animations can overlaps
`composition: 'replace'` // The new V4 default
`composition: 'add'` // Creates additive animations by adding the values of the currently running animations with the new ones

##### `round` -> `modifier`

The `round` parameter has been replaced with a more flexible parameters that allows you to define custom functions to transform the numerical value of an animation just before the rendering.

```diff
- round: 100
+ modifier: utils.round(2)
```

You can of course defines your own modifier functions like this:

```javascript
const animation = animate('div', {
  translateX: '100rem',
  modifier: v => v % 10 // Note that the unit 'rem' will automatically be passed to the rendered value
});
```

#### Playback parameters

##### `direction`

The `direction` parameter has been replaced with an `alternate` and `reversed` parameters

V3:

```javascript
const animation = anime({
  targets: 'div',
  direction: 'reverse',
  // direction: 'alternate' It wasn't possible to combined reverse and alternate direction before
});
```

V4:

```javascript
import { animate } from 'animejs';

const animation = animate('div', {
  translateX: 100,
  reversed: true,
  alternate: true,
});
```

#### Timelines:

```diff
- import anime from 'animejs';
+ import { createTimeline, stagger } from 'animejs';

- anime.timeline({
+ createTimeline({
-   duration: 500,
-   easing: 'easeInOutQuad',
+   defaults: {
+     duration: 500,
+     ease: 'inOutQuad',
+   }
-   loop: 2,
+   loop: 1,
- }).add({
-   targets: 'div',
+ }).add('div', {
    rotate: 90,
  })
- .add('.target:nth-child(1)', { opacity: 0, onComplete }, 0)
- .add('.target:nth-child(2)', { opacity: 0, onComplete }, 100)
- .add('.target:nth-child(3)', { opacity: 0, onComplete }, 200)
- .add('.target:nth-child(4)', { opacity: 0, onComplete }, 300)
+ .add('.target', { opacity: 0, onComplete }, stagger(100))
```

##### Stagger

```diff
- import anime from 'animejs';
+ import { animate, stagger } from 'animejs';

- anime({
-   targets: 'div',
+ animate('div', {
-   translateX: anime.stagger(100),
+   translateX: stagger(100),
-   delay: anime.stagger(100, { direction: 'reversed' }),
+   translateX: stagger(100, { reversed: true }),
  });
```

#### SVG

```diff
- import anime from 'animejs';
+ import { animate, svg } from 'animejs';

- const path = anime.path('path');
+ const { x, y, angle } = svg.createMotionPath('path');

- anime({
-   targets: '#shape1',
+ animate('#shape1', {
-   points: '70 41 118.574 59.369 111.145 132.631 60.855 84.631 20.426 60.369',
+   points: svg.morphTo('#shape2'),
-   strokeDashoffset: [anime.setDashoffset, 0],
+   strokeDashoffset: svg.drawLine(),
-   translateX: path('x'),
-   translateY: path('y'),
-   rotate: path('angle'),
+   translateX: x,
+   translateY: y,
+   rotate: angle,
  });
```

#### Utils

```diff
- import anime from 'animejs';
+ import { utils } from 'animejs';

- const value = anime.get('#target1', 'translateX');
+ const value = utils.get('#target1', 'translateX');

- anime.set('#target1', { translateX: 100 });
+ utils.set('#target1', { translateX: 100 });

- anime.remove('#target1');
+ utils.remove('#target1');

- const rounded = anime.round(value);
+ const rounded = utils.round(value, 0);
```

#### Engine

```diff
- import anime from 'animejs';
+ import { engine } from 'animejs';

- anime.suspendWhenDocumentHidden = false;
+ engine.pauseWhenHidden = false;

- anime.speed = .5;
+ engine.playbackRate = .5;
```

### Improvements

#### Performances

Major performance boost and lower memory footprint.
V4 has bee re-written from scratch by keeping performance in mind at every steps.

#### Better tween composition

The tween system has been refactored to improve animations behaviours when they overlaps.
This fix lots of issues, especially when creating multiple animations with the same property on the same target.

#### Additive animations

You can also blend animations together with the new `composition: 'add'` parameter.

#### Improved Timelines

-   Child animations can new be looped and reversed
-   Add supports for labels
-   Add supports for `.set()` in timeline
-   New position operators for more flexibility
-   Multi-target child animation can be positioned using the `stagger` function
-   Easier children defaults configuration
-   Greatly improved support for CSS transforms composition from one child animation to another

```javascript

const tl = createTimeline({
  playbackRate: .2,
  defaults: {
    duration: 500,
    easing: 'outQuad',
  }
});

tl.add('START', 100) // Add a label a 100ms
  .set('.target', { opacity: 0 })
  .add('.target', {
    translateY: 100,
    opacity: 1,
    onComplete: () => {},
  }, stagger(100))
  .add('.target', {
    scale: .75,
  }, 'START')
  .add('.target', {
    rotate: '1turn',
  }, '<<+=200')

```

#### Properties

##### CSS Variables

You can now use CSS variables directly like any other property:

```javascript
// Animate the values of the CSS variables '--radius'
animate('#target', { '--radius': '20px' });
```

##### Animating *from*

Animate *from* a value

```diff
+ translateX: { from: 50 }
```

##### From -> To

Even if the `[from, to]` shortcut is still valid in V4, you can now also write it like this:

```diff
+ translateX: { from: 50, to: 100 }
```

##### Colors

You can now animate hex colors with an alpha channel like '#F443' or '#FF444433'.

#### Timers

You can now create timers with the `createTimer` module.

Timers can be use as replacement for `setTimeout`or `setInterval` but with all the playbacks parameters, callbacks and the `Promise` system provided by anime.js.

```
const interval = createTimer({
  onLoop: () => { // do something every 500ms },
  duration: 500,
});

const timeout = createTimer({
  onComplete: () => { // do something in 500ms },
  duration: 500,
});

const gameLogicLoop = createTimer({
  frameRate: 30,
  onUpdate: gameSystems,
});

const gameRenderLoop = createTimer({
  frameRate: 60,
  onUpdate: gameRender,
});

```

#### Variable frame rate

You can now change the frame rate to all animations or to a specific Timeline / Animation / Timer

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMjcuMyIsInVwZGF0ZWRJblZlciI6IjM5LjIyNy4zIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
2025-04-14 01:29:09 +00:00
Saul-Mirone 4f9a4e739a feat(editor): extract linked doc widget package (#11589)
Close [BS-2738](https://github.com/toeverything/AFFiNE/pull/11589)
2025-04-11 14:06:16 +08:00
CatsJuice bf293d8dca fix(core): update background of sign-in button and input (#11118) 2025-04-10 03:24:37 +00:00
CatsJuice fa50743393 feat(core): hide all sidebars when resizing to a small screen (#11105) 2025-04-04 05:51:19 +00:00
akumatus 6033baeb86 refactor(core): add useAIChatConfig hook (#11424)
Close [BS-2583](https://linear.app/affine-design/issue/BS-2583).
2025-04-03 14:53:49 +00:00