Skip to content
CAI
Software that uses CAICheck a score

younatics/YNSearch

57.9

Adequate · 1 October 2026

979

lines of production code

Swift

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

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.