{"adoption": {"forks": 40, "observed_at": "2026-08-28T04:03:23.894923+00:00", "stars": 1053}, "canonical_url": "https://ross.abutalabs.com/products/mmappswitcher", "card": {"archived": false, "artifact_type": "library", "description": "Replace iOS7 app switcher view with your own customized card view.", "domain": ["mobile-development", "developer-tools"], "enriched": true, "function": ["ui-components", "mobile-framework"], "health_score": 20, "homepage": null, "language": "Objective-C", "license": "MIT", "license_family": "permissive", "maturity": "abandoned", "member_repos": ["vpdn/MMAppSwitcher"], "name": "vpdn/MMAppSwitcher", "platform": [], "pushed_at": "2015-02-06T09:37:56+00:00", "repo": "vpdn/MMAppSwitcher", "stars": 1053, "tags": ["ios7", "app-switcher", "multitasking", "objective-c", "cocoapods", "card-view", "ios", "mobile"], "topics": [], "urls": [], "use_cases": ["customize the iOS 7 app switcher card for my app", "show live data in the multitasking card view", "replace the default app snapshot in the app switcher", "update the app switcher card on background fetch", "build a time tracking app with a custom switcher card"], "what_it_is": "MMAppSwitcher is a small Objective-C library that lets iOS 7 apps replace the default scaled-down screenshot in the app switcher with a custom card view. Apps provide the card via a data source protocol and can refresh it during background fetches or silent push wakeups.", "when_to_avoid": ["you target iOS 8 or later, where this hack no longer applies", "you need App Store-safe techniques only, since similar tricks may be rejected", "you need to test on the simulator, since the custom view only appears on real devices"], "when_to_choose": ["you are building an iOS 7 app and want a branded or live-updating card in the app switcher", "you want a tiny drop-in class or CocoaPods dependency with a one-method data source"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/mmappswitcher", "repo": "vpdn/MMAppSwitcher", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.894923+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:59:39.738914+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e6a0f2db621681dc3ccdabe882e03bd8b0e2e2a5ab43e96edb20dca3a3005a16", "fetched_at": "2026-08-28T04:03:23.894923+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vpdn/MMAppSwitcher"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.894923+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:59:39.738914+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e6a0f2db621681dc3ccdabe882e03bd8b0e2e2a5ab43e96edb20dca3a3005a16", "fetched_at": "2026-08-28T04:03:23.894923+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vpdn/MMAppSwitcher"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:59:39.738914+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e6a0f2db621681dc3ccdabe882e03bd8b0e2e2a5ab43e96edb20dca3a3005a16", "fetched_at": "2026-08-28T04:03:23.894923+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vpdn/MMAppSwitcher"}], "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:03:23.894923+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.894923+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.894923+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:59:39.738914+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e6a0f2db621681dc3ccdabe882e03bd8b0e2e2a5ab43e96edb20dca3a3005a16", "fetched_at": "2026-08-28T04:03:23.894923+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vpdn/MMAppSwitcher"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.894923+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.894923+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:59:39.738914+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e6a0f2db621681dc3ccdabe882e03bd8b0e2e2a5ab43e96edb20dca3a3005a16", "fetched_at": "2026-08-28T04:03:23.894923+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vpdn/MMAppSwitcher"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.894923+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.894923+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.894923+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:59:39.738914+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e6a0f2db621681dc3ccdabe882e03bd8b0e2e2a5ab43e96edb20dca3a3005a16", "fetched_at": "2026-08-28T04:03:23.894923+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vpdn/MMAppSwitcher"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.894923+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.894923+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:59:39.738914+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e6a0f2db621681dc3ccdabe882e03bd8b0e2e2a5ab43e96edb20dca3a3005a16", "fetched_at": "2026-08-28T04:03:23.894923+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vpdn/MMAppSwitcher"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:59:39.738914+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e6a0f2db621681dc3ccdabe882e03bd8b0e2e2a5ab43e96edb20dca3a3005a16", "fetched_at": "2026-08-28T04:03:23.894923+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vpdn/MMAppSwitcher"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:59:39.738914+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e6a0f2db621681dc3ccdabe882e03bd8b0e2e2a5ab43e96edb20dca3a3005a16", "fetched_at": "2026-08-28T04:03:23.894923+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vpdn/MMAppSwitcher"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:59:39.738914+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e6a0f2db621681dc3ccdabe882e03bd8b0e2e2a5ab43e96edb20dca3a3005a16", "fetched_at": "2026-08-28T04:03:23.894923+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vpdn/MMAppSwitcher"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4612, "days_push": 4226, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}