<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
## Summary by CodeRabbit
* **New Features**
* Enhanced extraction of selected content in the editor to include
document snapshots, markdown summaries, and attachments for both
edgeless and page modes.
* Attachments related to selected content are now available in chat and
input contexts, providing additional metadata.
* Added utility to identify and retrieve selected attachments in editor
content.
* **Bug Fixes**
* Improved consistency in attachment retrieval when extracting selected
content.
* **Chores**
* Updated dependencies and workspace references to include new block
suite components.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
> CLOSE AF-2770
## Refactor
Align the Markdown conversion logic across all business modules:
1. frontend/backend apply: doc to markdown
2. insert/import markdown: use `markdownAdapter.toDoc`
> CLOSE AI-328 AI-379 AI-380
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Documentation**
* Clarified instructions and provided an explicit example for correct
list item formatting in the markdown editing tool.
* **Bug Fixes**
* Improved markdown parsing for lists, ensuring correct indentation and
handling of trailing newlines.
* Cleaned up markdown snapshot test files by removing redundant blank
lines for better readability.
* **Refactor**
* Updated markdown conversion logic to use a new parsing approach for
improved reliability and maintainability.
* Enhanced markdown generation method for document snapshots with
improved error handling.
* Refined markdown-to-snapshot conversion with more robust document
handling and snapshot extraction.
* **Chores**
* Added a new workspace dependency for enhanced markdown parsing
capabilities.
* Updated project references and workspace dependencies to include the
new markdown parsing package.
* **Tests**
* Temporarily disabled two markdown-related tests due to parse errors in
test mode.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Close
[AF-2755](https://linear.app/affine-design/issue/AF-2755/table-block支持)
#### PR Dependency Tree
* **PR #13245** 👈
This tree was auto-generated by
[Charcoal](https://github.com/danerwilliams/charcoal)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Added "Table" and "Callout" options to the keyboard toolbar, allowing
users to insert table and callout blocks directly from the toolbar when
available.
* **Chores**
* Updated internal dependencies to support new block types and maintain
compatibility.
<!-- 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 automatic synchronization of language settings between the
desktop app and the system environment.
* Context menu actions (Cut, Copy, Paste) in the desktop app are now
localized according to the selected language.
* **Improvements**
* Context menu is always available with standard editing actions,
regardless of spell check settings.
* **Localization**
* Added translations for "Cut", "Copy", and "Paste" in the context menu.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## New Features
* **Block Meta Markdown Adapter**:Inject the Block's metadata into
Markdown.
* **UI**:Apply interaction
* **Widget**
* Block-Level Widget: Displays the diffs of individual blocks within the
main content and supports accepting/rejecting individual diffs.
* Page-Level Widget: Displays global options (Accept all/Reject all).
* **Block Diff Service**:Bridge widget and diff data
* Widget subscribes to DiffMap(RenderDiff) data, refreshing the view
when the data changes.
* Widget performs operations such as Accept/Reject via methods provided
by Service.
* **Doc Edit Tool Card**:
* Display apply preview of semantic doc edit
* Support apply & accept/reject to the main content
* **Apply Playground**:A devtool for testing apply new content to
current
> CLOSE AI-274 AI-275 AI-276 AI-278
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Introduced block-level markdown diffing with accept/reject controls
for insertions, deletions, and updates.
* Added block diff widgets for individual blocks and pages, featuring
navigation and bulk accept/reject actions.
* Provided a block diff playground for testing and previewing markdown
changes (development mode only).
* Added a new document editing AI tool component with interactive diff
viewing and change application.
* Supported rendering of the document editing tool within AI chat
content streams.
* **Improvements**
* Enhanced widget rendering in list, paragraph, data view, and database
blocks for improved extensibility.
* Improved widget flavour matching with hierarchical wildcard support
for more flexible UI integration.
* **Chores**
* Updated the "@toeverything/theme" dependency to version ^1.1.16 across
multiple packages.
* Added new workspace dependencies for core frontend packages to improve
module linkage.
* Extended global styles with visual highlights for deleted blocks in AI
block diff feature.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## New Features
- **Markdown diff**:
- Introduced block-level diffing for markdown content, enabling
detection of insertions, deletions, and replacements between document
versions.
- Generate patch operations from markdown diff.
- **Patch Renderer**: Transfer patch operations to a render diff which
can be rendered into page body.
- **Patch apply**:Added functionality to apply patch operations to
documents, supporting block insertion, deletion, and content
replacement.
## Refactors
* Move `affine/shared/__tests__/utils` to
`blocksuite/affine-shared/test-utils`
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Introduced utilities for declarative creation and testing of document
structures using template literals.
* Added new functions and types for block-level markdown diffing and
patch application.
* Provided a utility to generate structured render diffs for markdown
blocks.
* Added a unified test-utils entry point for easier access to testing
helpers.
* **Bug Fixes**
* Updated import paths in test files to use the new test-utils location.
* **Documentation**
* Improved example usage in documentation to reflect the new import
paths for test utilities.
* **Tests**
* Added comprehensive test suites for markdown diffing, patch
application, and render diff utilities.
* **Chores**
* Updated package dependencies and export maps to expose new test
utilities.
* Refactored internal test utilities organization for clarity and
maintainability.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
> CLOSE AI-271 AI-272 AI-273
reduce dnsmasq service
#### PR Dependency Tree
* **PR #13012** 👈
This tree was auto-generated by
[Charcoal](https://github.com/danerwilliams/charcoal)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Documentation**
* Updated instructions to use the domain `affine.localhost` instead of
`dev.affine.fail`.
* Simplified setup steps by removing references to DNS service
configuration and custom DNS server entries.
* **Chores**
* Removed DNS server configuration and related files from the
development environment setup.
* Updated example descriptions to reflect the new domain.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
#### PR Dependency Tree
* **PR #12948** 👈
* **PR #12980**
This tree was auto-generated by
[Charcoal](https://github.com/danerwilliams/charcoal)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Introduced inline comment functionality, allowing users to add,
resolve, and highlight comments directly within text.
* Added a new toolbar action for inserting comments when supported.
* Inline comments are visually highlighted and can be interacted with in
the editor.
* **Enhancements**
* Integrated a feature flag to enable or disable the comment feature.
* Improved inline manager rendering to support wrapper specs for
advanced formatting.
* **Developer Tools**
* Added mock comment provider for testing and development environments.
* **Chores**
* Updated dependencies and project references to support the new inline
comment module.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
#### PR Dependency Tree
* **PR #12880** 👈
This tree was auto-generated by
[Charcoal](https://github.com/danerwilliams/charcoal)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Bug Fixes**
- Improved iframe preview behavior for code blocks, enabling enhanced
compatibility and resource access within previews.
- **Chores**
- Updated internal server configuration to no longer set custom
cross-origin headers during development.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Fix#12284
Close
[BS-3517](https://linear.app/affine-design/issue/BS-3517/微软新注音输入法无法使用markdown语法)
This PR refactor the markdown transform during inputting, including:
- Transfrom markdown syntax input in `inlineEditor.slots.inputting`,
where we can detect the space character inputed by IME like Microsoft
Bopomofo, but `keydown` event can't.
- Remove `markdown-input.ts` which was used in `KeymapExtension` of
paragraph, and refactor with `InlineMarkdownExtension`
- Adjust existing `InlineMarkdownExtension` since the space is included
in text.
- Add two `InlineMarkdownExtension` for paragraph and list to impl
Heading1-6, number, bullet, to-do list conversion.
Other changes:
- Improve type hint for parameter of `store.addBlock`
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
## Summary by CodeRabbit
- **New Features**
- Added markdown shortcuts for creating code blocks and dividers in the
rich text editor.
- Introduced enhanced paragraph markdown support for headings and
blockquotes with inline markdown patterns.
- Integrated new list markdown extension supporting numbered, bulleted,
and todo lists with checked states.
- **Improvements**
- Updated markdown formatting patterns to require trailing spaces for
links, LaTeX, and inline styles, improving detection accuracy.
- Markdown transformations now respond to input events instead of
keydown for smoother editing experience.
- Added focus management after markdown transformations to maintain
seamless editing flow.
- **Bug Fixes**
- Removed unnecessary prevention of default behavior on space and
shift-space key presses in list and paragraph editors.
- **Refactor**
- Enhanced event handling and typing for editor input events, improving
reliability and maintainability.
- Refined internal prefix text extraction logic for markdown processing.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
not changing the favicon.ico file to make sure the change will be updated on the user's browser to get rid of caching
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **Style**
- Updated the favicon URL across the application and link previews to include a version query parameter (`?v=2`) for better cache control.
<!-- 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 support for a new AES key for license management, improving license encryption and decryption processes.
- **Bug Fixes**
- Improved error messages and handling when activating expired or invalid licenses.
- **Refactor**
- Updated license decryption logic to use a fixed AES key instead of deriving one from the workspace ID.
- Added validation for environment variable values to prevent invalid configurations.
- **Tests**
- Enhanced license-related tests to cover new key usage and updated error messages.
- Updated environment variable validation tests with clearer error messages.
- **Chores**
- Updated environment variable handling for improved consistency.
- Set production environment variable explicitly in build configuration.
<!-- 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 the ability to upload and replace license files for self-hosted team workspaces via a new modal dialog.
- Introduced clearer UI flows for activating, deactivating, and managing team licenses, including one-time purchase licenses.
- Provided direct links and guidance for requesting licenses and managing payments.
- **Enhancements**
- Improved license management interface with updated button labels and descriptions.
- Added new styles for better layout and clarity in license dialogs.
- Updated internationalization with new and revised texts for license operations.
- **Bug Fixes**
- Prevented duplicate opening of license or plan dialogs when already open.
- **Chores**
- Updated support and pricing links for clarity and accuracy.
<!-- 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 development server with automatic handling of exit signals.
- Configured default WebSocket URL for enhanced client-server communication during development.
<!-- 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 '@affine/admin' to the list of selectable packages for development commands.
- **Enhancements**
- Improved package selection prompt by displaying up to 10 choices at a time for easier navigation.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Closes: [BS-2539](https://linear.app/affine-design/issue/BS-2539/为-affine-添加-ef,并且支持在-affine-预览对应的功能)
> [!warning]
> This feature is only available in the canary build and is intended for debugging purposes.
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Introduced an "Adapter Panel" feature with a new sidebar tab for previewing document content in multiple formats (Markdown, PlainText, HTML, Snapshot), controllable via a feature flag.
- Added a fully integrated adapter panel component with reactive UI elements for selecting adapters, toggling HTML preview modes, and updating content.
- Provided a customizable adapter panel for both main app and playground environments, supporting content transformation pipelines and export previews.
- Enabled seamless toggling and live updating of adapter panel content through intuitive menus and controls.
- **Localization**
- Added English translations and descriptive settings for the Adapter Panel feature.
- **Chores**
- Added new package and workspace dependencies along with TypeScript project references to support the Adapter Panel modules and components.
<!-- 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 CLI command to manage local Certificate Authority (CA) and generate SSL certificates for development domains.
- Added example and template files for Nginx and OpenSSL configurations to support local development with SSL.
- Provided new DNS and Nginx configuration files for enhanced local development setup.
- **Documentation**
- Added a README with step-by-step instructions for setting up development containers and managing certificates on MacOS with OrbStack.
- **Chores**
- Updated ignore patterns to exclude additional development files and directories.
- Enhanced example Docker Compose files with commented service configurations and new volume definitions.
- Removed the Elasticsearch example Docker Compose file.
- **Refactor**
- Extended utility and command classes with new methods to support file operations and command execution.
<!-- 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
- **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 -->
### Changed
This pr split the old `edgeless-selected-rect` into four focused modules:
- `edgeless-selected-rect`: Provide an entry point for user operation on view layer only, no further logic here.
- `GfxViewInteractionExtension`: Allow you to plug in custom resize/rotate behaviors for block or canvas element. If you don’t register an extension, it falls back to the default behaviours.
- `InteractivityManager`: Provide the API that accepts resize/rotate requests, invokes any custom behaviors you’ve registered, tracks the lifecycle and intermediate state, then hands off to the math engine.
- `ResizeController`: A pure math engine that listens for pointer moves and pointer ups and calculates new sizes, positions, and angles. It doesn’t call any business APIs.
### Customizing an element’s resize/rotate behavior
Call `GfxViewInteractionExtension` with the element’s flavour or type plus a config object. In the config you can define:
- `resizeConstraint` (min/max width & height, lock ratio)
- `handleResize(context)` method that returns an object containing `beforeResize`、`onResizeStart`、`onResizeMove`、`onResizeEnd`
- `handleRotate(context)` method that returns an object containing `beforeRotate`、`onRotateStart`、`onRotateMove`、`onRotateEnd`
```typescript
import { GfxViewInteractionExtension } from '@blocksuite/std/gfx';
GfxViewInteractionExtension(
flavourOrElementType,
{
resizeConstraint: {
minWidth,
maxWidth,
lockRatio,
minHeight,
maxHeight
},
handleResize(context) {
return {
beforeResize(context) {},
onResizeStart(context) {},
onResizeMove(context) {},
onResizeEnd(context) {}
};
},
handleRotate(context) {
return {
beforeRotate(context) {},
onRotateStart(context) {},
onRotateMove(context) {},
onRotateEnd(context) {}
};
}
}
);
```
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Added interaction extensions for edgeless variants of attachment, bookmark, edgeless text, embedded docs, images, notes, frames, AI chat blocks, and various embed blocks (Figma, GitHub, HTML, iframe, Loom, YouTube).
- Introduced interaction extensions for graphical elements including connectors, groups, mind maps, shapes, and text, supporting constrained resizing and rotation disabling where applicable.
- Implemented a unified interaction extension framework enabling configurable resize and rotate lifecycle handlers.
- Enhanced autocomplete overlay behavior based on selection context.
- **Refactor**
- Removed legacy resize manager and element-specific resize/rotate logic, replacing with a centralized, extensible interaction system.
- Simplified resize handle rendering to a data-driven approach with improved cursor management.
- Replaced complex cursor rotation calculations with fixed-angle mappings for resize handles.
- Streamlined selection rectangle component to use interactivity services for resize and rotate handling.
- **Bug Fixes**
- Fixed connector update triggers to reduce unnecessary updates.
- Improved resize constraints enforcement and interaction state tracking.
- **Tests**
- Refined end-to-end tests to use higher-level resize utilities and added finer-grained assertions on element dimensions.
- Enhanced mouse movement granularity in drag tests for better simulation fidelity.
- **Chores**
- Added new workspace dependencies and project references for the interaction framework modules.
- Extended public API exports to include new interaction types and extensions.
<!-- 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
- **New Features**
- Added support for installing self-hosted team licenses via encrypted license files.
- Introduced a new "Onetime" license variant for self-hosted environments.
- Added a GraphQL mutation to upload and install license files.
- License details now display the license variant.
- **Bug Fixes**
- Improved error messages for license activation and expiration, including dynamic reasons.
- **Localization**
- Updated and improved license-related error messages for better clarity.
- **Tests**
- Added comprehensive end-to-end tests for license installation scenarios.
- **Chores**
- Enhanced environment variable handling and public key management for license verification.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@googleapis/androidpublisher](https://redirect.github.com/googleapis/google-api-nodejs-client) | [`^26.0.0` -> `^27.0.0`](https://renovatebot.com/diffs/npm/@googleapis%2fandroidpublisher/26.0.0/27.0.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) |
---
### Release Notes
<details>
<summary>googleapis/google-api-nodejs-client (@​googleapis/androidpublisher)</summary>
### [`v27.0.0`](https://redirect.github.com/googleapis/google-api-nodejs-client/blob/HEAD/CHANGELOG.md#12700-2023-10-11)
[Compare Source](https://redirect.github.com/googleapis/google-api-nodejs-client/compare/v26.0.0...v27.0.0)
##### ⚠ BREAKING CHANGES
- This release has breaking changes.
- **iam:** This release has breaking changes.
- **dataproc:** This release has breaking changes.
- **connectors:** This release has breaking changes.
- **youtube:** This release has breaking changes.
- **vmmigration:** This release has breaking changes.
- **searchads360:** This release has breaking changes.
- **playintegrity:** This release has breaking changes.
- **places:** This release has breaking changes.
- **paymentsresellersubscription:** This release has breaking changes.
- **osconfig:** This release has breaking changes.
- **notebooks:** This release has breaking changes.
- **mybusinessverifications:** This release has breaking changes.
- **gkeonprem:** This release has breaking changes.
- **gkehub:** This release has breaking changes.
- **firestore:** This release has breaking changes.
- **displayvideo:** This release has breaking changes.
- **discoveryengine:** This release has breaking changes.
- **contentwarehouse:** This release has breaking changes.
- **compute:** This release has breaking changes.
- **cloudbilling:** This release has breaking changes.
- **checks:** This release has breaking changes.
- **assuredworkloads:** This release has breaking changes.
- **artifactregistry:** This release has breaking changes.
- **appengine:** This release has breaking changes.
- **analyticsadmin:** This release has breaking changes.
- **aiplatform:** This release has breaking changes.
##### Features
- **accessapproval:** update the API ([3887e5f](3887e5f9be))
- **accesscontextmanager:** update the API ([f18316f](f18316fc9a))
- **admob:** update the API ([d366fa5](d366fa5c15))
- **advisorynotifications:** update the API ([69862b5](69862b5ad3))
- **aiplatform:** update the API ([c1ba635](c1ba635cfa))
- **alertcenter:** update the API ([c323ec5](c323ec5700))
- **analyticsadmin:** update the API ([c212bcf](c212bcf935))
- **androiddeviceprovisioning:** update the API ([7d76542](7d76542084))
- **androidmanagement:** update the API ([a6d4009](a6d4009983))
- **androidpublisher:** update the API ([377819b](377819b2e6))
- **appengine:** update the API ([7150925](71509251f4))
- **artifactregistry:** update the API ([e3ac97a](e3ac97a206))
- **assuredworkloads:** update the API ([c4f607f](c4f607fa7b))
- **batch:** update the API ([6b95651](6b95651b44))
- **beyondcorp:** update the API ([d506eb3](d506eb3fdd))
- **bigquery:** update the API ([55da65e](55da65e7e1))
- **billingbudgets:** update the API ([97aeef6](97aeef6daf))
- **blockchainnodeengine:** update the API ([88285ef](88285ef596))
- **chat:** update the API ([0d9d67d](0d9d67d8e2))
- **checks:** update the API ([6e51323](6e51323554))
- **chromemanagement:** update the API ([f272fb5](f272fb5278))
- **chromepolicy:** update the API ([8ad0e35](8ad0e35a4d))
- **cloudasset:** update the API ([6640f27](6640f27cfe))
- **cloudbilling:** update the API ([249620e](249620e149))
- **cloudchannel:** update the API ([b940b40](b940b403ca))
- **clouddeploy:** update the API ([a732b2c](a732b2ca54))
- **clouddeploy:** update the API ([60775aa](60775aa992))
- **cloudfunctions:** update the API ([86d065d](86d065d7d0))
- **cloudtasks:** update the API ([abf169e](abf169e694))
- **composer:** update the API ([9f5baba](9f5baba8da))
- **composer:** update the API ([5014376](5014376c55))
- **compute:** update the API ([c0d7188](c0d7188676))
- **connectors:** update the API ([edc8822](edc88224be))
- **connectors:** update the API ([aca4b52](aca4b52971))
- **contactcenteraiplatform:** update the API ([d7abdc8](d7abdc8a31))
- **containeranalysis:** update the API ([0533c16](0533c16359))
- **container:** update the API ([5b77c6d](5b77c6d281))
- **content:** update the API ([5b4e734](5b4e734a5c))
- **contentwarehouse:** update the API ([16be148](16be148bb3))
- **datacatalog:** update the API ([0052588](0052588a7d))
- **dataflow:** update the API ([a16fa60](a16fa6024f))
- **dataform:** update the API ([aa38de7](aa38de7ce4))
- **datamigration:** update the API ([4e272d7](4e272d7492))
- **dataplex:** update the API ([1b8b506](1b8b506045))
- **dataproc:** update the API ([64e0c7a](64e0c7a4d0))
- **dataproc:** update the API ([dc84163](dc84163443))
- **datastream:** update the API ([52168de](52168de4af))
- **deploymentmanager:** update the API ([f3ec8ef](f3ec8efabe))
- **dialogflow:** update the API ([c0653d0](c0653d0317))
- **discoveryengine:** update the API ([6cfd107](6cfd10739f))
- **displayvideo:** update the API ([0a7b6d4](0a7b6d46e6))
- **dlp:** update the API ([5925749](5925749d8d))
- **dns:** update the API ([376ebd2](376ebd2f2a))
- **documentai:** update the API ([3b23065](3b230652ca))
- **eventarc:** update the API ([72fc700](72fc70043e))
- **firebaseappcheck:** update the API ([53b090f](53b090fa9c))
- **firebasehosting:** update the API ([64cbaa6](64cbaa6b39))
- **firebasestorage:** update the API ([22bb1f7](22bb1f7f90))
- **firebase:** update the API ([db24c70](db24c70a61))
- **firestore:** update the API ([13d1762](13d176259b))
- **games:** update the API ([30dc810](30dc8101b3))
- **gkehub:** update the API ([9c0ed64](9c0ed647e7))
- **gkehub:** update the API ([5918dbd](5918dbd2d3))
- **gkeonprem:** update the API ([26188f7](26188f73ed))
- **gmailpostmastertools:** update the API ([5dfb9b5](5dfb9b5e6e))
- **gmail:** update the API ([e943c90](e943c90dbb))
- **healthcare:** update the API ([2640490](2640490061))
- **iam:** update the API ([e35cf75](e35cf75e2c))
- **iam:** update the API ([d1e31cc](d1e31cc139))
- **iap:** update the API ([c735eaf](c735eaf4c6))
- **jobs:** update the API ([441febc](441febcb09))
- **logging:** update the API ([c43f8c0](c43f8c0963))
- **manufacturers:** update the API ([2cdbd73](2cdbd73290))
- **memcache:** update the API ([824d0cf](824d0cf5a0))
- **metastore:** update the API ([3a1ae5c](3a1ae5cd56))
- **migrationcenter:** update the API ([a714be5](a714be595b))
- **mybusinessverifications:** update the API ([e51db62](e51db6202b))
- **networkconnectivity:** update the API ([65ba5d2](65ba5d264b))
- **networkmanagement:** update the API ([4943f8a](4943f8a586))
- **networksecurity:** update the API ([7241b06](7241b067b4))
- **networkservices:** update the API ([fe7e04d](fe7e04da77))
- **notebooks:** update the API ([e76ae49](e76ae49809))
- **osconfig:** update the API ([839a3fc](839a3fc0ce))
- **oslogin:** update the API ([81cd87f](81cd87ffe8))
- **paymentsresellersubscription:** update the API ([56dbb81](56dbb8114e))
- **paymentsresellersubscription:** update the API ([31816cb](31816cbcc9))
- **places:** update the API ([096c4a7](096c4a7d4f))
- **playintegrity:** update the API ([7f9fe21](7f9fe21fd3))
- **policysimulator:** update the API ([75d74db](75d74dbbf4))
- **privateca:** update the API ([b9ee77c](b9ee77c2e9))
- **prod_tt_sasportal:** update the API ([db7f407](db7f40708f))
- **prod_tt_sasportal:** update the API ([e774324](e774324d1f))
- **recaptchaenterprise:** update the API ([c7fcfc0](c7fcfc0bec))
- **redis:** update the API ([4902a2d](4902a2dacf))
- regenerate index files ([3be35ec](3be35eceec))
- regenerate index files ([7eb77f5](7eb77f5d70))
- **retail:** update the API ([ba147af](ba147af6e3))
- run the generator ([#​3355](https://redirect.github.com/googleapis/google-api-nodejs-client/issues/3355)) ([5504c86](5504c86fd6))
- **run:** update the API ([8d67594](8d67594b17))
- **run:** update the API ([cf50ff6](cf50ff64bb))
- **sasportal:** update the API ([706a9c6](706a9c6d36))
- **searchads360:** update the API ([62c9a90](62c9a906a6))
- **securitycenter:** update the API ([39b4fe5](39b4fe528c))
- **spanner:** update the API ([3d046d5](3d046d5e61))
- **speech:** update the API ([b1e180b](b1e180bd51))
- **sqladmin:** update the API ([2d1c8c4](2d1c8c4d49))
- **storagetransfer:** update the API ([aedacc9](aedacc9da3))
- **storage:** update the API ([2d54a76](2d54a76c2e))
- **testing:** update the API ([320730e](320730e576))
- **tpu:** update the API ([5cabdfa](5cabdfa1cf))
- **transcoder:** update the API ([bcb1cd5](bcb1cd52a0))
- **verifiedaccess:** update the API ([b6ac861](b6ac861a2a))
- **vision:** update the API ([4e50f7a](4e50f7a822))
- **vmmigration:** update the API ([48fd628](48fd628fae))
- **vmmigration:** update the API ([1d3ba23](1d3ba236d4))
- **workflowexecutions:** update the API ([66d36c2](66d36c2ada))
- **workflows:** update the API ([46b0b2b](46b0b2b33f))
- **workloadmanager:** update the API ([3c3362c](3c3362cb7d))
- **workstations:** update the API ([b8b63ef](b8b63ef6c0))
- **youtube:** update the API ([43c5f61](43c5f612e6))
##### Bug Fixes
- **alloydb:** update the API ([6147b06](6147b06130))
- **analyticsadmin:** update the API ([31df609](31df609d40))
- **analyticsdata:** update the API ([6d2e734](6d2e734ff0))
- **analyticshub:** update the API ([03ce6ef](03ce6efbec))
- **apigeeregistry:** update the API ([5264dcf](5264dcfc04))
- **apigeeregistry:** update the API ([0608613](06086135ba))
- **authorizedbuyersmarketplace:** update the API ([739f4c0](739f4c0e80))
- **batch:** update the API ([2960f5b](2960f5b8b4))
- **bigquerydatatransfer:** update the API ([4a60c8c](4a60c8c831))
- **bigtableadmin:** update the API ([aeac248](aeac248580))
- **binaryauthorization:** update the API ([1e2ed6a](1e2ed6a6d6))
- **calendar:** update the API ([8fdd6c4](8fdd6c400d))
- **certificatemanager:** update the API ([dcb4fd8](dcb4fd82a2))
- **cloudbuild:** update the API ([8d999f5](8d999f52ba))
- **clouderrorreporting:** update the API ([1ec2280](1ec22807b2))
- **cloudscheduler:** update the API ([0ad660b](0ad660ba46))
- **cloudsearch:** update the API ([5f25dae](5f25dae49c))
- **cloudsupport:** update the API ([f37e735](f37e735d7f))
- **contactcenterinsights:** update the API ([8aebb3f](8aebb3fbd9))
- **dataform:** update the API ([1a91de3](1a91de3744))
- **datamigration:** update the API ([4acd892](4acd892b6a))
- **datastore:** update the API ([ee0bd25](ee0bd25a29))
- **deploymentmanager:** update the API ([4c74af6](4c74af69e1))
- **dfareporting:** update the API ([d4124d2](d4124d2165))
- **dlp:** update the API ([5809b2e](5809b2e9cb))
- **domains:** update the API ([ca2ddc0](ca2ddc03f1))
- **drive:** update the API ([ce1bfe0](ce1bfe0b0b))
- **firebasedynamiclinks:** update the API ([f2cd5c4](f2cd5c49ee))
- **firestore:** update the API ([6ff716b](6ff716b72e))
- **gkebackup:** update the API ([e4bcddf](e4bcddf04d))
- **gkeonprem:** update the API ([77c0ea4](77c0ea4977))
- **language:** update the API ([b9c3e49](b9c3e4940a))
- **ml:** update the API ([1253597](12535979be))
- **mybusinessbusinessinformation:** update the API ([fb250ff](fb250ffc72))
- **networksecurity:** update the API ([942415b](942415b372))
- **orgpolicy:** update the API ([b06315a](b06315ac76))
- **playgrouping:** update the API ([a019599](a0195992d1))
- **rapidmigrationassessment:** update the API ([479ceef](479ceefd1f))
- **realtimebidding:** update the API ([64cfc3b](64cfc3ba22))
- **recommender:** update the API ([3e76efd](3e76efde7d))
- **serviceusage:** update the API ([e5db392](e5db392a40))
- **sheets:** update the API ([e11a68c](e11a68c000))
- **tagmanager:** update the API ([958b2be](958b2be95f))
- **vpcaccess:** update the API ([a16c068](a16c06850b))
- **workflowexecutions:** update the API ([122d68b](122d68b6f9))
- **workflows:** update the API ([6c3af7d](6c3af7d5f0))
</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:eyJjcmVhdGVkSW5WZXIiOiIzOS4yNDguNCIsInVwZGF0ZWRJblZlciI6IjM5LjI0OC40IiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
Closes: [BS-3398](https://linear.app/affine-design/issue/BS-3398/实现资源控制器)
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
## Summary by CodeRabbit
- **New Features**
- Introduced a ResourceController for centralized and reactive management of attachment resource states, improving error handling, loading indicators, and UI state resolution for attachments.
- Added public access to resource management utilities via new export paths.
- **Refactor**
- Streamlined attachment state management by replacing manual state tracking with the new ResourceController, simplifying code and enhancing maintainability.
- Updated rendering logic for attachments to use unified state objects for clearer UI feedback.
- Centralized blob URL creation and download state management within the ResourceController.
- **Chores**
- Updated dependencies and internal references to reflect the new resource management approach, ensuring consistency across packages.
<!-- 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 preview mode for code blocks, allowing users to toggle between code and rendered previews (e.g., HTML output) directly within the editor.
- Added a preview toggle button to the code block toolbar for supported languages.
- Enabled dynamic rendering of code block previews using a shared WebContainer, allowing live HTML previews in an embedded iframe.
- Added HTML preview support with loading and error states for enhanced user feedback.
- Integrated the preview feature as a view extension provider for seamless framework support.
- **Bug Fixes**
- Improved toolbar layout and button alignment for a cleaner user interface.
- **Tests**
- Added end-to-end tests to verify the new code block preview functionality and language switching behavior.
- **Chores**
- Updated development server configuration to include enhanced security headers.
- Added a new runtime dependency for WebContainer support.
<!-- 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
- **New Features**
- Introduced a unified loading spinner icon that adapts to light or dark themes automatically.
- **Refactor**
- Streamlined loading icon usage across the app by replacing multiple theme-based icons with a single helper function for consistent and simplified icon management.
- **Chores**
- Removed an unused dependency to improve package management.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Closes: [BS-3379](https://linear.app/affine-design/issue/BS-3379/恢复在-loading-或错误时-attachments-的背景色)
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **Style**
- Updated the background color of attachment cards in loading and error states for a more consistent appearance.
- **Bug Fixes**
- Improved the handling and display of loading and uploading states for attachment cards to better reflect their current status.
- **Chores**
- Added new workspace dependencies and project references to enhance synchronization capabilities across related modules.
<!-- 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 -->
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 -->
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**
- Added the crossorigin attribute to all CSS and JavaScript tags in generated HTML, improving compatibility for cross-origin resource loading.
- **Tests**
- Updated tests to verify the presence of the crossorigin attribute in script tags.
<!-- 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
- **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 -->