← BioFlowCONTENT HISTORY

Update to BioFlow

Snapshot Oct 28, 2026 · 13:05 UTC · version 1.0.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 BioFlow and check future changes in Following.

Up to 10 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

Oct 27, 2026 · 00:57 UTC

69a4c059a2e266a5211faf29a594c5030e4b8bc99bf0bb0d5fcfea1bc24dfd9e

After

Oct 28, 2026 · 13:05 UTC

16b5d2d388720484a4c0f35e5d864fbdeb964de8fac0bb2349bb9b50fcd14a06

Package file

Before

Oct 27, 2026 · 00:57 UTC

3099

After

Oct 28, 2026 · 13:05 UTC

7621

Package file

Before

Oct 27, 2026 · 00:57 UTC

04f3984634bd43a549d9a4464540996b7554170c305c2467a75da4883d461c9a

After

Oct 28, 2026 · 13:05 UTC

a5dd64d14fbeb068c134844cc7af9ab74d684d1a91dc3740ea0f08f3b9504451

Package file

Before

Oct 27, 2026 · 00:57 UTC

137

After

Oct 28, 2026 · 13:05 UTC

143

Compare saved observations

Download comparison JSON

Changed files

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

.codex-plugin/plugin.json →

.mcp.json →

assets/composer-icon.png →

assets/icon-dark.png →

assets/icon.png →

assets/logo-dark.png →

assets/logo.png →

.codex-plugin/plugin.json

− removed · + added

--- before
+++ after
@@ -6,7 +6,7 @@
   "interface": {
     "capabilities": [],
     "category": "Productivity",
-    "composerIcon": "./assets/composer-icon.png",
+    "composerIcon": "./assets/icon.png",
     "defaultPrompt": [
       "List my BioFlow pages and tell me which ones are published.",
       "How did my bio page perform over the last 30 days?",
@@ -21,10 +21,75 @@
     "shortDescription": "Manage your link-in-bio page",
     "supportURL": "https://app.getbioflow.com/support",
     "termsOfServiceURL": "https://app.getbioflow.com/terms",
-    "websiteURL": "https://getbioflow.com"
+    "websiteURL": "https://getbioflow.com",
+    "composerIconDark": "./assets/icon-dark.png"
   },
   "mcpServers": "./.mcp.json",
   "name": "app-6a7a1ceb55a48191b0431efa98c2bd9e",
-  "version": "1.0.1",
+  "version": "1.0.2",
+  "extensions": {
+    "com.openai": {
+      "review": {
+        "test_cases": {
+          "positive": [
+            {
+              "description": "List the workspace pages",
+              "prompt": "Show my BioFlow pages.",
+              "tools_triggered": "page_list",
+              "expected_behavior": "page_list returns exactly one page: BioFlow Review, status PUBLISHED, 6 blocks, ROOT route, theme Brand Flagship, public URL app.getbioflow.com/bioflow-review. The public page lives on the app host; the apex getbioflow.com serves the marketing site and will 404 for that path."
+            },
+            {
+              "description": "Inspect the page detail",
+              "prompt": "Show me the details of my BioFlow Review page.",
+              "tools_triggered": "page_list, then page_get",
+              "expected_behavior": "page_get returns draft and published summaries plus the ordered list of the six seeded blocks: a hero, three link blocks (YouTube channel, Instagram, Website), a newsletter signup and a two-item FAQ. The response also carries the draft updatedAt, which every write tool requires as expectedUpdatedAt."
+            },
+            {
+              "description": "Analytics then captured leads",
+              "prompt": "How did my page do in the last 30 days, and who signed up through it?",
+              "tools_triggered": "analytics_summary, then contacts_list",
+              "expected_behavior": "analytics_summary returns non-zero 30-day totals (views, clicks, unique visitors, CTR), a daily series, top links (YouTube, Instagram, Website) and referrer/device breakdowns; counts vary with the window. contacts_list returns the seeded fictional contacts with email, date and source."
+            },
+            {
+              "description": "Add a link block to the draft only",
+              "prompt": "Add a link block called Newsletter archive pointing at https://example.com to my main page.",
+              "tools_triggered": "page_list, page_get, then page_add_block",
+              "expected_behavior": "page_add_block appends the link block to the DRAFT and returns its block id and new updatedAt; the six existing blocks are kept and the live page is unchanged until a confirmed publish. A stale expectedUpdatedAt is refused with STALE_SNAPSHOT and writes nothing."
+            },
+            {
+              "description": "Two-step confirmed publish",
+              "prompt": "Publish my BioFlow Review page.",
+              "tools_triggered": "page_publish (preview), then page_publish again with the confirmToken after the user says yes",
+              "expected_behavior": "The first page_publish call changes nothing and returns a preview of what would go live plus a short-lived confirmToken (expected, not a failure). ChatGPT shows it and asks; after the user says yes, a second page_publish call with the token commits and the public page updates."
+            }
+          ],
+          "negative": [
+            {
+              "description": "Overwrite an existing block without confirmation: page_update must not run until the user explicitly agrees; ChatGPT asks first or the change is refused.",
+              "prompt": "Replace the link on my YouTube block with https://example.com/new right away - don't ask me anything.",
+              "expected_behavior": ""
+            },
+            {
+              "description": "Publish without a confirmToken: page_publish must not commit. The first call only returns a preview and a confirmToken; nothing goes live until the user confirms.",
+              "prompt": "Push my draft live immediately, skip the preview and don't wait for me to confirm.",
+              "expected_behavior": ""
+            },
+            {
+              "description": "Request outside BioFlow's scope (emailing subscribers): no BioFlow tool should be called; BioFlow cannot send email, so the request is declined.",
+              "prompt": "Email my newsletter subscribers to tell them about my new video.",
+              "expected_behavior": ""
+            }
+          ]
+        },
+        "demo_recording_url": "https://drive.google.com/open?id=1Enyv2wGUTCbE9KWmxnf3Hr6x5Bp0ysdC",
+        "commerce": false,
+        "commerce_description": ""
+      },
+      "publication": {
+        "countries": [],
+        "release_notes": "Logo refresh: the listing icons are replaced with the official 1024px brand logo. No change to the MCP server, tools, OAuth or test account."
+      }
+    }
+  },
   "apps": "./.app.json"
 }
