Ranchero-Software/NetNewsWire
32.0
Weak · 29 July 2026
72.9k
lines of production code
Swift
primary language
2
measurements over time
How this codebase got here
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 25 → 32 (+7.1)
- Rubric changed (rubric-2026.08.17 → rubric-2026.08.18) — scores are not directly comparable.
Lenses
- Code Health 66 → 67 (+1.3)
- Architecture 98 → 100 (+1.5)
- Maturity 58 → 60 (+2.7)
- Readiness 43 → 43 (+0.0)
- Security 0 → 15 (+15.0)
- Domain Modelling 95 → 95 (+0.0)
- Accessibility 34 → 34 (+0.0)
Resolved (44)
- Boundary-crossing change coupling: ArticlesDatabase.swift ↔ Database.swift (Modules/ArticlesDatabase/Sources/ArticlesDatabase/ArticlesDatabase.swift)
- Boundary-crossing change coupling: ArticlesTable.swift ↔ Database.swift (Modules/ArticlesDatabase/Sources/ArticlesDatabase/ArticlesTable.swift)
- Boundary-crossing change coupling: StatusesTable.swift ↔ Database.swift (Modules/ArticlesDatabase/Sources/ArticlesDatabase/StatusesTable.swift)
- Boundary-crossing change coupling: TimelineViewController.swift ↔ SmartFeedDelegate.swift (Mac/MainWindow/Timeline/TimelineViewController.swift)
- Change coupling: CloudKitAccountDelegate.swift ↔ LocalAccountDelegate.swift (Modules/Account/Sources/Account/CloudKit/CloudKitAccountDelegate.swift)
- Change coupling: FeedbinAccountDelegate.swift ↔ NewsBlurAccountDelegate.swift (Modules/Account/Sources/Account/Feedbin/FeedbinAccountDelegate.swift)
- Change coupling: FeedbinAccountViewController.swift ↔ LocalAccountViewController.swift (iOS/Account/FeedbinAccountViewController.swift)
- Change coupling: StarredWidget.swift ↔ TodayWidget.swift (Widget/Widget Views/StarredWidget.swift)
- Change coupling: StarredWidget.swift ↔ UnreadWidget.swift (Widget/Widget Views/StarredWidget.swift)
- Change coupling: TodayWidget.swift ↔ UnreadWidget.swift (Widget/Widget Views/TodayWidget.swift)
- Dependency hygiene not measured — no supported dependency manifest was read
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- Off-boarding risk: anonymized user #1
- Secret: aws-access-token (Resources/Themes/NewsFax.nnwtheme/stylesheet.css)
- Secret: aws-access-token (Shared/Resources/NewsFax.nnwtheme/stylesheet.css)
- Secret: aws-access-token (Themes/NewsFax.nnwtheme/stylesheet.css)
- …and 24 more
New (12)
- Boundary-crossing change coupling: Package.swift ↔ Package.swift (Modules/Articles/Package.swift)
- Boundary-crossing change coupling: Package.swift ↔ Package.swift (Modules/ArticlesDatabase/Package.swift)
- Change coupling: AtomParser.swift ↔ RSSParser.swift (Modules/RSParser/Sources/RSParser/Feeds/XML/AtomParser.swift)
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- Off-boarding risk: anonymized user #1
- Scanner failed to run — not a clean result
- The 'Community' section mentions the code of conduct and a forum, but there is no link to the CONTRIBUTING.md that covers PR process or how to join the community. (README.md)
Changes since last survey
- 29 commits — 19 feature/other, 10 fixes
By area
- Technotes/Status.md — 4 commits
- xcconfig/common — 4 commits
- Mac/Preferences — 3 commits
- Technotes/ReleaseNotes-iOS.markdown — 3 commits
- Appcasts/netnewswire-beta.xml — 2 commits
- Technotes/ReleaseNotes-Mac.markdown — 2 commits
- iOS/MainFeed — 2 commits
- iOS/SceneDelegate.swift — 2 commits
- (repo) — 1 commit
- Mac/MainWindow — 1 commit
- Modules/Account — 1 commit
- Modules/ActivityLog — 1 commit
- Modules/RSCore — 1 commit
- iOS/KeyboardManager.swift — 1 commit
- iOS/MainTimeline — 1 commit
Notable commits
- fix: Capture the articles to mark before showing the Mark All as Read confirmation, so switching folders during the alert doesn’t mark the wrong folder. Fixes #5359.
- fix: Coalesce Folder unread-count recalculation using CoalescingQueue. Run pending unread count updates before going to next unread. Fixes #5373.
- fix: Constrain timeline scrolling to legal range to top row isn’t under the toolbar. Fixes #5358.
- fix: Fix double-separator cosmetic bug in Accounts pane. Save and restore (when possible) selection in accounts pane when it reloads. Fixes #5348.
- fix: Fix warnings in xib.
- fix: Fix warnings.
- fix: Make the toggle-reader-view shortcut available no matter what view is first responder. Fixes #3943.
- fix: Remove the work-around for the iOS 27 beta split view crash that was fixed in iOS 27 beta 4.
- fix: Stop updating scroll position on updating timeline on iPad — it was fighting with user’s scrolling. Fixes #5330.
- fix: Use NetNewsWire’s feed-finding code when Feedly’s fails. Fixes #5306.
- change: Bump version. Write release notes.
- change: Disallow split view controller on large iPhones — works around crashed added by iOS 27 beta.
- change: Fix typo.
- change: Merge branch 'main' of https://github.com/Ranchero-Software/NetNewsWire
- change: Select new account in accounts list on adding an account.
- change: Update appcasts.
- change: Update appcasts.
- change: Update build number.
- change: Update status.
- change: Update status.
- …and 9 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
Ranchero-Software/NetNewsWire was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 29 July 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 52030006b5a3a45d865bd03a455f85d3f1327077 — the exact code this score is about.
- Scored under rubric-2026.08.18 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer latest.