Commit Graph

53 Commits

Author SHA1 Message Date
DarkSky 728e02cab7 feat: bump eslint & oxlint (#14452)
#### PR Dependency Tree


* **PR #14452** 👈

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

* **Bug Fixes**
* Improved null-safety, dependency tracking, upload validation, and
error logging for more reliable uploads, clipboard, calendar linking,
telemetry, PDF/theme printing, and preview/zoom behavior.
* Tightened handling of all-day calendar events (missing date now
reported).

* **Deprecations**
  * Removed deprecated RadioButton and RadioButtonGroup; use RadioGroup.

* **Chores**
* Unified and upgraded linting/config, reorganized imports, and
standardized binary handling for more consistent builds and tooling.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-02-16 13:52:08 +08:00
DarkSky a27f8b168a Revert "feat: improve idb perf (#14159)"
This reverts commit 78949044ec.
2026-02-02 10:33:15 +08:00
DarkSky f1a6e409cb feat(server): lightweight s3 client (#14348)
#### PR Dependency Tree


* **PR #14348** 👈

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**
* Added a dedicated S3-compatible client package and expanded
S3-compatible storage config (endpoint, region, forcePathStyle,
requestTimeoutMs, minPartSize, presign options, sessionToken).
* Document sync now broadcasts batched/compressed doc updates for more
efficient real-time syncing.

* **Tests**
* New unit and benchmark tests for base64 utilities and S3 multipart
listing; updated storage-related tests to match new formats.

<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-02-01 21:54:39 +08:00
DarkSky 924d58603f chore: improve event flow (#14266) 2026-01-16 16:07:27 +08:00
DarkSky 7c24b2521a feat: reduce backend (#14251)
#### PR Dependency Tree


* **PR #14251** 👈

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**
* Current user profile now exposes access tokens, revealed tokens, and
detailed calendar accounts/subscriptions.
* Workspace now exposes permissions, calendars, calendar events, and a
workspace-scoped blob upload part URL.
  * New document-update mutation for applying doc updates.

* **API Changes**
  * validateAppConfig is now a query (mutation deprecated).
* Several legacy top-level calendar/blob endpoints deprecated in favor
of user/workspace fields.

* **Refactor**
* Calendar, blob-upload and access-token surfaces reorganized to use
user/workspace-centric fields.

<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-01-14 00:01:07 +08:00
DarkSky e7d0f31546 fix: blob redirect 2026-01-04 00:23:51 +08:00
DarkSky 99332228da feat: native sync state (#14190)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **New Features**
* Added indexed clock management capabilities for documents, enabling
get, set, and clear operations across Android, iOS, Electron, and web
platforms.

* **Refactor**
* Improved storage architecture to dynamically select platform-specific
implementations (SQLite for Electron, IndexedDB for others).

* **Bug Fixes**
* Enhanced document operations to properly maintain and clean up indexer
synchronization state during document lifecycle changes.

<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-12-31 04:09:32 +08:00
DarkSky 6514614df8 feat: bump electron (#14158) 2025-12-27 23:54:11 +08:00
DarkSky 78949044ec feat: improve idb perf (#14159)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Performance**
* Optimized database operations through improved batch processing to
accelerate data retrieval, updates, and deletion operations for better
efficiency.

* **Reliability**
* Enhanced transaction durability handling to strengthen data
consistency and ensure more reliable persistence of database changes and
updates.

<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-12-27 08:22:37 +08:00
DarkSky 2e38898937 feat: refresh index if version changed (#14150) 2025-12-26 01:08:05 +08:00
DarkSky e8693a3a25 feat: introduce fuzzy search for native indexer (#14109) 2025-12-25 04:40:23 +08:00
DarkSky 76524084d1 feat: multipart blob sync support (#14138)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Flexible blob uploads: GRAPHQL, presigned, and multipart flows with
per‑part URLs, abort/complete operations, presigned proxy endpoints, and
nightly cleanup of expired pending uploads.

* **API / Schema**
* GraphQL additions: new types, mutations, enum and error to manage
upload lifecycle (create, complete, abort, get part URL).

* **Database**
* New blob status enum and columns (status, upload_id); listing now
defaults to completed blobs.

* **Localization**
  * Added user-facing message: "Blob is invalid."

* **Tests**
* Expanded unit and end‑to‑end coverage for upload flows, proxy
behavior, multipart and provider integrations.

<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-12-23 22:09:21 +08:00
DarkSky 215541d331 feat: improve indexing perf with native indexer (#14066)
fix #12132, #14006, #13496, #12375, #12132 

The previous idb indexer generated a large number of scattered writes
when flushing to disk, which caused CPU and disk write spikes. If the
document volume is extremely large, the accumulation of write
transactions will cause memory usage to continuously increase.

This PR introduces batch writes to mitigate write performance on the web
side, and adds a native indexer on the Electron side to greatly improve
performance.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Full-text search (FTS) added across storage layers and native plugins:
indexing, search, document retrieval, match ranges, and index flushing.
* New SQLite-backed indexer storage, streaming search/aggregate APIs,
and in-memory index with node-building and highlighting.

* **Performance**
* Indexing rewritten for batched, concurrent writes and parallel
metadata updates.
* Search scoring enhanced to consider multiple term positions and
aggregated term data.

* **Other**
  * Configurable refresh interval and indexer version bump.

<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-12-09 22:04:50 +08:00
DarkSky cf4e37c584 feat(native): native reader for indexer (#14055) 2025-12-07 16:22:11 +08:00
Daniel Dybing 88a2e4aa4b fix: improved error description of proxy size limits (#14016)
**Summary:**
This PR improves the user feedback when encountering an HTTP 413
(_CONTENT_TOO_LARGE)_ error caused by a file size limit in the proxy /
ingress controller in a self-hosted environment.

**Example scenario:**
A self-hosted environment serves AFFiNE through an nginx proxy, and the
`client_max_body_size` variable in the configuration file is set to a
smaller size (e.g. 1MB) than AFFiNE's own file size limit (typically
100MB). Previously, the user would get an error saying the file is
larger than 100MB regardless of file size, as all of these cases
resulted in the same internal error. With this fix, the
_CONTENT_TOO_LARGE_ error is now handled separately and gives better
feedback to the user that the failing upload is caused by a fault in the
proxy configuration.

**Screenshot of new error message**

<img width="798" height="171" alt="1MB_now"
src="https://github.com/user-attachments/assets/07b00cd3-ce37-4049-8674-2f3dcb916ab5"
/>


**Affected files:**
  1. packages/common/nbstore/src/storage/errors/over-size.ts
  2. packages/common/nbstore/src/impls/cloud/blob.ts


I'm open to any suggestions in terms of the wording used in the message
to the user. The fix has been tested with an nginx proxy.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Bug Fixes**
* Improved user-facing error messages for file upload failures. When an
upload exceeds the file size limit, users now receive a clearer message
indicating that the upload was stopped by the network proxy due to the
size restriction, providing better understanding of why the upload was
rejected.

<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-11-27 12:06:07 +08:00
EYHN 4aa9ae5e68 fix(nbstore): fix http request timeout handling (#12515)
`AbortSignal.timeout` will cause a timeout when transferring large blobs.  by using `setTimeout` currently, the timeout only covers the phase of establishing a connection.

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **Bug Fixes**
  - Improved reliability of request cancellation and timeout handling for HTTP requests.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-27 02:20:49 +00:00
fundon 952650e1bc refactor(nbstore): improve HTTP connection timeout handling (#11985)
Closes: [BS-3344](https://linear.app/affine-design/issue/BS-3344/改进请求超时提示)

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **Refactor**
  - Improved internal request timeout handling for cloud operations, resulting in more robust and reliable network requests. No changes to user-facing features or functionality.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-23 09:13:59 +00:00
fengmk2 4e37a1322e feat(nbstore): add cloud indexer storage (#12245)
close AF-2613
2025-05-19 04:39:39 +00:00
EYHN 52253e9e82 fix(nbstore): update workspace blob quota query (#12191)
Change the query for querying quota of Cloud Blob Storage.

The original query used new fields, which caused errors in the old version of the server. This PR uses a simpler query to ensure compatibility.

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

## Summary by CodeRabbit

- **New Features**
  - Added the ability to retrieve a workspace's blob storage quota, including both the raw limit and a human-readable format, via a new query.

- **Bug Fixes**
  - Updated quota retrieval to use the new blob-specific quota query for improved accuracy.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-08 09:14:54 +00:00
fundon 9702d45c9b fix(nbstore): improve blob size error handling with human-readable limit (#12027)
Closes: [BS-3332](https://linear.app/affine-design/issue/BS-3332/错误信息)

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **Bug Fixes**
	- Improved error messages when file uploads exceed the allowed size, now showing the maximum file size limit in a human-readable format.
	- Enhanced status updates for oversized files by displaying clear error messages during blob uploads.
- **Style**
	- Error messages for file size limits are now more user-friendly and informative.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-07 01:29:37 +00:00
liuyi 0665d20d67 fix(nbstore): wrong order of socketio transports (#12077) 2025-04-30 03:05:40 +00:00
EYHN a75ae38308 fix(nbstore): fix cloud blob in ios and android (#11938) 2025-04-30 10:25:15 +08:00
EYHN 08d1b8dcbf fix(core): better search result (#12015)
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **Refactor**
	- Simplified search menu logic by removing unnecessary filtering and parameters from menu item generation. No changes to visible functionality.
- **Bug Fixes**
	- Improved search index matching to retrieve all relevant entries, enhancing search accuracy.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-04-28 03:55:45 +00:00
EYHN 4df75ec5d0 fix(core): subscribe search not unsubscribe (#11929) 2025-04-23 13:56:58 +00:00
EYHN 9fbffccc25 fix(nbstore): fix indexer cache not working (#11922) 2025-04-23 08:53:48 +00:00
EYHN dd51180acb feat(core): replace onboarding template (#11768) 2025-04-18 02:31:13 +00:00
EYHN 5e9ad634b7 feat(nbstore): optimize search performance (#11778)
now we can debug indexeddb performance by devtool

![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/g3jz87HxbjOJpXV3FPT7/75cf686f-9bc4-4db3-86ac-12bba83e8d83.png)
2025-04-17 13:16:18 +00:00
EYHN a759a1988e fix(nbstore): connect before do operation (#11569) 2025-04-10 16:05:46 +08:00
EYHN bc0f32f20b feat(nbstore): add indexer sync version (#11324) 2025-03-31 16:48:47 +00:00
EYHN 8957d0645f feat(nbstore): add indexer storage (#10953) 2025-03-31 12:59:51 +00:00
EYHN dda3103d1b feat(nbstore): allow polling protocol (#11160) 2025-03-25 08:15:23 +00:00
EYHN edcf6a967a feat(nbstore): blob storage adapt to new error type (#11005) 2025-03-21 16:05:30 +08:00
EYHN 05200ad7b7 feat(nbstore): add blob sync storage (#10752) 2025-03-14 18:05:54 +08:00
EYHN f3ef9c4415 feat(nbstore): rename SyncStorage to DocSyncStorage (#10751) 2025-03-14 06:25:26 +00:00
EYHN 618042812b fix(nbstore): fix cloud awareness (#10320) 2025-02-21 11:11:10 +08:00
EYHN c39a93e1fd fix(nbstore): fix v1 doc storage timestamp (#10282) 2025-02-19 16:04:37 +08:00
EYHN 5a7ab880c1 fix(core): fix ios blob upload (#10263) 2025-02-19 10:07:46 +08:00
forehalo c673088cc6 feat(nbstore): use polling as ios websocket transport (#10001) 2025-02-07 02:44:52 +00:00
EYHN ee0cfe4dc7 feat(nbstore): share worker between workspaces (#9947) 2025-02-05 07:57:03 +00:00
forehalo cb53baca89 fix(electron): export and import (#9767) 2025-01-20 08:48:03 +00:00
EYHN a2ffdb4047 feat(core): new worker workspace engine (#9257) 2025-01-16 16:22:18 +00:00
EYHN 46c8c4a408 feat(nbstore): improve nbstore (#9512) 2025-01-06 09:38:04 +00:00
EYHN cbaf35df0b feat(nbstore): add nbstore worker (#9185) 2024-12-20 08:01:23 +00:00
JimmFly a153a1c3c9 feat(core): add app version to request header (#9101) 2024-12-19 02:38:08 +00:00
EYHN 64b017dc1b feat(nbstore): remove async on connection api (#9187)
We should not use async on `connect` and `disconnect`, for `WebSocketConnection` will never connect when offline.

We should handle the connection status of each storage in sync, using the `connection.waitForConnect`

This PR also puts the connection reference count on the `connect` and disconnect`
2024-12-18 03:59:49 +00:00
EYHN ffa0231cf5 feat(nbstore): add awareness storage&sync&frontend (#9016) 2024-12-17 04:37:15 +00:00
Brooooooklyn ea746e3d77 chore: disable rules in oxlint (#9154) 2024-12-13 10:49:35 +00:00
forehalo 8c24f2b906 feat(nbstore): add sqlite implementation (#8811) 2024-12-13 06:13:05 +00:00
forehalo 2f80b4f822 feat(nbstore): add cloud implementation (#8810) 2024-12-10 10:48:27 +00:00
EYHN 35edf389b5 feat(nbstore): better doc sync logic (#9037) 2024-12-10 06:49:21 +00:00