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
liuyi
e376992ccf
chore(server): default DEPLOYMENT_TYPE should be selfhosted ( #11484 )
2025-04-07 10:05:14 +08:00
Saul-Mirone
bb1270061a
feat(editor): gfx template package ( #11480 )
2025-04-06 12:24:13 +00:00
Saul-Mirone
41499c1cd6
refactor(editor): merge implementation of createTemplateJob ( #11474 )
2025-04-05 12:59:48 +00:00
Saul-Mirone
2a1306c58c
refactor(editor): separate the element renders ( #11461 )
2025-04-04 13:09:46 +00:00
Saul-Mirone
138e7f60de
refactor(editor): extensionalize surface canvas renderer ( #11456 )
2025-04-04 13:09:45 +00:00
JimmFly
3ecdc377fe
fix(admin): unable to log into admin panel ( #11451 )
2025-04-04 10:39:20 +00:00
renovate[bot]
0f7a739b3b
chore: bump up all non-major dependencies ( #11351 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: LongYinan <lynweklm@gmail.com >
2025-04-04 18:37:22 +08:00
renovate
a76414066a
chore: bump up rustc version to v1.86.0 ( #11464 )
...
This PR contains the following updates:
| Package | Update | Change |
|---|---|---|
| [rustc](https://redirect.github.com/rust-lang/rust ) | minor | `1.85.1` -> `1.86.0` |
---
### Release Notes
<details>
<summary>rust-lang/rust (rustc)</summary>
### [`v1.86.0`](https://redirect.github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1860-2025-04-03 )
[Compare Source](https://redirect.github.com/rust-lang/rust/compare/1.85.1...1.86.0 )
\==========================
<a id="1.86.0-Language"></a>
## Language
- [Stabilize upcasting trait objects to supertraits.](https://redirect.github.com/rust-lang/rust/pull/134367 )
- [Allow safe functions to be marked with the `#[target_feature]` attribute.](https://redirect.github.com/rust-lang/rust/pull/134090 )
- [The `missing_abi` lint now warns-by-default.](https://redirect.github.com/rust-lang/rust/pull/132397 )
- Rust now lints about double negations, to catch cases that might have intended to be a prefix decrement operator (`--x`) as written in other languages. This was previously a clippy lint, `clippy::double_neg`, and is [now available directly in Rust as `double_negations`.](https://redirect.github.com/rust-lang/rust/pull/126604 )
- [More pointers are now detected as definitely not-null based on their alignment in const eval.](https://redirect.github.com/rust-lang/rust/pull/133700 )
- [Empty `repr()` attribute applied to invalid items are now correctly rejected.](https://redirect.github.com/rust-lang/rust/pull/133925 )
- [Inner attributes `#![test]` and `#![rustfmt::skip]` are no longer accepted in more places than intended.](https://redirect.github.com/rust-lang/rust/pull/134276 )
<a id="1.86.0-Compiler"></a>
## Compiler
- [Debug-assert that raw pointers are non-null on access.](https://redirect.github.com/rust-lang/rust/pull/134424 )
- [Change `-O` to mean `-C opt-level=3` instead of `-C opt-level=2` to match Cargo's defaults.](https://redirect.github.com/rust-lang/rust/pull/135439 )
- [Fix emission of `overflowing_literals` under certain macro environments.](https://redirect.github.com/rust-lang/rust/pull/136393 )
<a id="1.86.0-Platform-Support"></a>
## Platform Support
- [Replace `i686-unknown-redox` target with `i586-unknown-redox`.](https://redirect.github.com/rust-lang/rust/pull/136698 )
- [Increase baseline CPU of `i686-unknown-hurd-gnu` to Pentium 4.](https://redirect.github.com/rust-lang/rust/pull/136700 )
- New tier 3 targets:
- [`{aarch64-unknown,x86_64-pc}-nto-qnx710_iosock`](https://redirect.github.com/rust-lang/rust/pull/133631 ).
For supporting Neutrino QNX 7.1 with `io-socket` network stack.
- [`{aarch64-unknown,x86_64-pc}-nto-qnx800`](https://redirect.github.com/rust-lang/rust/pull/133631 ).
For supporting Neutrino QNX 8.0 (`no_std`-only).
- [`{x86_64,i686}-win7-windows-gnu`](https://redirect.github.com/rust-lang/rust/pull/134609 ).
Intended for backwards compatibility with Windows 7. `{x86_64,i686}-win7-windows-msvc` are the Windows MSVC counterparts that already exist as Tier 3 targets.
- [`amdgcn-amd-amdhsa`](https://redirect.github.com/rust-lang/rust/pull/134740 ).
- [`x86_64-pc-cygwin`](https://redirect.github.com/rust-lang/rust/pull/134999 ).
- [`{mips,mipsel}-mti-none-elf`](https://redirect.github.com/rust-lang/rust/pull/135074 ).
Initial bare-metal support.
- [`m68k-unknown-none-elf`](https://redirect.github.com/rust-lang/rust/pull/135085 ).
- [`armv7a-nuttx-{eabi,eabihf}`, `aarch64-unknown-nuttx`, and `thumbv7a-nuttx-{eabi,eabihf}`](https://redirect.github.com/rust-lang/rust/pull/135757 ).
Refer to Rust's \[platform support page]\[platform-support-doc]
for more information on Rust's tiered platform support.
<a id="1.86.0-Libraries"></a>
## Libraries
- The type of `FromBytesWithNulError` in `CStr::from_bytes_with_nul(bytes: &[u8]) -> Result<&Self, FromBytesWithNulError>` was [changed from an opaque struct to an enum](https://redirect.github.com/rust-lang/rust/pull/134143 ), allowing users to examine why the conversion failed.
- [Remove `RustcDecodable` and `RustcEncodable`.](https://redirect.github.com/rust-lang/rust/pull/134272 )
- [Deprecate libtest's `--logfile` option.](https://redirect.github.com/rust-lang/rust/pull/134283 )
- [On recent versions of Windows, `std::fs::remove_file` will now remove read-only files.](https://redirect.github.com/rust-lang/rust/pull/134679 )
<a id="1.86.0-Stabilized-APIs"></a>
## Stabilized APIs
- [`{float}::next_down`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.next_down )
- [`{float}::next_up`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.next_up )
- [`<[_]>::get_disjoint_mut`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.get_disjoint_mut )
- [`<[_]>::get_disjoint_unchecked_mut`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.get_disjoint_unchecked_mut )
- [`slice::GetDisjointMutError`](https://doc.rust-lang.org/stable/std/slice/enum.GetDisjointMutError.html )
- [`HashMap::get_disjoint_mut`](https://doc.rust-lang.org/std/collections/hash_map/struct.HashMap.html#method.get_disjoint_mut )
- [`HashMap::get_disjoint_unchecked_mut`](https://doc.rust-lang.org/std/collections/hash_map/struct.HashMap.html#method.get_disjoint_unchecked_mut )
- [`NonZero::count_ones`](https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.count_ones )
- [`Vec::pop_if`](https://doc.rust-lang.org/std/vec/struct.Vec.html#method.pop_if )
- [`sync::Once::wait`](https://doc.rust-lang.org/stable/std/sync/struct.Once.html#method.wait )
- [`sync::Once::wait_force`](https://doc.rust-lang.org/stable/std/sync/struct.Once.html#method.wait_force )
- [`sync::OnceLock::wait`](https://doc.rust-lang.org/stable/std/sync/struct.OnceLock.html#method.wait )
These APIs are now stable in const contexts:
- [`hint::black_box`](https://doc.rust-lang.org/stable/std/hint/fn.black_box.html )
- [`io::Cursor::get_mut`](https://doc.rust-lang.org/stable/std/io/struct.Cursor.html#method.get_mut )
- [`io::Cursor::set_position`](https://doc.rust-lang.org/stable/std/io/struct.Cursor.html#method.set_position )
- [`str::is_char_boundary`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.is_char_boundary )
- [`str::split_at`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_at )
- [`str::split_at_checked`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_at_checked )
- [`str::split_at_mut`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_at_mut )
- [`str::split_at_mut_checked`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_at_mut_checked )
<a id="1.86.0-Cargo"></a>
## Cargo
- [When merging, replace rather than combine configuration keys that refer to a program path and its arguments.](https://redirect.github.com/rust-lang/cargo/pull/15066/ )
- [Error if both `--package` and `--workspace` are passed but the requested package is missing.](https://redirect.github.com/rust-lang/cargo/pull/15071/ ) This was previously silently ignored, which was considered a bug since missing packages should be reported.
- [Deprecate the token argument in `cargo login` to avoid shell history leaks.](https://redirect.github.com/rust-lang/cargo/pull/15057/ )
- [Simplify the implementation of `SourceID` comparisons.](https://redirect.github.com/rust-lang/cargo/pull/14980/ ) This may potentially change behavior if the canonicalized URL compares differently in alternative registries.
<a id="1.86.0-Rustdoc"></a>
## Rustdoc
- [Add a sans-serif font setting.](https://redirect.github.com/rust-lang/rust/pull/133636 )
<a id="1.86.0-Compatibility-Notes"></a>
## Compatibility Notes
- [The `wasm_c_abi` future compatibility warning is now a hard error.](https://redirect.github.com/rust-lang/rust/pull/133951 )
Users of `wasm-bindgen` should upgrade to at least version 0.2.89, otherwise compilation will fail.
- [Remove long-deprecated no-op attributes `#![no_start]` and `#![crate_id]`.](https://redirect.github.com/rust-lang/rust/pull/134300 )
- [The future incompatibility lint `cenum_impl_drop_cast` has been made into a hard error.](https://redirect.github.com/rust-lang/rust/pull/135964 ) This means it is now an error to cast a field-less enum to an integer if the enum implements `Drop`.
- [SSE2 is now required for "i686" 32-bit x86 hard-float targets; disabling it causes a warning that will become a hard error eventually.](https://redirect.github.com/rust-lang/rust/pull/137037 )
To compile for pre-SSE2 32-bit x86, use a "i586" target instead.
<a id="1.86.0-Internal-Changes"></a>
## Internal Changes
These changes do not affect any public interfaces of Rust, but they represent
significant improvements to the performance or internals of rustc and related
tools.
- [Build the rustc on AArch64 Linux with ThinLTO + PGO.](https://redirect.github.com/rust-lang/rust/pull/133807 )
The ARM 64-bit compiler (AArch64) on Linux is now optimized with ThinLTO and PGO, similar to the optimizations we have already performed for the x86-64 compiler on Linux. This should make it up to 30% faster.
</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:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMjcuMyIsInVwZGF0ZWRJblZlciI6IjM5LjIyNy4zIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
2025-04-04 07:21:18 +00:00
CatsJuice
905349a139
chore(core): modify ai purchase button text ( #11035 )
2025-04-04 07:07:50 +00:00
CatsJuice
fa50743393
feat(core): hide all sidebars when resizing to a small screen ( #11105 )
2025-04-04 05:51:19 +00:00
CatsJuice
ae92aef1a4
feat(core): automatically focus on the Readwise token input when the window is focused ( #11112 )
2025-04-04 05:36:59 +00:00
CatsJuice
eebc7b751a
feat(component): apply animation for tooltip, remove triangle ( #11245 )
2025-04-04 05:24:18 +00:00
JimmFly
adbd41130c
fix(admin): adjust import users dialog styles ( #11436 )
...
close AF-2456 AF-2454 AF-2441 AF-2422
2025-04-04 04:52:50 +00:00
JimmFly
7a1d5ab252
feat(core): upgrade icons package ( #11435 )
2025-04-04 04:52:49 +00:00
pengx17
133be72ac2
refactor(electron): encoding recording on the fly ( #11457 )
...
fix AF-2460, AF-2463
When recording is started, we start polling the pending raw buffers that are waiting for encoding. The buffers are determined by the cursor of the original raw buffer file. When recording is stopped, we will flush the pending buffers and wrap the encoded chunks into WebM.
```mermaid
sequenceDiagram
participant App as App/UI
participant RecordingFeature as Recording Feature
participant StateMachine as State Machine
participant FileSystem as File System
participant StreamEncoder as Stream Encoder
participant OpusEncoder as Opus Encoder
participant WebM as WebM Muxer
Note over App,WebM: Recording Start Flow
App->>RecordingFeature: startRecording()
RecordingFeature->>StateMachine: dispatch(START_RECORDING)
StateMachine-->>RecordingFeature: status: 'recording'
RecordingFeature->>StreamEncoder: createStreamEncoder(id, {sampleRate, channels})
Note over App,WebM: Streaming Flow
loop Audio Data Streaming
RecordingFeature->>FileSystem: Write raw audio chunks to .raw file
StreamEncoder->>FileSystem: Poll raw audio data
FileSystem-->>StreamEncoder: Raw audio chunks
StreamEncoder->>OpusEncoder: Encode chunks
OpusEncoder-->>StreamEncoder: Encoded Opus frames
end
Note over App,WebM: Recording Stop Flow
App->>RecordingFeature: stopRecording()
RecordingFeature->>StateMachine: dispatch(STOP_RECORDING)
StateMachine-->>RecordingFeature: status: 'stopped'
StreamEncoder->>OpusEncoder: flush()
StreamEncoder->>WebM: muxToWebM(encodedChunks)
WebM-->>RecordingFeature: WebM buffer
RecordingFeature->>FileSystem: Save as .opus file
RecordingFeature->>StateMachine: dispatch(SAVE_RECORDING)
```
2025-04-03 15:56:53 +00:00
pengx17
8ce10e6d0a
feat(electron): add tray menu settings ( #11437 )
...
fix AF-2447
2025-04-03 15:56:52 +00:00
akumatus
0aeb3041b5
feat(core): add ai chat composer ( #11443 )
...
Close [BS-2583](https://linear.app/affine-design/issue/BS-2583 ).

2025-04-03 14:53:50 +00:00
akumatus
6cf182190c
refactor(core): remove useless chat-input components ( #11426 )
...
Close [BS-2583](https://linear.app/affine-design/issue/BS-2583 ).
2025-04-03 14:53:50 +00:00
akumatus
6033baeb86
refactor(core): add useAIChatConfig hook ( #11424 )
...
Close [BS-2583](https://linear.app/affine-design/issue/BS-2583 ).
2025-04-03 14:53:49 +00:00
forehalo
2533a92873
chore(server): avoid config object been modified ( #11452 )
2025-04-03 12:57:29 +00:00
forehalo
6939e80827
chore(server): never reuse cls id for job handler ( #11449 )
2025-04-03 12:26:02 +00:00
forehalo
c8d22d97d5
refactor: webpack config ( #11421 )
2025-04-03 11:55:56 +00:00
fundon
565d7b2b1e
fix(editor): should not show inner toolbar of surface-ref in edgeless ( #11453 )
...
Closes: [BS-3015](https://linear.app/affine-design/issue/BS-3015/toolbar-有时会出现空状态且被显示 ) [BS-3023](https://linear.app/affine-design/issue/BS-3023/surface-ref-inner-toolbar-的标题圆角 )
2025-04-03 11:13:09 +00:00
EYHN
a9ba54a92e
feat(core): adjust notification style ( #11455 )
2025-04-03 10:59:37 +00:00
EYHN
093bffdf5c
fix(core): fix notification list ( #11423 )
2025-04-03 10:44:32 +00:00
darkskygit
cfde175298
chore: remove structure output limit ( #11444 )
2025-04-03 07:45:03 +00:00
darkskygit
b4c643e8bc
chore(server): improve gql types ( #11441 )
2025-04-03 07:30:51 +00:00
fengmk2
70a318f1c4
fix(server): auto-accept pending invitations by link in team workspace ( #11433 )
...
close CLOUD-192
2025-04-03 07:19:14 +00:00
donteatfriedrice
9206145a48
feat(editor): remove embed iframe feature flag ( #11432 )
...
Close [BS-3019](https://linear.app/affine-design/issue/BS-3019/remove-embed-iframe-feature-flag )
2025-04-03 04:59:52 +00:00
fundon
a1500e3ee1
fix(editor): textarea not focusing in AI panel ( #11429 )
...
Closes: [BS-3006](https://linear.app/affine-design/issue/BS-3006/insider上面,圈选yuan素后,ad-hoc的ai对话框焦点控制有大问题(无法对焦,总是会跳走) )
2025-04-03 03:27:26 +00:00
yoyoyohamapi
c61df18ab9
test(core): chat with collection & tags ( #11388 )
...
### TL:DR
* AI chat with collection E2E
* AI chat with tag E2E
> Close BS-3007
2025-04-03 02:46:08 +00:00
fundon
03dd073cb4
fix(editor): add recent open doc with mode button ( #11419 )
...
Closes: [BS-3013](https://linear.app/affine-design/issue/BS-3013/open-doc-分开两个按钮:一个快捷按钮和一个菜单 )
Split into two buttons: `recent open doc with mode button` and `open doc with dropdown menu`.
2025-04-03 02:06:14 +00:00
L-Sun
b53b2acfe3
fix(ios): mobile modal occlusion issues ( #11427 )
...
Close [BS-2925](https://linear.app/affine-design/issue/BS-2925/移动端-dialog-遮挡相关 )
2025-04-03 01:51:57 +00:00
L-Sun
80a663efe7
fix(ios): adjust bootom padding of body when keyboard toolbar existed ( #11410 )
...
Close [BS-2919](https://linear.app/affine-design/issue/BS-2919/【移动端】ios-页面底部点几,页面定位有问题,光标和浮层重叠,并且看不到新添加的-block )
Close [BS-2918](https://linear.app/affine-design/issue/BS-2918/【移动端】ios-添加标题无法展示对应-block,滑动页面也无效,光标位置也不对 )
## Changes
- Fixed body padding calculation when keyboard toolbar is present
- Removed redundant position controller logic and simplified the implementation
2025-04-03 01:51:57 +00:00
L-Sun
5109ceccec
fix(ios): can not open keyboard in editor ( #11401 )
...
Close [BS-2917](https://linear.app/affine-design/issue/BS-2917/【移动端】ios-唤起键盘的edge-case )
This PR fixes an issue where the keyboard cannot be re-triggered on iOS devices after the keyboard toolbar is hidden or executing some actions in keyboard toolbar.
Key changes:
- Preserve and restore the initial input mode when keyboard toolbar shows/hides
- Improve virtual keyboard service interface to better handle keyboard state
- Add proper cleanup of input mode state in component lifecycle
2025-04-03 01:51:56 +00:00
fengmk2
a5eb1b9985
fix(server): correct notification pagination by using 'lt' instead of 'gt' for createdAt ( #11430 )
2025-04-03 01:25:35 +00:00
EYHN
bd5428e311
feat(core): adjust notification button style ( #11425 )
2025-04-02 15:41:14 +00:00
darkskygit
90c43356c1
fix(server): copilot test condition ( #11417 )
2025-04-02 14:59:22 +00:00
pengx17
abfbf07712
fix(native): properly cleanup resource when activating device failed ( #11380 )
2025-04-02 14:46:34 +00:00
fengmk2
f3e9b4bbf0
feat(server): search workspace users support case insensitive ( #11422 )
...
close CLOUD-193
2025-04-02 14:33:07 +00:00
pengx17
90c3c4bf7f
feat(electron): recording popup ux ( #11403 )
...
fix AF-2444, AF-2443
2025-04-02 14:17:53 +00:00
pengx17
2adb8e1404
feat(core): allow retry transcription ( #11416 )
2025-04-02 14:05:12 +00:00
akumatus
c5c6978136
refactor(core): ai input ( #11381 )
...
Close [BS-2758](https://linear.app/affine-design/issue/BS-2758 ).
Support [BS-2583](https://linear.app/affine-design/issue/BS-2583 ).
### What changed?
- Extend `ChatPanelInput` and `ChatBlockInput` from the same abstract class `AIChatInput` to reduce duplication of code.
- Unify the context interface of `chat-panel` and `chat-block`.
- Rename `items` field to `messages`.
- Remove duplicated type declare.
2025-04-02 13:37:30 +00:00
fengmk2
c8392d0cbe
fix(server): auto-accept pending invitations by link ( #11409 )
...
close CLOUD-192
2025-04-02 13:24:03 +00:00
darkskygit
0f18585631
chore(server): update sign domain description ( #11407 )
2025-04-02 12:58:03 +00:00
forehalo
1386a66579
chore(server): hide not configurable module ( #11406 )
2025-04-02 12:44:20 +00:00
EYHN
07b1c2fa05
fix(core): fix member search loading state ( #11418 )
2025-04-02 12:23:54 +00:00
darkskygit
501b5f6a97
feat(server): retry transcript job ( #11414 )
2025-04-02 12:02:07 +00:00
darkskygit
94ddcc7a7a
chore(server): move embedding job namespace ( #11397 )
2025-04-02 10:51:36 +00:00