yoyoyohamapi
f65c8f8fa6
fix(core): disable space ai guidance for non-paragraph block ( #11847 )
...
### TL;DR
Disable space ai guidance for non-paragraph block
> CLOSE AI-67
2025-04-21 08:04:51 +00:00
pengx17
1efcd480af
fix(core): sidebar audio player seek position issue ( #11844 )
...
fix AF-2541
2025-04-21 07:52:01 +00:00
pengx17
2bd9cfe20a
fix(electron): use askForMeetingPermission for asking microphone permission ( #11792 )
2025-04-21 07:37:43 +00:00
yoyoyohamapi
f87a6e17bd
fix(core): action items in the ai response are not optimized for dark mode ( #11839 )
...
### TL;DR
* Fix action items in the AI response are not optimized for dark mode.
* Fix answer content in the AI response are not optimized for edgeless theme.

[uploading 截屏2025-04-21 14.30.00.png...]
> CLOSE BS-3249
2025-04-21 07:24:18 +00:00
fengmk2
a35a4ccf48
test(server): don't mock event bus on e2e ( #11841 )
2025-04-21 06:51:14 +00:00
doufa
b036ff5a45
fix(web): export png split text error with comment out rich text replacement in export process ( #11834 )
...
Co-authored-by: Mirone <Saul-Mirone@outlook.com >
2025-04-21 14:50:03 +08:00
darkskygit
f2adb9f72c
feat(server): workspace file embedding & ignored docs model impl ( #11804 )
...
fix AI-30
fix AI-31
2025-04-21 05:34:10 +00:00
Saul-Mirone
93b7c288cb
feat(editor): callout and code extension ( #11827 )
...
Closes: BS-3243
Closes: BS-3190
2025-04-21 04:27:19 +00:00
Saul-Mirone
a6d0894ce1
feat(editor): bookmark and attachment extension ( #11824 )
...
Closes: BS-3188
Closes: BS-3189
2025-04-21 04:27:18 +00:00
Saul-Mirone
70ddae15ef
feat(editor): affine extension provider and manager ( #11822 )
...
Closes: BS-3186
# @blocksuite/affine-ext-loader
Blocksuite extension loader system for AFFiNE, providing a structured way to manage and load extensions in different contexts.
## Usage
### Basic Extension Provider
```typescript
import { BaseExtensionProvider } from '@blocksuite/affine-ext-loader';
import { z } from 'zod';
// Create a custom provider with options
class MyProvider extends BaseExtensionProvider<'my-scope', { enabled: boolean }> {
name = 'MyProvider';
schema = z.object({
enabled: z.boolean(),
});
setup(context: Context<'my-scope'>, options?: { enabled: boolean }) {
super.setup(context, options);
// Custom setup logic
}
}
```
### Store Extensions
```typescript
import { StoreExtensionProvider, StoreExtensionManager } from '@blocksuite/affine-ext-loader';
import { z } from 'zod';
// Create a store provider with custom options
class MyStoreProvider extends StoreExtensionProvider<{ cacheSize: number }> {
override name = 'MyStoreProvider';
override schema = z.object({
cacheSize: z.number().min(0),
});
override setup(context: StoreExtensionContext, options?: { cacheSize: number }) {
super.setup(context, options);
context.register([Ext1, Ext2, Ext3]);
}
}
// Create and use the store extension manager
const manager = new StoreExtensionManager([MyStoreProvider]);
manager.configure(MyStoreProvider, { cacheSize: 100 });
const extensions = manager.get('store');
```
### View Extensions
```typescript
import { ViewExtensionProvider, ViewExtensionManager } from '@blocksuite/affine-ext-loader';
import { z } from 'zod';
// Create a view provider with custom options
class MyViewProvider extends ViewExtensionProvider<{ theme: string }> {
override name = 'MyViewProvider';
override schema = z.object({
theme: z.enum(['light', 'dark']),
});
override setup(context: ViewExtensionContext, options?: { theme: string }) {
super.setup(context, options);
context.register([CommonExt]);
if (context.scope === 'page') {
context.register([PageExt]);
} else if (context.scope === 'edgeless') {
context.register([EdgelessExt]);
}
if (options?.theme === 'dark') {
context.register([DarkModeExt]);
}
}
// Override effect to run one-time initialization logic
override effect() {
// This will only run once per provider class
console.log('Initializing MyViewProvider');
// Register lit elements
this.registerLitElements();
}
}
// Create and use the view extension manager
const manager = new ViewExtensionManager([MyViewProvider]);
manager.configure(MyViewProvider, { theme: 'dark' });
// Get extensions for different view scopes
const pageExtensions = manager.get('page');
const edgelessExtensions = manager.get('edgeless');
```
### One-time Initialization with Effect
View extensions support one-time initialization through the `effect` method. This method is called automatically during setup, but only once per provider class. It's useful for:
- Initializing global state
- Registering lit elements
- Setting up shared resources
```typescript
class MyViewProvider extends ViewExtensionProvider {
override effect() {
// This will only run once, even if multiple instances are created
initializeGlobalState();
registerLitElements();
setupGlobalEventListeners();
}
}
```
### Available View Scopes
The view extension system supports the following scopes:
- `page` - Standard page view
- `edgeless` - Edgeless (whiteboard) view
- `preview-page` - Page preview view
- `preview-edgeless` - Edgeless preview view
- `mobile-page` - Mobile page view
- `mobile-edgeless` - Mobile edgeless view
### Extension Configuration
Extensions can be configured using the `configure` method:
```typescript
// Set configuration directly
manager.configure(MyProvider, { enabled: true });
// Update configuration using a function
manager.configure(MyProvider, prev => {
if (!prev) return prev;
return {
...prev,
enabled: !prev.enabled,
};
});
// Remove configuration
manager.configure(MyProvider, undefined);
```
### Dependency Injection
Both store and view extension managers support dependency injection:
```typescript
// Access the manager through the di container
const viewManager = std.get(ViewExtensionManagerIdentifier);
const pagePreviewExtension = viewManager.get('preview-page');
```
2025-04-21 04:27:18 +00:00
pengx17
535b5ff7c2
fix(core): flaky quick search test ( #11833 )
2025-04-21 04:14:29 +00:00
doodlewind
1146f4d5a9
fix(editor): prototype polluting in gfx util ( #11831 )
...
This fixes the security edge case where the font key happens to be `__proto__` or `constructor`
2025-04-21 04:00:59 +00:00
L-Sun
6d7cd6dd99
fix(editor): banner of blookmark not shown in edgeless ( #11796 )
...
Close [BS-2651](https://app.graphite.dev/github/pr/toeverything/AFFiNE/11797/chore(editor)-add-feature-flag-to-embed-doc-with-alias )
### What Changes:
- Fixed banner of edgeless embed bookmark is not shown
- Add fallback bookmark creation with embed creation modal when there is not a `QuickSearchProvider` in blocksuite playground
- Add tests for embed blookmark and embed github block in edgeless
2025-04-21 03:33:18 +00:00
Saul-Mirone
c74b5dc214
fix(editor): convert note to linked doc from edgeless ( #11828 )
...
Closes: BS-3244
2025-04-21 03:18:14 +00:00
renovate
e0a1d87cee
chore: bump up hilt to v2.56.2 ( #11829 )
...
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [com.google.dagger.hilt.android](https://redirect.github.com/google/dagger ) | `2.56.1` -> `2.56.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/ ) |
| [com.google.dagger:hilt-android-compiler](https://redirect.github.com/google/dagger ) | `2.56.1` -> `2.56.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/ ) |
| [com.google.dagger:hilt-android-testing](https://redirect.github.com/google/dagger ) | `2.56.1` -> `2.56.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/ ) |
| [com.google.dagger:hilt-android](https://redirect.github.com/google/dagger ) | `2.56.1` -> `2.56.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/ ) |
---
### 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 these updates again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/ ). View the [repository job log](https://developer.mend.io/github/toeverything/AFFiNE ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yNDguNCIsInVwZGF0ZWRJblZlciI6IjM5LjI0OC40IiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
2025-04-21 03:05:30 +00:00
Brooooooklyn
95dbda24fc
feat(y-octo): import y-octo monorepo ( #11750 )
2025-04-21 02:51:15 +00:00
Aki Chang
e3973538e8
chore(android): integrate firebase-crashlytics ( #11808 )
2025-04-21 10:37:31 +08:00
renovate[bot]
f82f213373
chore: bump up apollographql/apollo-ios version to v1.20.0 ( #11830 )
...
Co-authored-by: renovate <29139614+renovate@users.noreply.github.com >
2025-04-21 10:25:17 +08:00
renovate
2242a4bd8e
chore: bump up nestjs ( #11819 )
...
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@nestjs-cls/transactional](https://papooch.github.io/nestjs-cls/ ) ([source](https://redirect.github.com/Papooch/nestjs-cls )) | [`2.6.1` -> `2.7.0`](https://renovatebot.com/diffs/npm/@nestjs-cls%2ftransactional/2.6.1/2.7.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/ ) |
| [@nestjs-cls/transactional-adapter-prisma](https://papooch.github.io/nestjs-cls/ ) ([source](https://redirect.github.com/Papooch/nestjs-cls )) | [`1.2.19` -> `1.2.20`](https://renovatebot.com/diffs/npm/@nestjs-cls%2ftransactional-adapter-prisma/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/ ) |
---
### Release Notes
<details>
<summary>Papooch/nestjs-cls (@​nestjs-cls/transactional)</summary>
### [`v2.7.0`](https://redirect.github.com/Papooch/nestjs-cls/releases/tag/%40nestjs-cls/transactional%402.7.0 )
[Compare Source](https://redirect.github.com/Papooch/nestjs-cls/compare/@nestjs-cls/transactional@2.6.1...@nestjs-cls/transactional@2.7.0 )
##### Dependencies
- update nestjs-related deps ([a10e589](https://redirect.github.com/Papooch/nestjs-cls/commits/a10e589 ))
- update testing deps ([d92a42d](https://redirect.github.com/Papooch/nestjs-cls/commits/d92a42d ))
- update dev deps ([f22b578](https://redirect.github.com/Papooch/nestjs-cls/commits/f22b578 ))
- update dev deps ([58874d3](https://redirect.github.com/Papooch/nestjs-cls/commits/58874d3 ))
##### Features
- **transactional**: introduce no-op adapter for testing ([0f9a374](https://redirect.github.com/Papooch/nestjs-cls/commits/0f9a374 ))
</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:eyJjcmVhdGVkSW5WZXIiOiIzOS4yNDguNCIsInVwZGF0ZWRJblZlciI6IjM5LjI0OC40IiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
2025-04-21 01:33:53 +00:00
fundon
67832aab09
chore(editor): update file icons ( #11826 )
2025-04-21 09:18:29 +08:00
LongYinan
41597479bb
ci: split npm and rust dependencies update
2025-04-21 09:10:11 +08:00
L-Sun
f16bcdbe2b
fix(editor): edgeless selected block is missing in the return of getSelectedBlockCommand ( #11813 )
2025-04-18 13:52:43 +00:00
L-Sun
5fcf34d848
refactor(editor): adjust parameters of duplicate block command ( #11812 )
2025-04-18 13:52:43 +00:00
fundon
c0ff567a2a
fix(editor): get block props ( #11807 )
...
Closes: [BS-3184](https://linear.app/affine-design/issue/BS-3184/duplicate-图片,一直在loading )
2025-04-18 10:59:31 +00:00
yoyoyohamapi
dcfc92347f
fix(core): unable to copy the selected ai answer content across multiple lines ( #11806 )
...
> CLOSE AI-76
2025-04-18 10:33:14 +00:00
JimmFly
7ef1d46d1a
chore: adjust loading doc component style ( #11810 )
2025-04-18 09:37:49 +00:00
JimmFly
9f59d5e941
fix(core): confirm the tag name before creating a new tag ( #11724 )
...
close AF-1569
- Show rename modal below the "Add Tag" button instead of at the new tag node
- Tag is created only after the user confirms the name in the modal
- Improves sidebar tag creation flow and user experience

v0.21.3-canary.1
v0.21.3
v0.21.3-beta.1
2025-04-18 07:53:32 +00:00
L-Sun
3264e65980
chore(editor): add feature flag to embed doc with alias ( #11797 )
2025-04-18 07:39:16 +00:00
fundon
9c02512d7c
fix(editor): chevron down icon on toolbar ( #11803 )
...
Uniform size: 16x16
2025-04-18 07:10:01 +00:00
darkskygit
a33b82e8b1
fix(server): relax global embedding condition ( #11791 )
2025-04-18 06:56:35 +00:00
pengx17
3772a4700e
fix(electron): browserwindow creationis sometimes too early ( #11787 )
...
fix https://toeverything.sentry.io/issues/6548826257/events/31d3c96a20c24c908188b3004b3ecab7?project=4506307500179456
2025-04-18 05:42:48 +00:00
CatsJuice
1c6eea21df
fix(mobile): new doc in explorer folder ( #11682 )
2025-04-18 05:29:23 +00:00
JimmFly
a5061cee93
chore: adjust tag editor style ( #11757 )
...
close AF-2006


2025-04-18 05:15:00 +00:00
JimmFly
37e07e91a3
fix(core): add tooltip to cloud server selector ( #11755 )
...
close AF-2438
2025-04-18 04:47:24 +00:00
JimmFly
178954a18c
fix(core): handle incorrect style of the confirm delete button ( #11725 )
...
close AF-2401
2025-04-18 04:34:24 +00:00
EYHN
5694e3a56c
feat(nbstore): add internal timeout to autoreconnection ( #11785 )
2025-04-18 04:20:52 +00:00
JimmFly
3355277e28
chore: remove cmd+s toast ( #11754 )
...
close AF-2345
2025-04-18 04:08:08 +00:00
fundon
1ae36d4b3e
fix(editor): remove redundant subtraction ( #11781 )
2025-04-18 03:53:51 +00:00
JimmFly
445d7b47b8
chore: adjust rename input font size ( #11758 )
...
close AF-1974

2025-04-18 03:40:22 +00:00
akumatus
203e931e30
fix(core): filter embedding results to return only user-selected tags and documents ( #11770 )
...
Close [AI-73](https://linear.app/affine-design/issue/AI-73 )
2025-04-18 03:25:30 +00:00
darkskygit
d71cbd5fd3
feat(server): improve pdf support ( #10929 )
2025-04-18 03:11:09 +00:00
donteatfriedrice
a555df0200
fix(editor): footnote popup style and position issues ( #11771 )
...
Close [BS-3049](https://linear.app/affine-design/issue/BS-3049/chat引用的样式坏了 ) [BS-3024](https://linear.app/affine-design/issue/BS-3024/footnote-在容器边缘时,hover-抽搐 )
2025-04-18 02:44:21 +00:00
EYHN
dd51180acb
feat(core): replace onboarding template ( #11768 )
2025-04-18 02:31:13 +00:00
renovate
0b33fb6dbf
chore: bump up @blocksuite/icons version to v2.2.12 ( #11752 )
...
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@blocksuite/icons](https://redirect.github.com/toeverything/icons ) | [`2.2.11` -> `2.2.12`](https://renovatebot.com/diffs/npm/@blocksuite%2ficons/2.2.11/2.2.12 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
---
### Release Notes
<details>
<summary>toeverything/icons (@​blocksuite/icons)</summary>
### [`v2.2.12`](be28c231ea...00a749af2e )
[Compare Source](be28c231ea...00a749af2e )
</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:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMzguMCIsInVwZGF0ZWRJblZlciI6IjM5LjIzOC4wIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
2025-04-18 02:18:08 +00:00
pengx17
04c0fa3de1
fix(native): invalid call to set mute behavior ( #11764 )
...
the error is only visible when turning build debug mode on
2025-04-18 02:03:06 +00:00
renovate
ec58850aca
chore: bump up @nestjs/schedule version to v6 ( #11780 )
...
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@nestjs/schedule](https://redirect.github.com/nestjs/schedule ) | [`^5.0.1` -> `^6.0.0`](https://renovatebot.com/diffs/npm/@nestjs%2fschedule/5.0.1/6.0.0 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
---
### Release Notes
<details>
<summary>nestjs/schedule (@​nestjs/schedule)</summary>
### [`v6.0.0`](https://redirect.github.com/nestjs/schedule/releases/tag/6.0.0 )
[Compare Source](https://redirect.github.com/nestjs/schedule/compare/5.0.1...6.0.0 )
#### What's Changed
- fix(deps): update dependency cron to v4 by [@​renovate](https://redirect.github.com/renovate ) in [https://github.com/nestjs/schedule/pull/1899 ](https://redirect.github.com/nestjs/schedule/pull/1899 )
**Full Changelog**: https://github.com/nestjs/schedule/compare/5.0.1...6.0.0
</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:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMzguMCIsInVwZGF0ZWRJblZlciI6IjM5LjIzOC4wIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
2025-04-18 01:50:23 +00:00
forehalo
8a013af12f
build: update default container name to avoid conflict ( #11782 )
2025-04-18 01:37:42 +00:00
forehalo
5e0d1fae98
chore(server): allow preflight workspace blob url ( #11783 )
2025-04-18 01:23:14 +00:00
EYHN
a9e4690d2d
fix(core): fix ai with multiple server ( #11570 )
2025-04-17 13:31:53 +00:00
EYHN
5e9ad634b7
feat(nbstore): optimize search performance ( #11778 )
...
now we can debug indexeddb performance by devtool

2025-04-17 13:16:18 +00:00