Commit Graph

347 Commits

Author SHA1 Message Date
pengx17 08eb248cb4 fix(core): add toDocSearchParams for better typeschecking doc search params (#11383) 2025-04-02 04:46:22 +00:00
pengx17 f091ac7e74 fix(core): bidi panel show button color (#11374)
fix AF-2394
2025-04-02 03:48:14 +00:00
fundon d9fade8045 fix(core): should display date as original title of journal (#11375)
Closes: [BS-2991](https://linear.app/affine-design/issue/BS-2991/linked-journal添加alias后,toolbar上获取不到标题)
2025-04-02 01:24:43 +00:00
fundon f374f2695f fix(core): add shortcuts to open doc dropdown menu (#11358)
Closes: [BS-2992](https://linear.app/affine-design/issue/BS-2992/走查toolbar上的open-in-button)

[Screen Recording 2025-04-01 at 16.37.57.mov <span class="graphite__hidden">(uploaded via Graphite)</span> <img class="graphite__hidden" src="https://app.graphite.dev/api/v1/graphite/video/thumbnail/8ypiIKZXudF5a0tIgIzf/cf4b1baf-aa2c-4f37-9c62-f7202d0f7c42.mov" />](https://app.graphite.dev/media/video/8ypiIKZXudF5a0tIgIzf/cf4b1baf-aa2c-4f37-9c62-f7202d0f7c42.mov)
2025-04-01 12:39:13 +00:00
yoyoyohamapi bd30a73db8 fix(core): do not show AI avatar during generating (#11363)
> CLOSE BS-2989
2025-04-01 12:11:28 +00:00
zzj3720 08327b14d6 fix(editor): database block columns popover closes unexpectedly (#11352)
fix: BS-2906
2025-04-01 10:32:23 +00:00
fundon 7af5e53838 refactor(editor): image toolbar config extension (#11329)
Closes: [BS-2378](https://linear.app/affine-design/issue/BS-2378/image-toolbar-迁移)
2025-04-01 10:04:28 +00:00
akumatus b74d40d45f refactor(core): ai chat chips (#11341)
Support [BS-2583](https://linear.app/affine-design/issue/BS-2583).

### What changed?
- Move chat panel chip components to `/components` folder.
- Separate `chips` and `embeddingProgress` from ChatContextValue.
2025-04-01 09:15:16 +00:00
pengx17 9cb80205f8 chore(electron): add telemetry events for enabling meetings (#11327)
fix AF-2436
2025-04-01 09:01:31 +00:00
JimmFly 93d4b6dc4d fix(core): can't open history modal in self-hosting client (#11336)
handle #11282
2025-04-01 03:18:22 +00:00
akumatus afd1a30b96 feat(core): add chat-panel track (#11323)
Close [AF-2434](https://linear.app/affine-design/issue/AF-2434).
2025-03-31 17:01:10 +00:00
doodlewind dffb89c388 feat(editor): add list block turbo renderer scaffold (#11266)
This PR allows placeholder in turbo renderer to cover list block as a basic scaffold.

![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/lEGcysB4lFTEbCwZ8jMv/eda28656-e56e-4845-9fe6-885e70841697.png)
2025-03-29 04:49:25 +00:00
akumatus ac815142b3 refactor(core): add request time out error for ai (#11244)
### Why make this change?
Seperate front end timeout errors from server side errors.

### What changed?
- Add `RequestTimeoutError` which extends from `BaseAIError`.
- Track as `request timeout` instead of `server error`.
2025-03-29 04:27:40 +00:00
yoyoyohamapi 317d3e7ea6 test(core): split and enhance copilot e2e tests (#11007)
### TL;DR

Split and enhance copilot e2e tests.

### What Changed

#### Tests Structure

The e2e tests are organized into the following categories:

1. **Basic Tests (`/basic`)**: Tests for verifying core AI capabilities including feature onboarding, authorization workflows, and basic chat interactions.
2. **Chat Interaction Tests (`/chat-with`)**: Tests for verifying the AI's interaction with various ​object types, such as attachments, images, text content, Edgeless elements, etc.
3. **AI Action Tests (`/ai-action`)**: Tests for verifying the AI's actions, such as text translation, gramma correction, etc.
4. **Insertion Tests (`/insertion`)**: Tests for verifying answer insertion functionality.

#### Tests Writing

Writing a copilot test cases is easier and clear

e.g.
```ts
test('support chat with specified doc', async ({ page, utils }) => {
  // Initialize the doc
  await focusDocTitle(page);
  await page.keyboard.insertText('Test Doc');
  await page.keyboard.press('Enter');
  await page.keyboard.insertText('EEee is a cute cat');

  await utils.chatPanel.chatWithDoc(page, 'Test Doc');

  await utils.chatPanel.makeChat(page, 'What is EEee?');
  await utils.chatPanel.waitForHistory(page, [
    {
      role: 'user',
      content: 'What is EEee?',
    },
    {
      role: 'assistant',
      status: 'success',
    },
  ]);

  const { content } = await utils.chatPanel.getLatestAssistantMessage(page);
  expect(content).toMatch(/EEee/);
});
```

#### Summary

||Cases|
|------|----|
|Before|19||
|After|151||

> Close BS-2769
2025-03-29 03:41:09 +00:00
doodlewind ebee11f573 refactor(editor): enable forceUpdate by default in viewport apis (#11264)
In this way, all downstream callers can be guaranteed by correct viewport fit result, instead of requiring them to set `forceUpdate: true` param explicitly to them. The resizing optimization is an internal exception.
2025-03-28 10:04:55 +00:00
pengx17 6c125d9a38 feat(electron): audio capture permissions and settings (#11185)
fix AF-2420, AF-2391, AF-2265
2025-03-28 09:12:26 +00:00
pengx17 dccd7c20aa feat(core): call real endpoint for audio transcription (#11139)
fix AF-2359
2025-03-28 07:59:35 +00:00
Saul-Mirone 205cd7a86d refactor(editor): rename block-std to std (#11250)
Closes: BS-2946
2025-03-28 07:20:34 +00:00
L-Sun af91a0217f refactor(editor): inner toolbar surface-ref block with extension (#11246)
This PR refactor `surface-ref` toolbar with `ToolbarExtension`
2025-03-28 05:48:24 +00:00
darkskygit 3b9d64d74d feat(server): update trascript endpoint (#11196) 2025-03-27 10:18:49 +00:00
akumatus 22ef32f5c2 feat(core): provide document title, tags, createTime and updateTime to llm (#11205)
Close [BS-2915](https://linear.app/affine-design/issue/BS-2915).
2025-03-27 04:34:45 +00:00
donteatfriedrice 0c73fde44a feat(editor): update embed iframe toolbar config (#11221)
part of [BS-2843](https://linear.app/affine-design/issue/BS-2843/iframe-embed-block-占位态)
2025-03-27 04:17:30 +00:00
akumatus 42259f5546 fix(core): add try-catch to handle possible errors (#11213)
Close [AF-2343](https://linear.app/affine-design/issue/AF-2343).
2025-03-26 11:20:02 +00:00
Saul-Mirone 0a8d8e0a6b feat: seperate createDoc and createStore (#11182) 2025-03-26 11:03:47 +00:00
L-Sun c23b8f604b fix(editor): incorrect edgeless viewport in peek view (#11040)
### What Changes
- Fixed incorrect edgeless viewport display in peek view
  - Moved page block viewport fit animation logic from `EdgelessRootBlockComponent` to note config extension
  - Disabled page block viewport fit animation in peek view, using default `fitToScreen` instead
  - @doodlewind Fixed viewport resizing issues by adding a immediate update mechanism to ensure proper rendering during peek view operations.  The setViewportByBound is only called once during peek view initialization, so there are barely perf overhead.
- Updated related test cases
  - Refactored peek view test cases to make them clearer and more reliable
  - Added new test helper function `getViewportBound` for getting viewport boundary information
2025-03-26 09:29:05 +00:00
donteatfriedrice c5624bfd13 refactor(editor): embed iframe block surface toolbar extension (#11193) 2025-03-26 08:38:07 +00:00
donteatfriedrice 39fa8e87cf feat(editor): add idle status for embed iframe block (#11142)
To close:
[BS-2843](https://linear.app/affine-design/issue/BS-2843/iframe-embed-block-占位态)
[BS-2844](https://linear.app/affine-design/issue/BS-2844/iframe-embed-block-create-modal-ui-调整)
[BS-2880](https://linear.app/affine-design/issue/BS-2880/spotify-选中时圆角有问题)
[BS-2881](https://linear.app/affine-design/issue/BS-2881/miro-圆角有问题-点击-see-the-board-加载之后就好了)
2025-03-26 08:38:06 +00:00
pengx17 61c0d01da3 feat(electron): recording popups (#11016)
Added a recording popup UI for the audio recording feature in the desktop app, improving the user experience when capturing audio from applications.

### What changed?

- Created a new popup window system for displaying recording controls
- Added a dedicated recording UI with start/stop controls and status indicators
- Moved audio encoding logic from the main app to a dedicated module
- Implemented smooth animations for popup appearance/disappearance
- Updated the recording workflow to show visual feedback during recording process
- Added internationalization support for recording-related text
- Modified the recording status flow to include new states: new, recording, stopped, ready

fix AF-2340
2025-03-26 04:53:43 +00:00
akumatus d991149faa feat(core): add matched context documents to ai prompt (#11148)
Close [BS-2834](https://linear.app/affine-design/issue/BS-2834).

### What Changed?
- Change `reference_index` from chip order to increasing positive integer.
- Add matched context documents to ai prompt.
2025-03-26 01:55:54 +00:00
akumatus c019d97448 refactor(core): use unsafeCSSVar instead of var (#11188) 2025-03-25 16:49:06 +00:00
zzj3720 af18656759 fix(editor): clear the search text after selecting a member and add whitelist for image attachment (#11063)
fix: BS-2860, BS-2857
2025-03-25 16:05:06 +00:00
akumatus aefbc11aab feat(core): add candidates popover in ai chat-panel (#11178)
Close [BS-2853](https://linear.app/affine-design/issue/BS-2853).
2025-03-25 15:50:11 +00:00
akumatus db4406f950 fix(core): no search result in ai chat-panel (#11157)
Close [BS-2466](https://linear.app/affine-design/issue/BS-2466).
2025-03-25 14:36:05 +00:00
EYHN 3df51a217d feat(core): add use guard hook (#11180)
Previously, we used `useLiveData(guardService.can$())` to get the guard result, but `guardService.can$()` will request the server to revalidate the permission when calling it, will cause additional network requests when re-render.

This pr make a new hook `useGuard` to fix this problem.

And the side effect in `can$` is moved to `revalidateCan()` to make that the subscribe method is pure
2025-03-25 14:15:29 +00:00
Saul-Mirone 1871428021 feat(editor): extensionize clipboards (#11172) 2025-03-25 12:09:24 +00:00
Saul-Mirone e84c60f53d feat(editor): add provider for base adapter (#11169) 2025-03-25 12:09:23 +00:00
Saul-Mirone df057b4c12 feat(editor): edgeless clipboard config extension (#11168) 2025-03-25 12:09:23 +00:00
darkskygit 1bb324eeed feat(server): update gql endpoint & workspace doc match test (#11104) 2025-03-25 10:09:22 +00:00
fundon 63762b75a1 feat(core): save recent open mode of internal links (#11086)
Closes: [BS-2865](https://linear.app/affine-design/issue/BS-2865/internal-links-保存用户最近的打开方式)

Added `openDocMode` in settings.

https://github.com/user-attachments/assets/a452da73-83e4-4ef5-9b57-58291fc22785
2025-03-24 06:12:47 +00:00
Saul-Mirone 5525c2bc8d refactor(editor): move mindmap view to mindmap package (#11102) 2025-03-24 03:14:23 +00:00
akumatus 331dd67e69 feat(core): add copilot tags and collections graphql apis (#11076)
Close [BS-2834](https://linear.app/affine-design/issue/BS-2834).

### What Changed?
- Add `addContextCategoryMutation` and `removeContextCategoryMutation` graphql apis.
- Provide tag and collection apis for front-end components.
2025-03-22 15:15:42 +00:00
akumatus a5b975ac46 feat(core): suggest reference docs as candidate chips (#11050)
Close [BS-2464](https://linear.app/affine-design/issue/BS-2464).

![截屏2025-03-20 23.46.42.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/sJGviKxfE3Ap685cl5bj/c52b32de-1beb-4194-8af6-a175e5e6b986.png)
2025-03-21 05:09:20 +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
zzj3720 8a5393ea50 fix(editor): some bugs of member column (#11033)
fix: BS-2840
2025-03-20 12:24:25 +00:00
L-Sun da63d51b7e refactor(editor): group and expose parameters of createButtonPopper (#10999) 2025-03-20 08:37:59 +00:00
akumatus 6ff19ca307 feat(core): hybird search for docs, tags and collections (#11008)
Close [BS-2466](https://linear.app/affine-design/issue/BS-2466).

![截屏2025-03-19 18.25.38.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/sJGviKxfE3Ap685cl5bj/15ba2b7d-2d91-408a-8e7d-93f845017bcb.png)
2025-03-20 08:21:25 +00:00
zzj3720 c355644d47 fix(editor): some bugs of attachment column (#11031)
fix: BS-2838, BS-2837, BS-2836
2025-03-20 07:48:26 +00:00
JimmFly d47bb64597 feat(core): add no access to share menu (#10927) 2025-03-20 07:31:11 +00:00