gitextract_j_mnpred/ ├── .editorconfig ├── .github/ │ └── FUNDING.yml ├── .gitignore ├── .gitmodules ├── .npmrc ├── .swift-format ├── .vscode/ │ └── settings.json ├── LICENSE ├── README.md ├── WenYan/ │ ├── Assets.xcassets/ │ │ ├── AccentColor.colorset/ │ │ │ └── Contents.json │ │ ├── AppIcon.appiconset/ │ │ │ └── Contents.json │ │ ├── Contents.json │ │ ├── juejin.imageset/ │ │ │ └── Contents.json │ │ ├── medium.imageset/ │ │ │ └── Contents.json │ │ ├── toutiao.imageset/ │ │ │ └── Contents.json │ │ ├── wechat.imageset/ │ │ │ └── Contents.json │ │ ├── wenyan.imageset/ │ │ │ └── Contents.json │ │ └── zhihu.imageset/ │ │ └── Contents.json │ ├── Common/ │ │ ├── AppError.swift │ │ ├── AppState.swift │ │ ├── Commons.swift │ │ ├── Extensions.swift │ │ ├── FIFOCache.swift │ │ ├── LocalSchemeHandler.swift │ │ ├── UploadService.swift │ │ └── WechatAPI.swift │ ├── CoreData/ │ │ ├── CoreDataStack.swift │ │ ├── CustomTheme+CoreDataClass.swift │ │ ├── CustomTheme+CoreDataProperties.swift │ │ ├── DBHandler.swift │ │ ├── UploadCache+CoreDataClass.swift │ │ └── UploadCache+CoreDataProperties.swift │ ├── Credits.rtf │ ├── Info.plist │ ├── Intents/ │ │ ├── AppShortcuts.swift │ │ └── StartAppIntent.swift │ ├── Models/ │ │ ├── DataFile.swift │ │ ├── Enums.swift │ │ └── Types.swift │ ├── Preview Content/ │ │ └── Preview Assets.xcassets/ │ │ └── Contents.json │ ├── Resources.bundle/ │ │ └── .keep │ ├── Stores/ │ │ ├── ArticleStore.swift │ │ ├── CredentialStore.swift │ │ ├── SecurityScopedResourceStore.swift │ │ ├── SettingsStore.swift │ │ └── TokenStore.swift │ ├── Views/ │ │ ├── ContentView.swift │ │ ├── MainUI.swift │ │ └── MainViewModel.swift │ ├── WenYan.entitlements │ ├── WenYan.xcdatamodeld/ │ │ └── WenYan.xcdatamodel/ │ │ └── contents │ └── WenYanApp.swift ├── WenYan.xcodeproj/ │ ├── project.pbxproj │ ├── project.xcworkspace/ │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata/ │ │ ├── IDEWorkspaceChecks.plist │ │ └── WorkspaceSettings.xcsettings │ └── xcshareddata/ │ └── xcschemes/ │ └── WenYan.xcscheme ├── ci_scripts/ │ └── ci_post_clone.sh ├── package.json ├── pnpm-workspace.yaml ├── scripts/ │ └── copy_web_assets.sh ├── src/ │ ├── app.d.ts │ ├── app.html │ ├── lib/ │ │ ├── action.ts │ │ ├── adapters/ │ │ │ ├── articleStorageAdapter.ts │ │ │ ├── credentialStoreAdapter.ts │ │ │ ├── settingsStoreAdapter.ts │ │ │ ├── swiftFsAdapter.ts │ │ │ └── themeStorageAdapter.ts │ │ ├── appState.svelte.ts │ │ ├── bridge.ts │ │ ├── imageProcessor.svelte.ts │ │ ├── index.ts │ │ ├── listeners.svelte.ts │ │ ├── services/ │ │ │ ├── exportHandler.ts │ │ │ ├── fileOpenHandler.ts │ │ │ └── imageUploadService.ts │ │ ├── setHooks.ts │ │ ├── storeRegister.ts │ │ └── utils.ts │ └── routes/ │ ├── +layout.svelte │ ├── +layout.ts │ ├── +page.svelte │ └── layout.css ├── static/ │ └── example.md ├── svelte.config.js ├── tailwind.config.js ├── tsconfig.json └── vite.config.ts