-
Notifications
You must be signed in to change notification settings - Fork 0
refactor: move RSS parsing infrastructure to CelestraKit and fix iOS … #8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: v0.0.1
Are you sure you want to change the base?
Conversation
…parser bug Move SyndiKitParser and related models from CelestraApp to CelestraKit for sharing between iOS app and server-side CLI tool: - SyndiKitParser.swift → CelestraKit/Services/ - FeedParserError.swift → CelestraKit/Errors/ - ParsedFeed, ParsedAuthor, ParsedSyndicationUpdate → CelestraKit/Models/ - FeedFormat (includes FeedCategory enum) → CelestraKit/Models/ Critical bug fix: - Fixed conditional compilation in SyndiKitParser (#if !canImport(FoundationNetworking)) to correctly use URLSession on iOS instead of throwing unsupported error - This resolves the issue where all feed updates were failing with FeedParserError Updated imports: - Added 'public import CelestraKit' to 7 files using moved types - Removed circular import from ParsedFeed CelestraKit remains pure (no CloudKit/CoreData dependencies) for cross-platform use. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## v0.0.1 #8 +/- ##
===========================================
- Coverage 88.06% 63.07% -24.99%
===========================================
Files 12 19 +7
Lines 419 585 +166
===========================================
Hits 369 369
- Misses 50 216 +166
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
| // | ||
|
|
||
| public import Foundation | ||
| @preconcurrency import SyndiKit |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
preconcurrency isn't necessary
Pull Request Review - RSS Parsing Infrastructure MoveThis PR moves RSS parsing components from CelestraApp to CelestraKit and fixes a critical iOS parser bug. Overall this is a well-executed refactor with a critical bug fix, but there are several issues that should be addressed. ✅ Strengths1. Critical Bug FixThe conditional compilation fix in #if \!canImport(FoundationNetworking)
// Apple platforms - URLSession is in Foundation
private let session: URLSession
public func parse(url: URL) async throws -> ParsedFeed { ... }
#else
// Linux - throw unsupported error
public func parse(url: URL) async throws -> ParsedFeed {
throw FeedParserError.networkError(...)
}
#endifThis correctly enables URLSession on iOS/Apple platforms while maintaining cross-platform compatibility. 2. Good Error Handling Design
3. Clean Model DesignThe parsed models (
🔴 Critical Issues1. Missing Copyright Headers ❌All 6 new files are missing proper copyright headers. Every other file in the project uses the full MIT license header. Compare: Current (new files): // Created for Celestra on 2025-08-13.Expected (existing files): // Created by Leo Dion.
// Copyright © 2025 BrightDigit.
//
// Permission is hereby granted, free of charge...Action Required: Add proper MIT license headers to all 6 new files to match the project's licensing standards. 2. Unsafe Sendable Conformance
|
| Category | Status | Count |
|---|---|---|
| Critical Issues | 🔴 | 3 |
| Code Quality Issues | 🟡 | 4 |
| Minor Issues | 🟢 | 3 |
| Missing Tests | ❌ | 1 |
Before Merge:
-
MUST FIX:
- Add MIT license headers to all 6 files
- Add basic parser tests (at minimum, test the iOS URLSession path)
- Fix
@unchecked Sendableor document why it's necessary
-
SHOULD FIX:
- Throw error for missing URLs instead of creating fake ones
- Use simpler deterministic ID instead of SHA256 UUIDs
- Update CLAUDE.md SyndiKit version
-
NICE TO HAVE:
- Improve feed format detection
- Add GUID validation
- Fix
mapToParsedfeed→mapToParsedFeed
Estimated Effort:
- Critical fixes: ~2-3 hours (headers + basic tests + Sendable fix)
- Should fix items: ~1-2 hours
- Nice to have: ~1 hour
Great work on the bug fix and refactor! The architecture is solid, just needs polish before merge. 🚀
Pull Request Review: RSS Parsing Infrastructure MigrationOverviewThis PR successfully moves RSS parsing infrastructure from CelestraApp to CelestraKit, enabling code sharing between the iOS app and server-side CLI tool. The critical bug fix for iOS URLSession support is a major improvement. ✅ Strengths1. Critical Bug Fix (SyndiKitParser.swift:47-84)The conditional compilation fix is excellent - this correctly resolves the issue where iOS was incorrectly throwing unsupported errors. 2. Architecture & Code Quality
3. DependenciesThe addition of swift-crypto provides proper cross-platform hashing support, essential for the deterministic UUID generation.
|
subrepo: subdir: "Packages/CelestraKit" merged: "d17971d" upstream: origin: "git@github.com:brightdigit/CelestraKit.git" branch: "v0.0.1-celestra-subrepo" commit: "d17971d" git-subrepo: version: "0.4.9" origin: "https://github.com/Homebrew/brew" commit: "1383417817"
…orm support Move HTTPClientProtocol and URLSessionHTTPClient from CelestraApp to CelestraKit to enable reuse across both CelestraApp (iOS) and CelestraCloud (server-side CLI). Key changes: - Move HTTPClientProtocol.swift to CelestraKit/Services/ - Move URLSessionHTTPClient.swift to CelestraKit/Services/ - Add HTTPClientError enum for standardized error handling - Add URLSessionHTTPClient.withCaching() factory method (20MB memory, 100MB disk cache) - Update SyndiKitParser to accept injectable HTTPClientProtocol (defaults to cached client) - Simplify SyndiKitParser: removes platform-specific code, replaces with DI pattern - Remove old HTTP client files from CelestraApp (now imported from CelestraKit) Benefits: - Shared HTTP client for CelestraApp and CelestraCloud - Testable via protocol injection - Maintains simplified architecture (~40 LOC abstraction vs previous 332 LOC) - Enables Linux support for CelestraCloud RSS fetching - Swift 6 compliant with 'any' keyword for existential types All 134 CelestraKit tests pass. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
d17971d to
d333cee
Compare
Pull Request Review: Move RSS Parsing Infrastructure to CelestraKitOverviewThis PR successfully moves RSS parsing infrastructure from CelestraApp to CelestraKit, enabling code sharing between the iOS app and server-side CLI tool. The refactoring shows good architectural decisions and proper cross-platform support. ✅ Strengths1. Clean Architecture & Separation of Concerns
2. Excellent Cross-Platform Support
3. Strong Concurrency Safety
4. Good Error Handling
5. Critical Bug Fix
|
…parser bug
Move SyndiKitParser and related models from CelestraApp to CelestraKit for sharing between iOS app and server-side CLI tool:
Critical bug fix:
Updated imports:
CelestraKit remains pure (no CloudKit/CoreData dependencies) for cross-platform use.
🤖 Generated with Claude Code
Perform an AI-assisted review on