From ca2462f9873d92699a80d5213225ac97fbd55340 Mon Sep 17 00:00:00 2001
From: DarkSky <25152247+darkskygit@users.noreply.github.com>
Date: Sun, 11 Jan 2026 06:08:33 +0800
Subject: [PATCH] feat(native): sync yocto codes (#14243)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
#### PR Dependency Tree
* **PR #14243** 👈
This tree was auto-generated by
[Charcoal](https://github.com/danerwilliams/charcoal)
## Summary by CodeRabbit
* **New Features**
* Batch management API for coordinated document mutations and change
tracking.
* New document accessors (IDs, state snapshots, change/delete set
queries) and subscriber count.
* **Chores**
* Upgraded Rust edition across packages to 2024.
* Repository-wide formatting, stylistic cleanups and test adjustments.
* **Breaking Changes**
* Removed the Node native bindings package and its JS/TS declarations
and tests (no longer published/available).
✏️ Tip: You can customize this high-level summary in your review
settings.
---
.editorconfig | 2 +
.github/workflows/build-test.yml | 44 -
.taplo.toml | 6 +-
Cargo.lock | 13 +-
Cargo.toml | 1 -
package.json | 1 -
packages/backend/native/Cargo.toml | 2 +-
packages/backend/native/src/doc.rs | 27 +-
packages/backend/native/src/doc_loader.rs | 2 +-
packages/backend/native/src/file_type.rs | 6 +-
packages/backend/native/src/hashcash.rs | 7 +-
packages/backend/native/src/lib.rs | 5 +-
packages/backend/native/src/utils.rs | 14 +-
packages/common/native/Cargo.toml | 2 +-
packages/common/native/benches/hashcash.rs | 2 +-
.../common/native/src/doc_loader/document.rs | 30 +-
.../native/src/doc_loader/loader/docx.rs | 4 +-
.../native/src/doc_loader/loader/html.rs | 23 +-
.../native/src/doc_loader/loader/mod.rs | 2 +-
.../native/src/doc_loader/loader/pdf.rs | 5 +-
.../src/doc_loader/loader/source/mod.rs | 2 +-
.../src/doc_loader/loader/source/parser.rs | 22 +-
.../native/src/doc_loader/loader/text.rs | 4 +-
packages/common/native/src/doc_loader/mod.rs | 4 +-
.../native/src/doc_loader/splitter/options.rs | 6 +-
.../common/native/src/doc_parser/affine.rs | 149 ++--
.../native/src/doc_parser/blocksuite.rs | 41 +-
.../native/src/doc_parser/delta_markdown.rs | 94 +--
packages/common/native/src/doc_parser/mod.rs | 5 +-
packages/common/native/src/hashcash.rs | 52 +-
packages/common/y-octo/core/Cargo.toml | 10 +-
.../y-octo/core/benches/apply_benchmarks.rs | 2 +-
.../core/benches/array_ops_benchmarks.rs | 2 +-
.../y-octo/core/benches/codec_benchmarks.rs | 2 +-
.../y-octo/core/benches/map_ops_benchmarks.rs | 2 +-
.../core/benches/text_ops_benchmarks.rs | 2 +-
.../y-octo/core/benches/update_benchmarks.rs | 2 +-
.../common/y-octo/core/src/codec/buffer.rs | 19 +-
.../common/y-octo/core/src/codec/string.rs | 29 +-
.../common/y-octo/core/src/doc/awareness.rs | 33 +-
packages/common/y-octo/core/src/doc/batch.rs | 119 +++
.../common/y-octo/core/src/doc/codec/any.rs | 47 +-
.../y-octo/core/src/doc/codec/content.rs | 72 +-
.../y-octo/core/src/doc/codec/delete_set.rs | 12 +-
.../y-octo/core/src/doc/codec/io/codec_v1.rs | 41 +-
.../common/y-octo/core/src/doc/codec/item.rs | 23 +-
.../common/y-octo/core/src/doc/codec/mod.rs | 2 +-
.../common/y-octo/core/src/doc/codec/refs.rs | 38 +-
.../y-octo/core/src/doc/codec/update.rs | 69 +-
.../y-octo/core/src/doc/codec/utils/items.rs | 9 +-
.../y-octo/core/src/doc/common/range.rs | 41 +-
.../common/y-octo/core/src/doc/common/somr.rs | 8 +-
.../y-octo/core/src/doc/common/state.rs | 4 +-
.../common/y-octo/core/src/doc/document.rs | 160 ++--
.../common/y-octo/core/src/doc/history.rs | 25 +-
packages/common/y-octo/core/src/doc/mod.rs | 2 +
.../common/y-octo/core/src/doc/publisher.rs | 19 +-
packages/common/y-octo/core/src/doc/store.rs | 398 +++++----
.../common/y-octo/core/src/doc/types/array.rs | 57 +-
.../y-octo/core/src/doc/types/list/mod.rs | 98 ++-
.../core/src/doc/types/list/search_marker.rs | 13 +-
.../common/y-octo/core/src/doc/types/map.rs | 58 +-
.../common/y-octo/core/src/doc/types/mod.rs | 40 +-
.../common/y-octo/core/src/doc/types/text.rs | 112 +--
.../common/y-octo/core/src/doc/types/value.rs | 6 +-
packages/common/y-octo/core/src/doc/utils.rs | 22 +-
packages/common/y-octo/core/src/lib.rs | 12 +-
.../y-octo/core/src/protocol/awareness.rs | 18 +-
.../common/y-octo/core/src/protocol/doc.rs | 7 +-
.../common/y-octo/core/src/protocol/mod.rs | 6 +-
packages/common/y-octo/core/src/sync.rs | 8 +-
packages/common/y-octo/node/.gitignore | 2 -
packages/common/y-octo/node/Cargo.toml | 20 -
packages/common/y-octo/node/build.rs | 3 -
packages/common/y-octo/node/index.d.ts | 47 --
packages/common/y-octo/node/index.js | 783 ------------------
packages/common/y-octo/node/package.json | 72 --
.../common/y-octo/node/scripts/run-test.mts | 78 --
packages/common/y-octo/node/src/array.rs | 163 ----
packages/common/y-octo/node/src/doc.rs | 176 ----
packages/common/y-octo/node/src/lib.rs | 17 -
packages/common/y-octo/node/src/map.rs | 128 ---
packages/common/y-octo/node/src/text.rs | 82 --
packages/common/y-octo/node/src/utils.rs | 122 ---
.../common/y-octo/node/tests/array.spec.mts | 62 --
.../common/y-octo/node/tests/doc.spec.mts | 99 ---
.../common/y-octo/node/tests/map.spec.mts | 152 ----
.../common/y-octo/node/tests/text.spec.mts | 54 --
packages/common/y-octo/node/tsconfig.json | 10 -
packages/common/y-octo/utils/Cargo.toml | 2 +-
.../y-octo/utils/benches/apply_benchmarks.rs | 4 +-
.../utils/benches/array_ops_benchmarks.rs | 2 +-
.../y-octo/utils/benches/codec_benchmarks.rs | 2 +-
.../utils/benches/map_ops_benchmarks.rs | 2 +-
.../utils/benches/text_ops_benchmarks.rs | 2 +-
.../y-octo/utils/benches/update_benchmarks.rs | 4 +-
.../y-octo/utils/bin/bench_result_render.rs | 19 +-
packages/common/y-octo/utils/fuzz/Cargo.toml | 2 +-
.../utils/src/doc_operation/yrs_op/array.rs | 28 +-
.../utils/src/doc_operation/yrs_op/map.rs | 14 +-
.../utils/src/doc_operation/yrs_op/mod.rs | 29 +-
.../utils/src/doc_operation/yrs_op/text.rs | 38 +-
.../src/doc_operation/yrs_op/xml_text.rs | 10 +-
packages/frontend/mobile-native/Cargo.toml | 2 +-
packages/frontend/mobile-native/src/lib.rs | 123 +--
packages/frontend/native/Cargo.toml | 2 +-
.../frontend/native/media_capture/Cargo.toml | 2 +-
.../benches/mix_audio_samples.rs | 2 +-
.../native/media_capture/src/audio_decoder.rs | 10 +-
.../media_capture/src/macos/audio_buffer.rs | 5 +-
.../src/macos/audio_stream_basic_desc.rs | 7 +-
.../media_capture/src/macos/av_audio_file.rs | 15 +-
.../src/macos/av_audio_format.rs | 16 +-
.../src/macos/av_audio_pcm_buffer.rs | 8 +-
.../src/macos/ca_tap_description.rs | 22 +-
.../media_capture/src/macos/cf_types.rs | 9 +-
.../native/media_capture/src/macos/device.rs | 13 +-
.../native/media_capture/src/macos/pid.rs | 22 +-
.../src/macos/screen_capture_kit.rs | 152 ++--
.../media_capture/src/macos/tap_audio.rs | 240 ++----
.../native/media_capture/src/macos/utils.rs | 28 +-
.../src/windows/audio_capture.rs | 38 +-
.../src/windows/microphone_listener.rs | 82 +-
.../src/windows/screen_capture_kit.rs | 66 +-
packages/frontend/native/nbstore/Cargo.toml | 2 +-
packages/frontend/native/nbstore/src/blob.rs | 30 +-
.../frontend/native/nbstore/src/blob_sync.rs | 6 +-
packages/frontend/native/nbstore/src/doc.rs | 61 +-
.../frontend/native/nbstore/src/doc_sync.rs | 45 +-
.../frontend/native/nbstore/src/indexer.rs | 47 +-
.../native/nbstore/src/indexer_sync.rs | 22 +-
packages/frontend/native/nbstore/src/lib.rs | 162 +---
packages/frontend/native/nbstore/src/pool.rs | 22 +-
.../frontend/native/nbstore/src/storage.rs | 10 +-
packages/frontend/native/schema/Cargo.toml | 2 +-
packages/frontend/native/sqlite_v1/Cargo.toml | 2 +-
packages/frontend/native/sqlite_v1/build.rs | 5 +-
packages/frontend/native/sqlite_v1/src/lib.rs | 56 +-
packages/frontend/native/src/hashcash.rs | 7 +-
rustfmt.toml | 9 +-
tools/utils/src/workspace.gen.ts | 6 -
tsconfig.json | 1 -
yarn.lock | 424 +---------
143 files changed, 1396 insertions(+), 4841 deletions(-)
create mode 100644 packages/common/y-octo/core/src/doc/batch.rs
delete mode 100644 packages/common/y-octo/node/.gitignore
delete mode 100644 packages/common/y-octo/node/Cargo.toml
delete mode 100644 packages/common/y-octo/node/build.rs
delete mode 100644 packages/common/y-octo/node/index.d.ts
delete mode 100644 packages/common/y-octo/node/index.js
delete mode 100644 packages/common/y-octo/node/package.json
delete mode 100755 packages/common/y-octo/node/scripts/run-test.mts
delete mode 100644 packages/common/y-octo/node/src/array.rs
delete mode 100644 packages/common/y-octo/node/src/doc.rs
delete mode 100644 packages/common/y-octo/node/src/lib.rs
delete mode 100644 packages/common/y-octo/node/src/map.rs
delete mode 100644 packages/common/y-octo/node/src/text.rs
delete mode 100644 packages/common/y-octo/node/src/utils.rs
delete mode 100644 packages/common/y-octo/node/tests/array.spec.mts
delete mode 100644 packages/common/y-octo/node/tests/doc.spec.mts
delete mode 100644 packages/common/y-octo/node/tests/map.spec.mts
delete mode 100644 packages/common/y-octo/node/tests/text.spec.mts
delete mode 100644 packages/common/y-octo/node/tsconfig.json
diff --git a/.editorconfig b/.editorconfig
index 6e87a003da..94d1d40e9c 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -1,6 +1,8 @@
# Editor configuration, see http://editorconfig.org
root = true
+[*.rs]
+max_line_length = 120
[*]
charset = utf-8
indent_style = space
diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml
index 4add0443df..cae2d6cd62 100644
--- a/.github/workflows/build-test.yml
+++ b/.github/workflows/build-test.yml
@@ -798,49 +798,6 @@ jobs:
name: fuzz-artifact
path: packages/common/y-octo/utils/fuzz/artifacts/**/*
- y-octo-binding-test:
- name: y-octo binding test on ${{ matrix.settings.target }}
- runs-on: ${{ matrix.settings.os }}
- strategy:
- fail-fast: false
- matrix:
- settings:
- - { target: 'x86_64-unknown-linux-gnu', os: 'ubuntu-latest' }
- - { target: 'aarch64-unknown-linux-gnu', os: 'ubuntu-24.04-arm' }
- - { target: 'x86_64-apple-darwin', os: 'macos-15-intel' }
- - { target: 'aarch64-apple-darwin', os: 'macos-latest' }
- - { target: 'x86_64-pc-windows-msvc', os: 'windows-latest' }
- - { target: 'aarch64-pc-windows-msvc', os: 'windows-11-arm' }
- steps:
- - uses: actions/checkout@v4
- - name: Setup Node.js
- uses: ./.github/actions/setup-node
- with:
- extra-flags: workspaces focus @affine-tools/cli @affine/monorepo @y-octo/node
- electron-install: false
- - name: Install rustup (Windows 11 ARM)
- if: matrix.settings.os == 'windows-11-arm'
- shell: pwsh
- run: |
- Invoke-WebRequest -Uri "https://static.rust-lang.org/rustup/dist/aarch64-pc-windows-msvc/rustup-init.exe" -OutFile rustup-init.exe
- .\rustup-init.exe --default-toolchain none -y
- "$env:USERPROFILE\.cargo\bin" | Out-File -Append -Encoding ascii $env:GITHUB_PATH
- "CARGO_HOME=$env:USERPROFILE\.cargo" | Out-File -Append -Encoding ascii $env:GITHUB_ENV
- - name: Install Rust (Windows 11 ARM)
- if: matrix.settings.os == 'windows-11-arm'
- shell: pwsh
- run: |
- rustup install stable
- rustup target add ${{ matrix.settings.target }}
- cargo --version
- - name: Build Rust
- uses: ./.github/actions/build-rust
- with:
- target: ${{ matrix.settings.target }}
- package: '@y-octo/node'
- - name: Run tests
- run: yarn affine @y-octo/node test
-
rust-test:
name: Run native tests
runs-on: ubuntu-latest
@@ -1387,7 +1344,6 @@ jobs:
- miri
- loom
- fuzzing
- - y-octo-binding-test
- server-test
- server-e2e-test
- rust-test
diff --git a/.taplo.toml b/.taplo.toml
index 20c3b8ad70..aea4ee9bd9 100644
--- a/.taplo.toml
+++ b/.taplo.toml
@@ -1,4 +1,8 @@
-exclude = ["node_modules/**/*.toml", "target/**/*.toml"]
+exclude = [
+ "node_modules/**/*.toml",
+ "target/**/*.toml",
+ "packages/frontend/apps/ios/App/Packages/AffineGraphQL/**/*.toml",
+]
# https://taplo.tamasfe.dev/configuration/formatter-options.html
[formatting]
diff --git a/Cargo.lock b/Cargo.lock
index 2644fecb34..8169016b77 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -6054,7 +6054,7 @@ checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4"
[[package]]
name = "y-octo"
-version = "0.0.1"
+version = "0.0.2"
dependencies = [
"ahash",
"arbitrary",
@@ -6081,17 +6081,6 @@ dependencies = [
"yrs",
]
-[[package]]
-name = "y-octo-node"
-version = "0.0.1"
-dependencies = [
- "anyhow",
- "napi",
- "napi-build",
- "napi-derive",
- "y-octo",
-]
-
[[package]]
name = "y-octo-utils"
version = "0.0.1"
diff --git a/Cargo.toml b/Cargo.toml
index 8cea42776c..03ffaf13ca 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -3,7 +3,6 @@ members = [
"./packages/backend/native",
"./packages/common/native",
"./packages/common/y-octo/core",
- "./packages/common/y-octo/node",
"./packages/common/y-octo/utils",
"./packages/frontend/mobile-native",
"./packages/frontend/native",
diff --git a/package.json b/package.json
index 333756af9f..6dc76fa741 100644
--- a/package.json
+++ b/package.json
@@ -8,7 +8,6 @@
".",
"blocksuite/**/*",
"packages/*/*",
- "packages/common/y-octo/node",
"packages/frontend/apps/*",
"tools/*",
"docs/reference",
diff --git a/packages/backend/native/Cargo.toml b/packages/backend/native/Cargo.toml
index 4f32224e3d..df3493f835 100644
--- a/packages/backend/native/Cargo.toml
+++ b/packages/backend/native/Cargo.toml
@@ -1,5 +1,5 @@
[package]
-edition = "2021"
+edition = "2024"
license-file = "LICENSE"
name = "affine_server_native"
version = "1.0.0"
diff --git a/packages/backend/native/src/doc.rs b/packages/backend/native/src/doc.rs
index 431d99bfac..418d4ab78a 100644
--- a/packages/backend/native/src/doc.rs
+++ b/packages/backend/native/src/doc.rs
@@ -1,6 +1,4 @@
-use affine_common::doc_parser::{
- self, BlockInfo, CrawlResult, MarkdownResult, PageDocContent, WorkspaceDocContent,
-};
+use affine_common::doc_parser::{self, BlockInfo, CrawlResult, MarkdownResult, PageDocContent, WorkspaceDocContent};
use napi::bindgen_prelude::*;
use napi_derive::napi;
@@ -103,10 +101,7 @@ pub fn parse_doc_from_binary(doc_bin: Buffer, doc_id: String) -> Result,
-) -> Result