migration start
Some checks failed
CI - Multi-Platform Native / Build iOS (RSSuper) (push) Has been cancelled
CI - Multi-Platform Native / Build macOS (push) Has been cancelled
CI - Multi-Platform Native / Build Android (push) Has been cancelled
CI - Multi-Platform Native / Build Linux (push) Has been cancelled
CI - Multi-Platform Native / Build Summary (push) Has been cancelled

This commit is contained in:
2026-03-29 14:12:17 -04:00
parent af87f9f571
commit d346b527e6
51 changed files with 4476 additions and 69 deletions

View File

@@ -0,0 +1,42 @@
# 03. Implement iOS data models (Swift)
meta:
id: native-business-logic-migration-03
feature: native-business-logic-migration
priority: P0
depends_on: [native-business-logic-migration-02]
tags: [implementation, ios, data-models]
objective:
- Implement all data models in Swift following iOS conventions
deliverables:
- FeedItem.swift
- Feed.swift
- FeedSubscription.swift
- SearchResult.swift
- SearchFilters.swift
- NotificationPreferences.swift
- ReadingPreferences.swift
- Supporting types and extensions
tests:
- Unit: Test property encoding/decoding
- Unit: Test custom string interpolation
- Unit: Test equality conformance
acceptance_criteria:
- All models conform to Codable
- All models have proper equatable conformance
- Date properties use ISO8601 formatter
- Optional properties properly handled
- Custom debug description implemented
validation:
- Run `swift test` in Xcode
- Verify compilation with no warnings
notes:
- Use Swift 5.9+ features
- Follow Apple's API design guidelines
- Consider using Identifiable protocol for List conformance

View File

@@ -0,0 +1,42 @@
# 04. Implement Android data models (Kotlin)
meta:
id: native-business-logic-migration-04
feature: native-business-logic-migration
priority: P0
depends_on: [native-business-logic-migration-02]
tags: [implementation, android, data-models]
objective:
- Implement all data models in Kotlin following Android conventions
deliverables:
- FeedItem.kt
- Feed.kt
- FeedSubscription.kt
- SearchResult.kt
- SearchFilters.kt
- NotificationPreferences.kt
- ReadingPreferences.kt
- Supporting data classes and sealed classes
tests:
- Unit: Test serialization/deserialization with Moshi/Gson
- Unit: Test copy() functionality
- Unit: Test toString() output
acceptance_criteria:
- All models are data classes
- All models have proper equals/hashCode
- JSON serialization working with Moshi
- Room Entity annotations ready for database models
- Sealed classes for enum types
validation:
- Run `./gradlew test`
- Verify no lint warnings
notes:
- Use data classes for immutable value objects
- Use sealed classes for enum-like types
- Consider using Parcelize for UI passing

View File

@@ -0,0 +1,41 @@
# 05. Implement Linux data models (C/Vala)
meta:
id: native-business-logic-migration-05
feature: native-business-logic-migration
priority: P0
depends_on: [native-business-logic-migration-02]
tags: [implementation, linux, data-models]
objective:
- Implement all data models in Vala/C following Linux/GNOME conventions
deliverables:
- feed-item.vala
- feed.vala
- feed-subscription.vala
- search-result.vala
- search-filters.vala
- notification-preferences.vala
- reading-preferences.vala
- Supporting structs and enums
tests:
- Unit: Test JSON serialization with Gio
- Unit: Test property accessors
- Unit: Test equality methods
acceptance_criteria:
- All models properly structured
- JSON serialization working
- Memory management correct (no leaks)
- GObject integration ready
validation:
- Run `meson test -C build`
- Check with valgrind for memory leaks
notes:
- Use Vala objects for reference types
- Use structs for value types
- Follow GNOME HIG for naming

View File

@@ -0,0 +1,42 @@
# 06. Implement iOS database layer (Core Data/GRDB)
meta:
id: native-business-logic-migration-06
feature: native-business-logic-migration
priority: P0
depends_on: [native-business-logic-migration-03]
tags: [implementation, ios, database]
objective:
- Implement database layer using Core Data for iOS
deliverables:
- RSSuper.xcdatamodeld
- DatabaseManager.swift
- Subscription+CoreDataClass.swift
- FeedItem+CoreDataClass.swift
- SearchHistory+CoreDataClass.swift
- Database migrations
- FTS virtual table implementation
tests:
- Unit: Test CRUD operations
- Unit: Test relationships
- Unit: Test FTS queries
- Integration: Test database migrations
acceptance_criteria:
- Core Data model created with all entities
- Relationships properly configured
- FTS search working
- Migrations implemented
- Background context used for writes
validation:
- Run unit tests
- Verify with Instruments (Core Data editor)
notes:
- Use NSPersistentContainer
- Implement FTS using SQLite directly or GRDB
- Consider using NSPredicate for queries

View File

@@ -0,0 +1,45 @@
# 07. Implement Android database layer (Room)
meta:
id: native-business-logic-migration-07
feature: native-business-logic-migration
priority: P0
depends_on: [native-business-logic-migration-04]
tags: [implementation, android, database]
objective:
- Implement database layer using Room for Android
deliverables:
- RssDatabase.kt
- SubscriptionEntity.kt
- FeedItemEntity.kt
- SearchHistoryEntity.kt
- SubscriptionDao.kt
- FeedItemDao.kt
- SearchHistoryDao.kt
- Database migrations
- FTS virtual table implementation
tests:
- Unit: Test CRUD operations with Room Testing
- Unit: Test relationships
- Unit: Test FTS queries
- Integration: Test database migrations
acceptance_criteria:
- Room database configured
- All entities annotated
- DAOs with proper queries
- FTS search working
- Migrations implemented
- TypeConverters for custom types
validation:
- Run `./gradlew test`
- Verify with Room Inspection
notes:
- Use Room 2.6+
- Implement FTS using SQLite FTS5
- Use @Transaction for multi-entity operations

