{"adoption": {"forks": 459, "observed_at": "2026-08-28T04:07:12.091228+00:00", "stars": 2716}, "canonical_url": "https://ross.abutalabs.com/products/cmpoptipview", "card": {"archived": false, "artifact_type": "library", "description": "Custom UIView for iOS that pops up an animated \"bubble\" pointing at a button or other view. Useful for popup tips.", "domain": ["mobile-development", "frontend"], "enriched": true, "function": ["ui-components", "animation"], "health_score": 20, "homepage": "https://github.com/chrismiles/CMPopTipView", "language": "Objective-C", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["chrismiles/CMPopTipView"], "name": "chrismiles/CMPopTipView", "platform": [], "pushed_at": "2020-07-06T09:39:44+00:00", "repo": "chrismiles/CMPopTipView", "stars": 2716, "tags": ["objective-c", "tooltip", "popup-bubble", "uikit", "onboarding-tips", "ios", "mobile", "swift"], "topics": [], "urls": [], "use_cases": ["show a popup tooltip pointing at a nav bar button in iOS", "display onboarding tips over UIButtons in an iPhone app", "add animated bubble hints to a universal iPad/iPhone app", "highlight a toolbar item with a dismissible popup message", "customize tooltip background and text colors in an iOS app"], "what_it_is": "CMPopTipView is an Objective-C UIView subclass for iOS that displays an animated rounded-rect bubble pointing at a button or other view, useful for popup tips and onboarding hints. It auto-positions its pointer toward the target view or UIBarButtonItem and is rendered entirely with Core Graphics.", "when_to_avoid": ["you are building in Swift with modern SwiftUI and want native popover APIs", "you need actively maintained components with recent updates and modern iOS features", "you need tooltips outside of iOS/UIKit contexts"], "when_to_choose": ["you need a lightweight, self-contained Objective-C tooltip bubble for UIKit", "you want automatic positioning toward any UIView or UIBarButtonItem", "you need Core Graphics-rendered tooltips with slide/pop animations and customizable colors"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/cmpoptipview", "repo": "chrismiles/CMPopTipView", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:12.091228+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:15:21.641846+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "efb3cb87e4ca3c47e1b5bc9766a0800f09cb0e00c6e76629ba798280b8d6dc57", "fetched_at": "2026-08-28T04:07:12.091228+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chrismiles/CMPopTipView"}, {"content_hash": "f9b2b888f54a23740112baa761500e587c63d13f8c0568fd02b72a6e02a8d8df", "fetched_at": "2026-08-29T09:58:19.572239+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/chrismiles/CMPopTipView"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:12.091228+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:15:21.641846+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "efb3cb87e4ca3c47e1b5bc9766a0800f09cb0e00c6e76629ba798280b8d6dc57", "fetched_at": "2026-08-28T04:07:12.091228+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chrismiles/CMPopTipView"}, {"content_hash": "f9b2b888f54a23740112baa761500e587c63d13f8c0568fd02b72a6e02a8d8df", "fetched_at": "2026-08-29T09:58:19.572239+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/chrismiles/CMPopTipView"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:15:21.641846+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "efb3cb87e4ca3c47e1b5bc9766a0800f09cb0e00c6e76629ba798280b8d6dc57", "fetched_at": "2026-08-28T04:07:12.091228+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chrismiles/CMPopTipView"}, {"content_hash": "f9b2b888f54a23740112baa761500e587c63d13f8c0568fd02b72a6e02a8d8df", "fetched_at": "2026-08-29T09:58:19.572239+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/chrismiles/CMPopTipView"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:07:12.091228+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:12.091228+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:12.091228+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:15:21.641846+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "efb3cb87e4ca3c47e1b5bc9766a0800f09cb0e00c6e76629ba798280b8d6dc57", "fetched_at": "2026-08-28T04:07:12.091228+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chrismiles/CMPopTipView"}, {"content_hash": "f9b2b888f54a23740112baa761500e587c63d13f8c0568fd02b72a6e02a8d8df", "fetched_at": "2026-08-29T09:58:19.572239+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/chrismiles/CMPopTipView"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:12.091228+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:12.091228+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:15:21.641846+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "efb3cb87e4ca3c47e1b5bc9766a0800f09cb0e00c6e76629ba798280b8d6dc57", "fetched_at": "2026-08-28T04:07:12.091228+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chrismiles/CMPopTipView"}, {"content_hash": "f9b2b888f54a23740112baa761500e587c63d13f8c0568fd02b72a6e02a8d8df", "fetched_at": "2026-08-29T09:58:19.572239+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/chrismiles/CMPopTipView"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:12.091228+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:12.091228+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:12.091228+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:15:21.641846+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "efb3cb87e4ca3c47e1b5bc9766a0800f09cb0e00c6e76629ba798280b8d6dc57", "fetched_at": "2026-08-28T04:07:12.091228+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chrismiles/CMPopTipView"}, {"content_hash": "f9b2b888f54a23740112baa761500e587c63d13f8c0568fd02b72a6e02a8d8df", "fetched_at": "2026-08-29T09:58:19.572239+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/chrismiles/CMPopTipView"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:12.091228+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:12.091228+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:15:21.641846+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "efb3cb87e4ca3c47e1b5bc9766a0800f09cb0e00c6e76629ba798280b8d6dc57", "fetched_at": "2026-08-28T04:07:12.091228+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chrismiles/CMPopTipView"}, {"content_hash": "f9b2b888f54a23740112baa761500e587c63d13f8c0568fd02b72a6e02a8d8df", "fetched_at": "2026-08-29T09:58:19.572239+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/chrismiles/CMPopTipView"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:15:21.641846+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "efb3cb87e4ca3c47e1b5bc9766a0800f09cb0e00c6e76629ba798280b8d6dc57", "fetched_at": "2026-08-28T04:07:12.091228+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chrismiles/CMPopTipView"}, {"content_hash": "f9b2b888f54a23740112baa761500e587c63d13f8c0568fd02b72a6e02a8d8df", "fetched_at": "2026-08-29T09:58:19.572239+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/chrismiles/CMPopTipView"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:15:21.641846+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "efb3cb87e4ca3c47e1b5bc9766a0800f09cb0e00c6e76629ba798280b8d6dc57", "fetched_at": "2026-08-28T04:07:12.091228+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chrismiles/CMPopTipView"}, {"content_hash": "f9b2b888f54a23740112baa761500e587c63d13f8c0568fd02b72a6e02a8d8df", "fetched_at": "2026-08-29T09:58:19.572239+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/chrismiles/CMPopTipView"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:15:21.641846+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "efb3cb87e4ca3c47e1b5bc9766a0800f09cb0e00c6e76629ba798280b8d6dc57", "fetched_at": "2026-08-28T04:07:12.091228+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chrismiles/CMPopTipView"}, {"content_hash": "f9b2b888f54a23740112baa761500e587c63d13f8c0568fd02b72a6e02a8d8df", "fetched_at": "2026-08-29T09:58:19.572239+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/chrismiles/CMPopTipView"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 5772, "days_push": 2249, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}