<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Documentation**
- Added comprehensive documentation for the `Schema` class, detailing
its methods, properties, and usage.
- Improved formatting and linking in the documentation for the `Store`
class, enhancing clarity and navigation.
- Updated the README to include a direct link to the new `Schema` class
documentation.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Chores**
- Updated the default setting for the code block HTML preview feature
flag; it is now disabled by default. This change affects only
experimental builds.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: L-Sun <zover.v@gmail.com>
Closes: #12576
Closes: [BS-2080](https://linear.app/affine-design/issue/BS-2080/update-inline-code-font-size)
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **Style**
- Improved the appearance of code elements within lists by adjusting font size and padding.
- Updated inline code styling for better vertical alignment and consistency with surrounding text.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Closes: BS-2782
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Added KaTeX as a dependency to improve LaTeX rendering support.
- KaTeX styles are now applied globally for consistent math formatting.
- **Refactor**
- Updated LaTeX rendering to use inline math mode and removed MathML output.
- **Tests**
- Enhanced inline LaTeX tests with snapshot-based verification for consistent rendering.
- Added new snapshot files capturing expected LaTeX rendering outputs for various scenarios.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Closes: BS-2290
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
## Summary by CodeRabbit
- **Bug Fixes**
- Improved focus behavior when switching between tabs to prevent unwanted automatic focusing of the content-editable area.
- Enhanced selection clearing to avoid unnecessary blurring when the main editable element is already focused.
- Refined focus checks in tests to specifically target contenteditable elements, ensuring more accurate validation of focus behavior.
- Adjusted test assertions for block selection to be less strict and removed redundant blur operations for smoother test execution.
- Updated toolbar dropdown closing method to use keyboard interaction for better reliability.
- **New Features**
- Added a recoverable property to selection types, improving selection state management and recovery.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Closes: BS-2896
<img width="468" alt="image" src="https://github.com/user-attachments/assets/2b84c484-29b8-4650-b74c-da7afd3a1e41" />
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Enhanced member search results with highlighted text, making it easier to visually identify matched parts of member names during searches.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **Bug Fixes**
- Improved scrolling behavior to the focused item in the linked document popover, ensuring reliable navigation regardless of special characters in item identifiers.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Closes: BS-3009
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- The mention members menu now displays up to three members, with a localized hint indicating the number of additional hidden members.
- **Localization**
- Added a new translation key for the overflow members hint in the English language pack.
- **Chores**
- Updated translation completeness statistics for the "es-CL" locale.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Closes: BS-3395
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **Bug Fixes**
- Improved keyboard input handling in filterable lists to prevent unintended interactions when using arrow keys, Enter, or Escape.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Closes: BS-3538
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **Refactor**
- Improved click handling for LaTeX blocks, making interactions more consistent and maintainable.
- Updated LaTeX editor menu layout to enhance vertical scrolling, ensuring better usability with large content.
- **Style**
- Added a maximum height and vertical scrolling to the LaTeX editor for improved user experience with lengthy formulas.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **Chores**
- Removed multiple internal export entries related to effects modules across various packages.
- Updated dependencies and configuration references to improve internal consistency. No visible changes for end-users.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Introduced two new widgets: Edgeless Dragging Area and Note Slicer, now available for use.
- Added extension support for these widgets, enabling enhanced interaction and integration within the application.
- **Chores**
- Updated package configurations and workspace settings to include the new widgets and their dependencies.
- Added project references and configuration files to support modular development and build processes.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Introduced the Edgeless Selected Rectangle widget, providing enhanced selection and interaction capabilities in edgeless mode.
- Added rotation-aware resize cursors for improved usability when resizing selections.
- Integrated new autocomplete panels and selection components for a smoother user experience.
- **Refactor**
- Modularized the Edgeless Selected Rectangle widget as a standalone package for better maintainability and integration.
- Updated internal references and imports to utilize the new widget package.
- **Chores**
- Updated project and package configurations to include the new widget and ensure proper build and type-checking across the workspace.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **Refactor**
- Streamlined and consolidated block and inline extension exports by removing multiple block-spec and inline extension arrays from public APIs.
- Reduced exported constants, types, and utility functions related to various block and embed features.
- Simplified the codebase by removing deprecated type guards, adapter extensions, and redundant extension groupings.
- **Chores**
- Cleaned up internal APIs by deleting unused exports, imports, and outdated code, enhancing maintainability.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Closes: BS-3149
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **Refactor**
- Improved internal handling of surface components across various tools, resulting in safer and more consistent access patterns.
- Enhanced code maintainability and reliability without altering any visible features or user workflows.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
<!-- 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 -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **Refactor**
- Updated configuration initialization throughout the app by replacing the previous base configuration method with a new one for improved consistency.
- Removed an internal extension and adjusted related setup logic to streamline extension management.
- Renamed and simplified configuration methods for better clarity and maintainability.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Added new export paths to improve module accessibility for foundation store and view components.
- Introduced new extension points for telemetry, font configuration, link preview cache, and peek view services in the view extension foundation.
- **Improvements**
- Enhanced flexibility by allowing optional configuration of placeholders in paragraph view extensions.
- Switched to runtime schema validation for font configuration, increasing reliability.
- Streamlined service registration for peek view providers.
- **Refactor**
- Centralized and simplified extension management by removing redundant extension files and consolidating setup logic.
- Updated internal integration of telemetry, font, and peek view services for improved maintainability.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Introduced a new mobile view extension that activates mobile-specific UI features based on the runtime environment.
- Automatically enables mobile keyboard toolbar and linked document menu features in mobile contexts.
- **Improvements**
- Simplified code and paragraph block configurations on mobile, including disabling line numbers and adjusting placeholders.
- Enhanced configuration chaining to include mobile-specific settings by default.
- Improved extension registration flow with method chaining support.
- **Refactor**
- Removed deprecated mobile patch classes and configurations, consolidating mobile logic into dedicated extensions.
- Streamlined mobile-related code for better maintainability and performance.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
<!-- 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 -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **Refactor**
- Improved history and undo/redo management across the app by introducing a dedicated history extension. Undo/redo operations now use a more focused undo manager, resulting in clearer and more consistent behavior.
- **Documentation**
- Updated API documentation to reflect changes in history management, including revised method signatures and removal of outdated event references.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Introduced dedicated extensions for cloud features, turbo renderer, and PDF embed preview, enabling modular and configurable view options.
- Added audio embed preview support for attachments, enhancing the audio file viewing experience.
- **Refactor**
- Streamlined editor view configuration with modular extension registration.
- Simplified extension setup by removing some feature flags and related services from core editor configuration.
- **Chores**
- Updated internal worker configuration paths for improved organization.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **Refactor**
- Streamlined and modularized the configuration of editor and theme extensions, introducing a chainable API for extension management.
- Migrated extension setup to use new provider classes and centralized patch logic, improving maintainability and consistency.
- Updated internal extension retrieval processes to use a more explicit, stepwise initialization sequence.
- Removed legacy theme and editor config registration from common views and editor setups.
- Removed direct patch registrations from editor views, consolidating them into extension providers.
- Renamed classes and variables for clarity and consistency across the codebase.
- **New Features**
- Added new extension providers for editor configuration, theme management, and edgeless block header customization, enabling more flexible and validated extension registration.
- Introduced animated viewport focus and dynamic header rendering for edgeless notes and embedded synced documents.
- Integrated reactive editor settings and toolbar configurations with workspace-aware base URL resolution.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Splice will produce large yjs updates for splice because it will call insert and delete operation for every item in yarray.
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Added support for `splice`, `shift`, and `unshift` methods on reactive arrays, enabling enhanced dynamic array operations with synchronization.
- **Tests**
- Expanded test coverage for array operations including `push`, `splice`, `shift`, and `unshift`, verifying complete array state after each change.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **Refactor**
- Unified internal data access by replacing all references from `doc` to `store` across all components, blocks, widgets, and utilities. This affects how readonly state, block operations, and service retrieval are handled throughout the application.
- **Tests**
- Updated all test utilities and test cases to use `store` instead of `doc` for document-related operations.
- **Chores**
- Updated context providers and property names to reflect the change from `doc` to `store` for improved consistency and maintainability.
No user-facing features or behaviors have changed.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Introduced new exports related to workspace management, making additional workspace features available.
- **Refactor**
- Updated how document and workspace types are imported and exported, consolidating and reorganizing module structure.
- Shifted dependency management for document instances to use an internal provider mechanism.
- Streamlined and centralized type imports across various modules.
- **Bug Fixes**
- Removed an unused schema definition to improve code clarity.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Introduced a new store management system for handling document stores, improving efficiency and flexibility when working with document data.
- **Refactor**
- Updated internal store handling to use a centralized store container, simplifying store retrieval and removal across various components.
- Renamed and updated several store-related method signatures for consistency and clarity.
- Replaced editor extension loading logic with a new local implementation for better modularity.
- **Chores**
- Improved and streamlined the export of store-related modules for better maintainability.
- Removed obsolete and redundant code related to previous store management approaches.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **Refactor**
- Streamlined internal logic for handling block operations to improve efficiency.
- Removed unused reactive subject and related code from document handling classes.
- Renamed a private initialization method for improved clarity.
- **Chores**
- Cleaned up redundant code and imports to simplify maintenance.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **Refactor**
- Streamlined internal event handling for block updates, removing previous notification mechanisms from several components.
- **Chores**
- Simplified and cleaned up internal logic related to block addition and deletion tracking.
No visible changes to the user interface or end-user features.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Undo/redo history management is now centralized in the workspace, providing more consistent and robust undo/redo behavior.
- History update events are emitted at the workspace level, enabling better tracking of changes.
- **Bug Fixes**
- Improved reliability of undo/redo actions by shifting history management from documents to the workspace.
- **Documentation**
- Updated and clarified documentation for history-related APIs, including improved examples and clearer descriptions.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Added citation component, making citation-related features available in the application.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Closes: BS-3396
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Introduced structured and validated configuration options for database and linked document views, allowing for more flexible and reliable customization.
- Enhanced view manager to conditionally enable AI-related paragraph placeholders and database/linked document extensions based on configuration.
- **Chores**
- Updated dependencies to include the latest version of the Zod validation library.
- Simplified and consolidated internal configuration and registration logic for AI and widget-related extensions.
- **Refactor**
- Streamlined configuration types and removed unused or redundant configuration utilities to improve maintainability.
- Improved robustness of linked widget configuration retrieval to handle optional service availability gracefully.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Improved mobile experience by disabling certain toolbars and slash menu features on mobile devices.
- Introduced new modular extension classes for editor and view customization, enabling more flexible configuration of themes, AI features, and editor enhancements.
- Added clipboard adapter configurations for a wide range of data types, improving clipboard compatibility.
- Added a new theme extension specifically for preview scenarios.
- Provided new hooks for block scope management in document modules.
- **Refactor**
- Streamlined editor extension setup, consolidating options and reducing complexity for better maintainability.
- Reorganized mobile-specific extension exports for clearer usage.
- Refined React-to-Lit rendering API by introducing a typed alias and updating related function signatures.
- Simplified extension registration by splitting monolithic view extension into separate common and editor view extensions.
- **Bug Fixes**
- Corrected naming inconsistencies in internal effect tracking.
- **Chores**
- Updated type exports and documentation comments for improved clarity and consistency.
- Removed unused or redundant exports and functions to clean up the codebase.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Closes: BS-3393
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Introduced a new "Embed Doc" block, enabling embedding and rendering of linked and synced documents within cards, including support for banners and note previews.
- Added new toolbar and quick search options for inserting embedded linked and synced documents.
- **Improvements**
- Updated dependencies and internal references to support the new embed doc functionality across related blocks and components.
- Enhanced support for edgeless environments with new clipboard and configuration options for embedded docs.
- **Refactor**
- Streamlined and reorganized embed-related code, moving linked and synced doc logic into a dedicated embed doc module.
- Removed obsolete adapter and utility files to simplify maintenance.
- **Chores**
- Updated project and TypeScript configuration files to include the new embed doc module in builds and references.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **Refactor**
- Simplified and removed several internal AI block extension files and utility functions, streamlining the codebase and reducing unused features.
- Updated logic to access editor modes and controllers directly, removing reliance on DOM queries and certain abstractions.
- Reduced and restructured effect type declarations for improved clarity.
- **Bug Fixes**
- Improved type safety in the editor component by explicitly typing queried elements.
- **Chores**
- Removed obsolete exports and internal functions with no impact on user-facing functionality.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Closes: BS-3382
Closes: BS-3381
Closes: BS-3380
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Introduced new view extensions for document title, frame panel, and outline fragments, enhancing modularity and extensibility.
- **Refactor**
- Updated export structure for fragments to support directory-based modules and added dedicated view module exports.
- Replaced a centralized view extension with individual fragment-based view extensions for improved clarity.
- **Chores**
- Updated dependencies and TypeScript project references to ensure compatibility and maintainability.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Closes: BS-3202
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Introduced new root block store and view extensions, enhancing modularity and integration options for root block functionality.
- Exported the EdgelessLocker class for broader usage.
- **Improvements**
- Updated export paths for root block modules, enabling clearer and more flexible module access.
- Enhanced view extension setup to better tailor user interface and interactions based on context.
- **Removals**
- Removed legacy migrating store and view extension logic, streamlining extension management and reducing unused code.
- Removed multiple deprecated block specifications and common extension collections to simplify the codebase.
- Deleted AI page root block specification, retaining only lifecycle watcher functionality.
- **Chores**
- Updated dependencies and project references to support new extension loader integration.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **Refactor**
- Removed internal utilities related to connector management and tree structure traversal. No changes to user-facing features or functionality.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Closes: BS-3368
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Introduced a new link tool extension, enabling enhanced link-related functionality within the edgeless workspace.
- Added a new view extension for link tools, improving integration and usability in edgeless mode.
- **Chores**
- Added a new package for link tool functionality with appropriate dependencies and exports.
- Registered new custom elements for edgeless toolbars and link tools to support modular UI components.
- Updated project configurations and workspace dependencies to include the new link tool module.
- **Refactor**
- Removed unused quick tool exports and toolbar component registrations to streamline the edgeless extension codebase.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Closes: BS-3364
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Introduced a new "Page Dragging Area" widget, enabling enhanced block selection and drag area detection within the user interface.
- Added utilities for more precise block selection based on rectangular selection areas.
- **Improvements**
- Integrated the new widget into the view extension system for consistent behavior across supported views.
- Enhanced clipboard handling with comprehensive adapter configurations for various data types.
- **Refactor**
- Streamlined widget registration and block selection logic for improved maintainability and modularity.
- Removed legacy widget exports and registrations to centralize widget management.
- **Chores**
- Updated workspace and TypeScript configurations to support the new widget module.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Enhanced clipboard support with multiple adapter configurations for various MIME types, improving clipboard handling and compatibility.
- **Refactor**
- Relocated clipboard adapter configurations to a new location for better organization and maintainability.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Closes: BS-3360
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Introduced a new viewport overlay widget, making it available as part of the workspace and enabling its integration into supported pages.
- **Refactor**
- Updated internal imports and exports to utilize the new viewport overlay widget package.
- Streamlined widget registration and extension mechanisms for improved modularity.
- **Chores**
- Added configuration and project references to support the new viewport overlay widget package in the build system.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Introduced the Affine Foundation package, providing a centralized layer for initializing core UI effects, custom elements, and foundational services.
- Added new foundational store and view extensions to improve core service registration and UI effect setup.
- **Refactor**
- Streamlined and reorganized block, store, and view extension arrays to rely on the new foundation layer, reducing duplication and simplifying extension management.
- Removed redundant or now-centralized services and UI effects from existing modules.
- **Chores**
- Updated configuration files and workspace dependencies to support the new Affine Foundation package.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **Refactor**
- Updated and reorganized import paths for transcription block models and types to improve module structure and maintainability.
- **Chores**
- Removed deprecated transcription block schema and related exports from core libraries.
- Registered transcription block schema directly within the workspace schema for improved schema management.
- **Bug Fixes**
- Ensured consistent registration and availability of transcription block features across relevant modules.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Introduced a new pointer graphics module with tools and quick tool integration for edgeless surfaces.
- Added a quick tool button for pointer interactions in edgeless mode.
- Exposed new extension points for pointer graphics and effects.
- **Improvements**
- Integrated pointer graphics as a dependency into related packages.
- Enhanced toolbar context to support additional surface alignment modes.
- Added conditional clipboard configuration registrations for edgeless contexts across multiple block types.
- **Removals**
- Removed legacy tool and effect definitions and related quick tool exports from edgeless components.
- Streamlined extension arrays and removed unused exports for a cleaner codebase.
- Deleted obsolete utility functions and component registrations.
- **Chores**
- Updated workspace and TypeScript project references to include the new pointer graphics module.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Closes: BS-3226
Closes: BS-3227
Closes: BS-3228
Closes: BS-3229
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Introduced new view extensions for remote selection, scroll anchoring, slash menu, and toolbar widgets, enhancing customization and integration capabilities.
- **Refactor**
- Updated export paths and module structure for widget-related packages to improve modularity and accessibility.
- Reorganized internal dependencies and removed redundant widget imports from core block packages.
- Refactored edgeless-related widgets and components to use a standardized scope interface for improved context and state management.
- Centralized graphics controller access and slot management through standardized context objects.
- **Chores**
- Added and updated dependencies to streamline extension loading and workspace management.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Closes: BS-3223
Closes: BS-3224
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Introduced new view extensions for frame title and keyboard toolbar widgets with conditional registration based on context and environment.
- Enhanced widget integration by adding explicit exports for view components.
- **Chores**
- Updated export paths and package dependencies to improve modularity and compatibility.
- Removed deprecated widget dependencies and related imports from core packages.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Closes: BS-3221
Closes: BS-3222
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Introduced extensions that conditionally register edgeless auto-connect and toolbar widgets with associated effects based on the view context.
- Added new exports for edgeless auto-connect and toolbar widget views, making them available for external use.
- **Chores**
- Updated dependencies and project references to include the extension loader for improved module integration.
- Refined workspace configuration to reflect new package dependencies.
- **Refactor**
- Streamlined registration and effect logic by removing legacy integration points for edgeless auto-connect and toolbar widgets.
- Reorganized widget export paths to a more modular directory structure.
- **Bug Fixes**
- Disabled pointer events on the edgeless navigator black background to prevent interaction interference.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **Chores**
- Updated package dependencies to reduce the number of direct dependencies for improved maintainability. No changes to user-facing features or functionality.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Closes: BS-3208
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Introduced a new group view extension, enhancing how group elements are handled and displayed.
- Added new store and view modules for group-related features, improving modularity and integration.
- **Refactor**
- Updated the group element architecture to use extension-based registration for views, toolbars, and effects.
- Simplified and reorganized exports for group and text modules.
- **Chores**
- Updated dependencies and project references to improve build consistency and compatibility.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Closes: BS-3209
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Introduced mind map view and store extensions, enhancing mind map integration and conversion to plain text and markdown formats.
- Added priority property to quick tools, allowing for custom ordering in the toolbar.
- **Improvements**
- Toolbar quick tools are now sorted by priority for a more intuitive user experience.
- Updated toolbar and extension configurations to streamline available tools and extensions.
- **Bug Fixes**
- Conditional registration of certain components ensures correct behavior in edgeless mode.
- **Chores**
- Updated dependencies and project references to improve module integration and maintainability.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Closes: BS-3206
Closes: BS-3210
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Introduced new brush and note view extensions, enhancing integration and extensibility for brush and note tools.
- Added store extension for brush tools, allowing for improved adapter integration.
- **Improvements**
- Expanded module exports for brush and note graphics, making store and view functionalities more accessible.
- Added new dependencies to support extension loading and improved project structure.
- **Refactor**
- Updated extension arrays and toolbars to use the new view and store extensions for brush and note tools.
- Removed legacy brush and note tools, effects, and toolbar extensions in favor of the new extension-based approach.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
### TL;DR
Refactored extension registration to follow a more modular approach by moving extensions to their respective block packages.
### What changed?
- Removed centralized registration of several extensions from `store.ts` in the main package
- Moved the following extensions to their respective block packages:
- `CodeMarkdownPreprocessorExtension` to the code block package
- `LatexMarkdownPreprocessorExtension` to the latex block package
- `EmbedIframeConfigExtensions` and `EmbedIframeService` to the embed block package
- `ImageStoreSpec` removed from central registration
- Cleaned up unused arrays and imports in the main store file
- Removed empty `defaultBlockPlainTextAdapterMatchers` array
### How to test?
1. Verify that markdown preprocessing for code and latex blocks still works correctly
2. Check that iframe embeds function properly
3. Ensure image handling continues to work as expected
4. Test import/export functionality for all affected block types
### Why make this change?
This change improves code organization by following a more modular architecture where each block package is responsible for registering its own extensions. This approach reduces coupling between packages, makes the codebase more maintainable, and follows the principle that extensions should be registered where they are defined.
Closes: BS-3186
# @blocksuite/affine-ext-loader
Blocksuite extension loader system for AFFiNE, providing a structured way to manage and load extensions in different contexts.
## Usage
### Basic Extension Provider
```typescript
import { BaseExtensionProvider } from '@blocksuite/affine-ext-loader';
import { z } from 'zod';
// Create a custom provider with options
class MyProvider extends BaseExtensionProvider<'my-scope', { enabled: boolean }> {
name = 'MyProvider';
schema = z.object({
enabled: z.boolean(),
});
setup(context: Context<'my-scope'>, options?: { enabled: boolean }) {
super.setup(context, options);
// Custom setup logic
}
}
```
### Store Extensions
```typescript
import { StoreExtensionProvider, StoreExtensionManager } from '@blocksuite/affine-ext-loader';
import { z } from 'zod';
// Create a store provider with custom options
class MyStoreProvider extends StoreExtensionProvider<{ cacheSize: number }> {
override name = 'MyStoreProvider';
override schema = z.object({
cacheSize: z.number().min(0),
});
override setup(context: StoreExtensionContext, options?: { cacheSize: number }) {
super.setup(context, options);
context.register([Ext1, Ext2, Ext3]);
}
}
// Create and use the store extension manager
const manager = new StoreExtensionManager([MyStoreProvider]);
manager.configure(MyStoreProvider, { cacheSize: 100 });
const extensions = manager.get('store');
```
### View Extensions
```typescript
import { ViewExtensionProvider, ViewExtensionManager } from '@blocksuite/affine-ext-loader';
import { z } from 'zod';
// Create a view provider with custom options
class MyViewProvider extends ViewExtensionProvider<{ theme: string }> {
override name = 'MyViewProvider';
override schema = z.object({
theme: z.enum(['light', 'dark']),
});
override setup(context: ViewExtensionContext, options?: { theme: string }) {
super.setup(context, options);
context.register([CommonExt]);
if (context.scope === 'page') {
context.register([PageExt]);
} else if (context.scope === 'edgeless') {
context.register([EdgelessExt]);
}
if (options?.theme === 'dark') {
context.register([DarkModeExt]);
}
}
// Override effect to run one-time initialization logic
override effect() {
// This will only run once per provider class
console.log('Initializing MyViewProvider');
// Register lit elements
this.registerLitElements();
}
}
// Create and use the view extension manager
const manager = new ViewExtensionManager([MyViewProvider]);
manager.configure(MyViewProvider, { theme: 'dark' });
// Get extensions for different view scopes
const pageExtensions = manager.get('page');
const edgelessExtensions = manager.get('edgeless');
```
### One-time Initialization with Effect
View extensions support one-time initialization through the `effect` method. This method is called automatically during setup, but only once per provider class. It's useful for:
- Initializing global state
- Registering lit elements
- Setting up shared resources
```typescript
class MyViewProvider extends ViewExtensionProvider {
override effect() {
// This will only run once, even if multiple instances are created
initializeGlobalState();
registerLitElements();
setupGlobalEventListeners();
}
}
```
### Available View Scopes
The view extension system supports the following scopes:
- `page` - Standard page view
- `edgeless` - Edgeless (whiteboard) view
- `preview-page` - Page preview view
- `preview-edgeless` - Edgeless preview view
- `mobile-page` - Mobile page view
- `mobile-edgeless` - Mobile edgeless view
### Extension Configuration
Extensions can be configured using the `configure` method:
```typescript
// Set configuration directly
manager.configure(MyProvider, { enabled: true });
// Update configuration using a function
manager.configure(MyProvider, prev => {
if (!prev) return prev;
return {
...prev,
enabled: !prev.enabled,
};
});
// Remove configuration
manager.configure(MyProvider, undefined);
```
### Dependency Injection
Both store and view extension managers support dependency injection:
```typescript
// Access the manager through the di container
const viewManager = std.get(ViewExtensionManagerIdentifier);
const pagePreviewExtension = viewManager.get('preview-page');
```