View File

@@ -0,0 +1,42 @@
# 08. Implement Linux database layer (SQLite)
meta:
id: native-business-logic-migration-08
feature: native-business-logic-migration
priority: P0
depends_on: [native-business-logic-migration-05]
tags: [implementation, linux, database]
objective:
- Implement database layer using SQLite for Linux
deliverables:
- database.vala
- subscription-store.vala
- feed-item-store.vala
- search-history-store.vala
- schema.sql
- Database migrations
- FTS virtual table implementation
tests:
- Unit: Test CRUD operations
- Unit: Test relationships
- Unit: Test FTS queries
- Integration: Test database migrations
acceptance_criteria:
- SQLite database configured
- All tables created
- FTS search working
- Migrations implemented
- Proper error handling
validation:
- Run `meson test -C build`
- Verify with sqlite3 CLI
notes:
- Use GLib's GDatabase or direct SQLite bindings
- Implement FTS using SQLite FTS5
- Use transactions for batch operations

View File

@@ -0,0 +1,43 @@
# 09. Implement iOS RSS/Atom feed parser
meta:
id: native-business-logic-migration-09
feature: native-business-logic-migration
priority: P0
depends_on: [native-business-logic-migration-06]
tags: [implementation, ios, parsing]
objective:
- Implement RSS 2.0 and Atom 1.0 feed parser for iOS
deliverables:
- FeedParser.swift
- RSSParser.swift
- AtomParser.swift
- FeedType.swift (enum)
- ParseResult.swift
- XML parsing utilities
tests:
- Unit: Test RSS 2.0 parsing with sample feeds
- Unit: Test Atom 1.0 parsing with sample feeds
- Unit: Test iTunes namespace handling
- Unit: Test error cases (malformed XML)
- Integration: Test with real-world feeds
acceptance_criteria:
- RSS 2.0 feeds parse correctly
- Atom 1.0 feeds parse correctly
- iTunes namespace handled
- Enclosures extracted properly
- Error handling for malformed feeds
- Performance: <100ms for typical feed
validation:
- Run unit tests with sample feeds
- Test with known problematic feeds
notes:
- Use Swift's XMLParser or SwiftXML
- Handle namespaces properly
- Support both inline and separate content

View File

@@ -0,0 +1,43 @@
# 10. Implement Android RSS/Atom feed parser
meta:
id: native-business-logic-migration-10
feature: native-business-logic-migration
priority: P0
depends_on: [native-business-logic-migration-07]
tags: [implementation, android, parsing]
objective:
- Implement RSS 2.0 and Atom 1.0 feed parser for Android
deliverables:
- FeedParser.kt
- RSSParser.kt
- AtomParser.kt
- FeedType.kt (sealed class)
- ParseResult.kt
- XML parsing utilities
tests:
- Unit: Test RSS 2.0 parsing with sample feeds
- Unit: Test Atom 1.0 parsing with sample feeds
- Unit: Test iTunes namespace handling
- Unit: Test error cases (malformed XML)
- Integration: Test with real-world feeds
acceptance_criteria:
- RSS 2.0 feeds parse correctly
- Atom 1.0 feeds parse correctly
- iTunes namespace handled
- Enclosures extracted properly
- Error handling for malformed feeds
- Performance: <100ms for typical feed
validation:
- Run `./gradlew test`
- Test with known problematic feeds
notes:
- Use kxml or woodstox
- Handle namespaces properly
- Support both inline and separate content

View File

@@ -0,0 +1,43 @@
# 11. Implement Linux RSS/Atom feed parser
meta:
id: native-business-logic-migration-11
feature: native-business-logic-migration
priority: P0
depends_on: [native-business-logic-migration-08]
tags: [implementation, linux, parsing]
objective:
- Implement RSS 2.0 and Atom 1.0 feed parser for Linux
deliverables:
- feed-parser.vala
- rss-parser.vala
- atom-parser.vala
- feed-type.vala (enum)
- parse-result.vala
- XML parsing utilities
tests:
- Unit: Test RSS 2.0 parsing with sample feeds
- Unit: Test Atom 1.0 parsing with sample feeds
- Unit: Test iTunes namespace handling
- Unit: Test error cases (malformed XML)
- Integration: Test with real-world feeds
acceptance_criteria:
- RSS 2.0 feeds parse correctly
- Atom 1.0 feeds parse correctly
- iTunes namespace handled
- Enclosures extracted properly
- Error handling for malformed feeds
- Performance: <100ms for typical feed
validation:
- Run `meson test -C build`
- Test with known problematic feeds
notes:
- Use libxml2 through Vala bindings
- Handle namespaces properly
- Support both inline and separate content

View File

@@ -0,0 +1,40 @@
# 12. Implement iOS feed fetcher service
meta:
id: native-business-logic-migration-12
feature: native-business-logic-migration
priority: P0
depends_on: [native-business-logic-migration-09]
tags: [implementation, ios, networking]
objective:
- Implement feed fetching service with URLSession
deliverables:
- FeedFetcher.swift
- HTTPAuthCredentials.swift
- FetchResult.swift
- NetworkError.swift
- Feed caching implementation
tests:
- Unit: Test URL session configuration
- Unit: Test HTTP auth handling
- Unit: Test error cases (timeout, 404, etc.)
- Integration: Test fetching real feeds
acceptance_criteria:
- Feeds fetch with proper timeout (15s)
- HTTP auth supported
- Error handling complete
- Response caching implemented
- Performance: <5s for typical feed
validation:
- Run unit tests
- Test with Network Link Conditioner
notes:
- Use URLSession with proper configuration
- Implement exponential backoff for retries
- Respect Cache-Control headers

