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
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:
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
107
tasks/native-business-logic-migration/README.md
Normal file
107
tasks/native-business-logic-migration/README.md
Normal 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)
|
||||
Reference in New Issue
Block a user