hanton/Fisheye
66.5
Adequate · 1 October 2026
1.1k
lines of production code
Swift
primary language
2
measurements over time
What this system is
Fisheye is a library for 360-degree video playback on iOS, currently at version 2.0. It provides a Metal-based rendering engine for high-performance video processing and includes a native SwiftUI wrapper for declarative integration. The system supports touch-based rotation and configurable playback parameters, with example applications demonstrating both UIKit and SwiftUI usage patterns.
Features
New UIKit and SwiftUI example apps for Fisheye
The Example directory now includes two distinct sample applications demonstrating the Fisheye library. The FisheyeExample app uses a UIKit-based architecture with a SceneDelegate and VideoViewController to play a demo video, while the new FisheyeSwiftUIExample app provides a modern SwiftUI implementation using a ContentView and FisheyeSwiftUIView. Both projects are configured to build against the Fisheye framework and include standard unit and UI test targets.
Example · high confidence
Removals
HTY360Player iOS application removed
The entire HTY360Player iOS application has been deleted from the repository. This includes the application entry point (AppDelegate), the main menu interface (HTYMenuVC) for selecting demo, file, or online videos, and the core 360-degree video playback controller (HTY360PlayerVC) which handled AVFoundation playback and OpenGL ES rendering. Supporting assets such as the app icon, launch screen, and UI images, as well as the GLProgram shader management class, have also been removed.
HTY360Player · high confidence
Removal of HTY360Player Xcode project
The HTY360Player Xcode project file (project.pbxproj) has been deleted, removing the associated iOS application target, source files, resources, and build configuration from the repository.
HTY360Player.xcodeproj · high confidence
Behavioural changes
Introduce Fisheye 2.0 with Metal rendering and SwiftUI support
Fisheye has been upgraded to version 2.0.0, migrating the rendering engine from OpenGL ES to Metal for improved performance and modern iOS integration. The library now includes a native SwiftUI wrapper, FisheyeSwiftUIView, which supports declarative configuration via view modifiers (such as fieldOfView, touchSensitivity, and sphereQuality) and playback state bindings. Core capabilities remain focused on 360-degree video playback with touch-based rotation, now backed by a triple-buffered Metal renderer to prevent CPU-GPU synchronization hazards.
Sources · high confidence
Test coverage
Added unit tests for FisheyeSwiftUIView and core geometry
Added test coverage for the new FisheyeSwiftUIView component, verifying initialization with default and custom configurations, modifier behavior (field of view, touch sensitivity, sphere quality, loop playback, frames per second), and chained modifiers. Also added tests for the underlying SphereGenerator to validate vertex/index counts, bounds checking, and radius accuracy, as well as tests for FisheyeConfiguration defaults and custom values.
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 69 → 67 (-2.4)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 100 → 100 (+0.0)
- Architecture 93 → 97 (+4.2)
- Maturity 63 → 63 (+0.0)
- Readiness 59 → 55 (-4.3)
- Security 85 → 85 (+0.0)
New (5)
- Coverage not measured — Swift suite
- Dependency hygiene PARTLY measured — SwiftPM pinning read, dependency currency NOT established
- Inconsistent configuration handling between UIKit and SwiftUI views. FisheyeView takes a single FisheyeConfiguration object, while FisheyeSwiftUIView accepts the configuration object in the init but ALSO exposes individual modifiers for every property in that configuration (fieldOfView, touchSensitivity, etc.). This creates redundancy and potential state sync issues (which source of truth wins?).
- Inconsistent naming and abstraction for sphere geometry configuration. Sphere uses sliceCount, SphereGenerator uses numSlices, and FisheyeSwiftUIView uses a SphereQuality enum/type. This forces the user to understand three different ways to specify the same geometric parameter (resolution/detail).
- Inconsistent video source initialization. FisheView uses a dedicated method loadVideo after initialization, while FisheyeSwiftUIView and VideoPlayer accept the URL in the constructor. This creates confusion about whether the video is loaded eagerly or lazily, and forces different usage patterns for UIKit vs SwiftUI vs standalone players.
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
hanton/Fisheye 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 71e8e9394a0af3b340ed8e0a59fa2d5a2852a9b8 — 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.