View File

@@ -0,0 +1,40 @@
# 13. Implement Android feed fetcher service
meta:
id: native-business-logic-migration-13
feature: native-business-logic-migration
priority: P0
depends_on: [native-business-logic-migration-10]
tags: [implementation, android, networking]
objective:
- Implement feed fetching service with OkHttp
deliverables:
- FeedFetcher.kt
- HTTPAuthCredentials.kt
- FetchResult.kt
- NetworkError.kt
- Feed caching implementation
tests:
- Unit: Test OkHttp configuration
- Unit: Test HTTP auth handling
- Unit: Test error cases (timeout, 404, etc.)
- Integration: Test fetching real feeds
acceptance_criteria:
- Feeds fetch with proper timeout (15s)
- HTTP auth supported
- Error handling complete
- Response caching implemented
- Performance: <5s for typical feed
validation:
- Run `./gradlew test`
- Test with network throttling
notes:
- Use OkHttp with proper configuration
- Implement exponential backoff for retries
- Respect Cache-Control headers

View File

@@ -0,0 +1,40 @@
# 14. Implement Linux feed fetcher service
meta:
id: native-business-logic-migration-14
feature: native-business-logic-migration
priority: P0
depends_on: [native-business-logic-migration-11]
tags: [implementation, linux, networking]
objective:
- Implement feed fetching service with libsoup
deliverables:
- feed-fetcher.vala
- http-auth-credentials.vala
- fetch-result.vala
- network-error.vala
- Feed caching implementation
tests:
- Unit: Test SoupSession configuration
- Unit: Test HTTP auth handling
- Unit: Test error cases (timeout, 404, etc.)
- Integration: Test fetching real feeds
acceptance_criteria:
- Feeds fetch with proper timeout (15s)
- HTTP auth supported
- Error handling complete
- Response caching implemented
- Performance: <5s for typical feed
validation:
- Run `meson test -C build`
- Test with network throttling
notes:
- Use libsoup-3.0
- Implement exponential backoff for retries
- Respect Cache-Control headers

View File

@@ -0,0 +1,41 @@
# 15. Implement iOS state management (Combine/Observer)
meta:
id: native-business-logic-migration-15
feature: native-business-logic-migration
priority: P0
depends_on: [native-business-logic-migration-12]
tags: [implementation, ios, state-management]
objective:
- Implement reactive state management using Combine
deliverables:
- FeedRepository.swift
- SubscriptionRepository.swift
- FeedViewModel.swift
- SubscriptionViewModel.swift
- State enumeration
- Error handling types
tests:
- Unit: Test repository methods
- Unit: Test ViewModel state transitions
- Unit: Test Combine publishers
- Integration: Test UI updates
acceptance_criteria:
- Repositories provide Combine publishers
- ViewModels manage state properly
- Error states handled
- Loading states implemented
- Memory efficient (no retain cycles)
validation:
- Run unit tests
- Check with Instruments for memory leaks
notes:
- Use Combine framework
- Follow Repository pattern
- Use @Published for SwiftUI integration

View File

@@ -0,0 +1,41 @@
# 16. Implement Android state management (StateFlow/LiveData)
meta:
id: native-business-logic-migration-16
feature: native-business-logic-migration
priority: P0
depends_on: [native-business-logic-migration-13]
tags: [implementation, android, state-management]
objective:
- Implement reactive state management using StateFlow and LiveData
deliverables:
- FeedRepository.kt
- SubscriptionRepository.kt
- FeedViewModel.kt
- SubscriptionViewModel.kt
- State sealed class
- Error handling types
tests:
- Unit: Test repository methods
- Unit: Test ViewModel state transitions
- Unit: Test StateFlow emission
- Integration: Test UI updates
acceptance_criteria:
- Repositories provide StateFlow
- ViewModels manage state properly
- Error states handled
- Loading states implemented
- Lifecycle-aware updates
validation:
- Run `./gradlew test`
- Test with Espresso for UI updates
notes:
- Use StateFlow for new code
- Use LiveData for UI binding
- Follow Repository pattern

View File

@@ -0,0 +1,41 @@
# 17. Implement Linux state management (GObject signals)
meta:
id: native-business-logic-migration-17
feature: native-business-logic-migration
priority: P0
depends_on: [native-business-logic-migration-14]
tags: [implementation, linux, state-management]
objective:
- Implement reactive state management using GObject signals
deliverables:
- feed-repository.vala
- subscription-repository.vala
- feed-view-model.vala
- subscription-view-model.vala
- State enumeration
- Error handling types
tests:
- Unit: Test repository methods
- Unit: Test ViewModel state transitions
- Unit: Test signal emission
- Integration: Test UI updates
acceptance_criteria:
- Repositories emit signals on changes
- ViewModels manage state properly
- Error states handled
- Loading states implemented
- Proper signal connections
validation:
- Run `meson test -C build`
- Test signal connections
notes:
- Use GObject properties with notify signals
- Follow GNOME HIG
- Use Gio for async operations

View File

