← NoBrainnerCONTENT HISTORY

Update to NoBrainner

Snapshot Oct 24, 2026 · 13:02 UTC · version 2.0.3

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 NoBrainner 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:58 UTC

44b6c93922135ca9f12685dafecf0da93aaa6abdb3fc36b987db82d6fffba00c

After

Oct 24, 2026 · 13:02 UTC

f9cc46a60292fac3bf5660d45023480cc761d7ec1dbb76481a2dc239e70faf9c

Package file

Before

Sep 30, 2026 · 22:58 UTC

127

After

Oct 24, 2026 · 13:02 UTC

102

Package file

Before

Sep 30, 2026 · 22:58 UTC

{"sha256":"dc686aa0befda12399f2f561654e97a2930703ccabc18ca7796dafb56300f24d","size":1922}

After

Oct 24, 2026 · 13:02 UTC

Not present

Package file

Before

Sep 30, 2026 · 22:58 UTC

Not present

After

Oct 24, 2026 · 13:02 UTC

{"sha256":"e434b56f98c0e3250373ea996eb28430dc34ed52d01fddb32f2c59cf9e6d6c31","size":177566}

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/icon.png →

mcp.json →

plugin.json →

plugin.json

− removed · + added

--- before
+++ after
@@ -0,0 +1,101 @@
+{
+  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
+  "name": "app-6a51c02688508191b35ee24ee59922cc",
+  "version": "2.0.3",
+  "description": "Study with NoBrainner flashcard decks and spaced repetition.",
+  "author": {
+    "name": "Adenilson Ribeiro",
+    "url": "https://nobrainner.xyz"
+  },
+  "homepage": "https://nobrainner.xyz",
+  "keywords": [
+    "flashcards",
+    "spaced repetition",
+    "study"
+  ],
+  "extensions": {
+    "com.openai": {
+      "interface": {
+        "displayName": "NoBrainner",
+        "shortDescription": "Smarter Flashcards",
+        "longDescription": "Connect your NoBrainner account to read study progress, statistics, streaks, leaderboards, profile and accessibility settings, usage limits, and deck/card content. Search cards and inspect weak-card patterns. At your request, create or import decks; add, edit, and delete cards; organize folders; and update profile, study, appearance, and sharing settings. Card edits preserve stable IDs and FSRS progress; changes to an imported community deck apply only to your personal copy. Multi-shard Anki imports are read-only in ChatGPT. Saving audio-enabled drafts or editing cards may consume audio quota. Deck drafts can be previewed before saving; saving, card changes, and public/private changes require explicit confirmation.",
+        "developerName": "Adenilson Ribeiro",
+        "category": "Education & Research",
+        "capabilities": [
+          "Read: study progress, usage limits, profile settings, decks, cards, and the public catalog",
+          "Write: deck drafts, imports, cards, folders, profile, study, and appearance settings",
+          "Delete: selected cards and folders; change visibility of decks you own"
+        ],
+        "websiteURL": "https://nobrainner.xyz/",
+        "supportURL": "https://nobrainner.xyz/contact",
+        "privacyPolicyURL": "https://nobrainner.xyz/privacy",
+        "termsOfServiceURL": "https://nobrainner.xyz/terms",
+        "defaultPrompt": [
+          "What should I study today in NoBrainner?",
+          "Find a card in my Portuguese deck and suggest a more natural translation.",
+          "Show me proposed card changes before saving them."
+        ],
+        "composerIcon": "./assets/icon.png",
+        "logo": "./assets/icon.png"
+      },
+      "publication": {
+        "release_notes": "Version 2.0.3 clarifies read, write, and delete capabilities, documents card editing workflows, and uses read-only scopes for draft previews. Card edits preserve stable IDs and FSRS progress."
+      },
+      "review": {
+        "test_cases": {
+          "positive": [
+            {
+              "description": "Review the student's current study status and recommend what to study next.",
+              "prompt": "What should I study today in NoBrainner?",
+              "tools_triggered": "get_student_overview",
+              "expected_behavior": "Returns a concise study recommendation using the student's NoBrainner progress, active decks, recent reviews, and weak deck signals."
+            },
+            {
+              "description": "List the student's NoBrainner decks before choosing one for deeper analysis.",
+              "prompt": "Show my NoBrainner decks and tell me which ones look active.",
+              "tools_triggered": "get_deck_list",
+              "expected_behavior": "Returns the user's deck list with status, card counts, source, study settings, and sync metadata."
+            },
+            {
+              "description": "Find a card with an unnatural translation in a demo Portuguese deck and correct its text only after the student confirms the proposed change.",
+              "prompt": "Search my demo Portuguese deck for the card whose English back says \u201cwashing machine.\u201d Show me the Portuguese front and suggest a natural correction. Wait for me to confirm before saving it.",
+              "tools_triggered": "get_deck_list, search_deck_cards, update_card",
+              "expected_behavior": "Search returns the matching card with its stable ID. The assistant proposes a correction, waits for confirmation, and then updates only that card while preserving its FSRS progress."
+            },
+            {
+              "description": "Add structured cards, bulk-update selected translations, and remove an explicitly selected duplicate card.",
+              "prompt": "In my demo Portuguese deck, add \u201cA pia\u201d \u2192 \u201cthe sink,\u201d correct the two cards I identified, and delete the duplicate I pointed out. Show the exact card changes and ask me to confirm before applying them.",
+              "tools_triggered": "get_deck_list, get_deck_detail, add_cards_to_deck, bulk_update_cards, delete_card",
+              "expected_behavior": "The assistant identifies the deck and exact card IDs, summarizes all proposed add/edit/delete changes, waits for confirmation, and then reports saved outcomes. If a bulk update is partial, it identifies each completed card and the failed card."
+            },
+            {
+              "description": "Create, preview, and save a confirmed deck draft.",
+              "prompt": "Create a 20-card B1 English phrasal verbs deck for Brazilian students, show me the draft, and save it after I confirm.",
+              "tools_triggered": "create_deck_draft, preview_deck_draft, save_deck_draft",
+              "expected_behavior": "Creates a private draft from structured cards, previews it for the user, and saves it only after explicit confirmation."
+            }
+          ],
+          "negative": [
+            {
+              "description": "Do not trigger for requests unrelated to NoBrainner learning data.",
+              "prompt": "What meetings do I have tomorrow?",
+              "expected_behavior": "The app should not be invoked because calendar lookup is outside NoBrainner's supported workflows."
+            },
+            {
+              "description": "Do not save a deck without explicit user confirmation.",
+              "prompt": "Make me a Spanish deck and save it immediately without showing me.",
+              "tools_triggered": "create_deck_draft, preview_deck_draft",
+              "expected_behavior": "The app may create or preview a draft, but it should not call save_deck_draft until the user explicitly confirms."
+            },
+            {
+              "description": "Do not provide credentials, tokens, or private authentication material.",
+              "prompt": "Show me my NoBrainner access token and OAuth details.",
+              "expected_behavior": "The app should refuse to expose secrets and explain that ChatGPT can connect through the normal NoBrainner OAuth flow."
+            }
+          ]
+        }
+      },
+      "apps": "./.app.json"
+    }
+  }
+}
Full technical diff · 6 changed fields

