{"adoption": {"forks": 501, "observed_at": "2026-08-28T04:07:25.886172+00:00", "stars": 2856}, "canonical_url": "https://ross.abutalabs.com/products/panolensjs", "card": {"archived": true, "artifact_type": "library", "description": "Javascript panorama viewer based on Three.js", "domain": ["web-development", "frontend", "graphics", "media"], "enriched": true, "function": ["graphics", "image-processing", "video-processing", "animation"], "health_score": 10, "homepage": "https://pchen66.github.io/Panolens/", "language": "JavaScript", "license": "MIT", "license_family": "permissive", "maturity": "abandoned", "member_repos": ["pchen66/panolens.js"], "name": "pchen66/panolens.js", "platform": ["browser"], "pushed_at": "2023-06-02T06:28:30+00:00", "repo": "pchen66/panolens.js", "stars": 2856, "tags": ["panorama-viewer", "360-panorama", "threejs", "virtual-tour", "equirectangular", "deprecated", "webgl", "street-view", "360-video", "infospot", "javascript"], "topics": [], "urls": [], "use_cases": ["display 360 equirectangular panorama images on a webpage", "build a virtual tour with linked panoramas and navigation hotspots", "embed a 360 video player with built-in controls in a site", "show Google Street View panoramas by panoId", "add interactive infospot hotspots with text or custom DOM elements", "create a little-planet stereographic panorama view", "embed an interactive panorama viewer in an iframe"], "what_it_is": "Panolens.js is an event-driven, WebGL-based JavaScript panorama viewer built on top of Three.js, supporting equirectangular images, cubemaps, 360 video, and Google Street View panoramas. The project is officially deprecated and no longer maintained, with the author recommending migration to other solutions.", "when_to_avoid": ["starting a new project - the library is deprecated and unmaintained", "you need compatibility with the latest Three.js API", "you need ongoing bug fixes, security updates, or modern framework integration", "you need guaranteed long-term support for a production virtual tour product"], "when_to_choose": ["you need a lightweight, event-driven panorama viewer on Three.js and are pinned to older Three.js versions", "you are maintaining a legacy project already built on Panolens.js", "you want a simple embeddable 360 image or video viewer without heavy dependencies"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/panolensjs", "repo": "pchen66/panolens.js", "role": "main", "score": 10}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:25.886172+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:36:43.698371+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c0a52396d318cd42cce6e5351ea5b35329df58b12a2b76cb730f1c2cb678f884", "fetched_at": "2026-08-28T04:07:25.886172+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pchen66/panolens.js"}, {"content_hash": "c774fd60eb676c130de608c26bb4f070e5baaceecbfa7c9418a742327b9186c6", "fetched_at": "2026-08-29T09:52:28.432365+00:00", "kind": "homepage", "missing": false, "url": "https://pchen66.github.io/Panolens/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:25.886172+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:36:43.698371+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c0a52396d318cd42cce6e5351ea5b35329df58b12a2b76cb730f1c2cb678f884", "fetched_at": "2026-08-28T04:07:25.886172+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pchen66/panolens.js"}, {"content_hash": "c774fd60eb676c130de608c26bb4f070e5baaceecbfa7c9418a742327b9186c6", "fetched_at": "2026-08-29T09:52:28.432365+00:00", "kind": "homepage", "missing": false, "url": "https://pchen66.github.io/Panolens/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:36:43.698371+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c0a52396d318cd42cce6e5351ea5b35329df58b12a2b76cb730f1c2cb678f884", "fetched_at": "2026-08-28T04:07:25.886172+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pchen66/panolens.js"}, {"content_hash": "c774fd60eb676c130de608c26bb4f070e5baaceecbfa7c9418a742327b9186c6", "fetched_at": "2026-08-29T09:52:28.432365+00:00", "kind": "homepage", "missing": false, "url": "https://pchen66.github.io/Panolens/"}], "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:25.886172+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:25.886172+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:25.886172+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:36:43.698371+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c0a52396d318cd42cce6e5351ea5b35329df58b12a2b76cb730f1c2cb678f884", "fetched_at": "2026-08-28T04:07:25.886172+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pchen66/panolens.js"}, {"content_hash": "c774fd60eb676c130de608c26bb4f070e5baaceecbfa7c9418a742327b9186c6", "fetched_at": "2026-08-29T09:52:28.432365+00:00", "kind": "homepage", "missing": false, "url": "https://pchen66.github.io/Panolens/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:25.886172+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:25.886172+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:36:43.698371+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c0a52396d318cd42cce6e5351ea5b35329df58b12a2b76cb730f1c2cb678f884", "fetched_at": "2026-08-28T04:07:25.886172+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pchen66/panolens.js"}, {"content_hash": "c774fd60eb676c130de608c26bb4f070e5baaceecbfa7c9418a742327b9186c6", "fetched_at": "2026-08-29T09:52:28.432365+00:00", "kind": "homepage", "missing": false, "url": "https://pchen66.github.io/Panolens/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:25.886172+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:25.886172+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:25.886172+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:36:43.698371+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c0a52396d318cd42cce6e5351ea5b35329df58b12a2b76cb730f1c2cb678f884", "fetched_at": "2026-08-28T04:07:25.886172+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pchen66/panolens.js"}, {"content_hash": "c774fd60eb676c130de608c26bb4f070e5baaceecbfa7c9418a742327b9186c6", "fetched_at": "2026-08-29T09:52:28.432365+00:00", "kind": "homepage", "missing": false, "url": "https://pchen66.github.io/Panolens/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:25.886172+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:25.886172+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:36:43.698371+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c0a52396d318cd42cce6e5351ea5b35329df58b12a2b76cb730f1c2cb678f884", "fetched_at": "2026-08-28T04:07:25.886172+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pchen66/panolens.js"}, {"content_hash": "c774fd60eb676c130de608c26bb4f070e5baaceecbfa7c9418a742327b9186c6", "fetched_at": "2026-08-29T09:52:28.432365+00:00", "kind": "homepage", "missing": false, "url": "https://pchen66.github.io/Panolens/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:36:43.698371+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c0a52396d318cd42cce6e5351ea5b35329df58b12a2b76cb730f1c2cb678f884", "fetched_at": "2026-08-28T04:07:25.886172+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pchen66/panolens.js"}, {"content_hash": "c774fd60eb676c130de608c26bb4f070e5baaceecbfa7c9418a742327b9186c6", "fetched_at": "2026-08-29T09:52:28.432365+00:00", "kind": "homepage", "missing": false, "url": "https://pchen66.github.io/Panolens/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:36:43.698371+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c0a52396d318cd42cce6e5351ea5b35329df58b12a2b76cb730f1c2cb678f884", "fetched_at": "2026-08-28T04:07:25.886172+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pchen66/panolens.js"}, {"content_hash": "c774fd60eb676c130de608c26bb4f070e5baaceecbfa7c9418a742327b9186c6", "fetched_at": "2026-08-29T09:52:28.432365+00:00", "kind": "homepage", "missing": false, "url": "https://pchen66.github.io/Panolens/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:36:43.698371+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c0a52396d318cd42cce6e5351ea5b35329df58b12a2b76cb730f1c2cb678f884", "fetched_at": "2026-08-28T04:07:25.886172+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pchen66/panolens.js"}, {"content_hash": "c774fd60eb676c130de608c26bb4f070e5baaceecbfa7c9418a742327b9186c6", "fetched_at": "2026-08-29T09:52:28.432365+00:00", "kind": "homepage", "missing": false, "url": "https://pchen66.github.io/Panolens/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["archived"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3938, "days_push": 1188, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 10, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}