Skip to content
CAI
Software that uses CAICheck a score

SebastianBoldt/Jelly

62.3

Adequate · 1 October 2026

1.8k

lines of production code

Swift

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a Swift library for iOS that manages interactive view controller transitions and presentations. It provides configurable animation styles such as slide, cover, and fade, supporting both standard and gesture-driven interactive dismissals. The library also enables live updates to presentation properties like size and alignment after a view controller is displayed.

Removals

Removal of placeholder animator file

The placeholder file ReplaceMe.swift has been removed from the Jelly-Animators module, cleaning up the codebase by eliminating the stub that was previously present in the Classes directory.

Jelly-Animators · high confidence

Removed Jelly-Animators example project

The Jelly-Animators example application project file (project.pbxproj) has been deleted from the repository. This removes the Xcode project configuration for the example app, including its source files, resources, and CocoaPods integration, effectively removing the standalone example project from the distribution.

Example/Jelly-Animators.xcodeproj · high confidence

Removed legacy iOS 8 example app scaffolding

The example application's legacy iOS 8-style scaffolding has been removed, specifically deleting the AppDelegate, LaunchScreen.xib, and Main.storyboard files. This cleanup eliminates the default boilerplate that was previously included in the Jelly-Animators example project.

Example/Jelly-Animators · high confidence

Behavioural changes

Example app UI rebuilt with new storyboard and launch screen

The Example app's user interface has been replaced with new Interface Builder files. A new LaunchScreen.xib now displays the Jelly logo on a splash screen, and Main.storyboard has been rewritten to feature a custom navigation controller and a menu table view. This menu organizes demo content into sections for Basic Transitions (such as Slide and Cover) and Interactive Transitions (such as Cover Menu), providing a structured way for users to explore the library's capabilities.

Example/Jelly/Base.lproj · high confidence

Example app project structure reorganized

The Example/Jelly.xcodeproj project file has been restructured to reflect the refactored example application. The source tree now explicitly groups Swift files into 'Views' (containing RoundedView.swift) and 'Enums' (containing ExampleType.swift), alongside the main application controllers. The project also formally includes the UnitTests target with its corresponding test spec file (JellyAnimatorSpec.swift) and configures the necessary Pods frameworks for both the example app and the test bundle.

Example/Jelly.xcodeproj · high confidence

Example app refactored to showcase interactive transitions and live updates

The Example/Jelly application has been restructured to demonstrate the library's interactive transition capabilities. The new demo includes specific examples for edge-based and canvas-based drag interactions, as well as non-interactive presentations. It also introduces a 'Live Update' section that allows users to dynamically modify presentation properties—such as size, alignment, corner radius, and margin guards—after the view controller has been presented. The app structure now uses a dedicated navigation controller with touch visualization and a menu to select between these various presentation modes.

Example/Jelly · high confidence

Example project renamed from Jelly-Animators to Jelly

The Xcode workspace and project files for the example application have been renamed from Jelly-Animators to Jelly. This change updates the internal project references and workspace configuration to reflect the new name, ensuring the example project builds correctly under the updated identifier.

Example/Jelly.xcodeproj/project.xcworkspace · high confidence

Example workspace configuration updated for modern Xcode compatibility

The Example project's workspace has been restructured to include explicit references to the main project and CocoaPods, alongside new workspace settings that disable Previews and enable the 32-bit warning check. This change aligns the example app with the legacy build system removal in Xcode 13, ensuring the workspace opens correctly without build system warnings.

Example/Jelly.xcworkspace · high confidence

Jelly library renamed and updated to version 2.3.0

The library has been renamed from Jelly-Animators to Jelly, with the CocoaPods pod name changing from 'Jelly-Animators' to 'Jelly'. The project now supports Swift 4.2 (as indicated by the .swift-version file) and Xcode 10 (updated in .travis.yml). Version 2.3.0 introduces support for Xcode 13 and Swift Package Manager (SPM), alongside existing Carthage support. The minimum deployment target remains iOS 10, though the README notes iOS 11.0 for some features. Interactive transitions, live updates, and various presentation configurations (slide, cover, fade) are documented as core capabilities.

(repo-wide) · high confidence

Refactored animation system with new Slide, Cover, and Fade animators and interactive transitions

The Jelly animation engine has been restructured to use dedicated animator classes (SlideAnimator, CoverAnimator, FadeAnimator) that leverage iOS 10+ UIViewPropertyAnimator for smoother, interruptible transitions. The Slide presentation now supports parallax effects on the underlying view, and interactive dismissal/presentation is handled by a new InteractionController that supports both canvas pan and screen-edge pan gestures. Additionally, the codebase introduces live-updatable presentation properties (alignment, size, corners) and extracts view size calculation logic into a separate ViewControllerSizeCalculator to improve testability and maintainability.

Jelly · high confidence

Scheme configuration updated for Jelly example app and unit tests

The Xcode scheme configuration for the example application has been renamed from 'Jelly-Animators' to 'Jelly', updating all buildable product references (e.g., Jelly\_Example.app) and container paths to reflect the new project name. Additionally, a new 'UnitTests' scheme was added to explicitly enable code coverage for the Jelly framework during test runs, and the existing example scheme was updated to target the renamed UnitTests test bundle.

Example/Jelly.xcodeproj/xcshareddata · high confidence

Test coverage

Removed placeholder Quick/Nimble test suite

The Example/Tests directory no longer includes the default Quick and Nimble test scaffold (Tests.swift), which previously contained intentional failing and passing examples for basic assertions and asynchronous waits. This removal clears the test target of boilerplate code that was not specific to the Jelly library's functionality.

Example/Tests · 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 64 → 62 (-2.2)
  • Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 97 → 97 (+0.0)
  • Architecture 100 → 97 (-2.9)
  • Maturity 48 → 48 (+0.0)
  • Readiness 59 → 55 (-4.7)
  • Security 95 → 95 (+0.0)

Resolved (1)

  • Coverage not measured — test suite did not build

New (4)

  • Dependency hygiene PARTLY measured — SwiftPM pinning read, dependency currency NOT established
  • Redundant/Confusing API surface: Similar to alignment, updateSize accepts a composite PresentationSize (width + height), while updateWidth and updateHeight exist for individual dimensions. This mirrors the alignment inconsistency, creating a parallel confusion in the API design.
  • Redundant/Confusing API surface: updateAlignment accepts a composite PresentationAlignmentProtocol which contains both vertical and horizontal alignments. However, separate methods updateVerticalAlignment and updateHorizontalAlignment exist to update individual components. This creates ambiguity: should a user call the composite method to update both, or the specific methods? If the composite method updates both atomically, the specific methods are redundant. If they are independent, the composite method's name is misleading (it implies a single alignment action rather than a batch update).
  • Typo in property name: verticalAlignemt is missing the 'n' (should be verticalAlignment).

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

SebastianBoldt/Jelly 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 4494e6793acd259c193aea6e445fa4273e420ff2 — 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.