Commit Graph

422 Commits

Author SHA1 Message Date
Saul-Mirone
f762797772 refactor(editor): move shape toolbar config and components to its package (#11082) 2025-03-21 16:47:39 +00:00
Saul-Mirone
6777c16683 feat(editor): edgeless toolbar widget package (#11064) 2025-03-21 11:45:32 +00:00
Saul-Mirone
8109c718c7 feat(editor): gfx shape package (#11060) 2025-03-21 06:13:11 +00:00
Saul-Mirone
e50d09db50 feat(editor): latex inline package (#11051) 2025-03-21 01:38:08 +00:00
Saul-Mirone
57388e4cf7 feat(editor): footnote inline package (#11049) 2025-03-20 16:18:22 +00:00
Saul-Mirone
e5e429e7b2 feat(editor): add inline packages (#11048) 2025-03-20 13:47:35 +00:00
pengx17
fad49bb070 feat(editor): audio block (#10947)
AudioMedia entity for loading & controlling a single audio media
AudioMediaManagerService: Global audio state synchronization across tabs
AudioAttachmentService + AudioAttachmentBlock for manipulating AttachmentBlock in affine - e.g., filling transcription (using mock endpoint for now)
Added AudioBlock + AudioPlayer for rendering audio block in affine (new transcription block whose renderer is provided in affine)

fix AF-2292
fix AF-2337
2025-03-20 12:46:15 +00:00
Saul-Mirone
92d76ba571 refactor(editor): merge inline to std (#11025) 2025-03-20 05:46:56 +00:00
Saul-Mirone
75580e881b refactor(editor): move gfx frame title to widget (#11021) 2025-03-20 04:10:56 +00:00
Saul-Mirone
258c70cf07 refactor(editor): store should not rely on inline (#11017) 2025-03-20 01:33:29 +00:00
forehalo
f889886b31 refactor(server): e2e utilities (#11000) 2025-03-19 17:00:20 +00:00
forehalo
21c4a29f55 refactor(server): mail service (#10934) 2025-03-19 17:00:19 +00:00
fundon
d8567e669a refactor(editor): edgeless bookmark toolbar config extension (#10711) 2025-03-19 02:24:26 +00:00
fundon
251d1d8782 refactor(editor): edgeless attacment toolbar config extension (#10710) 2025-03-19 00:52:22 +00:00
pengx17
a016630a82 feat(electron): create recording through tray (#10526)
- added tray menu for controlling recording status
- recording watcher for monitoring system audio input events
2025-03-18 04:12:30 +00:00
Saul-Mirone
1d04438049 docs(editor): scaffolding docs generator (#10925) 2025-03-17 12:51:08 +00:00
L-Sun
d80f1e8067 feat(editor): insert a blank frame slash menu action (#10899)
Close [BS-2517](https://linear.app/affine-design/issue/BS-2517/%E6%B7%BB%E5%8A%A0frame%E5%85%A5%E5%8F%A3)

### What changes:
- add a insert blank frame action to slash menu
- move `EdgelessFrameManager` and `FrameOverlay` extensions to `FrameBlockSpec`
- make `FrameBlockSpec` as a part of `CommonBlockSpecs` such that we can use `EdgelessFrameManager` to create a frame more easily

https://github.com/user-attachments/assets/ddff5866-8933-4ce5-aaf4-873661407ee4
2025-03-17 10:32:55 +00:00
Saul-Mirone
d5a5df5e49 test(editor): move blocksuite test to tests folder (#10917) 2025-03-17 06:40:25 +00:00
EYHN
05200ad7b7 feat(nbstore): add blob sync storage (#10752) 2025-03-14 18:05:54 +08:00
Saul-Mirone
05f3069efd feat(editor): add i18n support for block meta display (#10831) 2025-03-13 11:28:56 +00:00
fengmk2
867ae7933f refactor(server): improve oauth login flow (#10648)
close CLOUD-145
2025-03-12 15:27:36 +08:00
doodlewind
ad36a9de35 refactor(editor): add gfx turbo renderer package (#10745)
The `ViewportTurboRendererExtension` is now extracted from `@blocksuite/affine-shared` to `@blocksuite/affine-gfx-turbo-renderer` with minimal dependencies, mirroring the gfx text package in #10378.
2025-03-11 03:21:52 +00:00
L-Sun
c13d4c575f chore(editor): update slash menu tooltips (#10746)
Close [BS-2676](https://linear.app/affine-design/issue/BS-2676/loom入口增加简介) [BS-2767](https://linear.app/affine-design/issue/BS-2767/table的tooltip需要更新,现在用的是database的)
2025-03-10 12:38:59 +00:00
Saul-Mirone
cac05e720a refactor(editor): gfx text package (#10738) 2025-03-10 10:25:21 +00:00
Saul-Mirone
12bc142809 refactor(editor): remove blocks package (#10708) 2025-03-09 05:44:26 +00:00
Saul-Mirone
8aedef0a36 chore(editor): reorg packages (#10702) 2025-03-08 12:00:34 +08:00
L-Sun
05a6845962 refactor(editor): data view slash menu config extension (#10684) 2025-03-07 15:22:41 +00:00
L-Sun
46466e2c3a refactor(editor): code block slash menu config extension (#10683) 2025-03-07 15:22:41 +00:00
L-Sun
83b05aca4d refactor(editor): surface-ref slash menu config extension (#10681) 2025-03-07 09:05:04 +00:00
L-Sun
8d9746e0cc refactor(editor): embed slash menu config extension (#10679) 2025-03-07 08:21:19 +00:00
L-Sun
37a13032ed refactor(editor): note slash menu config extension (#10678) 2025-03-07 08:21:18 +00:00
L-Sun
4be80d87ff refactor(editor): latex slash menu config extension (#10677) 2025-03-07 08:21:18 +00:00
L-Sun
ea20751b9b refactor(editor): attachment slash menu config extension (#10676) 2025-03-07 05:48:41 +00:00
L-Sun
34e777e043 refactor(editor): bookmark slash menu config extension (#10675) 2025-03-07 05:48:40 +00:00
L-Sun
4e80ecd591 refactor(editor): image slash menu config extension (#10674) 2025-03-07 05:48:40 +00:00
L-Sun
66ad87c84a refactor(editor): table slash menu config extension (#10673) 2025-03-07 05:48:39 +00:00
L-Sun
0a234fa263 refactor(editor): callout slash menu config extension (#10672) 2025-03-07 04:24:09 +00:00
Saul-Mirone
fe5f0f62ec feat(editor): rich text package (#10689)
This PR performs a significant architectural refactoring by extracting rich text functionality into a dedicated package. Here are the key changes:

1. **New Package Creation**
- Created a new package `@blocksuite/affine-rich-text` to house rich text related functionality
- Moved rich text components, utilities, and types from `@blocksuite/affine-components` to this new package

2. **Dependency Updates**
- Updated multiple block packages to include the new `@blocksuite/affine-rich-text` as a direct dependency:
  - block-callout
  - block-code
  - block-database
  - block-edgeless-text
  - block-embed
  - block-list
  - block-note
  - block-paragraph

3. **Import Path Updates**
- Refactored all imports that previously referenced rich text functionality from `@blocksuite/affine-components/rich-text` to now use `@blocksuite/affine-rich-text`
- Updated imports for components like:
  - DefaultInlineManagerExtension
  - RichText types and interfaces
  - Text manipulation utilities (focusTextModel, textKeymap, etc.)
  - Reference node components and providers

4. **Build Configuration Updates**
- Added references to the new rich text package in the `tsconfig.json` files of all affected packages
- Maintained workspace dependencies using the `workspace:*` version specifier

The primary motivation appears to be:
1. Better separation of concerns by isolating rich text functionality
2. Improved maintainability through more modular package structure
3. Clearer dependencies between packages
4. Potential for better tree-shaking and bundle optimization

This is primarily an architectural improvement that should make the codebase more maintainable and better organized.
2025-03-07 04:08:47 +00:00
L-Sun
43ce609cba refactor(editor): database slash menu config extension (#10670) 2025-03-07 02:50:27 +00:00
L-Sun
62d8c0c7cb refactor(editor): adjust folder structure for slash menu extension (#10588)
Close [BS-2743](https://linear.app/affine-design/issue/BS-2743/slash-menu插件化:调整文件夹结构)

This PR move slash menu from `affine-root-block` to `widget-affine-slash-menu`, and make it as a `WidgetViewExtension`
2025-03-06 16:12:06 +00:00
forehalo
e02fb4fa94 refactor(core): standardize frontend error handling (#10667) 2025-03-06 13:10:18 +00:00
fundon
93920f9895 fix(editor): circular dependencies (#10661)
Closes: [BS-2766](https://linear.app/affine-design/issue/BS-2766/把-converttodatabase-移到-root-block-中,避免循环依赖)
2025-03-06 09:41:01 +00:00
fundon
ec9bd1f383 feat(editor): add toolbar registry extension (#9572)
### What's Changed!

#### Added
Manage various types of toolbars uniformly in one place.

* `affine-toolbar-widget`
* `ToolbarRegistryExtension`

The toolbar currently supports and handles several scenarios:

1.  Select blocks: `BlockSelection`
2. Select text: `TextSelection` or `NativeSelection`
3. Hover a link: `affine-link` and `affine-reference`

#### Removed
Remove redundant toolbar implementations.

* `attachment` toolbar
* `bookmark` toolbar
* `embed` toolbar
* `formatting` toolbar
* `affine-link` toolbar
* `affine-reference` toolbar

### How to migrate?

Here is an example that can help us migrate some unrefactored toolbars:

Check out the more detailed types of [`ToolbarModuleConfig`](c178debf2d/blocksuite/affine/shared/src/services/toolbar-service/config.ts).

1.  Add toolbar configuration file to a block type, such as bookmark block: [`config.ts`](c178debf2d/blocksuite/affine/block-bookmark/src/configs/toolbar.ts)

```ts
export const builtinToolbarConfig = {
  actions: [
    {
      id: 'a.preview',
      content(ctx) {
        const model = ctx.getCurrentModelBy(BlockSelection, BookmarkBlockModel);
        if (!model) return null;

        const { url } = model;

        return html`<affine-link-preview .url=${url}></affine-link-preview>`;
      },
    },
    {
      id: 'b.conversions',
      actions: [
        {
          id: 'inline',
          label: 'Inline view',
          run(ctx) {
          },
        },
        {
          id: 'card',
          label: 'Card view',
          disabled: true,
        },
        {
          id: 'embed',
          label: 'Embed view',
          disabled(ctx) {
          },
          run(ctx) {
          },
        },
      ],
      content(ctx) {
      },
    } satisfies ToolbarActionGroup<ToolbarAction>,
    {
      id: 'c.style',
      actions: [
        {
          id: 'horizontal',
          label: 'Large horizontal style',
        },
        {
          id: 'list',
          label: 'Small horizontal style',
        },
      ],
      content(ctx) {
      },
    } satisfies ToolbarActionGroup<ToolbarAction>,
    {
      id: 'd.caption',
      tooltip: 'Caption',
      icon: CaptionIcon(),
      run(ctx) {
      },
    },
    {
      placement: ActionPlacement.More,
      id: 'a.clipboard',
      actions: [
        {
          id: 'copy',
          label: 'Copy',
          icon: CopyIcon(),
          run(ctx) {
          },
        },
        {
          id: 'duplicate',
          label: 'Duplicate',
          icon: DuplicateIcon(),
          run(ctx) {
          },
        },
      ],
    },
    {
      placement: ActionPlacement.More,
      id: 'b.refresh',
      label: 'Reload',
      icon: ResetIcon(),
      run(ctx) {
      },
    },
    {
      placement: ActionPlacement.More,
      id: 'c.delete',
      label: 'Delete',
      icon: DeleteIcon(),
      variant: 'destructive',
      run(ctx) {
      },
    },
  ],
} as const satisfies ToolbarModuleConfig;
```

2. Add configuration extension to a block spec: [bookmark's spec](c178debf2d/blocksuite/affine/block-bookmark/src/bookmark-spec.ts)

```ts
const flavour = BookmarkBlockSchema.model.flavour;

export const BookmarkBlockSpec: ExtensionType[] = [
  ...,
  ToolbarModuleExtension({
    id: BlockFlavourIdentifier(flavour),
    config: builtinToolbarConfig,
  }),
].flat();
```

3. If the bock type already has a toolbar configuration built in, we can customize it in the following ways:

Check out the [editor's config](c178debf2d/packages/frontend/core/src/blocksuite/extensions/editor-config/index.ts (L51C4-L54C8)) file.

```ts
// Defines a toolbar configuration for the bookmark block type
const customBookmarkToolbarConfig = {
  actions: [
    ...
  ]
} as const satisfies ToolbarModuleConfig;

// Adds it into the editor's config
 ToolbarModuleExtension({
    id: BlockFlavourIdentifier('custom:affine:bookmark'),
    config: customBookmarkToolbarConfig,
 }),
```

4. If we want to extend the global:

```ts
// Defines a toolbar configuration
const customWildcardToolbarConfig = {
  actions: [
    ...
  ]
} as const satisfies ToolbarModuleConfig;

// Adds it into the editor's config
 ToolbarModuleExtension({
    id: BlockFlavourIdentifier('custom:affine:*'),
    config: customWildcardToolbarConfig,
 }),
```

Currently, only most toolbars in page mode have been refactored. Next is edgeless mode.
2025-03-06 06:46:03 +00:00
Flrande
bd62634a76 feat(editor): add callout block (#10563)
- Add `CalloutBlockModel `
- Implement `CalloutBlockComponent `
- Integrate with slash menu (/)
2025-03-05 09:28:51 +00:00
renovate
54bf4b05f4 chore: bump up copy-webpack-plugin version to v13 (#10530)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [copy-webpack-plugin](https://redirect.github.com/webpack-contrib/copy-webpack-plugin) | [`^12.0.2` -> `^13.0.0`](https://renovatebot.com/diffs/npm/copy-webpack-plugin/12.0.2/13.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/copy-webpack-plugin/13.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/copy-webpack-plugin/13.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/copy-webpack-plugin/12.0.2/13.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/copy-webpack-plugin/12.0.2/13.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>webpack-contrib/copy-webpack-plugin (copy-webpack-plugin)</summary>

### [`v13.0.0`](https://redirect.github.com/webpack-contrib/copy-webpack-plugin/blob/HEAD/CHANGELOG.md#1300-2025-02-27)

[Compare Source](https://redirect.github.com/webpack-contrib/copy-webpack-plugin/compare/v12.0.2...v13.0.0)

##### ⚠ BREAKING CHANGES

-   switch from `globby` and `fast-glob` to `tinyglobby` ([#&#8203;795](https://redirect.github.com/webpack-contrib/copy-webpack-plugin/issues/795)) ([19fd937](19fd937705))

For more information please visit [`tinyglobby`](https://redirect.github.com/SuperchupuDev/tinyglobby).

The breaking change only affects the developer who used these options - [`gitignore`](https://redirect.github.com/sindresorhus/globby#gitignore) and [`ignoreFiles`](https://redirect.github.com/sindresorhus/globby#gitignore) in the `globOptions` option.

Please migrate to the [`ignore`](https://redirect.github.com/SuperchupuDev/tinyglobby#options) option.

##### Bug Fixes

-   concurrency option is limited to files now ([#&#8203;796](https://redirect.github.com/webpack-contrib/copy-webpack-plugin/issues/796)) ([d42469c](d42469cfdc))
-   the order of patterns provided by the developer is respected

##### [12.0.2](https://redirect.github.com/webpack-contrib/copy-webpack-plugin/compare/v12.0.1...v12.0.2) (2024-01-17)

##### Bug Fixes

-   improve perf ([#&#8203;764](https://redirect.github.com/webpack-contrib/copy-webpack-plugin/issues/764)) ([a7379a9](a7379a9907))

##### [12.0.1](https://redirect.github.com/webpack-contrib/copy-webpack-plugin/compare/v12.0.0...v12.0.1) (2024-01-11)

##### Bug Fixes

-   improve perf ([#&#8203;760](https://redirect.github.com/webpack-contrib/copy-webpack-plugin/issues/760)) ([55036ab](55036ab503))

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNzYuMiIsInVwZGF0ZWRJblZlciI6IjM5LjE3Ni4yIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
2025-02-28 14:48:52 +00:00
renovate
04b1239a25 chore: bump up @googleapis/androidpublisher version to v24 (#10518)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@googleapis/androidpublisher](https://redirect.github.com/googleapis/google-api-nodejs-client) | [`^22.0.0` -> `^24.0.0`](https://renovatebot.com/diffs/npm/@googleapis%2fandroidpublisher/22.0.0/24.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@googleapis%2fandroidpublisher/24.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@googleapis%2fandroidpublisher/24.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@googleapis%2fandroidpublisher/22.0.0/24.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@googleapis%2fandroidpublisher/22.0.0/24.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>googleapis/google-api-nodejs-client (@&#8203;googleapis/androidpublisher)</summary>

### [`v24.0.0`](https://redirect.github.com/googleapis/google-api-nodejs-client/blob/HEAD/CHANGELOG.md#12400-2023-08-09)

##### ⚠ BREAKING CHANGES

-   **youtube:** This release has breaking changes.
-   **workloadmanager:** This release has breaking changes.
-   **smartdevicemanagement:** This release has breaking changes.
-   **serviceusage:** This release has breaking changes.
-   **servicedirectory:** This release has breaking changes.
-   **retail:** This release has breaking changes.
-   **networkconnectivity:** This release has breaking changes.
-   **monitoring:** This release has breaking changes.
-   **gkeonprem:** This release has breaking changes.
-   **gkehub:** This release has breaking changes.
-   **contentwarehouse:** This release has breaking changes.
-   **contactcenteraiplatform:** This release has breaking changes.
-   **compute:** This release has breaking changes.
-   **checks:** This release has breaking changes.
-   **bigtableadmin:** This release has breaking changes.
-   **bigquery:** This release has breaking changes.
-   **assuredworkloads:** This release has breaking changes.
-   **androidmanagement:** This release has breaking changes.
-   **analyticsadmin:** This release has breaking changes.
-   migate to Node 14

##### Features

-   **admin:** update the API ([1bc7f53](1bc7f53857))
-   **analyticsadmin:** update the API ([8f479e1](8f479e1550))
-   **analyticshub:** update the API ([427f865](427f8657bc))
-   **androidmanagement:** update the API ([d885722](d885722fa7))
-   **artifactregistry:** update the API ([d70a33e](d70a33e42e))
-   **assuredworkloads:** update the API ([321cff7](321cff70dc))
-   **beyondcorp:** update the API ([ad95808](ad95808585))
-   **bigquerydatatransfer:** update the API ([b290e4a](b290e4a24d))
-   **bigquery:** update the API ([3a1ca66](3a1ca661f4))
-   **bigtableadmin:** update the API ([4f1fb0c](4f1fb0cac0))
-   **chat:** update the API ([c594a3b](c594a3b012))
-   **checks:** update the API ([b9c4657](b9c46572eb))
-   **cloudbuild:** update the API ([1d791a8](1d791a8bc5))
-   **clouddeploy:** update the API ([c733347](c7333472fd))
-   **cloudfunctions:** update the API ([0255d75](0255d75e4b))
-   **compute:** update the API ([0237e76](0237e76d5b))
-   **connectors:** update the API ([cc40ccb](cc40ccbdeb))
-   **contactcenteraiplatform:** update the API ([6778c8d](6778c8ddfa))
-   **containeranalysis:** update the API ([a74b5e3](a74b5e3e99))
-   **container:** update the API ([1f06a76](1f06a76ec8))
-   **content:** update the API ([b5af676](b5af676bbb))
-   **contentwarehouse:** update the API ([ac9b754](ac9b7543ce))
-   **datacatalog:** update the API ([747a4af](747a4af6ff))
-   **dataflow:** update the API ([a62940f](a62940fdc1))
-   **dataform:** update the API ([d1a0a72](d1a0a72df8))
-   **datamigration:** update the API ([5037d65](5037d6562b))
-   **dataplex:** update the API ([ef7bc25](ef7bc250fb))
-   **dataproc:** update the API ([1c699db](1c699db9ce))
-   **datastore:** update the API ([80a30a0](80a30a04e2))
-   **datastream:** update the API ([2c1c784](2c1c784b89))
-   **dialogflow:** update the API ([bac62ef](bac62ef9ff))
-   **discoveryengine:** update the API ([d8debb8](d8debb8863))
-   **discovery:** update the API ([c82eebd](c82eebd5f1))
-   **displayvideo:** update the API ([bbc4d65](bbc4d65427))
-   **documentai:** update the API ([8ac40a0](8ac40a004e))
-   **drivelabels:** update the API ([5ef5d03](5ef5d030b1))
-   **drive:** update the API ([2432651](243265177f))
-   **firebaseappcheck:** update the API ([7c4888c](7c4888c182))
-   **firebase:** update the API ([fdafcaa](fdafcaa969))
-   **firestore:** update the API ([7a14283](7a14283031))
-   **games:** update the API ([55fed7d](55fed7d4ec))
-   **gkebackup:** update the API ([8d1ac26](8d1ac26eb6))
-   **gkehub:** update the API ([81d36c9](81d36c9368))
-   **gkeonprem:** update the API ([7412e91](7412e91ccd))
-   **healthcare:** update the API ([1d0354c](1d0354c855))
-   **migrationcenter:** update the API ([f4cb381](f4cb38184d))
-   **monitoring:** update the API ([f5bf72c](f5bf72c5a7))
-   **networkconnectivity:** update the API ([23894c5](23894c5f96))
-   **networksecurity:** update the API ([d9f4f91](d9f4f9174f))
-   **notebooks:** update the API ([9498d86](9498d86aaf))
-   **ondemandscanning:** update the API ([0ec83f3](0ec83f316b))
-   **osconfig:** update the API ([e1ca8d0](e1ca8d031e))
-   **oslogin:** update the API ([cf32530](cf32530418))
-   **policysimulator:** update the API ([7c67951](7c6795150e))
-   **pubsub:** update the API ([27c5439](27c5439336))
-   regenerate index files ([7e6a0e5](7e6a0e582b))
-   **retail:** update the API ([4dcd52b](4dcd52b6a7))
-   **securitycenter:** update the API ([82cf038](82cf0380c5))
-   **serviceconsumermanagement:** update the API ([da52b7e](da52b7ef38))
-   **servicecontrol:** update the API ([d246968](d24696820f))
-   **servicedirectory:** update the API ([70389d9](70389d96ea))
-   **servicemanagement:** update the API ([6fdca08](6fdca087b3))
-   **servicenetworking:** update the API ([d4784d0](d4784d07dd))
-   **serviceusage:** update the API ([cf72cfd](cf72cfd02b))
-   **smartdevicemanagement:** update the API ([cc5c86e](cc5c86e758))
-   **sqladmin:** update the API ([0c9f7b6](0c9f7b666d))
-   **tagmanager:** update the API ([42c3b97](42c3b97d78))
-   **toolresults:** update the API ([d07c878](d07c8782d3))
-   **tpu:** update the API ([6109722](61097227dc))
-   **trafficdirector:** update the API ([d07ac95](d07ac95641))
-   **vault:** update the API ([e1d2dc4](e1d2dc4ca3))
-   **verifiedaccess:** update the API ([d8e2234](d8e22343e2))
-   **videointelligence:** update the API ([158ae35](158ae35e73))
-   **vmmigration:** update the API ([3adbd55](3adbd5557e))
-   **workloadmanager:** update the API ([2f089aa](2f089aa056))
-   **youtube:** update the API ([83aac2f](83aac2f393))

##### Bug Fixes

-   **abusiveexperiencereport:** update the API ([51e5811](51e581179d))
-   **acceleratedmobilepageurl:** update the API ([a6a2a06](a6a2a06ff1))
-   **accessapproval:** update the API ([5194181](519418151e))
-   **accesscontextmanager:** update the API ([28aebba](28aebba030))
-   **acmedns:** update the API ([c6b1bcb](c6b1bcb8c3))
-   add headers to tests ([d88a219](d88a2193ee))
-   **adexchangebuyer2:** update the API ([436e422](436e422f45))
-   **adexchangebuyer:** update the API ([de73406](de73406cfe))
-   **adexperiencereport:** update the API ([3363255](3363255135))
-   **admob:** update the API ([d249550](d249550bd5))
-   **adsensehost:** update the API ([0a088ff](0a088ff891))
-   **adsense:** update the API ([e1f10f6](e1f10f6ecf))
-   **advisorynotifications:** update the API ([d8350ff](d8350ff286))
-   **aiplatform:** update the API ([7feb2e8](7feb2e8bf0))
-   **alertcenter:** update the API ([a073124](a07312469e))
-   **analyticsdata:** update the API ([43bedd1](43bedd114a))
-   **analyticsreporting:** update the API ([2d68b5a](2d68b5aa54))
-   **analytics:** update the API ([64c4b07](64c4b07238))
-   **androiddeviceprovisioning:** update the API ([ba02075](ba02075615))
-   **androidenterprise:** update the API ([93f7c0c](93f7c0c999))
-   **androidpublisher:** update the API ([8d35576](8d35576047))
-   **apigateway:** update the API ([fc58d33](fc58d331a6))
-   **apigeeregistry:** update the API ([b57542e](b57542e40b))
-   **apikeys:** update the API ([18e475b](18e475be06))
-   **appengine:** update the API ([67a3448](67a3448d66))
-   **appsactivity:** update the API ([f8ba6ee](f8ba6ee70c))
-   **area120tables:** update the API ([6ae8d8d](6ae8d8d8be))
-   **authorizedbuyersmarketplace:** update the API ([61d943b](61d943be06))
-   **baremetalsolution:** update the API ([269dae8](269dae821f))
-   **batch:** update the API ([7aa7cc7](7aa7cc702d))
-   **bigqueryconnection:** update the API ([bb288b1](bb288b1195))
-   **bigqueryreservation:** update the API ([4e77b1d](4e77b1d162))
-   **billingbudgets:** update the API ([0f799e6](0f799e65a5))
-   **binaryauthorization:** update the API ([deb6c10](deb6c10db6))
-   **blockchainnodeengine:** update the API ([b6bd10a](b6bd10a35c))
-   **blogger:** update the API ([975da3e](975da3e0ed))
-   **books:** update the API ([4bef344](4bef344a07))
-   **businessprofileperformance:** update the API ([5b313f4](5b313f4920))
-   **calendar:** update the API ([006efbc](006efbc7fa))
-   **certificatemanager:** update the API ([7d91857](7d91857b20))
-   **chromemanagement:** update the API ([fd29c85](fd29c85f37))
-   **chromepolicy:** update the API ([f51e0db](f51e0db2dc))
-   **chromeuxreport:** update the API ([fd7db9e](fd7db9edc4))
-   **civicinfo:** update the API ([a1f55b2](a1f55b245d))
-   **classroom:** update the API ([7603333](7603333575))
-   **cloudasset:** update the API ([1ffdfc2](1ffdfc2b30))
-   **cloudbilling:** update the API ([46cbf0e](46cbf0ef91))
-   **cloudchannel:** update the API ([e563d83](e563d832be))
-   **clouddebugger:** update the API ([faad469](faad4698e5))
-   **clouderrorreporting:** update the API ([afa4dec](afa4dec030))
-   **cloudidentity:** update the API ([2610c07](2610c07173))
-   **cloudiot:** update the API ([49105a6](49105a65ea))
-   **cloudkms:** update the API ([208f1da](208f1daac6))
-   **cloudprofiler:** update the API ([25cdd90](25cdd90c33))
-   **cloudresourcemanager:** update the API ([493ac8c](493ac8ce90))
-   **cloudscheduler:** update the API ([58070d7](58070d75a2))
-   **cloudsearch:** update the API ([d732a80](d732a80357))
-   **cloudshell:** update the API ([f098eb8](f098eb8765))
-   **cloudsupport:** update the API ([16514b9](16514b97fc))
-   **cloudtasks:** update the API ([12a7fe1](12a7fe1b93))
-   **cloudtrace:** update the API ([85adc52](85adc52814))
-   **composer:** update the API ([746d876](746d876c78))
-   **contactcenterinsights:** update the API ([03a34b1](03a34b14b6))
-   **customsearch:** update the API ([13ef993](13ef993800))
-   **datafusion:** update the API ([d74fb78](d74fb78629))
-   **datalabeling:** update the API ([ed7e0cb](ed7e0cb989))
-   **datalineage:** update the API ([7be88ab](7be88abd11))
-   **datapipelines:** update the API ([68131e2](68131e2960))
-   **deploymentmanager:** update the API ([7a36c72](7a36c726f7))
-   **dfareporting:** update the API ([f9c9934](f9c9934688))
-   **digitalassetlinks:** update the API ([ef3f085](ef3f0859be))
-   **dlp:** update the API ([75eb667](75eb6671c3))
-   **dns:** update the API ([6e63b36](6e63b36afb))
-   **docs:** update the API ([9cdab2d](9cdab2d96b))
-   **domainsrdap:** update the API ([13b01b1](13b01b1767))
-   **domains:** update the API ([884519b](884519bf3a))
-   **doubleclickbidmanager:** update the API ([73d0bed](73d0bedb16))
-   **doubleclicksearch:** update the API ([fa8cb1f](fa8cb1f4aa))
-   **driveactivity:** update the API ([13487f9](13487f9ce2))
-   **essentialcontacts:** update the API ([5fab60a](5fab60a961))
-   **eventarc:** update the API ([d615c48](d615c48812))
-   **factchecktools:** update the API ([6f372f1](6f372f19cc))
-   **fcmdata:** update the API ([3b19295](3b192956b2))
-   **fcm:** update the API ([e099c42](e099c42993))
-   **file:** update the API ([9bbf034](9bbf0348a0))
-   **firebaseappdistribution:** update the API ([8da0eb4](8da0eb460f))
-   **firebasedatabase:** update the API ([4032b62](4032b62921))
-   **firebasedynamiclinks:** update the API ([9d96aea](9d96aeafe1))
-   **firebasehosting:** update the API ([c23f76b](c23f76bf5e))
-   **firebaseml:** update the API ([048c48e](048c48e88b))
-   **firebaserules:** update the API ([5e24b10](5e24b105f7))
-   **firebasestorage:** update the API ([ea95e22](ea95e22fb2))
-   **fitness:** update the API ([7c544ff](7c544ffc24))
-   **forms:** update the API ([8ba614a](8ba614a2aa))
-   **gamesConfiguration:** update the API ([8d46262](8d46262831))
-   **gameservices:** update the API ([900a2fa](900a2fac5c))
-   **gamesManagement:** update the API ([7997150](799715027a))
-   **genomics:** update the API ([c64bc84](c64bc848cb))
-   **gmailpostmastertools:** update the API ([3b25276](3b25276be0))
-   **gmail:** update the API ([6ee8730](6ee873005b))
-   **groupsmigration:** update the API ([e0c396e](e0c396e9d0))
-   **groupssettings:** update the API ([8400a0e](8400a0e998))
-   **homegraph:** update the API ([c77f44b](c77f44b726))
-   **iamcredentials:** update the API ([b806bd9](b806bd9fb9))
-   **iam:** update the API ([6ad470f](6ad470ffbb))
-   **iap:** update the API ([8b998a0](8b998a0914))
-   **ideahub:** update the API ([1540d50](1540d50df9))
-   **identitytoolkit:** update the API ([4d7a874](4d7a874025))
-   **ids:** update the API ([428dc29](428dc29375))
-   **indexing:** update the API ([782806a](782806a470))
-   **integrations:** update the API ([96dd8fd](96dd8fd2c1))
-   **jobs:** update the API ([10826fa](10826fa6de))
-   **kgsearch:** update the API ([9cee192](9cee192c08))
-   **kmsinventory:** update the API ([9492458](9492458165))
-   **language:** update the API ([585690a](585690a033))
-   **libraryagent:** update the API ([9251716](9251716a73))
-   **licensing:** update the API ([c5271b5](c5271b559e))
-   **lifesciences:** update the API ([145d7ce](145d7ce4d4))
-   **localservices:** update the API ([db5b627](db5b6271a4))
-   **logging:** update the API ([df73435](df73435d7d))
-   **managedidentities:** update the API ([1814dfa](1814dfa9e3))
-   **manufacturers:** update the API ([c6c1398](c6c1398806))
-   **memcache:** update the API ([05013bb](05013bb4d2))
-   **metastore:** update the API ([45b0b5d](45b0b5d84f))
-   **ml:** update the API ([9e1be4a](9e1be4aed4))
-   **mybusinessaccountmanagement:** update the API ([6bc90e9](6bc90e9575))
-   **mybusinessbusinesscalls:** update the API ([13ec9e0](13ec9e001a))
-   **mybusinessbusinessinformation:** update the API ([565b3fa](565b3fa86b))
-   **mybusinesslodging:** update the API ([006bd5a](006bd5a42d))
-   **mybusinessnotifications:** update the API ([78e33ee](78e33ee568))
-   **mybusinessplaceactions:** update the API ([bc8e5c7](bc8e5c7259))
-   **mybusinessqanda:** update the API ([0ca91b1](0ca91b1e04))
-   **mybusinessverifications:** update the API ([d5de2b9](d5de2b9692))
-   **networkmanagement:** update the API ([533642b](533642ba85))
-   **networkservices:** update the API ([8133c74](8133c7471e))
-   **oauth2:** update the API ([5097e00](5097e00e9b))
-   **orgpolicy:** update the API ([4f1d852](4f1d85203a))
-   **pagespeedonline:** update the API ([fb574b4](fb574b4740))
-   **paymentsresellersubscription:** update the API ([ecff656](ecff6566f2))
-   **people:** update the API ([abebf9f](abebf9f738))
-   **places:** update the API ([1582524](1582524f23))
-   **playablelocations:** update the API ([711c349](711c349182))
-   **playcustomapp:** update the API ([d96f5b2](d96f5b2af3))
-   **playdeveloperreporting:** update the API ([e05bcaf](e05bcaf6c0))
-   **playintegrity:** update the API ([7c9edd3](7c9edd37f9))
-   **plus:** update the API ([ecac7a8](ecac7a88cd))
-   **policyanalyzer:** update the API ([98148bf](98148bf5d9))
-   **policytroubleshooter:** update the API ([36a5273](36a52733f6))
-   **poly:** update the API ([807484d](807484d57a))
-   **privateca:** update the API ([b654769](b654769dd2))
-   **prod_tt_sasportal:** update the API ([b8c3705](b8c3705040))
-   **publicca:** update the API ([f3361e6](f3361e6e1d))
-   **pubsublite:** update the API ([87e148d](87e148d025))
-   **readerrevenuesubscriptionlinking:** update the API ([6eb57e9](6eb57e9d2f))
-   **realtimebidding:** update the API ([dbcfad2](dbcfad26ca))
-   **recaptchaenterprise:** update the API ([3af6e62](3af6e62c11))
-   **recommendationengine:** update the API ([b5323d8](b5323d877e))
-   **recommender:** update the API ([bf6eed9](bf6eed9745))
-   **redis:** update the API ([6879c13](6879c133e0))
-   **remotebuildexecution:** update the API ([911cd0a](911cd0a68e))
-   **reseller:** update the API ([e7ec5d3](e7ec5d33b9))
-   **resourcesettings:** update the API ([c2c0c9e](c2c0c9ecd6))
-   **runtimeconfig:** update the API ([7866c3a](7866c3a9b9))
-   **run:** update the API ([2ed76fe](2ed76fe355))
-   **safebrowsing:** update the API ([fe23d83](fe23d83559))
-   **sasportal:** update the API ([ca33e9c](ca33e9c71f))
-   **script:** update the API ([207587b](207587b2b7))
-   **searchads360:** update the API ([8ed1df1](8ed1df140b))
-   **searchconsole:** update the API ([208d0a5](208d0a5dc7))
-   **secretmanager:** update the API ([426f146](426f146ac7))
-   **sheets:** update the API ([3333f83](3333f83473))
-   **siteVerification:** update the API ([760447c](760447c313))
-   **slides:** update the API ([5e4d08c](5e4d08cfae))
-   **sourcerepo:** update the API ([f803061](f803061d79))
-   **spanner:** update the API ([8fe5e93](8fe5e9303a))
-   **speech:** update the API ([34b7185](34b7185e75))
-   **sql:** update the API ([b29a348](b29a34873e))
-   **storagetransfer:** update the API ([d4e4820](d4e48203dd))
-   **storage:** update the API ([20860bc](20860bc1ab))
-   **streetviewpublish:** update the API ([1c6bb94](1c6bb94e2e))
-   **sts:** update the API ([5765d2a](5765d2a4a1))
-   **tasks:** update the API ([0eac80e](0eac80eb8e))
-   **testing:** update the API ([fd787ed](fd787ed8f2))
-   **texttospeech:** update the API ([9981feb](9981feb93e))
-   **transcoder:** update the API ([851586c](851586c418))
-   **translate:** update the API ([e11cc5e](e11cc5eea6))
-   **travelimpactmodel:** update the API ([75a5352](75a5352631))
-   **vectortile:** update the API ([4d94932](4d949325d9))
-   **versionhistory:** update the API ([bb2ceec](bb2ceec5dd))
-   **vision:** update the API ([afea669](afea6697bc))
-   **vpcaccess:** update the API ([da58970](da5897041f))
-   **webfonts:** update the API ([f0a4421](f0a4421760))
-   **webmasters:** update the API ([d4143d6](d4143d6ab0))
-   **webrisk:** update the API ([d4cc69b](d4cc69bca7))
-   **websecurityscanner:** update the API ([9960a3a](9960a3aff2))
-   **workflowexecutions:** update the API ([b3488ab](b3488abe18))
-   **workflows:** update the API ([0b82237](0b82237e45))
-   **workstations:** update the API ([a5f5488](a5f5488c31))
-   **youtubeAnalytics:** update the API ([203afe6](203afe652d))
-   **youtubereporting:** update the API ([48b6016](48b6016a38))

##### Miscellaneous Chores

-   migate to Node 14 ([0967781](09677817aa))

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNzYuMiIsInVwZGF0ZWRJblZlciI6IjM5LjE3Ni4yIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
2025-02-28 11:21:58 +00:00
Brooooooklyn
5dbffba08d feat(native): media capture (#9992) 2025-02-25 06:51:56 +00:00
forehalo
2e0f0c624a chore: set base version to 0.20 (#10382) 2025-02-24 04:44:42 +00:00
Saul-Mirone
55651503df refactor(editor): extract root block (#10356)
Closes: [BS-2207](https://linear.app/affine-design/issue/BS-2207/move-root-block-to-affineblock-root)
2025-02-21 12:38:26 +00:00
Saul-Mirone
f3218ab3bc refactor(editor): rename presets to integration test (#10340) 2025-02-21 06:26:03 +00:00