@@ -0,0 +1,39 @@
# 18. Implement iOS background sync service
meta:
id: native-business-logic-migration-18
feature: native-business-logic-migration
priority: P1
depends_on: [native-business-logic-migration-15]
tags: [implementation, ios, background]
objective:
- Implement background feed sync using BGTaskScheduler
deliverables:
- BackgroundSyncService.swift
- SyncScheduler.swift
- SyncWorker.swift
- AppIntent extensions
- Background configuration
tests:
- Unit: Test scheduler configuration
- Unit: Test task cancellation
- Integration: Test background execution
acceptance_criteria:
- Background tasks scheduled properly
- Tasks execute within time window
- Battery-efficient scheduling
- Proper task cancellation
- State persisted between runs
validation:
- Test with Xcode debugger
- Verify with Console app logs
notes:
- Use BGAppRefreshTask
- Request background modes capability
- Handle time limits gracefully

View File

@@ -0,0 +1,39 @@
# 19. Implement Android background sync service
meta:
id: native-business-logic-migration-19
feature: native-business-logic-migration
priority: P1
depends_on: [native-business-logic-migration-16]
tags: [implementation, android, background]
objective:
- Implement background feed sync using WorkManager
deliverables:
- SyncWorker.kt
- SyncScheduler.kt
- SyncConfiguration.kt
- WorkManager configuration
- Foreground service (if needed)
tests:
- Unit: Test Worker execution
- Unit: Test scheduler configuration
- Integration: Test background execution
acceptance_criteria:
- Work scheduled properly
- Constraints respected (network, charging)
- Battery-efficient scheduling
- Proper work cancellation
- State persisted between runs
validation:
- Test with WorkManager TestRule
- Verify with adb commands
notes:
- Use PeriodicWorkRequest
- Set appropriate constraints
- Handle Doze mode

View File

@@ -0,0 +1,38 @@
# 20. Implement Linux background sync service
meta:
id: native-business-logic-migration-20
feature: native-business-logic-migration
priority: P1
depends_on: [native-business-logic-migration-17]
tags: [implementation, linux, background]
objective:
- Implement background feed sync using GIO Timeout or systemd timer
deliverables:
- background-sync.vala
- sync-scheduler.vala
- systemd service file
- systemd timer file
- Desktop entry with autostart
tests:
- Unit: Test scheduler configuration
- Unit: Test timeout handling
- Integration: Test background execution
acceptance_criteria:
- Sync runs on schedule
- Battery-efficient (only when active)
- Proper cleanup on app close
- State persisted between runs
validation:
- Test with systemd-timer list
- Verify with journalctl
notes:
- Use GTimeout for in-app scheduling
- Use systemd timer for system-level
- Respect power management

View File

@@ -0,0 +1,40 @@
# 21. Implement iOS search service (FTS)
meta:
id: native-business-logic-migration-21
feature: native-business-logic-migration
priority: P1
depends_on: [native-business-logic-migration-15]
tags: [implementation, ios, search]
objective:
- Implement full-text search service using Core Data FTS or SQLite FTS
deliverables:
- SearchService.swift
- SearchQuery.swift
- SearchResultProvider.swift
- FTS index management
- Search history storage
tests:
- Unit: Test query parsing
- Unit: Test FTS queries
- Unit: Test result ranking
- Integration: Test search with real data
acceptance_criteria:
- Full-text search working
- Search history maintained
- Results ranked by relevance
- Performance: <200ms for search
- Fuzzy matching supported
validation:
- Run unit tests
- Test with large dataset
notes:
- Use Core Data FTS or GRDB FTS5
- Implement search suggestions
- Cache frequent queries

View File

@@ -0,0 +1,40 @@
# 22. Implement Android search service (FTS)
meta:
id: native-business-logic-migration-22
feature: native-business-logic-migration
priority: P1
depends_on: [native-business-logic-migration-16]
tags: [implementation, android, search]
objective:
- Implement full-text search service using Room FTS
deliverables:
- SearchService.kt
- SearchQuery.kt
- SearchResultProvider.kt
- FTS index management
- Search history storage
tests:
- Unit: Test query parsing
- Unit: Test FTS queries
- Unit: Test result ranking
- Integration: Test search with real data
acceptance_criteria:
- Full-text search working
- Search history maintained
- Results ranked by relevance
- Performance: <200ms for search
- Fuzzy matching supported
validation:
- Run `./gradlew test`
- Test with large dataset
notes:
- Use Room FTS5
- Implement search suggestions
- Cache frequent queries

View File

@@ -0,0 +1,40 @@
# 23. Implement Linux search service (FTS)
meta:
id: native-business-logic-migration-23
feature: native-business-logic-migration
priority: P1
depends_on: [native-business-logic-migration-17]
tags: [implementation, linux, search]
objective:
- Implement full-text search service using SQLite FTS
deliverables:
- search-service.vala
- search-query.vala
- search-result-provider.vala
- FTS index management
- Search history storage
tests:
- Unit: Test query parsing
- Unit: Test FTS queries
- Unit: Test result ranking
- Integration: Test search with real data
acceptance_criteria:
- Full-text search working
- Search history maintained
- Results ranked by relevance
- Performance: <200ms for search
- Fuzzy matching supported
validation:
- Run `meson test -C build`
- Test with large dataset
notes:
- Use SQLite FTS5
- Implement search suggestions
- Cache frequent queries

View File