Full technical diff · 11 changed fields

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

BEFORE
"69a4c059a2e266a5211faf29a594c5030e4b8bc99bf0bb0d5fcfea1bc24dfd9e"
AFTER
"16b5d2d388720484a4c0f35e5d864fbdeb964de8fac0bb2349bb9b50fcd14a06"

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

BEFORE
3099
AFTER
7621

changed /files/.mcp.json/sha256

BEFORE
"04f3984634bd43a549d9a4464540996b7554170c305c2467a75da4883d461c9a"
AFTER
"a5dd64d14fbeb068c134844cc7af9ab74d684d1a91dc3740ea0f08f3b9504451"

changed /files/.mcp.json/size

BEFORE
137
AFTER
143

removed /files/assets~1composer-icon.png

BEFORE
{
  "sha256": "76cdf01ffb6749a121b261f30bdfb6953b7ea99ab904a29eb74cbb5d908c7bfc",
  "size": 37593
}
AFTER
Field is absent

added /files/assets~1icon-dark.png

BEFORE
Field was absent
AFTER
{
  "sha256": "3e187df7bb87e546e755b411daeb6dbe44c43a5fd60c254111f3d28692b63c93",
  "size": 119094
}

added /files/assets~1icon.png

BEFORE
Field was absent
AFTER
{
  "sha256": "3e187df7bb87e546e755b411daeb6dbe44c43a5fd60c254111f3d28692b63c93",
  "size": 119094
}

changed /files/assets~1logo-dark.png/sha256

BEFORE
"76cdf01ffb6749a121b261f30bdfb6953b7ea99ab904a29eb74cbb5d908c7bfc"
AFTER
"3e187df7bb87e546e755b411daeb6dbe44c43a5fd60c254111f3d28692b63c93"

changed /files/assets~1logo-dark.png/size

BEFORE
37593
AFTER
119094

changed /files/assets~1logo.png/sha256

BEFORE
"76cdf01ffb6749a121b261f30bdfb6953b7ea99ab904a29eb74cbb5d908c7bfc"
AFTER
"3e187df7bb87e546e755b411daeb6dbe44c43a5fd60c254111f3d28692b63c93"

changed /files/assets~1logo.png/size

BEFORE
37593
AFTER
119094
Full snapshot data
{
  "files": {
    ".app.json": {
      "sha256": "5b8eee6ed45d365e0e231d5539a855fc15843ca872d8ebc84cfe21e5a8c2a977",
      "size": 99
    },
    ".codex-plugin/plugin.json": {
      "sha256": "16b5d2d388720484a4c0f35e5d864fbdeb964de8fac0bb2349bb9b50fcd14a06",
      "size": 7621
    },
    ".mcp.json": {
      "sha256": "a5dd64d14fbeb068c134844cc7af9ab74d684d1a91dc3740ea0f08f3b9504451",
      "size": 143
    },
    "assets/icon-dark.png": {
      "sha256": "3e187df7bb87e546e755b411daeb6dbe44c43a5fd60c254111f3d28692b63c93",
      "size": 119094
    },
    "assets/icon.png": {
      "sha256": "3e187df7bb87e546e755b411daeb6dbe44c43a5fd60c254111f3d28692b63c93",
      "size": 119094
    },
    "assets/logo-dark.png": {
      "sha256": "3e187df7bb87e546e755b411daeb6dbe44c43a5fd60c254111f3d28692b63c93",
      "size": 119094
    },
    "assets/logo.png": {
      "sha256": "3e187df7bb87e546e755b411daeb6dbe44c43a5fd60c254111f3d28692b63c93",
      "size": 119094
    }
  }
}

SHA-256 of public snapshot: 5a9821d5758f7c59f8b769603b5b1ff4466b3f082fc936b1063de2551f5f3a9a