Francisco Jiménez
0b1a44863f
feat(editor): add obsidian vault import support ( #14593 )
...
fix #14592
### Description
> 🤖 **Note:** The code in this Pull Request were developed with the
assistance of AI, but have been thoroughly reviewed and manually tested.
> I noticed there's a check when opening an issue that asks _"Is your
content generated by AI?"_, so I mention it here in case it's a deal
breaker. If so I understand, you can close the PR, just wanted to share
this in case it's useful anyways.
This PR introduces **Obsidian Vault Import Support** to AFFiNE.
Previously, users migrating from Obsidian had to rely on the generic
Markdown importer, which often resulted in broken cross-links, missing
directory structures, and metadata conflicts because Obsidian relies
heavily on proprietary structures not supported by standard Markdown.
This completely new feature makes migrating to AFFiNE easy.
**Key Features & Implementations:**
1. **Vault (Directory) Selection**
- Utilizes the `openDirectory` blocksuite utility in the import modal to
allow users to select an entire folder directly from their filesystem,
maintaining file context rather than forcing `.zip` uploads.
2. **Wikilink Resolution (Two-Pass Import)**
- Restructured the `importObsidianVault` process into a two-pass
architecture.
- **Pass 1:** Discovers all files, assigns new AFFiNE document IDs, and
maps them efficiently (by title, alias, and filename) into a
high-performance hash map.
- **Pass 2:** Processes the generic markdown AST and correctly maps
custom `[[wikilinks]]` to the actual pre-registered AFFiNE blocksuite
document IDs via `obsidianWikilinkToDeltaMatcher`.
- Safely strips leading emojis from wikilink aliases to prevent
duplicated page icons rendering mid-sentence.
3. **Emoji Metadata & State Fixes**
- Implemented an aggressive, single-pass RegExp to extract multiple
leading/combining emojis (`Emoji_Presentation` / `\ufe0f`) from H1
headers and Frontmatter. Emojis are assigned specifically to the page
icon metadata property and cleanly stripped from the visual document
title.
- Fixed a core mutation bug where the loop iterating over existing
`docMetas` was aggressively overwriting newly minted IDs for the current
import batch. This fully resolves the issue where imported pages
(especially re-imports) were incorrectly flagged as `trashed`.
- Enforces explicit `trash: false` patch instructions.
4. **Syntax Conversion**
- Implemented conversion of Obsidian-style Callouts (`> [!NOTE] Title`)
into native AFFiNE block formats (`> 💡 **Title**`).
- Hardened the `blockquote` parser so that nested structures (like `> -
list items`) are fully preserved instead of discarded.
### UI Changes
- Updated the Import Modal to include the "Import Obsidian Vault" flow
utilizing the native filesystem directory picker.
- Regenerated and synced `i18n-completenesses.json` correctly up to 100%
across all supported locales for the new modal string additions.
### Testing Instructions
1. Navigate to the Workspace sidebar and click "Import".
2. Select "Obsidian" and use the directory picker to define a
comprehensive Vault folder.
3. Validate that cross-links between documents automatically resolve to
their specific AFFiNE instances.
4. Validate documents containing leading Emojis display exactly one
Emoji (in the page icon area), and none duplicated in the actual title
header.
5. Validate Callouts are rendered cleanly and correctly, and no
documents are incorrectly marked as "Trash".
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Import Obsidian vaults with wikilink resolution, emoji/title
preservation, asset handling, and automatic document creation.
* Folder-based imports via a Directory Picker (with hidden-input
fallback) integrated into the import dialog.
* **Localization**
* Added Obsidian import label and tooltip translations.
* **Tests**
* Added end-to-end tests validating Obsidian vault import and asset
handling.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: DarkSky <25152247+darkskygit@users.noreply.github.com >
Co-authored-by: DarkSky <darksky2048@gmail.com >
2026-03-17 00:49:17 +08:00
DarkSky
72df9cb457
feat: improve editor performance ( #14429 )
...
#### PR Dependency Tree
* **PR #14429** 👈
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**
* HTML import now splits lines on <br> into separate paragraphs while
preserving inline formatting.
* **Bug Fixes**
* Paste falls back to inserting after the first paragraph when no
explicit target is found.
* **Style**
* Improved page-mode viewport styling for consistent content layout.
* **Tests**
* Added snapshot tests for <br>-based paragraph splitting; re-enabled an
e2e drag-page test.
* **Chores**
* Deferred/deduplicated font loading, inline text caching,
drag-handle/pointer optimizations, and safer inline render
synchronization.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-02-14 00:43:36 +08:00
DarkSky
bb01bb1aef
fix(editor): database behavier ( #14394 )
...
fix #13459
fix #13707
fix #13924
#### PR Dependency Tree
* **PR #14394** 👈
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**
* Improved URL paste: text is split into segments, inserted correctly,
and single-URL pastes create linked-page references.
* **UI Improvements**
* Redesigned layout selector with compact dynamic options.
* Number-format options are always available in table headers and mobile
menus.
* **Bug Fixes**
* More consistent paste behavior for mixed text+URL content.
* Prevented recursive selection updates when exiting edit mode.
* **Tests**
* Added tests for URL splitting, paste insertion, number formatting, and
selection behavior.
* **Chores**
* Removed number-formatting feature flag; formatting now applied by
default.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-02-08 23:31:30 +08:00
DarkSky
fe5d6c0c0f
feat(editor): support frontmatter & colored text parsing ( #14205 )
...
fix #13847
2026-01-03 22:43:11 +08:00
DarkSky
4eed92cebf
feat: improve electron sandbox ( #14156 )
2025-12-27 03:23:28 +08:00
DarkSky
844b9d9592
feat(server): impl native reader for server ( #14100 )
2025-12-14 00:28:43 +08:00
Xun Sun
a0eeed0cdb
feat: implement export as PDF ( #14057 )
...
I used [pdfmake](https://www.npmjs.com/package/pdfmake ) to implement an
"export as PDF" feature, and I am happy to share with you!
This should fix #13577 , fix #8846 , and fix #13959 .
A showcase:
[Getting
Started.pdf](https://github.com/user-attachments/files/24013057/Getting.Started.pdf )
Although it might miss rendering some properties currently, it can
evolve in the long run and provide a more native experience for the
users.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
- Experimental "Export to PDF" option added to the export menu (behind a
feature flag)
- PDF export supports headings, paragraphs, lists, code blocks, tables,
images, callouts, linked documents and embedded content
* **Chores**
- Added PDF rendering library and consolidated PDF utilities
- Feature flag introduced to control rollout
* **Tests**
- Comprehensive unit tests added for PDF content rendering logic
<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
Co-authored-by: DarkSky <darksky2048@gmail.com >
2025-12-13 18:05:25 +08:00
donteatfriedrice
69c7767003
chore: remove citation feature flag ( #12567 )
...
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Footnote definitions and "Sources" headings are now always included in notes, without requiring a feature flag.
- Enhanced footnote-related content with additional citation-style blocks such as bookmarks, embedded documents, and attachments.
- **Chores**
- Removed the citation feature flag and its related configuration, logic, and translations from the application.
- **Documentation**
- Updated localization files to remove entries related to the citation experimental feature.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-27 10:07:32 +00:00
donteatfriedrice
f99b143bf9
fix(editor): handle footnote reference immediately follow URLs when importing markdown ( #12449 )
...
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 -->
2025-05-23 03:24:23 +00:00
donteatfriedrice
1a070367f3
fix(editor): handle html content copied from google docs ( #12383 )
...
Closes: [BS-3508](https://linear.app/affine-design/issue/BS-3508/google-docs复制内容到affine时自动加粗问题 )
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Improved detection of bold, italic, underline, and strike-through formatting in imported HTML, supporting both tags and inline CSS styles.
- Enhanced handling of inline elements containing block-level children to ensure correct formatting and structure during HTML import.
- Introduced a plugin that converts inline elements with block-level children into block elements, preserving original tag information.
- **Bug Fixes**
- Resolved issues where block-level elements nested inside inline tags could cause incorrect formatting or structure.
- **Tests**
- Added comprehensive test coverage for HTML formatting conversions and plugin behavior to ensure accuracy and reliability.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-21 02:45:17 +00:00
donteatfriedrice
76a8bf2834
fix(editor): flaky import notion html image unit test ( #12354 )
...
<!-- 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 -->
2025-05-19 04:53:56 +00:00
donteatfriedrice
b1594fcf6f
feat(editor): provide callout markdown export options middleware ( #12283 )
...
Closes: [BS-3491](https://linear.app/affine-design/issue/BS-3491/支持-callout-导出成-vitepress-文档站支持的-markdown-格式 )
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Added support for exporting callout blocks in both GFM and Admonition markdown styles, including configurable admonition types and custom titles.
- Introduced middleware to customize callout export options for markdown serialization.
- **Tests**
- Enhanced test coverage for callout markdown export, including scenarios with and without export middleware for different styles and content structures.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-15 01:03:38 +00:00
donteatfriedrice
d56d46d8d6
fix(editor): should preserve format in <p> when importing html ( #12275 )
...
Closes: [BS-3485](https://linear.app/affine-design/issue/BS-3485/粘贴-html-格式的内容时,紧邻着-bold-text-的普通文本会丢失空格 )
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **Bug Fixes**
- Improved handling of spaces and whitespace in paragraphs when converting HTML with inline formatting, ensuring spaces are preserved as in the original content.
- **Tests**
- Added a new test to verify that spaces are correctly preserved in paragraphs containing bold and italic formatting during HTML conversion.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-15 00:50:10 +00:00
donteatfriedrice
5dbe6ff68b
fix(editor): notion text adapter should handle text without styles correctly ( #12248 )
...
Closes: [BS-3486](https://linear.app/affine-design/issue/BS-3486/粘贴从-notion-复制的内容出错 )
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **Bug Fixes**
- Improved handling of Notion text segments with empty or invalid style arrays, ensuring plain text and styled text are both processed correctly and preventing errors from malformed input.
- **Tests**
- Added a test case to verify correct conversion of Notion text with empty styles arrays.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-13 08:05:30 +00:00
donteatfriedrice
9a721c65b5
feat(editor): add callout block markdown adapter ( #12070 )
...
Closes: [BS-3358](https://linear.app/affine-design/issue/BS-3358/remark-callout-plugin )
Closes: [BS-3247](https://linear.app/affine-design/issue/BS-3247/callout-markdown-adapter-适配 )
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Added support for callout blocks in Markdown, enabling recognition and conversion of callout syntax (e.g., `[!emoji]`) to and from block structures.
- **Bug Fixes**
- Improved handling to distinguish callout blocks from regular blockquotes and paragraphs during Markdown processing.
- **Tests**
- Introduced comprehensive tests for callout block serialization, deserialization, and plugin behavior to ensure correct Markdown handling.
- **Chores**
- Added a new dependency for Markdown AST traversal.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-04-30 05:40:08 +00:00
renovate
bce9f8cdf0
chore: bump up all non-major npm dependencies ( #11994 )
...
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence | Type | Update |
|---|---|---|---|---|---|---|---|
| [@ai-sdk/openai](https://sdk.vercel.ai/docs ) ([source](https://redirect.github.com/vercel/ai )) | [`1.3.19` -> `1.3.20`](https://renovatebot.com/diffs/npm/@ai-sdk%2fopenai/1.3.19/1.3.20 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | dependencies | patch |
| [@aws-sdk/client-s3](https://redirect.github.com/aws/aws-sdk-js-v3/tree/main/clients/client-s3 ) ([source](https://redirect.github.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-s3 )) | [`3.796.0` -> `3.797.0`](https://renovatebot.com/diffs/npm/@aws-sdk%2fclient-s3/3.796.0/3.797.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/ ) | dependencies | minor |
| [@aws-sdk/s3-request-presigner](https://redirect.github.com/aws/aws-sdk-js-v3/tree/main/packages/s3-request-presigner ) ([source](https://redirect.github.com/aws/aws-sdk-js-v3/tree/HEAD/packages/s3-request-presigner )) | [`3.796.0` -> `3.797.0`](https://renovatebot.com/diffs/npm/@aws-sdk%2fs3-request-presigner/3.796.0/3.797.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/ ) | dependencies | minor |
| [@napi-rs/cli](https://redirect.github.com/napi-rs/napi-rs ) | [`3.0.0-alpha.77` -> `3.0.0-alpha.78`](https://renovatebot.com/diffs/npm/@napi-rs%2fcli/3.0.0-alpha.77/3.0.0-alpha.78 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | devDependencies | patch |
| [@playwright/test](https://playwright.dev ) ([source](https://redirect.github.com/microsoft/playwright )) | [`=1.51.1` -> `=1.52.0`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.51.1/1.52.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/ ) | devDependencies | minor |
| [@playwright/test](https://playwright.dev ) ([source](https://redirect.github.com/microsoft/playwright )) | [`=1.51.1` -> `=1.52.0`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.51.1/1.52.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/ ) | dependencies | minor |
| [@toeverything/theme](https://redirect.github.com/toeverything/design ) | [`1.1.13` -> `1.1.14`](https://renovatebot.com/diffs/npm/@toeverything%2ftheme/1.1.13/1.1.14 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | dependencies | patch |
| [@vitest/browser](https://redirect.github.com/vitest-dev/vitest/tree/main/packages/browser#readme ) ([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/browser )) | [`3.1.1` -> `3.1.2`](https://renovatebot.com/diffs/npm/@vitest%2fbrowser/3.1.1/3.1.2 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | devDependencies | patch |
| [@vitest/coverage-istanbul](https://redirect.github.com/vitest-dev/vitest/tree/main/packages/coverage-istanbul#readme ) ([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-istanbul )) | [`3.1.1` -> `3.1.2`](https://renovatebot.com/diffs/npm/@vitest%2fcoverage-istanbul/3.1.1/3.1.2 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | devDependencies | patch |
| [@vitest/ui](https://redirect.github.com/vitest-dev/vitest/tree/main/packages/ui#readme ) ([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/ui )) | [`3.1.1` -> `3.1.2`](https://renovatebot.com/diffs/npm/@vitest%2fui/3.1.1/3.1.2 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | devDependencies | patch |
| [app-builder-lib](https://redirect.github.com/electron-userland/electron-builder ) ([source](https://redirect.github.com/electron-userland/electron-builder/tree/HEAD/packages/app-builder-lib )) | [`26.0.13` -> `26.0.14`](https://renovatebot.com/diffs/npm/app-builder-lib/26.0.13/26.0.14 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | devDependencies | patch |
| [browser-fs-access](https://redirect.github.com/GoogleChromeLabs/browser-fs-access ) | [`^0.35.0` -> `^0.37.0`](https://renovatebot.com/diffs/npm/browser-fs-access/0.35.0/0.37.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/ ) | dependencies | minor |
| [bullmq](https://bullmq.io/ ) ([source](https://redirect.github.com/taskforcesh/bullmq )) | [`5.51.0` -> `5.51.1`](https://renovatebot.com/diffs/npm/bullmq/5.51.0/5.51.1 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | dependencies | patch |
| [cc](https://redirect.github.com/rust-lang/cc-rs ) | `1.2.19` -> `1.2.20` | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | build-dependencies | patch |
| [clap](https://redirect.github.com/clap-rs/clap ) | `4.5.36` -> `4.5.37` | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | workspace.dependencies | patch |
| [file-type](https://redirect.github.com/sindresorhus/file-type ) | [`20.4.1` -> `20.5.0`](https://renovatebot.com/diffs/npm/file-type/20.4.1/20.5.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/ ) | dependencies | minor |
| [gradle](https://gradle.org ) ([source](https://redirect.github.com/gradle/gradle )) | `8.13` -> `8.14` | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | | minor |
| [graphql](https://redirect.github.com/graphql/graphql-js ) | [`16.10.0` -> `16.11.0`](https://renovatebot.com/diffs/npm/graphql/16.10.0/16.11.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/ ) | dependencies | minor |
| [graphql](https://redirect.github.com/graphql/graphql-js ) | [`16.10.0` -> `16.11.0`](https://renovatebot.com/diffs/npm/graphql/16.10.0/16.11.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/ ) | devDependencies | minor |
| [lib0](https://crates.io/crates/lib0 ) | `0.16.5` -> `0.16.10` | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | workspace.dependencies | patch |
| [lucide-react](https://lucide.dev ) ([source](https://redirect.github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react )) | [`^0.488.0` -> `^0.503.0`](https://renovatebot.com/diffs/npm/lucide-react/0.488.0/0.503.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/ ) | dependencies | minor |
| [objc2-foundation](https://redirect.github.com/madsmtm/objc2 ) | `0.3.0` -> `0.3.1` | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | workspace.dependencies | patch |
| [playwright](https://playwright.dev ) ([source](https://redirect.github.com/microsoft/playwright )) | [`=1.51.1` -> `=1.52.0`](https://renovatebot.com/diffs/npm/playwright/1.51.1/1.52.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/ ) | devDependencies | minor |
| [rand](https://rust-random.github.io/book ) ([source](https://redirect.github.com/rust-random/rand )) | `0.9.0` -> `0.9.1` | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | dependencies | patch |
| [rand](https://rust-random.github.io/book ) ([source](https://redirect.github.com/rust-random/rand )) | `0.9.0` -> `0.9.1` | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | workspace.dependencies | patch |
| [react-resizable-panels](https://redirect.github.com/bvaughn/react-resizable-panels ) | [`2.1.8` -> `2.1.9`](https://renovatebot.com/diffs/npm/react-resizable-panels/2.1.8/2.1.9 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | dependencies | patch |
| [sqlx](https://redirect.github.com/launchbadge/sqlx ) | `0.8.4` -> `0.8.5` | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | workspace.dependencies | patch |
| [tldts](https://redirect.github.com/remusao/tldts ) | [`7.0.3` -> `7.0.4`](https://renovatebot.com/diffs/npm/tldts/7.0.3/7.0.4 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | dependencies | patch |
| [vitest](https://redirect.github.com/vitest-dev/vitest ) ([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/vitest )) | [`3.1.1` -> `3.1.2`](https://renovatebot.com/diffs/npm/vitest/3.1.1/3.1.2 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | devDependencies | patch |
| [yrs](https://redirect.github.com/y-crdt/y-crdt ) | `=0.23.0` -> `=0.23.1` | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | dependencies | patch |
| [yrs](https://redirect.github.com/y-crdt/y-crdt ) | `0.23.0` -> `0.23.1` | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | workspace.dependencies | patch |
| com.google.firebase:firebase-bom | `33.12.0` -> `33.13.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/ ) | dependencies | minor |
| [androidx.datastore:datastore-preferences](https://developer.android.com/jetpack/androidx/releases/datastore#1.1.5 ) ([source](https://cs.android.com/androidx/platform/frameworks/support )) | `1.1.4` -> `1.1.5` | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | dependencies | patch |
| [androidx.compose:compose-bom](https://developer.android.com/jetpack ) | `2025.04.00` -> `2025.04.01` | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | dependencies | patch |
---
### Release Notes
<details>
<summary>vercel/ai (@​ai-sdk/openai)</summary>
### [`v1.3.20`](https://redirect.github.com/vercel/ai/releases/tag/%40ai-sdk/openai%401.3.20 )
[Compare Source](https://redirect.github.com/vercel/ai/compare/@ai-sdk/openai@1.3.19...@ai-sdk/openai@1.3.20 )
##### Patch Changes
- [`dd5450e`](https://redirect.github.com/vercel/ai/commit/dd5450e ): feat(provider/openai): add o3 & o4-mini with developer systemMessageMode
</details>
<details>
<summary>aws/aws-sdk-js-v3 (@​aws-sdk/client-s3)</summary>
### [`v3.797.0`](https://redirect.github.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#37970-2025-04-25 )
[Compare Source](https://redirect.github.com/aws/aws-sdk-js-v3/compare/v3.796.0...v3.797.0 )
**Note:** Version bump only for package [@​aws-sdk/client-s3](https://redirect.github.com/aws-sdk/client-s3 )
</details>
<details>
<summary>aws/aws-sdk-js-v3 (@​aws-sdk/s3-request-presigner)</summary>
### [`v3.797.0`](https://redirect.github.com/aws/aws-sdk-js-v3/blob/HEAD/packages/s3-request-presigner/CHANGELOG.md#37970-2025-04-25 )
[Compare Source](https://redirect.github.com/aws/aws-sdk-js-v3/compare/v3.796.0...v3.797.0 )
**Note:** Version bump only for package [@​aws-sdk/s3-request-presigner](https://redirect.github.com/aws-sdk/s3-request-presigner )
</details>
<details>
<summary>napi-rs/napi-rs (@​napi-rs/cli)</summary>
### [`v3.0.0-alpha.78`](https://redirect.github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.77...@napi-rs/cli@3.0.0-alpha.78 )
[Compare Source](https://redirect.github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.77...@napi-rs/cli@3.0.0-alpha.78 )
</details>
<details>
<summary>microsoft/playwright (@​playwright/test)</summary>
### [`v1.52.0`](https://redirect.github.com/microsoft/playwright/compare/v1.51.1...471930b1ceae03c9e66e0eb80c1364a1a788e7db )
[Compare Source](https://redirect.github.com/microsoft/playwright/compare/v1.51.1...v1.52.0 )
</details>
<details>
<summary>toeverything/design (@​toeverything/theme)</summary>
### [`v1.1.14`](https://redirect.github.com/toeverything/design/compare/1.1.13...1.1.14 )
[Compare Source](https://redirect.github.com/toeverything/design/compare/1.1.13...1.1.14 )
</details>
<details>
<summary>vitest-dev/vitest (@​vitest/browser)</summary>
### [`v3.1.2`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v3.1.2 )
[Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v3.1.1...v3.1.2 )
##### 🐞 Bug Fixes
- Add global `chai` variable in `vitest/globals` (fix: [#​7474](https://redirect.github.com/vitest-dev/vitest/issues/7474 )) - by [@​Jay-Karia](https://redirect.github.com/Jay-Karia ) in [https://github.com/vitest-dev/vitest/issues/7771 ](https://redirect.github.com/vitest-dev/vitest/issues/7771 ) and [https://github.com/vitest-dev/vitest/issues/7474 ](https://redirect.github.com/vitest-dev/vitest/issues/7474 ) [<samp>(d9297)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/d9297920 )
- Prevent modifying `test.exclude` when same object passed in `coverage.exclude` - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [https://github.com/vitest-dev/vitest/issues/7774 ](https://redirect.github.com/vitest-dev/vitest/issues/7774 ) [<samp>(c3751)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/c375101d )
- Fix already hoisted mock - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/7815 ](https://redirect.github.com/vitest-dev/vitest/issues/7815 ) [<samp>(773b1)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/773b10e0 )
- Fix test.scoped inheritance - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/7814 ](https://redirect.github.com/vitest-dev/vitest/issues/7814 ) [<samp>(db6c3)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/db6c3bcc )
- Remove pointer-events-none after resizing the left panel - by [@​alexprudhomme](https://redirect.github.com/alexprudhomme ) in [https://github.com/vitest-dev/vitest/issues/7811 ](https://redirect.github.com/vitest-dev/vitest/issues/7811 ) [<samp>(a7e77)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/a7e773bd )
- Default to run mode when stdin is not a TTY - by [@​kentonv](https://redirect.github.com/kentonv ), [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) and [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/7673 ](https://redirect.github.com/vitest-dev/vitest/issues/7673 ) [<samp>(6358f)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/6358f216 )
- Use happy-dom/jsdom types for `envionmentOptions` - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/7795 ](https://redirect.github.com/vitest-dev/vitest/issues/7795 ) [<samp>(67430)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/67430083 )
- **browser**:
- Fix transform error before browser server initialization - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/7783 ](https://redirect.github.com/vitest-dev/vitest/issues/7783 ) [<samp>(5f762)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/5f762ec5 )
- Fix mocking from outside of root - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/7789 ](https://redirect.github.com/vitest-dev/vitest/issues/7789 ) [<samp>(03f55)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/03f55d74 )
- Scale iframe for non ui case - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/6512 ](https://redirect.github.com/vitest-dev/vitest/issues/6512 ) [<samp>(c3374)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/c3374808 )
- **coverage**:
- `await` profiler calls - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [https://github.com/vitest-dev/vitest/issues/7763 ](https://redirect.github.com/vitest-dev/vitest/issues/7763 ) [<samp>(795a6)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/795a6433 )
- Expose profiling timers - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [https://github.com/vitest-dev/vitest/issues/7820 ](https://redirect.github.com/vitest-dev/vitest/issues/7820 ) [<samp>(5652b)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/5652bf92 )
- **deps**:
- Update all non-major dependencies - in [https://github.com/vitest-dev/vitest/issues/7765 ](https://redirect.github.com/vitest-dev/vitest/issues/7765 ) [<samp>(7c3df)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/7c3dfb17 )
- Update all non-major dependencies - in [https://github.com/vitest-dev/vitest/issues/7831 ](https://redirect.github.com/vitest-dev/vitest/issues/7831 ) [<samp>(15701)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/15701f5d )
- **runner**:
- Correctly call test hooks and teardown functions - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/7775 ](https://redirect.github.com/vitest-dev/vitest/issues/7775 ) [<samp>(3c00c)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/3c00c875 )
- Show stacktrace on test timeout error - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/7799 ](https://redirect.github.com/vitest-dev/vitest/issues/7799 ) [<samp>(df33b)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/df33bba7 )
- **ui**:
- Load panel sizes from storage on initial load - by [@​userquin](https://redirect.github.com/userquin ) in [https://github.com/vitest-dev/vitest/issues/7265 ](https://redirect.github.com/vitest-dev/vitest/issues/7265 ) [<samp>(6555d)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/6555d61d )
- **vite-node**:
- Named export should overwrite export all - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/7846 ](https://redirect.github.com/vitest-dev/vitest/issues/7846 ) [<samp>(5ba0d)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/5ba0d914 )
- Add ERR_MODULE_NOT_FOUND code error if module cannot be loaded - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/7776 ](https://redirect.github.com/vitest-dev/vitest/issues/7776 ) [<samp>(f9eac)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/f9eacbc5 )
##### 🏎 Performance
- **browser**: Improve browser parallelisation - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/7665 ](https://redirect.github.com/vitest-dev/vitest/issues/7665 ) [<samp>(816a5)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/816a5c51 )
##### [View changes on GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v3.1.1...v3.1.2 )
</details>
<details>
<summary>electron-userland/electron-builder (app-builder-lib)</summary>
### [`v26.0.14`](https://redirect.github.com/electron-userland/electron-builder/blob/HEAD/packages/app-builder-lib/CHANGELOG.md#26014 )
[Compare Source](https://redirect.github.com/electron-userland/electron-builder/compare/v26.0.13...v26.0.14 )
##### Patch Changes
- [#​9032](https://redirect.github.com/electron-userland/electron-builder/pull/9032 ) [`3d65267a`](https://redirect.github.com/electron-userland/electron-builder/commit/3d65267a6c53ca824f70e5b0f5d8f4ba8be38237 ) Thanks [@​indutny-signal](https://redirect.github.com/indutny-signal )! - Add customNsisResources override to nsis options
- [#​9061](https://redirect.github.com/electron-userland/electron-builder/pull/9061 ) [`5545e132`](https://redirect.github.com/electron-userland/electron-builder/commit/5545e1325457bf4c493166faaf533528d336e76f ) Thanks [@​mmaietta](https://redirect.github.com/mmaietta )! - chore: migrate fpm packaging from app builder
- [#​9034](https://redirect.github.com/electron-userland/electron-builder/pull/9034 ) [`80fbf5a6`](https://redirect.github.com/electron-userland/electron-builder/commit/80fbf5a6d8f308415469d4ee96a954932e6f19b7 ) Thanks [@​beyondkmp](https://redirect.github.com/beyondkmp )! - feat: add buildUniversalInstaller option to NSIS portable configuration
- [#​8995](https://redirect.github.com/electron-userland/electron-builder/pull/8995 ) [`524fb6e0`](https://redirect.github.com/electron-userland/electron-builder/commit/524fb6e042446f741eaf77a8eb65485074186b96 ) Thanks [@​mmaietta](https://redirect.github.com/mmaietta )! - chore(asar): use streaming API for `electron/asar` for constructing asar package
- Updated dependencies \[]:
- dmg-builder@26.0.14
- electron-builder-squirrel-windows@26.0.14
</details>
<details>
<summary>GoogleChromeLabs/browser-fs-access (browser-fs-access)</summary>
### [`v0.37.0`](https://redirect.github.com/GoogleChromeLabs/browser-fs-access/releases/tag/v0.37.0 )
[Compare Source](https://redirect.github.com/GoogleChromeLabs/browser-fs-access/compare/v0.36.0...v0.37.0 )
- Fix issues introduced with https://github.com/AimWhy/browser-fs-access/commit/b6e855dc0cf46afb3e6faf2be465dbb8e7ec37e3
### [`v0.36.0`](https://redirect.github.com/GoogleChromeLabs/browser-fs-access/releases/tag/v0.36.0 )
[Compare Source](https://redirect.github.com/GoogleChromeLabs/browser-fs-access/compare/v0.35.0...v0.36.0 )
- Use the `cancel` method for better exception handling with legacy methods. ([#​153](https://redirect.github.com/GoogleChromeLabs/browser-fs-access/issues/153 ), [#​158](https://redirect.github.com/GoogleChromeLabs/browser-fs-access/issues/158 ))
</details>
<details>
<summary>taskforcesh/bullmq (bullmq)</summary>
### [`v5.51.1`](https://redirect.github.com/taskforcesh/bullmq/releases/tag/v5.51.1 )
[Compare Source](https://redirect.github.com/taskforcesh/bullmq/compare/v5.51.0...v5.51.1 )
##### Bug Fixes
- **queue-events:** omit telemetry options ([#​3239](https://redirect.github.com/taskforcesh/bullmq/issues/3239 )) ([e4dac2c](https://redirect.github.com/taskforcesh/bullmq/commit/e4dac2c39fac0c8cce34fbcb98a0c72c1619ed4e ))
</details>
<details>
<summary>rust-lang/cc-rs (cc)</summary>
### [`v1.2.20`](https://redirect.github.com/rust-lang/cc-rs/blob/HEAD/CHANGELOG.md#1220---2025-04-25 )
[Compare Source](https://redirect.github.com/rust-lang/cc-rs/compare/cc-v1.2.19...cc-v1.2.20 )
##### Other
- Regenerate target info ([#​1461](https://redirect.github.com/rust-lang/cc-rs/pull/1461 ))
- Fix parser.rs on latest rustc nightly ([#​1459](https://redirect.github.com/rust-lang/cc-rs/pull/1459 ))
</details>
<details>
<summary>clap-rs/clap (clap)</summary>
### [`v4.5.37`](https://redirect.github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4537---2025-04-18 )
[Compare Source](https://redirect.github.com/clap-rs/clap/compare/v4.5.36...v4.5.37 )
##### Features
- Added `ArgMatches::try_clear_id()`
</details>
<details>
<summary>sindresorhus/file-type (file-type)</summary>
### [`v20.5.0`](https://redirect.github.com/sindresorhus/file-type/releases/tag/v20.5.0 )
[Compare Source](https://redirect.github.com/sindresorhus/file-type/compare/v20.4.1...v20.5.0 )
- Add support Office PowerPoint 2007 (macro-enabled) slide show ([#​747](https://redirect.github.com/sindresorhus/file-type/issues/747 )) [`f1b4c7a`](https://redirect.github.com/sindresorhus/file-type/commit/f1b4c7a )
***
</details>
<details>
<summary>gradle/gradle (gradle)</summary>
### [`v8.14`](https://redirect.github.com/gradle/gradle/compare/v8.13.0...v8.14.0 )
[Compare Source](https://redirect.github.com/gradle/gradle/compare/v8.13.0...v8.14.0 )
</details>
<details>
<summary>graphql/graphql-js (graphql)</summary>
### [`v16.11.0`](https://redirect.github.com/graphql/graphql-js/releases/tag/v16.11.0 ): 16.11.0
[Compare Source](https://redirect.github.com/graphql/graphql-js/compare/v16.10.0...v16.11.0 )
##### v16.11.0 (2025-04-26)
##### New Feature 🚀
- [#​4363](https://redirect.github.com/graphql/graphql-js/pull/4363 ) Ensure we validate for using nullable variables in oneOf input fields ([@​JoviDeCroock](https://redirect.github.com/JoviDeCroock ))
- [#​4366](https://redirect.github.com/graphql/graphql-js/pull/4366 ) feat(execution): add max coercion errors option to execution context ([@​cristunaranjo](https://redirect.github.com/cristunaranjo ))
##### Bug Fix 🐞
- [#​4367](https://redirect.github.com/graphql/graphql-js/pull/4367 ) fix(coerce-input-value): input object coercion rejects arrays ([@​cristunaranjo](https://redirect.github.com/cristunaranjo ))
##### Docs 📝
<details>
<summary> 11 PRs were merged </summary>
- [#​4310](https://redirect.github.com/graphql/graphql-js/pull/4310 ) First draft for upgrade guide to v17 ([@​JoviDeCroock](https://redirect.github.com/JoviDeCroock ))
- [#​4331](https://redirect.github.com/graphql/graphql-js/pull/4331 ) fix sidebar for documentation and `/api-v16` ([@​dimaMachina](https://redirect.github.com/dimaMachina ))
- [#​4335](https://redirect.github.com/graphql/graphql-js/pull/4335 ) Add cspell exception ([@​JoviDeCroock](https://redirect.github.com/JoviDeCroock ))
- [#​4340](https://redirect.github.com/graphql/graphql-js/pull/4340 ) Improve flow of documentation around GraphiQL ([@​benjie](https://redirect.github.com/benjie ))
- [#​4343](https://redirect.github.com/graphql/graphql-js/pull/4343 ) typofix: removes extra parenthesis from getting started code snippet ([@​rabahalishah](https://redirect.github.com/rabahalishah ))
- [#​4351](https://redirect.github.com/graphql/graphql-js/pull/4351 ) fixed wrong variable name ([@​fto-dev](https://redirect.github.com/fto-dev ))
- [#​4352](https://redirect.github.com/graphql/graphql-js/pull/4352 ) docs(getting-started): promises current links ([@​guspan-tanadi](https://redirect.github.com/guspan-tanadi ))
- [#​4368](https://redirect.github.com/graphql/graphql-js/pull/4368 ) Update docs for execution options ([@​JoviDeCroock](https://redirect.github.com/JoviDeCroock ))
- [#​4369](https://redirect.github.com/graphql/graphql-js/pull/4369 ) Correct some syntax ([@​JoviDeCroock](https://redirect.github.com/JoviDeCroock ))
- [#​4372](https://redirect.github.com/graphql/graphql-js/pull/4372 ) Refactor every code-first example to leverage resolve ([@​JoviDeCroock](https://redirect.github.com/JoviDeCroock ))
- [#​4373](https://redirect.github.com/graphql/graphql-js/pull/4373 ) docs: Update getting-started.mdx ([@​Shubhdeep12](https://redirect.github.com/Shubhdeep12 ))
</details>
##### Polish 💅
* [#​4312](https://redirect.github.com/graphql/graphql-js/pull/4312 ) Increase print/visit performance ([@​JoviDeCroock](https://redirect.github.com/JoviDeCroock ))
##### Internal 🏠
<details>
<summary> 4 PRs were merged </summary>
- [#​4327](https://redirect.github.com/graphql/graphql-js/pull/4327 ) Add redirect for /api ([@​JoviDeCroock](https://redirect.github.com/JoviDeCroock ))
- [#​4377](https://redirect.github.com/graphql/graphql-js/pull/4377 ) Chore: bump setup-node ([@​JoviDeCroock](https://redirect.github.com/JoviDeCroock ))
- [#​4378](https://redirect.github.com/graphql/graphql-js/pull/4378 ) Change to gqlConf 2025 ([@​JoviDeCroock](https://redirect.github.com/JoviDeCroock ))
- [#​4379](https://redirect.github.com/graphql/graphql-js/pull/4379 ) Add missing parenthesis ([@​benjie](https://redirect.github.com/benjie ))
</details>
##### Committers: 8
* Benjie([@​benjie](https://redirect.github.com/benjie ))
* Cris Naranjo ([@​cristunaranjo](https://redirect.github.com/cristunaranjo ))
* Dimitri POSTOLOV([@​dimaMachina](https://redirect.github.com/dimaMachina ))
* Fatih Ozdemir([@​fto-dev](https://redirect.github.com/fto-dev ))
* Guspan Tanadi([@​guspan-tanadi](https://redirect.github.com/guspan-tanadi ))
* Jovi De Croock([@​JoviDeCroock](https://redirect.github.com/JoviDeCroock ))
* Rabah Ali Shah([@​rabahalishah](https://redirect.github.com/rabahalishah ))
* Shubhdeep Chhabra([@​Shubhdeep12](https://redirect.github.com/Shubhdeep12 ))
</details>
<details>
<summary>lucide-icons/lucide (lucide-react)</summary>
### [`v0.503.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.503.0 ): Version 0.503.0
[Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.502.0...0.503.0 )
#### What's Changed
- fix(icons): changed `file-badge-2` icon by [@​jguddas](https://redirect.github.com/jguddas ) in [https://github.com/lucide-icons/lucide/pull/2933 ](https://redirect.github.com/lucide-icons/lucide/pull/2933 )
- feat(icons): added `wifi-pen` icon by [@​luisdlopera](https://redirect.github.com/luisdlopera ) in [https://github.com/lucide-icons/lucide/pull/2576 ](https://redirect.github.com/lucide-icons/lucide/pull/2576 )
#### New Contributors
- [@​luisdlopera](https://redirect.github.com/luisdlopera ) made their first contribution in [https://github.com/lucide-icons/lucide/pull/2576 ](https://redirect.github.com/lucide-icons/lucide/pull/2576 )
**Full Changelog**: https://github.com/lucide-icons/lucide/compare/0.502.0...0.503.0
### [`v0.502.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.502.0 ): Version 0.502.0
[Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.501.0...0.502.0 )
#### What's Changed
- fix(docs): Added link for jguddas next to lucide studio by [@​briz123](https://redirect.github.com/briz123 ) in [https://github.com/lucide-icons/lucide/pull/3063 ](https://redirect.github.com/lucide-icons/lucide/pull/3063 )
- build(deps-dev): bump vite from 5.4.15 to 5.4.17 by [@​dependabot](https://redirect.github.com/dependabot ) in [https://github.com/lucide-icons/lucide/pull/2993 ](https://redirect.github.com/lucide-icons/lucide/pull/2993 )
- fix(build): fix shredder formatting and duplicate contributors error by [@​jpjacobpadilla](https://redirect.github.com/jpjacobpadilla ) in [https://github.com/lucide-icons/lucide/pull/3072 ](https://redirect.github.com/lucide-icons/lucide/pull/3072 )
- fix(icons): rebase non-binary on square-asterisk by [@​karsa-mistmere](https://redirect.github.com/karsa-mistmere ) in [https://github.com/lucide-icons/lucide/pull/3071 ](https://redirect.github.com/lucide-icons/lucide/pull/3071 )
- docs(CONTRIBUTING): Grammar fix for CONTRIBUTING by [@​ajokt123](https://redirect.github.com/ajokt123 ) in [https://github.com/lucide-icons/lucide/pull/3090 ](https://redirect.github.com/lucide-icons/lucide/pull/3090 )
- fix(icons): changed `calendar-plus` icon by [@​jguddas](https://redirect.github.com/jguddas ) in [https://github.com/lucide-icons/lucide/pull/3085 ](https://redirect.github.com/lucide-icons/lucide/pull/3085 )
- fix(icons): changed `book-key` icon by [@​jguddas](https://redirect.github.com/jguddas ) in [https://github.com/lucide-icons/lucide/pull/3062 ](https://redirect.github.com/lucide-icons/lucide/pull/3062 )
- fix(icons): changed `clipboard-paste` icon by [@​jguddas](https://redirect.github.com/jguddas ) in [https://github.com/lucide-icons/lucide/pull/3075 ](https://redirect.github.com/lucide-icons/lucide/pull/3075 )
- fix(icons): changed `orbit` icon by [@​jguddas](https://redirect.github.com/jguddas ) in [https://github.com/lucide-icons/lucide/pull/3074 ](https://redirect.github.com/lucide-icons/lucide/pull/3074 )
- fix(icons): changed `baby` icon by [@​jguddas](https://redirect.github.com/jguddas ) in [https://github.com/lucide-icons/lucide/pull/3073 ](https://redirect.github.com/lucide-icons/lucide/pull/3073 )
- docs(pacakges): Added periods to package summary by [@​briz123](https://redirect.github.com/briz123 ) in [https://github.com/lucide-icons/lucide/pull/3065 ](https://redirect.github.com/lucide-icons/lucide/pull/3065 )
- fix(docs): PR Conventions by [@​briz123](https://redirect.github.com/briz123 ) in [https://github.com/lucide-icons/lucide/pull/3066 ](https://redirect.github.com/lucide-icons/lucide/pull/3066 )
- feat(icons): added `ruler-dimension-line` icon by [@​jguddas](https://redirect.github.com/jguddas ) in [https://github.com/lucide-icons/lucide/pull/2535 ](https://redirect.github.com/lucide-icons/lucide/pull/2535 )
#### New Contributors
- [@​jpjacobpadilla](https://redirect.github.com/jpjacobpadilla ) made their first contribution in [https://github.com/lucide-icons/lucide/pull/3072 ](https://redirect.github.com/lucide-icons/lucide/pull/3072 )
- [@​ajokt123](https://redirect.github.com/ajokt123 ) made their first contribution in [https://github.com/lucide-icons/lucide/pull/3090 ](https://redirect.github.com/lucide-icons/lucide/pull/3090 )
**Full Changelog**: https://github.com/lucide-icons/lucide/compare/0.501.0...0.502.0
### [`v0.501.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.501.0 ): Version 0.501.0
[Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.500.0...0.501.0 )
#### What's Changed
- feat(angular): export icon data types by [@​dzonatan](https://redirect.github.com/dzonatan ) in [https://github.com/lucide-icons/lucide/pull/2820 ](https://redirect.github.com/lucide-icons/lucide/pull/2820 )
- feat: added request-review workflow by [@​jguddas](https://redirect.github.com/jguddas ) in [https://github.com/lucide-icons/lucide/pull/2502 ](https://redirect.github.com/lucide-icons/lucide/pull/2502 )
- feat(icons): Add columns-3-cog icon by [@​irvineacosta](https://redirect.github.com/irvineacosta ) in [https://github.com/lucide-icons/lucide/pull/2763 ](https://redirect.github.com/lucide-icons/lucide/pull/2763 )
#### New Contributors
- [@​dzonatan](https://redirect.github.com/dzonatan ) made their first contribution in [https://github.com/lucide-icons/lucide/pull/2820 ](https://redirect.github.com/lucide-icons/lucide/pull/2820 )
- [@​irvineacosta](https://redirect.github.com/irvineacosta ) made their first contribution in [https://github.com/lucide-icons/lucide/pull/2763 ](https://redirect.github.com/lucide-icons/lucide/pull/2763 )
**Full Changelog**: https://github.com/lucide-icons/lucide/compare/0.500.0...0.501.0
### [`v0.500.0`](https://redirect.github.com/lucide-icons/lucide/compare/0.499.0...0.500.0 )
[Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.499.0...0.500.0 )
### [`v0.499.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.499.0 ): Version 0.499.0
[Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.498.0...0.499.0 )
#### What's Changed
- feat(icons): added `bow-arrow` icon by [@​jamiemlaw](https://redirect.github.com/jamiemlaw ) in [https://github.com/lucide-icons/lucide/pull/2418 ](https://redirect.github.com/lucide-icons/lucide/pull/2418 )
**Full Changelog**: https://github.com/lucide-icons/lucide/compare/0.498.0...0.499.0
### [`v0.498.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.498.0 ): Version 0.498.0
[Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.497.0...0.498.0 )
#### What's Changed
- feat(icons): added `decimals-arrow-left` icon and `decimals-arrow-right` by [@​AnnaSasDev](https://redirect.github.com/AnnaSasDev ) in [https://github.com/lucide-icons/lucide/pull/2945 ](https://redirect.github.com/lucide-icons/lucide/pull/2945 )
**Full Changelog**: https://github.com/lucide-icons/lucide/compare/0.497.0...0.498.0
### [`v0.497.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.497.0 ): Version 0.497.0
[Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.496.0...0.497.0 )
#### What's Changed
- feat(icons): added `shredder` icon by [@​alirashidy](https://redirect.github.com/alirashidy ) in [https://github.com/lucide-icons/lucide/pull/3052 ](https://redirect.github.com/lucide-icons/lucide/pull/3052 )
#### New Contributors
- [@​alirashidy](https://redirect.github.com/alirashidy ) made their first contribution in [https://github.com/lucide-icons/lucide/pull/3052 ](https://redirect.github.com/lucide-icons/lucide/pull/3052 )
**Full Changelog**: https://github.com/lucide-icons/lucide/compare/0.496.0...0.497.0
### [`v0.496.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.496.0 ): Version 0.496.0
[Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.495.0...0.496.0 )
#### What's Changed
- feat(icons): added `squares-*` operation icons by [@​EthanHazel](https://redirect.github.com/EthanHazel ) in [https://github.com/lucide-icons/lucide/pull/2585 ](https://redirect.github.com/lucide-icons/lucide/pull/2585 )
**Full Changelog**: https://github.com/lucide-icons/lucide/compare/0.495.0...0.496.0
### [`v0.495.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.495.0 ): Version 0.495.0
[Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.494.0...0.495.0 )
#### What's Changed
- feat(icons): added `rectangle-goggles` icon by [@​EthanHazel](https://redirect.github.com/EthanHazel ) in [https://github.com/lucide-icons/lucide/pull/2515 ](https://redirect.github.com/lucide-icons/lucide/pull/2515 )
**Full Changelog**: https://github.com/lucide-icons/lucide/compare/0.494.0...0.495.0
### [`v0.494.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.494.0 ): Version 0.494.0
[Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.493.0...0.494.0 )
#### What's Changed
- fix(icons): changed `cpu` icon by [@​karsa-mistmere](https://redirect.github.com/karsa-mistmere ) in [https://github.com/lucide-icons/lucide/pull/3033 ](https://redirect.github.com/lucide-icons/lucide/pull/3033 )
- feat(icons): added map-pin-edit icon [#​2874](https://redirect.github.com/lucide-icons/lucide/issues/2874 ) by [@​sachinkr7368](https://redirect.github.com/sachinkr7368 ) in [https://github.com/lucide-icons/lucide/pull/2957 ](https://redirect.github.com/lucide-icons/lucide/pull/2957 )
#### New Contributors
- [@​sachinkr7368](https://redirect.github.com/sachinkr7368 ) made their first contribution in [https://github.com/lucide-icons/lucide/pull/2957 ](https://redirect.github.com/lucide-icons/lucide/pull/2957 )
**Full Changelog**: https://github.com/lucide-icons/lucide/compare/0.493.0...0.494.0
### [`v0.493.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.493.0 ): Version 0.493.0
[Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.492.0...0.493.0 )
#### What's Changed
- feat(icons): added `bubbles` icon by [@​vqh2602](https://redirect.github.com/vqh2602 ) in [https://github.com/lucide-icons/lucide/pull/2582 ](https://redirect.github.com/lucide-icons/lucide/pull/2582 )
- docs(studio): Add lucide studio to site navbar by [@​ericfennis](https://redirect.github.com/ericfennis ) in [https://github.com/lucide-icons/lucide/pull/3058 ](https://redirect.github.com/lucide-icons/lucide/pull/3058 )
- feat(ci): adds dpi preview for 16, 32 and 48px by [@​jguddas](https://redirect.github.com/jguddas ) in [https://github.com/lucide-icons/lucide/pull/3048 ](https://redirect.github.com/lucide-icons/lucide/pull/3048 )
- fix(icons): changed `palette` icon by [@​jamiemlaw](https://redirect.github.com/jamiemlaw ) in [https://github.com/lucide-icons/lucide/pull/3015 ](https://redirect.github.com/lucide-icons/lucide/pull/3015 )
- feat(icons): added `brick-wall-fire` icon by [@​karsa-mistmere](https://redirect.github.com/karsa-mistmere ) in [https://github.com/lucide-icons/lucide/pull/3036 ](https://redirect.github.com/lucide-icons/lucide/pull/3036 )
#### New Contributors
- [@​vqh2602](https://redirect.github.com/vqh2602 ) made their first contribution in [https://github.com/lucide-icons/lucide/pull/2582 ](https://redirect.github.com/lucide-icons/lucide/pull/2582 )
**Full Changelog**: https://github.com/lucide-icons/lucide/compare/0.492.0...0.493.0
### [`v0.492.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.492.0 ): Version 0.492.0
[Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.491.0...0.492.0 )
##### What's Changed
- fix(icons): changed `pipette` icon by [@​jguddas](https://redirect.github.com/jguddas ) in [https://github.com/lucide-icons/lucide/pull/2927 ](https://redirect.github.com/lucide-icons/lucide/pull/2927 )
- feat(icons): added `heart-plus` & `heart-minus` icon by [@​Ayberkyvs](https://redirect.github.com/Ayberkyvs ) in [https://github.com/lucide-icons/lucide/pull/2842 ](https://redirect.github.com/lucide-icons/lucide/pull/2842 )
##### New Contributors
- [@​Ayberkyvs](https://redirect.github.com/Ayberkyvs ) made their first contribution in [https://github.com/lucide-icons/lucide/pull/2842 ](https://redirect.github.com/lucide-icons/lucid
</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.
👻 **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:eyJjcmVhdGVkSW5WZXIiOiIzOS4yNTcuMyIsInVwZGF0ZWRJblZlciI6IjM5LjI1Ny4zIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
2025-04-29 09:36:13 +00:00
forehalo
4ffa37d1c3
chore: proxy image preview in frontend ( #11957 )
...
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Images and icons in bookmark cards are now loaded through an image proxy for improved reliability and consistency.
- Embed blocks for GitHub, Loom, and YouTube now display banner and creator images via an image proxy service for enhanced image loading.
- **Refactor**
- Simplified backend URL handling and proxy logic for images, resulting in more efficient processing and reduced complexity.
- Consolidated image proxy middleware and services into a shared adapter module for streamlined imports and improved maintainability.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-04-24 10:23:25 +00:00
donteatfriedrice
db5eadb72a
feat(editor): add favicon, title, description support for footnote url reference ( #11924 )
...
Closes: [BS-3272](https://linear.app/affine-design/issue/BS-3272/footnote-适配-exa-api-返回结果 )
## What's Changed
Add link preview data support (favicon, title, description) for URL references in footnotes:
- Store and display URL preview data in footnotes
- Add encoding/decoding support for favicon URLs
- Optimize link preview by using existing preview data when available
2025-04-23 11:57:25 +00:00
Saul-Mirone
16831e8c0e
feat(editor): reference, mention and latex inline extension ( #11914 )
...
Closes: BS-3215
Closes: BS-3218
Closes: BS-3217
2025-04-23 09:22:16 +00:00
Saul-Mirone
b1aecfc1c4
feat(editor): link inline extension ( #11910 )
...
Closes: BS-3216
2025-04-23 04:42:24 +00:00
Saul-Mirone
2510e7a9a4
feat(editor): inline footnote extension ( #11908 )
...
Closes: BS-3219
2025-04-23 01:40:49 +00:00
Saul-Mirone
24edfc75bd
feat(editor): table extension ( #11906 )
...
Closes: BS-3205
2025-04-23 01:16:08 +00:00
Saul-Mirone
e57222b89a
feat(editor): surface ref extension ( #11902 )
...
Closes: BS-3203
2025-04-23 01:16:07 +00:00
Saul-Mirone
45b6cbe8d7
refactor(editor): cleanup dead code ( #11893 )
2025-04-22 15:51:23 +00:00
Saul-Mirone
43966a6c6b
feat(editor): use store extension manager ( #11891 )
...
Closes: BS-3284
2025-04-22 15:51:23 +00:00
donteatfriedrice
bbdea71686
fix(editor): add footnote url markdown preprocessor to avoid link node parsing ( #11888 )
...
Closes: [BS-3282](https://linear.app/affine-design/issue/BS-3282/预处理-footnote-definition-中的-url-避免-markdown-link-node-parsing )
2025-04-22 14:19:10 +00:00
donteatfriedrice
bfec5dd594
fix(editor): markdown html and image import ( #11712 )
...
Close
[BS-3145](https://linear.app/affine-design/issue/BS-3145/markdown-adapter-html-标签导入成-code-block )
[BS-3154](https://linear.app/affine-design/issue/BS-3154/[bug]-使用-markdown-with-files-导入到-affine-图片丢失 )
2025-04-16 04:27:39 +00:00
donteatfriedrice
7aa87de5f7
fix(editor): markdown code preprocessor should handle link correctly ( #11671 )
...
Close [BS-3117](https://linear.app/affine-design/issue/BS-3117/代码粘贴后出现多余的-和-符号 )
2025-04-14 08:28:43 +00:00
donteatfriedrice
d5aebc1421
fix(editor): enhance markdown latex preprocessing ( #11597 )
...
Close [BS-2440](https://linear.app/affine-design/issue/BS-2440/inline-latex-markdown-adapter-需要更精确的处理 )
2025-04-10 12:15:24 +00:00
donteatfriedrice
568a390b75
feat(editor): support markdown adapter preprocessed with latex delimiters ( #11431 )
...
To close [BS-2870](https://linear.app/affine-design/issue/BS-2870/支持识别-和- [-包裹内容为公式)
## Add Markdown Preprocessor Extension and Enhanced LaTeX Support
### Markdown Preprocessor Extension
This PR introduces a new preprocessor extension for Markdown adapters that allows preprocessing of content before conversion:
Adds a new PreprocessorManager for handling text transformations
Introduces extensible preprocessor interface that supports different processing levels (block/slice/doc)
Integrates preprocessor extension into the existing Markdown adapter workflow
### LaTeX Support Enhancement
Extends LaTeX support to handle both traditional and alternative syntax:
Adds support for backslash LaTeX syntax:
Block math: ```\[...\] ``` alongside existing ```$$...$$```
Inline math: ```\(...\) ``` alongside existing ```$...$```
Implements LaTeX preprocessor to standardize syntax before conversion
Updates tests to cover both syntax variants
2025-04-07 02:18:04 +00:00
L-Sun
2f1f09e25f
fix(editor): extract store spec register from effects ( #11268 )
...
Close [BS-2802](https://linear.app/affine-design/issue/BS-2802/移動端缺少bseffects導致文檔創建錯誤 )
2025-03-31 10:53:02 +00:00
Saul-Mirone
0a8d8e0a6b
feat: seperate createDoc and createStore ( #11182 )
2025-03-26 11:03:47 +00:00
Saul-Mirone
e84c60f53d
feat(editor): add provider for base adapter ( #11169 )
2025-03-25 12:09:23 +00:00
zzj3720
3939cc1c52
feat(editor): support file column and member column for database block ( #10932 )
...
close: BS-2630, BS-2631, BS-2629, BS-2632, BS-2635
2025-03-18 14:51:45 +00:00
Saul-Mirone
3de7d85eea
feat(editor): improve api for store, and add docs ( #10941 )
2025-03-17 16:30:59 +00:00
Saul-Mirone
12bc142809
refactor(editor): remove blocks package ( #10708 )
2025-03-09 05:44:26 +00:00