@@ -0,0 +1,39 @@
# 24. Implement iOS notification service
meta:
id: native-business-logic-migration-24
feature: native-business-logic-migration
priority: P1
depends_on: [native-business-logic-migration-15]
tags: [implementation, ios, notifications]
objective:
- Implement push and local notification service for iOS
deliverables:
- NotificationService.swift
- NotificationManager.swift
- NotificationPreferencesStore.swift
- Notification extension (if needed)
- Badge management
tests:
- Unit: Test notification configuration
- Unit: Test permission handling
- Integration: Test notification delivery
acceptance_criteria:
- Push notifications received
- Local notifications scheduled
- Badge count updated
- Notification categories working
- Preferences respected
validation:
- Test with Pusher.app
- Verify in Settings > Notifications
notes:
- Use UserNotifications framework
- Implement notification categories
- Handle foreground/background differently

View File

@@ -0,0 +1,39 @@
# 25. Implement Android notification service
meta:
id: native-business-logic-migration-25
feature: native-business-logic-migration
priority: P1
depends_on: [native-business-logic-migration-16]
tags: [implementation, android, notifications]
objective:
- Implement push and local notification service for Android
deliverables:
- NotificationService.kt
- NotificationManager.kt
- NotificationPreferencesStore.kt
- Notification channels
- Badge management
tests:
- Unit: Test notification configuration
- Unit: Test permission handling
- Integration: Test notification delivery
acceptance_criteria:
- Push notifications received
- Local notifications scheduled
- Badge count updated
- Notification channels working
- Preferences respected
validation:
- Test with Firebase Console
- Verify in Settings > Apps > Notifications
notes:
- Use NotificationCompat
- Create proper notification channels
- Handle Android 13+ permissions

View File

@@ -0,0 +1,39 @@
# 26. Implement Linux notification service
meta:
id: native-business-logic-migration-26
feature: native-business-logic-migration
priority: P1
depends_on: [native-business-logic-migration-17]
tags: [implementation, linux, notifications]
objective:
- Implement desktop notification service for Linux
deliverables:
- notification-service.vala
- notification-manager.vala
- notification-preferences-store.vala
- Tray icon integration
- Badge management
tests:
- Unit: Test notification creation
- Unit: Test notification actions
- Integration: Test notification delivery
acceptance_criteria:
- Desktop notifications shown
- Notification actions working
- Tray icon updated
- Badge count updated
- Preferences respected
validation:
- Test with notify-send
- Verify in system settings
notes:
- Use Gio.Notification
- Follow freedesktop.org spec
- Integrate with system tray

View File

@@ -0,0 +1,39 @@
# 27. Implement iOS settings/preferences store
meta:
id: native-business-logic-migration-27
feature: native-business-logic-migration
priority: P1
depends_on: [native-business-logic-migration-15]
tags: [implementation, ios, settings]
objective:
- Implement settings store using UserDefaults and App Group
deliverables:
- SettingsStore.swift
- AppSettings.swift
- ReadingPreferences.swift
- NotificationPreferences.swift
- Settings migration
tests:
- Unit: Test property storage/retrieval
- Unit: Test defaults
- Unit: Test synchronization
acceptance_criteria:
- All settings persisted
- Defaults properly set
- Changes observed in real-time
- App Group sync working
- Settings migrated between versions
validation:
- Run unit tests
- Test with Xcode preferences inspector
notes:
- Use UserDefaults for simple settings
- Use App Group for shared settings
- Observe changes with notifications

View File

@@ -0,0 +1,39 @@
# 28. Implement Android settings/preferences store
meta:
id: native-business-logic-migration-28
feature: native-business-logic-migration
priority: P1
depends_on: [native-business-logic-migration-16]
tags: [implementation, android, settings]
objective:
- Implement settings store using DataStore and SharedPreferences
deliverables:
- SettingsStore.kt
- AppSettings.kt
- ReadingPreferences.kt
- NotificationPreferences.kt
- Settings migration
tests:
- Unit: Test property storage/retrieval
- Unit: Test defaults
- Unit: Test synchronization
acceptance_criteria:
- All settings persisted
- Defaults properly set
- Changes observed in real-time
- Preferences encrypted if needed
- Settings migrated between versions
validation:
- Run `./gradlew test`
- Test with Application Info > Preferences
notes:
- Use DataStore for new code
- Use SharedPreferences for simple values
- Observe changes with Flow

View File

@@ -0,0 +1,39 @@
# 29. Implement Linux settings/preferences store
meta:
id: native-business-logic-migration-29
feature: native-business-logic-migration
priority: P1
depends_on: [native-business-logic-migration-17]
tags: [implementation, linux, settings]
objective:
- Implement settings store using GSettings and JSON file
deliverables:
- settings-store.vala
- app-settings.vala
- reading-preferences.vala
- notification-preferences.vala
- GSettings schema
tests:
- Unit: Test property storage/retrieval
- Unit: Test defaults
- Unit: Test synchronization
acceptance_criteria:
- All settings persisted
- Defaults properly set
- Changes observed in real-time
- Settings follow XDG spec
- Settings migrated between versions
validation:
- Run `meson test -C build`
- Test with gsettings CLI
notes:
- Use GSettings for system integration
- Use JSON file for app-specific
- Follow XDG Base Directory spec

View File

@@ -0,0 +1,38 @@
# 30. Implement iOS bookmark store
meta:
id: native-business-logic-migration-30
feature: native-business-logic-migration
priority: P1
depends_on: [native-business-logic-migration-15]
tags: [implementation, ios, bookmarks]
objective:
- Implement bookmark store for saving articles
deliverables:
- BookmarkStore.swift
- Bookmark.swift (model)
- BookmarkRepository.swift
- Bookmark grouping/tagging
tests:
- Unit: Test bookmark CRUD
- Unit: Test bookmark queries
- Unit: Test bookmark deletion cascade
acceptance_criteria:
- Bookmarks saved to database
- Bookmarks queryable
- Bookmarks deletable
- Bookmark count accurate
- Integration with feed items
validation:
- Run unit tests
- Test with Xcode Core Data editor
notes:
- Store as relationship to FeedItem
- Support tags/categories
- Implement smart folders

