← 60fpsCONTENT HISTORY

Update to 60fps

Snapshot Oct 24, 2026 · 12:54 UTC · version 1.2.2

WHAT CHANGED

Package or technical metadata updated

Package or technical metadata updated

Observed in package metadata. These changes alone do not establish a new customer-facing feature.

Save 60fps and check future changes in Following.

Up to 3 plugins free · no card required.

All fields and original values.

These are saved file metadata. Open a changed file to read its text edits.

Package file

Before

Sep 30, 2026 · 22:51 UTC

caedac86dc7afe553fb7e9307f9b3920c73d06b408dbf300583ea4b6dde01c17

After

Oct 24, 2026 · 12:54 UTC

1f7d6db7d94e8a80359b80dd43f9f9054dcc12ed0dd551a17578218ec3c8bf6d

Package file

Before

Sep 30, 2026 · 22:51 UTC

127

After

Oct 24, 2026 · 12:54 UTC

97

Package file

Before

Sep 30, 2026 · 22:51 UTC

277c722df60c766049755b621e0756146b750566f2e1856a8dc005c180677e12

After

Oct 24, 2026 · 12:54 UTC

2afd0101561210c21beb9f8af497456ddc9f9fa3916b689194caa4fb57bd65b7

Package file

Before

Sep 30, 2026 · 22:51 UTC

2240

After

Oct 24, 2026 · 12:54 UTC

3853

Compare saved observations

Download comparison JSON

Changed files

Choose a file to see its text changes. Binary or large files show metadata only.

.app.json →

.codex-plugin/plugin.json →

.mcp.json →

assets/logo.png →

.codex-plugin/plugin.json

− removed · + added

--- before
+++ after
@@ -1,20 +1,21 @@
 {
-  "apps": "./.app.json",
   "author": {
-    "name": "60fps"
+    "name": "Rishi Deep"
   },
-  "description": "60fps is a library of real iOS app interactions, recorded from shipping apps and broken down so\nyou can build them.\n\nSearch in plain language, like \"springy bottom sheet\" or \"pull to refresh with haptics\", and get\nback matching shots with the app, the gesture, and the motion vocabulary that describes them. Open\none for a frame by frame breakdown of the animation: what moves, in what order, with what timing\nand easing. Where a bespoke recreation exists, you can pull compile-checked SwiftUI for it.\n\nIt answers the question a reference video cannot: not just what an interaction looks like, but what\nit is actually doing.\n\nRead only. It never writes anything and never acts on your behalf.",
+  "description": "60fps is a library of 2,000+ real iOS app interactions, recorded from shipping apps and broken down so you can build them.\n\nSearch in plain language, like \"springy bottom sheet\" or \"pull to refresh with haptics\", and get back matching shots with the app, the gesture, and the motion vocabulary that describes them. Open one for a breakdown of the motion: what triggers it, what moves and in what order, with what timing and easing, plus keyframes from the video. Where a bespoke recreation exists, you can pull compile-checked SwiftUI for it.\n\nIt answers the question a reference video cannot: not just what an interaction looks like, but what it is actually doing.\n\nRead only. It never writes anything and never acts on your behalf.",
   "interface": {
     "capabilities": [],
     "category": "Developer Tools",
+    "composerIcon": "./assets/logo.png",
     "defaultPrompt": [
       "Find a springy bottom sheet interaction and break down its motion",
       "Show me how iOS apps do pull to refresh with haptics",
       "Give me the SwiftUI for a card that expands into a full screen view"
     ],
-    "developerName": "60fps",
+    "developerName": "Rishi Deep",
     "displayName": "60fps",
-    "longDescription": "60fps is a library of real iOS app interactions, recorded from shipping apps and broken down so\nyou can build them.\n\nSearch in plain language, like \"springy bottom sheet\" or \"pull to refresh with haptics\", and get\nback matching shots with the app, the gesture, and the motion vocabulary that describes them. Open\none for a frame by frame breakdown of the animation: what moves, in what order, with what timing\nand easing. Where a bespoke recreation exists, you can pull compile-checked SwiftUI for it.\n\nIt answers the question a reference video cannot: not just what an interaction looks like, but what\nit is actually doing.\n\nRead only. It never writes anything and never acts on your behalf.",
+    "logo": "./assets/logo.png",
+    "longDescription": "60fps is a library of 2,000+ real iOS app interactions, recorded from shipping apps and broken down so you can build them.\n\nSearch in plain language, like \"springy bottom sheet\" or \"pull to refresh with haptics\", and get back matching shots with the app, the gesture, and the motion vocabulary that describes them. Open one for a breakdown of the motion: what triggers it, what moves and in what order, with what timing and easing, plus keyframes from the video. Where a bespoke recreation exists, you can pull compile-checked SwiftUI for it.\n\nIt answers the question a reference video cannot: not just what an interaction looks like, but what it is actually doing.\n\nRead only. It never writes anything and never acts on your behalf.",
     "privacyPolicyURL": "https://60fps.design/privacy",
     "shortDescription": "Search real iOS interactions",
     "supportURL": "https://60fps.design/mcp",
@@ -22,5 +23,14 @@
     "websiteURL": "https://60fps.design/mcp"
   },
   "name": "app-6a6f3e5f82a08191bc0493c63a07eb5f",
-  "version": "1.0.0"
-}
\ No newline at end of file
+  "version": "1.2.2",
+  "extensions": {
+    "com.openai": {
+      "publication": {
+        "release_notes": "Version 1.2.2 is version 1.2.1, which was approved, with the MCP server declared in the package (.mcp.json, https://mcp.60fps.design/mcp), as the new package upload requires. The server, its six tools and their annotations are unchanged.\n\nVersion 1.2.1 answers the review of 1.2.0 on tool annotations.\n\nAll six tools set every hint explicitly, none null: readOnlyHint true, destructiveHint false, openWorldHint false. The tools are 60fps_search_shots, 60fps_list_filters, 60fps_get_shot, 60fps_get_related_shots, 60fps_get_motion_breakdown and 60fps_get_motion_code.\n\nRead only, true: every tool only retrieves data from the 60fps catalog. None creates, changes, sends, deletes or queues anything. The daily usage count on 60fps_get_motion_breakdown and 60fps_get_motion_code is our own server-side metering, not a change made by or for the user.\n\nDestructive, false: nothing is ever deleted, overwritten, cancelled or revoked.\n\nOpen world, false: every tool is confined to our bounded catalog of 2,000+ recorded iOS interactions. No web search and no arbitrary URLs. Storyboard frames in 60fps_get_motion_breakdown are our own images served from our image CDN.\n\nAlso in this version: the app icon is now part of the package, and the server sends short instructions so answers stay plain and easy to read."
+      }
+    }
+  },
+  "mcpServers": "./.mcp.json",
+  "apps": "./.app.json"
+}
Full technical diff · 6 changed fields

