← MiniUpCONTENT HISTORY

Update to MiniUp

Snapshot Oct 24, 2026 · 12:58 UTC · version 2.1.0

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 MiniUp 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:53 UTC

0583b6baf6b06fd8696d7637e54eacc1f1508f1f9a66a0255e8596260daa7014

After

Oct 24, 2026 · 12:58 UTC

dfe5ae5d3c1243993e9d24e75ded0cde9a8e6de146b43374aa4081ba3887ef45

Package file

Before

Sep 30, 2026 · 22:53 UTC

127

After

Oct 24, 2026 · 12:58 UTC

98

Package file

Before

Sep 30, 2026 · 22:53 UTC

26ae2ad33cf212753da9859b73e446795331ff7a1a55803c38dccd42f07c0c42

After

Oct 24, 2026 · 12:58 UTC

d191204f364ae1535fe981dc315770f90524ee897595416c24f249597d75e2f2

Package file

Before

Sep 30, 2026 · 22:53 UTC

1471

After

Oct 24, 2026 · 12:58 UTC

1861

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 →

assets/logo.png →

assets/miniup.png →

mcp.json →

plugin.json →

skills/miniup-app-lifecycle/SKILL.md →

skills/miniup-app-lifecycle/agents/openai.yaml →

plugin.json

− removed · + added