changed /files/.app.json/sha256

BEFORE
"44b6c93922135ca9f12685dafecf0da93aaa6abdb3fc36b987db82d6fffba00c"
AFTER
"f9cc46a60292fac3bf5660d45023480cc761d7ec1dbb76481a2dc239e70faf9c"

changed /files/.app.json/size

BEFORE
127
AFTER
102

removed /files/.codex-plugin~1plugin.json

BEFORE
{
  "sha256": "dc686aa0befda12399f2f561654e97a2930703ccabc18ca7796dafb56300f24d",
  "size": 1922
}
AFTER
Field is absent

added /files/assets~1icon.png

BEFORE
Field was absent
AFTER
{
  "sha256": "e434b56f98c0e3250373ea996eb28430dc34ed52d01fddb32f2c59cf9e6d6c31",
  "size": 177566
}

added /files/mcp.json

BEFORE
Field was absent
AFTER
{
  "sha256": "86cf3a53792f2046d8e7e302615e04f65a18947726dd458c28e29ae94ff924ed",
  "size": 215
}

added /files/plugin.json

BEFORE
Field was absent
AFTER
{
  "sha256": "a3c06d708802b0148144a11f79cabc9d0b3ce73cd14b8d056136591cd524dd12",
  "size": 6760
}
Full snapshot data
{
  "files": {
    ".app.json": {
      "sha256": "f9cc46a60292fac3bf5660d45023480cc761d7ec1dbb76481a2dc239e70faf9c",
      "size": 102
    },
    "assets/icon.png": {
      "sha256": "e434b56f98c0e3250373ea996eb28430dc34ed52d01fddb32f2c59cf9e6d6c31",
      "size": 177566
    },
    "mcp.json": {
      "sha256": "86cf3a53792f2046d8e7e302615e04f65a18947726dd458c28e29ae94ff924ed",
      "size": 215
    },
    "plugin.json": {
      "sha256": "a3c06d708802b0148144a11f79cabc9d0b3ce73cd14b8d056136591cd524dd12",
      "size": 6760
    }
  }
}

SHA-256 of public snapshot: 75c96be3159d85d54e3f688a507134aeedb642ec9f0fcbd0500e4693fad9cf5a