View File

@@ -0,0 +1,38 @@
# 31. Implement Android bookmark store
meta:
id: native-business-logic-migration-31
feature: native-business-logic-migration
priority: P1
depends_on: [native-business-logic-migration-16]
tags: [implementation, android, bookmarks]
objective:
- Implement bookmark store for saving articles
deliverables:
- BookmarkStore.kt
- Bookmark.kt (model)
- BookmarkRepository.kt
- Bookmark grouping/tagging
tests:
- Unit: Test bookmark CRUD
- Unit: Test bookmark queries
- Unit: Test bookmark deletion cascade
acceptance_criteria:
- Bookmarks saved to database
- Bookmarks queryable
- Bookmarks deletable
- Bookmark count accurate
- Integration with feed items
validation:
- Run `./gradlew test`
- Test with Room Inspection
notes:
- Store as separate entity with foreign key
- Support tags/categories
- Implement smart folders

View File

@@ -0,0 +1,38 @@
# 32. Implement Linux bookmark store
meta:
id: native-business-logic-migration-32
feature: native-business-logic-migration
priority: P1
depends_on: [native-business-logic-migration-17]
tags: [implementation, linux, bookmarks]
objective:
- Implement bookmark store for saving articles
deliverables:
- bookmark-store.vala
- bookmark.vala (model)
- bookmark-repository.vala
- Bookmark grouping/tagging
tests:
- Unit: Test bookmark CRUD
- Unit: Test bookmark queries
- Unit: Test bookmark deletion cascade
acceptance_criteria:
- Bookmarks saved to database
- Bookmarks queryable
- Bookmarks deletable
- Bookmark count accurate
- Integration with feed items
validation:
- Run `meson test -C build`
- Test with sqlite3 CLI
notes:
- Store as separate table with foreign key
- Support tags/categories
- Implement smart folders

View File

@@ -0,0 +1,40 @@
# 33. Integrate business logic with iOS UI
meta:
id: native-business-logic-migration-33
feature: native-business-logic-migration
priority: P1
depends_on: [native-business-logic-migration-30, native-business-logic-migration-15]
tags: [implementation, ios, ui]
objective:
- Connect business logic layer with SwiftUI views
deliverables:
- FeedList view connected to ViewModel
- FeedDetail view connected to ViewModel
- AddFeed view connected to services
- Search view connected to SearchService
- Settings view connected to SettingsStore
- Bookmark view connected to BookmarkStore
tests:
- UI: Test view renders with data
- UI: Test navigation works
- UI: Test error states displayed
acceptance_criteria:
- All views connected to ViewModels
- Data flows correctly
- User actions trigger updates
- Error states shown properly
- Loading states shown properly
validation:
- Run app in simulator
- Test all user flows
notes:
- Use @StateObject for ViewModels
- Use @Query for direct database access
- Implement pull-to-refresh

View File

@@ -0,0 +1,40 @@
# 34. Integrate business logic with Android UI
meta:
id: native-business-logic-migration-34
feature: native-business-logic-migration
priority: P1
depends_on: [native-business-logic-migration-31, native-business-logic-migration-16]
tags: [implementation, android, ui]
objective:
- Connect business logic layer with Jetpack Compose views
deliverables:
- FeedList composable connected to ViewModel
- FeedDetail composable connected to ViewModel
- AddFeed composable connected to services
- Search composable connected to SearchService
- Settings composable connected to SettingsStore
- Bookmark composable connected to BookmarkStore
tests:
- UI: Test composable renders with data
- UI: Test navigation works
- UI: Test error states displayed
acceptance_criteria:
- All composables connected to ViewModels
- Data flows correctly
- User actions trigger updates
- Error states shown properly
- Loading states shown properly
validation:
- Run app on emulator
- Test all user flows
notes:
- Use ViewModel composables
- Use Hilt for dependency injection
- Implement swipe-to-refresh

View File

@@ -0,0 +1,40 @@
# 35. Integrate business logic with Linux UI
meta:
id: native-business-logic-migration-35
feature: native-business-logic-migration
priority: P1
depends_on: [native-business-logic-migration-32, native-business-logic-migration-17]
tags: [implementation, linux, ui]
objective:
- Connect business logic layer with GTK4 views
deliverables:
- FeedList widget connected to ViewModel
- FeedDetail widget connected to ViewModel
- AddFeed widget connected to services
- Search widget connected to SearchService
- Settings widget connected to SettingsStore
- Bookmark widget connected to BookmarkStore
tests:
- UI: Test widget renders with data
- UI: Test navigation works
- UI: Test error states displayed
acceptance_criteria:
- All widgets connected to ViewModels
- Data flows correctly
- User actions trigger updates
- Error states shown properly
- Loading states shown properly
validation:
- Run app on Linux
- Test all user flows
notes:
- Use GObject signals for updates
- Follow GNOME HIG
- Implement proper GTK patterns

View File

