Replace Flutter app with native SwiftUI rewrite (iOS 26)

Complete ground-up rewrite in SwiftUI targeting iOS 26. Drops the Flutter/Dart
codebase entirely in favour of a lean native app with no third-party dependencies.

Features shipped:
- Bookmark list with pagination, pull-to-refresh, swipe delete/archive
- Add bookmark form + iOS share extension (zero-tap save from any app)
- Tags tab — all tags sorted by count, tap to browse filtered bookmarks
- Native search tab (Tab role: .search) with instant client-side filtering
- AI enrichment via OpenRouter (google/gemini-2.0-flash-lite-001): auto-summary
  and tag generation, semantic search, smart collections
- Settings: linkding server config, OpenRouter API key
- App Groups for credential sharing between main app and share extension
- Swift 6 strict concurrency throughout (@Observable, @MainActor)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Krishna Kumar
2026-05-21 08:33:01 -05:00
parent cd85f9c67f
commit b7ef5c2215
306 changed files with 2337 additions and 17949 deletions

61
project.yml Normal file
View File

@@ -0,0 +1,61 @@
name: Marks
options:
bundleIdPrefix: com.magicive
deploymentTarget:
iOS: "26.0"
xcodeVersion: "16.3"
createIntermediateGroups: true
settings:
base:
SWIFT_VERSION: "6.0"
DEVELOPMENT_TEAM: AE5DZKJHGN
CODE_SIGN_STYLE: Automatic
IPHONEOS_DEPLOYMENT_TARGET: "26.0"
ENABLE_PREVIEWS: YES
schemes:
Marks:
build:
targets:
Marks: all
ShareExtension: all
run:
config: Debug
test:
config: Debug
profile:
config: Release
analyze:
config: Debug
archive:
config: Release
targets:
Marks:
type: application
platform: iOS
sources:
- path: Marks
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: com.magicive.marks
INFOPLIST_FILE: Marks/Info.plist
CODE_SIGN_ENTITLEMENTS: Marks/Marks.entitlements
ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
dependencies:
- target: ShareExtension
ShareExtension:
type: app-extension
platform: iOS
sources:
- path: ShareExtension
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: com.magicive.marks.ShareExtension
INFOPLIST_FILE: ShareExtension/Info.plist
CODE_SIGN_ENTITLEMENTS: ShareExtension/ShareExtension.entitlements
SKIP_INSTALL: YES
APPLICATION_EXTENSION_API_ONLY: YES