Related to: [BS-3559](https://linear.app/affine-design/issue/BS-3559/ui-%E5%9B%BE%E7%89%87-loading-%E5%8F%98%E9%87%8F%E6%9B%B4%E6%96%B0)
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **Style**
- Improved the appearance of image loading indicators by updating background and ring colors for a more consistent visual experience.
- **New Features**
- Added customization options for the loading icon's ring color.
- **Chores**
- Updated the "@toeverything/theme" dependency to version ^1.1.15 across multiple packages for improved consistency and compatibility.
<!-- 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 -->
Close [AI-125](https://linear.app/affine-design/issue/AI-125)
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Added new provider configurations `geminiVertex` and `anthropicVertex` for Google Vertex AI in backend schema, provider classes, and admin config.
- Introduced `GeminiVertexProvider` and `AnthropicVertexProvider` classes supporting Vertex AI models with specific capabilities.
- Expanded model options for transcription prompts with newer Gemini models.
- Re-exported provider modules to include Vertex AI variants.
- **Improvements**
- Extended provider architecture to support separate Vertex AI configurations and models.
- Updated test setup to replace deprecated provider references with new Vertex variants.
- Consolidated environment variables for server testing with a single `SERVER_CONFIG`.
- **Bug Fixes**
- Updated mock models and import references in tests to align with new provider classes.
- **Chores**
- Added `@ai-sdk/google-vertex` dependency for Vertex AI support.
- Updated dependency list to include `@ai-sdk/google-vertex`.
<!-- 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 -->
Closes: [BS-3525](https://linear.app/affine-design/issue/BS-3525/markdown-adapter-紧跟着链接的-footnote-reference-会被识别成链接的一部分)
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Improved handling of footnote references that immediately follow URLs in markdown, ensuring correct spacing and parsing.
- **Bug Fixes**
- Footnote references after URLs are now parsed correctly, preventing formatting issues.
- **Tests**
- Added comprehensive test suites to verify footnote reference preprocessing and markdown conversion.
- **Chores**
- Introduced Vitest as a development dependency and added a dedicated test configuration for the footnote module.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Close [AI-125](https://linear.app/affine-design/issue/AI-125)
What Changed?
- Add `gemini-2.5-flash-preview-04-17` model
- Add `thinkingConfig` provider options
- Add callout syntax highlighting
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Added support for the "Gemini 2.5 Flash" model and updated the "Gemini 2.5 Pro" model to a newer version.
- Enhanced streaming responses to better format reasoning outputs and provide clearer callouts in AI-generated content.
- **Bug Fixes**
- Improved audio transcription prompts in test cases for more accurate and explicit testing.
- **Documentation**
- Expanded citation instructions for AI chat responses, including examples for multiple citations.
- **Chores**
- Updated the "@ai-sdk/google" dependency to a newer version.
<!-- 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 retrieve the system navigation bar height on Android devices.
- **Bug Fixes**
- Removed duplicate internal code to improve stability.
- **Chores**
- Removed the dependency on the edge-to-edge support package and related configuration and code.
- Updated configuration to adjust margins for edge-to-edge layouts.
<!-- 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 platform-specific monitoring integration for Google Cloud Platform (GCP) in multiple services, enabling automated pod monitoring for deployments on GCP.
- **Chores**
- Removed an unused dependency related to Google Cloud monitoring from the backend server package.
- **Refactor**
- Updated internal monitoring implementation by removing a previously used metric reader method for GCP 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
- **Chores**
- Added a new development dependency to improve testing capabilities.
- **Tests**
- Refactored image handling tests to use enhanced HTTP request mocking, improving test reliability 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
- **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 -->
### 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 -->
fix AF-2609
webm container with opus has limited support on Safari. Change to mp4 instead.
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Audio recordings are now saved in MP4 format instead of WebM, improving compatibility with a wider range of devices and applications.
- **Chores**
- Updated dependencies to use MP4 muxing tools in place of WebM.
- Internal audio encoding utilities and references updated to support MP4 container format.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Closes: [BS-2578](https://linear.app/affine-design/issue/BS-2578/优化-footnote-预览的逻辑:支持缓存结果,避免重复-loading)
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Introduced a link preview caching mechanism, enabling faster and more efficient reuse of link preview data across the app.
- Added a feature flag for enabling or disabling link preview cache, configurable through workspace experimental settings.
- Enhanced localization with new entries describing the link preview cache feature.
- **Improvements**
- Updated link preview service architecture for better extensibility and maintainability.
- Improved integration of feature flags throughout chat and rendering components.
- **Bug Fixes**
- Fixed tooltip formatting for footnote URLs.
- **Chores**
- Updated dependencies and localization completeness tracking.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This PR contains the following updates:
| Update | Change |
|---|---|
| lockFileMaintenance | All locks refreshed |
🔧 This Pull Request updates lock files to use the latest dependency versions.
---
### Configuration
📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, only on Monday ( * 0-3 * * 1 ) (UTC), 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.
👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired.
---
- [ ] <!-- 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:eyJjcmVhdGVkSW5WZXIiOiI0MC43LjEiLCJ1cGRhdGVkSW5WZXIiOiI0MC43LjEiLCJ0YXJnZXRCcmFuY2giOiJjYW5hcnkiLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIl19-->
close: BS-3446
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **Refactor**
- Migrated all styling from vanilla-extract to Emotion for improved CSS-in-JS consistency across database, table, and data view components.
- Updated import paths for style modules to reflect the new Emotion-based file naming.
- Removed unused or redundant style exports and updated selector syntax where necessary.
- **Chores**
- Updated dependencies: removed vanilla-extract and added Emotion in relevant package files.
- **Style**
- No visual changes to existing components; all style definitions remain consistent with previous designs.
- **New Features**
- Introduced new reusable CSS classes for data view and table components using Emotion.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
### TL;DR
* Fix the issue of inaccurate content replacement in AI Replace Selection
* Optimize unit Tests utils
### What Changed
1. Fixed the issue of inaccurate content replacement in AI Replace Selection:
- Convert the AI Answer into a Snapshot, then transform it into a sequence of Blocks ready for insertion.
- Invoke the `replaceSelectedTextWithBlocks` command to replace the current selection with blocks (given the complexity of block combinations, this command uses [ts-pattern](https://github.com/gvergnaud/ts-pattern) implementation to ensure compile-time prevention of pattern handling omissions).
2. Optimized unit test assertions for commands, now allowing direct document content comparison using `toEqualDoc`.
```ts
const host = affine`
<affine-page id="page">
<affine-note id="note">
<affine-paragraph id="paragraph-1">Hel<anchor />lo</affine-paragraph>
<affine-paragraph id="paragraph-2">Wor<focus />ld</affine-paragraph>
</affine-note>
</affine-page>
`;
// ....
const expected = affine`
<affine-page id="page">
<affine-note id="note">
<affine-paragraph id="paragraph-1">Hel111</affine-paragraph>
<affine-code id="code"></affine-code>
<affine-paragraph id="paragraph-2">222ld</affine-paragraph>
</affine-note>
</affine-page>
`;
expect(host.doc).toEqualDoc(expected.doc);
```
3. Added support for text cursors in unit test template syntax.
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
> CLOSE BS-3278
- **New Features**
- Introduced the ability to replace selected text in documents with blocks, supporting advanced merging and insertion scenarios for various block types.
- **Bug Fixes**
- Improved handling of text selection and cursor placement in document templates used for testing.
- **Tests**
- Added comprehensive tests for replacing selected text with blocks, including edge cases and complex selection scenarios.
- Enhanced test utilities for document structure comparison and selection handling.
- Updated end-to-end tests to verify correct replacement of selected text via AI-driven actions.
- **Chores**
- Added and updated dependencies to support new features.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
close: BS-3431
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Added "Created By" property type and cell renderer, displaying creator's avatar and name in database blocks.
- Introduced "Created Time" property type and cell renderer, showing formatted creation timestamps.
- **Improvements**
- Enhanced table and Kanban views with improved column and row movement, hiding, and statistics capabilities.
- Streamlined property and row management with unified object handling and reactive signals for better performance and reliability.
- Improved avatar display logic to handle removed or unnamed users gracefully.
- Refactored property and row APIs to consolidate access patterns and support reactive updates.
- Updated icon retrieval and reactive value access for improved UI responsiveness in database and Kanban cells.
- Consolidated property and cell access methods to use "get or create" patterns ensuring consistent data availability.
- Added locking mechanism to stabilize computed signals during locked states.
- Modularized table and Kanban column and row abstractions for better encapsulation and maintainability.
- **Bug Fixes**
- Corrected row and column deletion, movement, and selection behaviors across table and Kanban views.
- Fixed issues with property and row referencing, ensuring consistent handling of identifiers and objects.
- Removed debugging logs and fixed method calls to align with updated APIs.
- **Style**
- Updated and simplified table column header styles for a cleaner appearance.
- **Chores**
- Added `@emotion/css` dependency for styling support.
<!-- 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==-->
This PR contains the following updates:
| Update | Change |
|---|---|
| lockFileMaintenance | All locks refreshed |
🔧 This Pull Request updates lock files to use the latest dependency versions.
---
### Configuration
📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, only on Monday ( * 0-3 * * 1 ) (UTC), 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.
👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired.
---
- [ ] <!-- 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==-->
Close [AI-85](https://linear.app/affine-design/issue/AI-85)
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Enhanced AI chat experience with improved web search integration, including a new "AUTO" mode that allows the AI to search the web only when needed.
- Updated AI model for chat to "o4-mini" for improved performance.
- **Improvements**
- Refined instructions to reduce hallucinations and ensure the AI admits uncertainty when unsure.
- Enhanced streaming responses to display web search queries and results more clearly.
- Updated web search tool modes for more accurate and flexible search behavior.
- Centralized AI provider options and improved tool selection logic for better response quality.
- **Bug Fixes**
- Improved handling of tool calls and reasoning steps in AI chat responses.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
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
- **Chores**
- Updated a backend dependency to the latest version to ensure continued compatibility and improvements. No user-facing changes.
<!-- 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-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 -->