@@ -0,0 +1,42 @@
# 36. Write unit tests for iOS business logic
meta:
id: native-business-logic-migration-36
feature: native-business-logic-migration
priority: P1
depends_on: [native-business-logic-migration-33]
tags: [testing, ios]
objective:
- Write comprehensive unit tests for iOS business logic
deliverables:
- FeedParserTests.swift
- FeedFetcherTests.swift
- DatabaseTests.swift
- RepositoryTests.swift
- ViewModelTests.swift
- BackgroundSyncTests.swift
- SearchServiceTests.swift
- NotificationServiceTests.swift
tests:
- Unit: All test files compile
- Unit: All tests pass
- Coverage: >80% code coverage
acceptance_criteria:
- All business logic covered
- Edge cases tested
- Error cases tested
- Performance tests included
- >80% code coverage
validation:
- Run `xcodebuild test`
- Check coverage report
notes:
- Use XCTest framework
- Use XCTestExpectations for async
- Mock external dependencies

View File

@@ -0,0 +1,42 @@
# 37. Write unit tests for Android business logic
meta:
id: native-business-logic-migration-37
feature: native-business-logic-migration
priority: P1
depends_on: [native-business-logic-migration-34]
tags: [testing, android]
objective:
- Write comprehensive unit tests for Android business logic
deliverables:
- FeedParserTest.kt
- FeedFetcherTest.kt
- DatabaseTest.kt
- RepositoryTest.kt
- ViewModelTest.kt
- BackgroundSyncTest.kt
- SearchServiceTest.kt
- NotificationServiceTest.kt
tests:
- Unit: All test files compile
- Unit: All tests pass
- Coverage: >80% code coverage
acceptance_criteria:
- All business logic covered
- Edge cases tested
- Error cases tested
- Performance tests included
- >80% code coverage
validation:
- Run `./gradlew test`
- Check coverage report with Jacoco
notes:
- Use JUnit 5
- Use MockK for mocking
- Use Coroutines Test for async

View File

@@ -0,0 +1,42 @@
# 38. Write unit tests for Linux business logic
meta:
id: native-business-logic-migration-38
feature: native-business-logic-migration
priority: P1
depends_on: [native-business-logic-migration-35]
tags: [testing, linux]
objective:
- Write comprehensive unit tests for Linux business logic
deliverables:
- feed-parser-test.vala
- feed-fetcher-test.vala
- database-test.vala
- repository-test.vala
- view-model-test.vala
- background-sync-test.vala
- search-service-test.vala
- notification-service-test.vala
tests:
- Unit: All test files compile
- Unit: All tests pass
- Coverage: >80% code coverage
acceptance_criteria:
- All business logic covered
- Edge cases tested
- Error cases tested
- Performance tests included
- >80% code coverage
validation:
- Run `meson test -C build`
- Check coverage report
notes:
- Use GLib's g_test framework
- Use g_assert macros
- Mock external dependencies

View File

@@ -0,0 +1,40 @@
# 39. Write cross-platform integration tests
meta:
id: native-business-logic-migration-39
feature: native-business-logic-migration
priority: P1
depends_on: [native-business-logic-migration-36, native-business-logic-migration-37, native-business-logic-migration-38]
tags: [testing, integration]
objective:
- Write integration tests that verify cross-platform functionality
deliverables:
- Integration test suite
- Test fixtures (sample feeds)
- Test data generator
- CI integration
tests:
- Integration: Feed fetch → parse → store flow
- Integration: Search end-to-end
- Integration: Background sync end-to-end
- Integration: Notification delivery
- Integration: Settings persistence
- Integration: Bookmark CRUD
acceptance_criteria:
- All integration tests pass
- Test data properly isolated
- Tests can run independently
- Tests included in CI
validation:
- Run full test suite
- Verify CI passes
notes:
- Use same test feeds across platforms
- Verify data consistency
- Test error recovery

View File

@@ -0,0 +1,47 @@
# 40. Performance optimization and benchmarking
meta:
id: native-business-logic-migration-40
feature: native-business-logic-migration
priority: P2
depends_on: [native-business-logic-migration-39]
tags: [performance, optimization]
objective:
- Optimize performance and establish benchmarks
deliverables:
- Performance benchmarks
- Optimization report
- Memory profiling results
- CPU profiling results
- Network profiling results
tests:
- Benchmark: Feed parsing <100ms
- Benchmark: Feed fetching <5s
- Benchmark: Search <200ms
- Benchmark: Database query <50ms
- Memory: No leaks detected
- CPU: Efficient usage
acceptance_criteria:
- Feed parsing <100ms for typical feed
- Feed fetching <5s on normal network
- Search <200ms
- Database queries <50ms
- No memory leaks
- Smooth UI at 60fps
- Battery efficient
validation:
- Run benchmarks on each platform
- Profile with Instruments (iOS)
- Profile with Android Profiler
- Profile with Valgrind (Linux)
notes:
- Use platform-specific profiling tools
- Establish baseline metrics
- Optimize iteratively
- Document optimizations made

View File