--- before
+++ after
@@ -0,0 +1,107 @@
+{
+  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
+  "name": "app-69f34601480881919e50c661b9f70084",
+  "version": "2.1.0",
+  "description": "Build, publish, update, and extend live MiniUp web apps from conversation, files, and data.",
+  "author": {
+    "name": "HOANG MINH NGUYEN",
+    "url": "https://www.miniup.io"
+  },
+  "homepage": "https://www.miniup.io",
+  "repository": "https://github.com/austinwin/qsearch",
+  "keywords": [
+    "web apps",
+    "publishing",
+    "data apps",
+    "functions"
+  ],
+  "extensions": {
+    "com.openai": {
+      "interface": {
+        "displayName": "MiniUp",
+        "shortDescription": "Turn chat into live web apps",
+        "longDescription": "MiniUp turns your ChatGPT conversation, files, and data into live web apps without a build pipeline or Git workflow. Start with HTML, a project, or uploaded data, then keep improving the same app from ChatGPT. Add hosted datasets, editable Table APIs, and server-side Functions when the app needs data or backend logic. MiniUp keeps the result usable beyond the first publish with stable URLs, revision history and restore, access controls, custom domains, and tools to manage the app as it grows.",
+        "developerName": "HOANG MINH NGUYEN",
+        "category": "Developer Tools",
+        "capabilities": [
+          "Interactive",
+          "Write"
+        ],
+        "websiteURL": "https://www.miniup.io",
+        "privacyPolicyURL": "https://www.miniup.io/privacypolicy",
+        "termsOfServiceURL": "https://www.miniup.io/termofservice",
+        "defaultPrompt": [
+          "Turn this HTML into a live web app.",
+          "Build and publish an interactive dashboard from this CSV.",
+          "Update my existing MiniUp app with these changes."
+        ],
+        "supportURL": "https://www.miniup.io/faqs",
+        "logo": "./assets/miniup.png",
+        "composerIcon": "./assets/miniup.png"
+      },
+      "review": {
+        "test_cases": {
+          "positive": [
+            {
+              "description": "Publish a self-contained HTML app.",
+              "prompt": "MiniUp, publish a clean one-page HTML app for a neighborhood bake sale. Use a new automatically named site and return its link.",
+              "tools_triggered": "stage_project_text_file, publish_project_site",
+              "expected_behavior": "Publishes one complete index.html. The tool returns site.url, site.siteId, entryPoint=index.html, fileCount, and files containing index.html. The returned public site URL opens the bake-sale page without sign-in. A new conversation creates a distinct site; a retry of the same publish request preserves its URL."
+            },
+            {
+              "description": "Download miniup-sales.csv from the fixture URL and attach the file to a new conversation; do not paste its URL as an attachment reference.",
+              "prompt": "MiniUp, build and publish an interactive revenue chart app from the attached CSV. Chart revenue by category and include a category filter. Use a new automatically named site.",
+              "tools_triggered": "create_app_from_uploaded_data_file",
+              "expected_behavior": "Publishes a working chart app and returns site.url, asset.accessUrl, asset.grantUrl, appKind=chart_dashboard, backendMode=dataset_file, entryPoint=index.html, fileCount, and files. The hosted dataset has 9 rows. The page loads actual revenue data (total 13270; Bakery 6455, Coffee 4485, Merch 2330) and the category filter changes the chart. Dataset access works through the returned access/grant URLs. A repeat in a new conversation succeeds on a distinct site.",
+              "file_attachment_urls": [
+                "https://www.miniup.io/review-samples/miniup-sales.csv"
+              ]
+            },
+            {
+              "description": "Download miniup-parks.geojson from the fixture URL and attach the file to a new conversation; do not paste its URL as an attachment reference.",
+              "prompt": "MiniUp, build and publish a Leaflet map app from the attached GeoJSON and include enabled ArcGIS-compatible URLs. Use a new automatically named site.",
+              "tools_triggered": "create_app_from_uploaded_data_file",
+              "expected_behavior": "Publishes a working Leaflet map and returns site.url, appKind=map, backendMode=dataset_file, entryPoint, files, asset.accessUrl, asset.mapDataUrl or asset.geoJsonUrl, asset.arcgisFeatureServerUrl, and asset.arcgisLayerUrl. The map shows Lakeview Park, River Bend Green, and Market Plaza. The GeoJSON and ArcGIS layer query return the same 3 point features with their names. A repeat in a new conversation succeeds on a distinct site.",
+              "file_attachment_urls": [
+                "https://www.miniup.io/review-samples/miniup-parks.geojson"
+              ]
+            },
+            {
+              "description": "Create a lightweight non-personal table API for a site made in the same test.",
+              "prompt": "MiniUp, publish a small equipment checkout page for a review event on a new automatically named site, then create a public read-only inventory table for that new site. Fields: item_label (text), category (text), quantity (number), availability (boolean). Seed exactly two records: Folding chair, Seating, 12, true; Projector, Electronics, 0, false. Return the page link and read API links.",
+              "tools_triggered": "stage_project_text_file, publish_project_site, create_site_table",
+              "expected_behavior": "Publishes the equipment page and returns site.url and site.siteId. Creates the inventory table for that returned site.siteId with exactly the two requested rows, apiScopes=[GET], requireReadKey=false, and publicApi.baseUrl/schemaUrl. Anonymous GET returns both records and schema; anonymous POST/PATCH/DELETE are denied. No write key is returned. A new run creates a distinct site, so inventory does not collide with earlier runs."
+            },
+            {
+              "description": "Create, preview, and publish a simple server-side Function API.",
+              "prompt": "MiniUp, create a public Hello World Function API with a fresh unique slug that accepts a name query parameter and returns JSON {\"greeting\":\"Hello, <name>!\"}, defaulting to World. Test it with name=Reviewer first and publish only after the preview returns HTTP 200 with {\"greeting\":\"Hello, Reviewer!\"}. Return the endpoint and docs link.",
+              "tools_triggered": "create_function, test_function, publish_function",
+              "expected_behavior": "Creates a fresh draft and returns result.function.id. test_function returns result.status=200 and result.body containing {\"greeting\":\"Hello, Reviewer!\"}. Only then publishes and returns its public endpoint and documentation URL in result.endpoint and result.docsUrl, with result.status=live. GET endpoint?name=Reviewer returns that greeting; GET without name returns {\"greeting\":\"Hello, World!\"}. Docs URL opens successfully. Each new run uses a distinct Function slug."
+            }
+          ],
+          "negative": [
+            {
+              "description": "Do not trigger for weather requests. The app should not be invoked because weather lookup is outside MiniUp's supported workflows.",
+              "prompt": "What is the weather in Chicago tomorrow?"
+            },
+            {
+              "description": "Do not trigger for email sending. The app should not be invoked because MiniUp does not send email or messages.",
+              "prompt": "Send an email to my team with this project update."
+            },
+            {
+              "description": "Do not trigger for unrelated spreadsheet analysis. The app should not be invoked unless the user asks to publish a MiniUp app or hosted dataset.",
+              "prompt": "Analyze this spreadsheet and forecast next quarter revenue without publishing anything."
+            }
+          ]
+        },
+        "commerce": false,
+        "commerce_description": "The ChatGPT plugin does not initiate purchases, subscriptions, payments, or paid API setup. It creates and manages non-paid Functions. MiniUp payment features remain outside this connection.",
+        "demo_recording_url": "https://youtu.be/IjUnchgeorc"
+      },
+      "publication": {
+        "release_notes": "MiniUp 2.1.0 retains 48 tools with fixes for map labels, empty/error recovery, expired staging and reliable same-page updates. ChatGPT Function tools now support non-paid Functions only; payment configuration remains in MiniUp. Publishing instructions require explicit user intent. The package includes the original five positive and three negative reviewer cases and updated lifecycle guidance."
+      },
+      "apps": "./.app.json"
+    }
+  }
+}
Full technical diff · 10 changed fields

