younatics/YNSearch
57.9
Adequate · 1 October 2026
979
lines of production code
Swift
primary language
2
measurements over time
What this system is
YNSearch is a customizable iOS framework that provides a reusable search interface component, featuring a text field, category buttons, and a scrollable search history list. It filters results using reflection-based objectification and persists user data such as categories and history via UserDefaults. The system includes a demo application to illustrate integration and is supported by unit tests for its persistence and model layers.
Features
Add YNSearch demo application
The YNSearchDemo project has been added, providing a complete iOS application to demonstrate the YNSearch library. The demo includes a main view controller that initializes the search interface with sample categories and history, a detail view controller for displaying selected items, and standard iOS app infrastructure such as the app delegate, launch screen, and main storyboard.
YNSearchDemo · high confidence
Initial project structure for YNSearch framework and demo app
This change introduces the foundational Xcode project configuration for the YNSearch library. It defines the build targets for the YNSearch framework (including Swift sources like YNSearch.swift and YNSearchModel.swift) and the YNSearchDemo application, establishing the necessary file references, build phases, and workspace schemes to compile and run the search component.
YNSearch.xcodeproj · high confidence
Initial release of YNSearch framework
Introduces the YNSearch framework, providing a customizable search interface for iOS applications. The component includes a search text field with a cancel button, a main view displaying category buttons and a scrollable search history list, and a results list view that filters data using reflection-based objectification. It supports persistent storage of search categories and history via UserDefaults, allows styling of category buttons (background, border, or colorful), and exposes delegates to handle user interactions such as category selection, history item clicks, and result selection.
YNSearch · high confidence
Test coverage
Added unit tests for YNSearch persistence and model
Added deterministic unit tests for the YNSearch module's persistence layer and model. The new test suite verifies the round-trip storage of search categories, the accumulation and indexed deletion of search histories via UserDefaults, the stability of the shared instance, and the correct storage of keys in the YNSearchModel.
Tests · high confidence
Dependencies
Version 3.0.0: Swift 6 and iOS 13 upgrade
The library has been updated to version 3.0.0, requiring iOS 13 as the minimum deployment target and adopting Swift 6. This change is reflected in the new Package.swift configuration for Swift Package Manager and the updated YNSearch.podspec, which now specifies Swift 6.0 and iOS 13.0 compatibility.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 66 → 58 (-8.3)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 100 → 100 (+0.0)
- Architecture 69 → 69 (+0.0)
- Maturity 54 → 59 (+4.7)
- Readiness 67 → 43 (-24.2)
- Security 100 → 100 (+0.0)
Resolved (1)
- Documentation: no installation or build instructions (README.md)
New (7)
- Coverage not measured — Swift suite
- Inconsistent initialization patterns for view components. YNSearchMainView uses a specific 'initView' method with semantic arguments, while YNSearchListView and YNSearchViewController use a generic 'initData' method. This suggests a lack of standard pattern for how views are populated or initialized after construction.
- Low cohesion: AppDelegate (LCOM4 6) (YNSearchDemo/AppDelegate.swift)
- Method overloading based on parameter type (String vs Any) for 'ynSearchListViewClicked'. While valid in Swift, this can be confusing if the semantic difference between a 'key' and an 'object' is not immediately obvious from the name, especially if 'object' is just a wrapper containing the key.
- Off the main sequence: YNSearch
- Presence of a custom 'ynSearchinit()' method alongside standard lifecycle methods like 'viewDidLoad()'. It is unclear if 'ynSearchinit()' is a replacement for or an extension of 'viewDidLoad()', leading to confusion about initialization flow.
- Typo in property name 'ynSerach' in YNSearchViewController vs 'ynSearch' in other classes. This is a naming inconsistency that breaks auto-completion and visual consistency.
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
younatics/YNSearch 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 1 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit f190cf9dfece5c9b1e2c4af7345c26ff062a8d0f — the exact code this score is about.
- Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.