feat(core): import progress & perf (#15197)

#### PR Dependency Tree


* **PR #15197** 👈

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 new import pipeline with “plan then commit” batch handling for
Markdown, Notion HTML, Obsidian, and Bear backups.
* Enabled native import sessions with progress, cancellation, and
batch-by-batch committing (including assets, folders, icons, and tags).
  * Added web preflight limits for ZIP and multi-file imports.
* **Bug Fixes**
* Improved import error/warning reporting and continued processing when
some items fail.
* Strengthened snapshot-based file/directory picking to preserve paths.
* **Chores**
  * Updated project packaging/configuration for the new import workflow.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
DarkSky
2026-07-06 01:29:24 +08:00
committed by GitHub
parent 477015f064
commit 8d72e4dc29
106 changed files with 3329 additions and 11690 deletions
+19 -3
View File
@@ -8,12 +8,18 @@ import type {
} from '@affine/electron/main/exposed';
import type { AppInfo } from '@affine/electron/preload/electron-api';
import type { SharedStorage } from '@affine/electron/preload/shared-storage';
import type { CreateImportSessionFromSourceOptions } from '@affine/electron/shared/import';
type MainHandlers = typeof mainHandlers;
type HelperHandlers = typeof helperHandlers;
type HelperEvents = typeof helperEvents;
type MainEvents = typeof mainEvents;
export type ClientHandler = {
type ImportPreloadHandlers = {
createImportSessionFromSource(
options: CreateImportSessionFromSourceOptions
): Promise<string>;
};
type MainClientHandlers = {
[namespace in keyof MainHandlers]: {
[method in keyof MainHandlers[namespace]]: MainHandlers[namespace][method] extends (
arg0: any,
@@ -26,7 +32,12 @@ export type ClientHandler = {
: Promise<ReturnType<MainHandlers[namespace][method]>>
: never;
};
} & HelperHandlers;
};
export type ClientHandler = Omit<MainClientHandlers, 'import'> &
HelperHandlers & {
import: MainClientHandlers['import'] & ImportPreloadHandlers;
};
export type ClientEvents = MainEvents & HelperEvents;
export const appInfo = (globalThis as any).__appInfo as AppInfo | null;
@@ -38,7 +49,6 @@ export const sharedStorage = (globalThis as any).__sharedStorage as
| undefined;
export type { AppInfo, SharedStorage };
export {
type SpellCheckStateSchema,
type TabViewsMetaSchema,
@@ -51,3 +61,9 @@ export type {
AddTabOption,
TabAction,
} from '@affine/electron/main/windows-manager';
export type {
CreateImportSessionFromSourceOptions,
NativeImportBrowserSource,
NativeImportFormat,
NativeImportSessionHandlers,
} from '@affine/electron/shared/import';