changed /files/.app.json/sha256

BEFORE
"0583b6baf6b06fd8696d7637e54eacc1f1508f1f9a66a0255e8596260daa7014"
AFTER
"dfe5ae5d3c1243993e9d24e75ded0cde9a8e6de146b43374aa4081ba3887ef45"

changed /files/.app.json/size

BEFORE
127
AFTER
98

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

BEFORE
"26ae2ad33cf212753da9859b73e446795331ff7a1a55803c38dccd42f07c0c42"
AFTER
"d191204f364ae1535fe981dc315770f90524ee897595416c24f249597d75e2f2"

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

BEFORE
1471
AFTER
1861

removed /files/assets~1logo.png

BEFORE
{
  "sha256": "c17fea1e4bc04944753eac8e0aded7a44b0f02f56bbdb3b49528988bc331936e",
  "size": 24199
}
AFTER
Field is absent

added /files/assets~1miniup.png

BEFORE
Field was absent
AFTER
{
  "sha256": "2494db11cbe4d32a8e0a0204863247885f7d9274a8f6714af077485b3a50dea4",
  "size": 14164
}

added /files/mcp.json

BEFORE
Field was absent
AFTER
{
  "sha256": "1241019002b2183d337e613b7f1d8490441c190f28696858a5a66c07adbe4834",
  "size": 198
}

added /files/plugin.json

BEFORE
Field was absent
AFTER
{
  "sha256": "d05020f577c435ae8bc68d9b29c7a9988e01c47da095df3d8d91a4753e809164",
  "size": 8757
}

added /files/skills~1miniup-app-lifecycle~1SKILL.md

BEFORE
Field was absent
AFTER
{
  "sha256": "48e99aa341804f3a2135cc412f6c579ef544107dc221984a68f05bd0f7fe5e2f",
  "size": 5453
}

added /files/skills~1miniup-app-lifecycle~1agents~1openai.yaml

BEFORE
Field was absent
AFTER
{
  "sha256": "fe015af18734c4cfd0942623ead26a7f355c56e9aa901539bf896e67af0db62f",
  "size": 459
}
Full snapshot data
{
  "files": {
    ".app.json": {
      "sha256": "dfe5ae5d3c1243993e9d24e75ded0cde9a8e6de146b43374aa4081ba3887ef45",
      "size": 98
    },
    ".codex-plugin/plugin.json": {
      "sha256": "d191204f364ae1535fe981dc315770f90524ee897595416c24f249597d75e2f2",
      "size": 1861
    },
    "assets/miniup.png": {
      "sha256": "2494db11cbe4d32a8e0a0204863247885f7d9274a8f6714af077485b3a50dea4",
      "size": 14164
    },
    "mcp.json": {
      "sha256": "1241019002b2183d337e613b7f1d8490441c190f28696858a5a66c07adbe4834",
      "size": 198
    },
    "plugin.json": {
      "sha256": "d05020f577c435ae8bc68d9b29c7a9988e01c47da095df3d8d91a4753e809164",
      "size": 8757
    },
    "skills/miniup-app-lifecycle/SKILL.md": {
      "sha256": "48e99aa341804f3a2135cc412f6c579ef544107dc221984a68f05bd0f7fe5e2f",
      "size": 5453
    },
    "skills/miniup-app-lifecycle/agents/openai.yaml": {
      "sha256": "fe015af18734c4cfd0942623ead26a7f355c56e9aa901539bf896e67af0db62f",
      "size": 459
    }
  }
}

SHA-256 of public snapshot: e86da8a4e5650f860c126cc931fc2f7dd61e3960743a1f681f6285b4dfba2e22