@@ -0,0 +1,107 @@
# Native Business Logic Migration
Objective: Migrate RSSuper business logic from Expo/TypeScript to native platforms (iOS, Android, Linux)
Status legend: [ ] todo, [~] in-progress, [x] done
## Phase 1: Analysis & Design
- [x] 01 — Analyze and document current Expo architecture → `01-analyze-current-architecture.md`
- [x] 02 — Design shared data models for all platforms → `02-design-shared-data-models.md`
## Phase 2: Data Models (Per Platform)
- [ ] 03 — Implement iOS data models (Swift) → `03-implement-ios-data-models.md`
- [ ] 04 — Implement Android data models (Kotlin) → `04-implement-android-data-models.md`
- [ ] 05 — Implement Linux data models (C/Vala) → `05-implement-linux-data-models.md`
## Phase 3: Database Layer (Per Platform)
- [ ] 06 — Implement iOS database layer (Core Data/GRDB) → `06-implement-ios-database-layer.md`
- [ ] 07 — Implement Android database layer (Room) → `07-implement-android-database-layer.md`
- [ ] 08 — Implement Linux database layer (SQLite) → `08-implement-linux-database-layer.md`
## Phase 4: Feed Parsing (Per Platform)
- [ ] 09 — Implement iOS RSS/Atom feed parser → `09-implement-ios-feed-parser.md`
- [ ] 10 — Implement Android RSS/Atom feed parser → `10-implement-android-feed-parser.md`
- [ ] 11 — Implement Linux RSS/Atom feed parser → `11-implement-linux-feed-parser.md`
## Phase 5: Feed Fetching (Per Platform)
- [ ] 12 — Implement iOS feed fetcher service → `12-implement-ios-feed-fetcher.md`
- [ ] 13 — Implement Android feed fetcher service → `13-implement-android-feed-fetcher.md`
- [ ] 14 — Implement Linux feed fetcher service → `14-implement-linux-feed-fetcher.md`
## Phase 6: State Management (Per Platform)
- [ ] 15 — Implement iOS state management (Combine/Observer) → `15-implement-ios-state-management.md`
- [ ] 16 — Implement Android state management (StateFlow/LiveData) → `16-implement-android-state-management.md`
- [ ] 17 — Implement Linux state management (GObject signals) → `17-implement-linux-state-management.md`
## Phase 7: Services (Per Platform)
### Background Sync
- [ ] 18 — Implement iOS background sync service → `18-implement-ios-background-sync.md`
- [ ] 19 — Implement Android background sync service → `19-implement-android-background-sync.md`
- [ ] 20 — Implement Linux background sync service → `20-implement-linux-background-sync.md`
### Search Service
- [ ] 21 — Implement iOS search service (FTS) → `21-implement-ios-search-service.md`
- [ ] 22 — Implement Android search service (FTS) → `22-implement-android-search-service.md`
- [ ] 23 — Implement Linux search service (FTS) → `23-implement-linux-search-service.md`
### Notifications
- [ ] 24 — Implement iOS notification service → `24-implement-ios-notifications.md`
- [ ] 25 — Implement Android notification service → `25-implement-android-notifications.md`
- [ ] 26 — Implement Linux notification service → `26-implement-linux-notifications.md`
### Settings Store
- [ ] 27 — Implement iOS settings/preferences store → `27-implement-ios-settings-store.md`
- [ ] 28 — Implement Android settings/preferences store → `28-implement-android-settings-store.md`
- [ ] 29 — Implement Linux settings/preferences store → `29-implement-linux-settings-store.md`
### Bookmark Store
- [ ] 30 — Implement iOS bookmark store → `30-implement-ios-bookmark-store.md`
- [ ] 31 — Implement Android bookmark store → `31-implement-android-bookmark-store.md`
- [ ] 32 — Implement Linux bookmark store → `32-implement-linux-bookmark-store.md`
## Phase 8: UI Integration (Per Platform)
- [ ] 33 — Integrate business logic with iOS UI → `33-integrate-ios-business-logic.md`
- [ ] 34 — Integrate business logic with Android UI → `34-integrate-android-business-logic.md`
- [ ] 35 — Integrate business logic with Linux UI → `35-integrate-linux-business-logic.md`
## Phase 9: Testing
- [ ] 36 — Write unit tests for iOS business logic → `36-write-unit-tests-ios.md`
- [ ] 37 — Write unit tests for Android business logic → `37-write-unit-tests-android.md`
- [ ] 38 — Write unit tests for Linux business logic → `38-write-unit-tests-linux.md`
- [ ] 39 — Write cross-platform integration tests → `39-write-integration-tests.md`
## Phase 10: Optimization
- [ ] 40 — Performance optimization and benchmarking → `40-performance-optimization.md`
## Dependencies
- 01 → 02 (architecture analysis feeds into data model design)
- 02 → 03, 04, 05 (data models depend on shared design)
- 03 → 06 (iOS database depends on iOS models)
- 04 → 07 (Android database depends on Android models)
- 05 → 08 (Linux database depends on Linux models)
- 06, 07, 08 → 09, 10, 11 (feed parsers need database layer)
- 09 → 12 (iOS fetcher depends on iOS parser)
- 10 → 13 (Android fetcher depends on Android parser)
- 11 → 14 (Linux fetcher depends on Linux parser)
- 12, 13, 14 → 15, 16, 17 (state management depends on fetchers)
- 15 → 18, 21, 24, 27, 30 (iOS services depend on state management)
- 16 → 19, 22, 25, 28, 31 (Android services depend on state management)
- 17 → 20, 23, 26, 29, 32 (Linux services depend on state management)
- 30, 31, 32 → 33, 34, 35 (UI integration depends on all stores)
- 36, 37, 38 → 39 (integration tests depend on unit tests)
- 39 → 40 (optimization comes after testing)
## Exit Criteria
The feature is complete when:
- [ ] All data models implemented and tested on all platforms
- [ ] Database layer fully functional with migrations on all platforms
- [ ] RSS and Atom feed parsing working with >95% accuracy
- [ ] Feed fetching with error handling and retry logic on all platforms
- [ ] Background sync working on all platforms
- [ ] Full-text search functional on all platforms
- [ ] Notifications working for new articles on all platforms
- [ ] Settings persisted and readable on all platforms
- [ ] Bookmarks working across all platforms
- [ ] All unit tests passing (>80% coverage)
- [ ] Integration tests passing
- [ ] Performance benchmarks met (feed parse <100ms, fetch <5s, search <200ms)