changed /files/.app.json/sha256

BEFORE
"caedac86dc7afe553fb7e9307f9b3920c73d06b408dbf300583ea4b6dde01c17"
AFTER
"1f7d6db7d94e8a80359b80dd43f9f9054dcc12ed0dd551a17578218ec3c8bf6d"

changed /files/.app.json/size

BEFORE
127
AFTER
97

changed /files/.codex-plugin~1plugin.json/sha256

BEFORE
"277c722df60c766049755b621e0756146b750566f2e1856a8dc005c180677e12"
AFTER
"2afd0101561210c21beb9f8af497456ddc9f9fa3916b689194caa4fb57bd65b7"

changed /files/.codex-plugin~1plugin.json/size

BEFORE
2240
AFTER
3853

added /files/.mcp.json

BEFORE
Field was absent
AFTER
{
  "sha256": "39217e8093a966b6e226e42c1d165de8de8d9e2f35d8412ad2cbbb373c520d39",
  "size": 91
}

added /files/assets~1logo.png

BEFORE
Field was absent
AFTER
{
  "sha256": "c0d1723a079c6dd508135c5cadb85ebcdd3208827d18ad0c44babc7ffb205905",
  "size": 5969
}
Full snapshot data
{
  "files": {
    ".app.json": {
      "sha256": "1f7d6db7d94e8a80359b80dd43f9f9054dcc12ed0dd551a17578218ec3c8bf6d",
      "size": 97
    },
    ".codex-plugin/plugin.json": {
      "sha256": "2afd0101561210c21beb9f8af497456ddc9f9fa3916b689194caa4fb57bd65b7",
      "size": 3853
    },
    ".mcp.json": {
      "sha256": "39217e8093a966b6e226e42c1d165de8de8d9e2f35d8412ad2cbbb373c520d39",
      "size": 91
    },
    "assets/logo.png": {
      "sha256": "c0d1723a079c6dd508135c5cadb85ebcdd3208827d18ad0c44babc7ffb205905",
      "size": 5969
    }
  }
}

SHA-256 of public snapshot: 7fe211efa8bfef63d674107a75d0a7fd98b21b97164c726cf4c359183ac7cf76