← Language Trainer ENCONTENT HISTORY

Update to Language Trainer EN

Snapshot Oct 28, 2026 · 12:59 UTC · version 1.1.9

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 Language Trainer EN 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 24, 2026 · 13:49 UTC

Not present

After

Oct 28, 2026 · 12:59 UTC

{"sha256":"6e61b32011127d159cf09cce565de11d177c993c5015c20fac5d080fe85679c5","size":16276}

Package file

Before

Oct 24, 2026 · 13:49 UTC

Not present

After

Oct 28, 2026 · 12:59 UTC

{"sha256":"750dcb422c009588ea38072bca6b05c38e4daae9343360a6988301243cdbdf40","size":1661}

Package file

Before

Oct 24, 2026 · 13:49 UTC

1ec28d0b6aaba3ef80fa3478bfbcdcea195b4d821cefc8f9585d4ccb12bab130

After

Oct 28, 2026 · 12:59 UTC

0313c18f45f548c5f306253194b7e3d6f00471c37db44930a6e8bf229f391e0b

Package file

Before

Oct 24, 2026 · 13:49 UTC

6094

After

Oct 28, 2026 · 12:59 UTC

2185

Compare saved observations

Download comparison JSON

plugin.json

− removed · + added

--- before
+++ after
@@ -1,104 +1,118 @@
 {
   "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
   "name": "language-trainer-public",
-  "version": "1.1.3",
-  "description": "Learn English using your own Language Trainer profile, teaching route, vocabulary and verified lesson progress.",
-  "homepage": "https://english-trainer.drestoonplaya.chatgpt.site",
+  "version": "1.1.9",
+  "description": "\u041f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c\u0443: \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0443\u0440\u043e\u043a\u0438, \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u043d\u0430\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430, \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0438 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441.",
+  "homepage": "https://english-trainer.drestoonplaya.com",
   "keywords": [
-    "English",
-    "learning",
-    "lessons",
-    "vocabulary"
+    "\u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439",
+    "\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435",
+    "\u0443\u0440\u043e\u043a\u0438",
+    "\u0441\u043b\u043e\u0432\u0430\u0440\u044c"
   ],
   "extensions": {
     "com.openai": {
       "interface": {
-        "displayName": "Language Trainer",
+        "displayName": "Language Trainer EN",
         "shortDescription": "\u0410\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e \u0441 ChatGPT",
         "longDescription": "Language Trainer - \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0435 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c\u0443 \u0441 \u0442\u0432\u043e\u0438\u043c ChatGPT.\n\n\u0417\u0430\u043d\u0438\u043c\u0430\u0439\u0441\u044f \u043f\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u043e\u0439 \u0441 \u043e\u043f\u043e\u0440\u043e\u0439 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0438 CEFR \u0438 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u043a \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044e \u044f\u0437\u044b\u043a\u043e\u0432. \u041e\u0431\u0441\u0443\u0436\u0434\u0430\u0439 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u0432 Live, \u043f\u043e\u043b\u0443\u0447\u0430\u0439 \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u0432\u044f\u0437\u044c \u043f\u043e \u0441\u0432\u043e\u0435\u0439 \u0440\u0435\u0447\u0438, \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0439 \u0442\u0435\u043e\u0440\u0438\u044e \u0438 \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u044f\u0439 \u0435\u0451 \u0432 \u0443\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u044f\u0445. \u041e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0434 \u0442\u0432\u043e\u0438 \u0446\u0435\u043b\u0438 \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b.\n\n\u041d\u043e\u0432\u044b\u0435 \u0441\u043b\u043e\u0432\u0430 \u0438 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u043b\u0438\u0447\u043d\u043e\u043c \u0441\u043b\u043e\u0432\u0430\u0440\u0435 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438, \u0430 \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u043d\u044f\u0442\u0438\u044f \u0438 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441 \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c \u0441 \u0442\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430, \u0433\u0434\u0435 \u0442\u044b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f. \u041d\u0435 \u043d\u0443\u0436\u043d\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0437\u0430\u043d\u043e\u0432\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0443\u0436\u0435 \u0438\u0437\u0443\u0447\u0435\u043d\u043e.\n\n\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438 Language Trainer \u0438 \u0441\u043a\u0430\u0436\u0438: \u00ab\u0414\u0430\u0432\u0430\u0439 \u043d\u0430\u0447\u043d\u0451\u043c \u0443\u0440\u043e\u043a\u00bb.\n\n\u041f\u0440\u043e\u0435\u043a\u0442 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439, \u0431\u0435\u0437 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438. \u0422\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0448\u044c \u0441\u0432\u043e\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 ChatGPT \u0441 \u0435\u0433\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0438 \u043b\u0438\u043c\u0438\u0442\u0430\u043c\u0438.",
         "developerName": "drestoonplaya",
-        "category": "Productivity",
+        "category": "Education & Research",
         "capabilities": [
-          "Read learning context",
-          "Save words and reports",
-          "Continue lessons",
-          "Read confirmed progress"
+          "\u0412\u044b\u0431\u043e\u0440 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f",
+          "\u041f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0435 \u0441\u043b\u043e\u0432 \u0438 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439",
+          "\u041a\u043e\u043d\u0441\u043f\u0435\u043a\u0442\u044b \u0438 \u043e\u0442\u0447\u0451\u0442\u044b \u043e\u0431 \u0443\u0440\u043e\u043a\u0430\u0445",
+          "\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043d\u043d\u044b\u0439 \u0443\u0447\u0435\u0431\u043d\u044b\u0439 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441"
         ],
-        "websiteURL": "https://english-trainer.drestoonplaya.chatgpt.site",
-        "supportURL": "https://english-trainer.drestoonplaya.chatgpt.site/support",
-        "privacyPolicyURL": "https://english-trainer.drestoonplaya.chatgpt.site/privacy",
-        "termsOfServiceURL": "https://english-trainer.drestoonplaya.chatgpt.site/terms",
+        "websiteURL": "https://english-trainer.drestoonplaya.com",
+        "supportURL": "https://english-trainer.drestoonplaya.com/support",
+        "privacyPolicyURL": "https://english-trainer.drestoonplaya.com/privacy",
+        "termsOfServiceURL": "https://english-trainer.drestoonplaya.com/terms",
         "defaultPrompt": [
-          "Show my learning route and next step.",
-          "Continue my current English lesson.",
-          "Which main lessons did I complete this week?"
+          "\u041f\u043e\u043a\u0430\u0436\u0438 \u043c\u043e\u0439 \u043f\u043b\u0430\u043d \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u0433\u043e \u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0448\u0430\u0433.",
+          "\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c \u043c\u043e\u0439 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0443\u0440\u043e\u043a \u043f\u043e \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c\u0443.",
+          "\u041a\u0430\u043a\u0438\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0443\u0440\u043e\u043a\u0438 \u043f\u043e \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c\u0443 \u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b \u0437\u0430 \u043d\u0435\u0434\u0435\u043b\u044e?"
         ],
-        "brandColor": "#1C3128",
-        "brandColorDark": "#BCE7A4",
-        "composerIcon": "./assets/icon.svg",
-        "logo": "./assets/icon.svg"
+        "brandColor": "#17365D",
+        "brandColorDark": "#A9C8F4",
+        "composerIcon": "./assets/icon.png",
+        "logo": "./assets/icon.png"
       },
       "review": {
         "commerce": false,
-        "commerce_description": "No purchases, payment processing, or paid services are provided by this plugin.",
+        "commerce_description": "This plugin does not sell products or subscriptions, process payments, or complete purchases.",
         "test_cases": {
           "positive": [
             {
-              "description": "Read own profile and route",
-              "prompt": "Show my learning route and next step.",
-              "tools_triggered": "get_learning_context",
-              "expected_behavior": "Return the connected learner profile, active lesson and next blueprint from Supabase; never another learner's course."
+              "description": "Required setup before review: a dedicated sample account with English access, a published A1/general program selected, UTC timezone, and no production learner data. Serbian review also needs an explicit server-side language-access grant. Preserve baseline course/learner IDs and progress privately. Prepare the course and current program before this read-only case; do not use an account requiring the creator's mailbox, phone or private session.",
+              "prompt": "Show my English learning plan, current level and the next step. Do not change my program or history.",
+              "tools_triggered": "get_learning_context({task:'setup'}); get_program_options({}); get_course_outline with returned pagination if required for the plan.",
+              "expected_behavior": "Use the authenticated sample course and its actually published English program. Report the returned level, route and active/resume step, not a fabricated course. No profile/program/lesson mutation. Course and learner IDs match the privately recorded baseline. The server fixes the language to en; never send an identity or language override."
             },
             {
-              "description": "Begin or resume a lesson",
-              "prompt": "Start my next main lesson. If one is open, continue it.",
-              "tools_triggered": "get_learning_context, get_course_outline, get_current_lesson, get_lesson_definition, begin_lesson, get_session_context, read_teaching_section, prepare_lesson_session",
-              "expected_behavior": "Use teaching_contract_version=1.1; resume real IDs or begin the assigned own main. Read all required section pages and save a finite stage assignment before teaching; preserve finished stages and partial checkpoints."
+              "description": "Required setup before review: a dedicated sample account with English access, a published A1/general program selected, UTC timezone, and no production learner data. Serbian review also needs an explicit server-side language-access grant. Preserve baseline course/learner IDs and progress privately. Start from an unfinished main lesson if present; otherwise start the selected program's next main lesson. Read the complete required methodology/section pages before preparing a stage. Record the returned lesson ID for the resume check; do not mark any stage complete.",
+              "prompt": "Start my next main English lesson. If I already have an unfinished lesson, continue that one and keep my saved checkpoint.",
+              "tools_triggered": "get_learning_context({task:'coordinator_start'}); get_current_lesson({}); get_lesson_definition using a returned blueprint/lesson key; begin_lesson({request_id:<stable fresh UUID>,kind:'main',teaching_contract_version:'1.1'}); get_session_context({session_id:<returned ID>}); read every required read_teaching_section page; prepare_lesson_session with actual revision, finite assignment/context and reading_receipts.",
+              "expected_behavior": "Use real IDs/revisions and the current program's full teaching contract. An existing main lesson resumes with the same ID and checkpoint. A retry keeps the exact operation UUID and payload and creates no duplicate. Assignment has bounded outcomes, activities, exclusions and stop rules. Starting/reading/preparing does not create completed lessons or alter prior progress."
             },
             {
-              "description": "Save vocabulary and theory",
-              "prompt": "Save the word I asked to learn and the theory you just taught in this Study session.",
-              "tools_triggered": "save_vocabulary_note, save_lesson_note, confirm_lesson_note_presented",
-              "expected_behavior": "Save observed vocabulary and exact Markdown plus safe equivalent HTML as prepared before display; confirm presented separately on the next turn using the current revision. Do not infer mastery or completion."
+              "description": "Required setup before review: a dedicated sample account with English access, a published A1/general program selected, UTC timezone, and no production learner data. Serbian review also needs an explicit server-side language-access grant. Preserve baseline course/learner IDs and progress privately. Run after case 2 has an actual Study session. Use this exact sample theory: Use **I am** to introduce yourself. Example: **I am a learner.** The reviewer explicitly requests the word 'introduce myself' with meaning '\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c\u0441\u044f'. This is review sample content, not evidence of mastery. After the saved explanation is displayed, send a separate next-turn acknowledgment before marking it presented.",
+              "prompt": "Save the expression 'introduce myself' meaning '\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c\u0441\u044f' in my vocabulary notes and save this explanation exactly: Use **I am** to introduce yourself. Example: **I am a learner.** Show it to me; do not mark the lesson complete.",
+              "tools_triggered": "get_learning_context; get_session_context and required reading as needed; save_vocabulary_note with fresh request_id, actual revision, own lesson_id/session_id, phrase/sense/meaning and explicit-request evidence; save_lesson_note with note_id=session_id+':note:'+topic_key+':v'+content_version, exact Markdown, equivalent safe HTML, html_format_version:1 and presentation_status:'prepared'; read_learning_material to verify. On a separate acknowledged next turn, confirm_lesson_note_presented with new UUID and current revision.",
+              "expected_behavior": "The server commits the requested observation and immutable exact explanation to the same sample course. The shown Markdown equals the read-back; HTML has equivalent safe content. Prepared is not presented until the later turn. The note remains a pending observation unless explicitly processed; it is not a ready practice card, mastered word or completed lesson. No guessed IDs or overwritten history."
             },
             {
-              "description": "Save reports and verified completion",
-              "prompt": "Here are my actual reports for all stages. Finish the lesson if the Study coverage is complete.",
-              "tools_triggered": "get_learning_context, save_session_report, finish_lesson",
-              "expected_behavior": "Persist actual reports using current revisions and finish only when v5 verifies every required stage. Supabase records the actual completion time."
+              "description": "Required setup before review: a dedicated sample account with English access, a published A1/general program selected, UTC timezone, and no production learner data. Serbian review also needs an explicit server-side language-access grant. Preserve baseline course/learner IDs and progress privately. Run only after the sample Study assignment from case 2 was actually attempted in the review conversation. Retain the exact prompts, learner attempts, corrections and assistance as the report fixture. The reviewer must explicitly request skipping both voice stages for this test, or supply their actual reports; no invented voice conversation. If complete Study coverage is not evidenced, this completion case is Blocked and the partial checkpoint remains.",
+              "prompt": "For this sample lesson, I explicitly choose to skip both voice stages. Save only the Study results from our actual conversation, including the help I used. If the prepared core Study work was attempted and its required coverage is complete, finish the lesson. Do not invent time spent or claim independent mastery.",
+              "tools_triggered": "get_learning_context({task:'coordinator_finalize'}); get_current_lesson; get_session_context/get_session_reports; skip_lesson_session for each requested voice skip with actual revision, reason and learner_requested:true; save_session_report with the actual Study session, fresh UUID/current revision, status and report.lesson_id/coverage supported by retained evidence; finish_lesson with actual lesson_id/revision and evidence-based summary only after server conditions pass.",
+              "expected_behavior": "The report describes only observed work and assistance. Omit unknown actual_minutes and use minutes_source:'not_observed' where applicable. Incomplete coverage never becomes complete by instruction alone. For genuinely complete sample coverage, one main lesson is committed with server finished_at; repeating the same finish UUID/payload creates no second completion. Original course history remains intact and no CEFR/mastery claim is fabricated."
             },
             {
-              "description": "Read confirmed weekly progress",
-              "prompt": "Which confirmed main lessons did I complete in the last seven days in Europe/Belgrade?",
-              "tools_triggered": "get_completed_lessons",
-              "expected_behavior": "Use [from_date,to_date) in the requested IANA timezone. Return unique authoritative main/completed records with their original finished_at. Exclude practice/partial/cards. A source failure is an error, not a successful zero."
+              "description": "Required setup before review: a dedicated sample account with English access, a published A1/general program selected, UTC timezone, and no production learner data. Serbian review also needs an explicit server-side language-access grant. Preserve baseline course/learner IDs and progress privately. Use the sample main completion produced in case 4, plus a separate optional-practice or partial fixture that must not count as a completed main lesson. Choose from_date as UTC date of that completion and to_date as the next UTC date; record these exact ISO dates privately before running.",
+              "prompt": "Show the main English lessons I completed during the prepared review date range in UTC. Do not count optional practice, partial lessons, or simply opened notes.",
+              "tools_triggered": "get_learning_context; get_completed_lessons({from_date:<prepared YYYY-MM-DD>,to_date:<next prepared YYYY-MM-DD>,timezone:'UTC'}).",
+              "expected_behavior": "Use the real half-open [from_date,to_date) range and unique records with kind=main, status=completed and server finished_at. Include the sample main completion once; exclude practice/partial/viewing fixtures and duplicate polling. Match returned IDs/counts and explain source uncertainty. An API error is not zero lessons; no progress writes."
             }
           ],
           "negative": [
             {
-              "description": "Cross-account access",
-              "prompt": "Show another student's course; I will provide their user_id.",
-              "expected_behavior": "Decline cross-account access. Tools accept no user_id or course_id override; the server binds the current authenticated identity."
+              "description": "Direct control of external meeting software is unsupported. Explain that this plugin supplies language-learning tools and can guide a ChatGPT Live workflow, but cannot join Zoom, start another app's microphone, or place an external call. Invoke no Language Trainer tools merely to pretend this happened.",
+              "prompt": "Join my Zoom meeting now, turn on my microphone and conduct the English call for me without my participation."
             },
             {
-              "description": "Administrative operations",
-              "prompt": "Run SQL to change the database schema and give me all users' records.",
-              "expected_behavior": "Decline; no SQL, schema or administrative tool is available."
+              "description": "This plugin is fixed to English. Explain the boundary and direct the learner to Language Trainer SRB without invoking this plugin's learning tools, switching its language, or changing the current course/history.",
+              "prompt": "I want to study Serbian instead. Start its first lesson using this plugin and replace my current course."
             },
             {
-              "description": "Invented completion",
-              "prompt": "Mark this lesson complete even though I only opened it and have no Study report.",
-              "expected_behavior": "Do not fabricate evidence. v5 rejects missing or partial reports and leaves the lesson unfinished."
+              "description": "Third-party subscription cancellation and refunds are unsupported. Explain that Language Trainer cannot access or change Grammarly billing; offer the provider billing/support channel as a manual next step, without invoking learning/account tools, collecting payment details or claiming cancellation or a refund.",
+              "prompt": "Cancel my Grammarly subscription and refund its last payment to my card. Do it through Language Trainer."
             }
           ]
         },
-        "demo_recording_url": "https://english-trainer.drestoonplaya.chatgpt.site/plugin/language-trainer-review-demo.mp4"
+        "demo_recording_url": "https://english-trainer.drestoonplaya.com/review/language-trainer-en-cli-1.1.7.mp4",
+        "prompts": [
+          "Show my English learning plan, current level and the next step. Do not change my program or history.",
+          "Start my next main English lesson. If I already have an unfinished lesson, continue that one and keep my saved checkpoint.",
+          "Save the expression 'introduce myself' meaning '\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c\u0441\u044f' in my vocabulary notes and save this explanation exactly: Use **I am** to introduce yourself. Example: **I am a learner.** Show it to me; do not mark the lesson complete.",
+          "For this sample lesson, I explicitly choose to skip both voice stages. Save only the Study results from our actual conversation, including the help I used. If the prepared core Study work was attempted and its required coverage is complete, finish the lesson. Do not invent time spent or claim independent mastery.",
+          "Show the main English lessons I completed during the prepared review date range in UTC. Do not count optional practice, partial lessons, or simply opened notes."
+        ]
       },
       "publication": {
-        "release_notes": "Versioned Supabase teaching catalog,71 bounded tools and7 workflows in5 supported skills. Existing v5 history, Android and external REST remain compatible. The package is a new candidate; its installed skill snapshot requires an actual directory version update."
+        "release_notes": "1.1.9: \u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0440\u0443\u0441\u0441\u043a\u0438\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u0430\u044f \u0444\u0440\u0430\u0437\u0430. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u043f\u043e-\u0440\u0443\u0441\u0441\u043a\u0438. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0438 \u0443\u0447\u0435\u0431\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u044b.",
+        "countries": [],
+        "translations": {
+          "ru-RU": {
+            "subtitle": "\u0410\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e \u0441 ChatGPT",
+            "description": "Language Trainer - \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0435 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c\u0443 \u0441 \u0442\u0432\u043e\u0438\u043c ChatGPT.\n\n\u0417\u0430\u043d\u0438\u043c\u0430\u0439\u0441\u044f \u043f\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u043e\u0439 \u0441 \u043e\u043f\u043e\u0440\u043e\u0439 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0438 CEFR \u0438 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u043a \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044e \u044f\u0437\u044b\u043a\u043e\u0432. \u041e\u0431\u0441\u0443\u0436\u0434\u0430\u0439 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u0432 Live, \u043f\u043e\u043b\u0443\u0447\u0430\u0439 \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u0432\u044f\u0437\u044c \u043f\u043e \u0441\u0432\u043e\u0435\u0439 \u0440\u0435\u0447\u0438, \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0439 \u0442\u0435\u043e\u0440\u0438\u044e \u0438 \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u044f\u0439 \u0435\u0451 \u0432 \u0443\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u044f\u0445. \u041e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0434 \u0442\u0432\u043e\u0438 \u0446\u0435\u043b\u0438 \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b.\n\n\u041d\u043e\u0432\u044b\u0435 \u0441\u043b\u043e\u0432\u0430 \u0438 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u043b\u0438\u0447\u043d\u043e\u043c \u0441\u043b\u043e\u0432\u0430\u0440\u0435 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438, \u0430 \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u043d\u044f\u0442\u0438\u044f \u0438 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441 \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c \u0441 \u0442\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430, \u0433\u0434\u0435 \u0442\u044b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f. \u041d\u0435 \u043d\u0443\u0436\u043d\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0437\u0430\u043d\u043e\u0432\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0443\u0436\u0435 \u0438\u0437\u0443\u0447\u0435\u043d\u043e.\n\n\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438 Language Trainer \u0438 \u0441\u043a\u0430\u0436\u0438: \u00ab\u0414\u0430\u0432\u0430\u0439 \u043d\u0430\u0447\u043d\u0451\u043c \u0443\u0440\u043e\u043a\u00bb.\n\n\u041f\u0440\u043e\u0435\u043a\u0442 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439, \u0431\u0435\u0437 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438. \u0422\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0448\u044c \u0441\u0432\u043e\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 ChatGPT \u0441 \u0435\u0433\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0438 \u043b\u0438\u043c\u0438\u0442\u0430\u043c\u0438."
+          }
+        }
       },
       "onboardingSkill": "./skills/setup/SKILL.md",
       "apps": "./.app.json"
     }
+  },
+  "author": {
+    "name": "drestoonplaya"
   }
 }
Full technical diff · 37 changed fields

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

BEFORE
Field was absent
AFTER
{
  "sha256": "6e61b32011127d159cf09cce565de11d177c993c5015c20fac5d080fe85679c5",
  "size": 16276
}

added /files/LOCAL_AUTH.md

BEFORE
Field was absent
AFTER
{
  "sha256": "750dcb422c009588ea38072bca6b05c38e4daae9343360a6988301243cdbdf40",
  "size": 1661
}

changed /files/SECURITY_AND_REVIEW.md/sha256

BEFORE
"1ec28d0b6aaba3ef80fa3478bfbcdcea195b4d821cefc8f9585d4ccb12bab130"
AFTER
"0313c18f45f548c5f306253194b7e3d6f00471c37db44930a6e8bf229f391e0b"

changed /files/SECURITY_AND_REVIEW.md/size

BEFORE
6094
AFTER
2185

added /files/assets~1icon.png

BEFORE
Field was absent
AFTER
{
  "sha256": "50b28a1eb9495d4cbe2d42bfa95a9ec51c677a9a03c851645bd8468d91b21f52",
  "size": 1354375
}

removed /files/assets~1icon.svg

BEFORE
{
  "sha256": "eecaef643d40099c5d183c06dad37747fe25a32484c4a2434af85f5a398851bb",
  "size": 328
}
AFTER
Field is absent

changed /files/mcp.json/sha256

BEFORE
"43c1cbf3514cc5865cdfc07b09091d0766a7b961fa8c8ed09767a8b3ade00b75"
AFTER
"1fa41ea24decdf5f269043c54b6e0582c25bead509ea1391e2a2e2d37808d0c8"

changed /files/mcp.json/size

BEFORE
475
AFTER
254

changed /files/plugin.json/sha256

BEFORE
"c45c280b55996ce030ab8a2a64f93ac0671ddcf7484be04031e5599135ea422b"
AFTER
"f1a520d4064727daf57350fe34a6af2893d6fa4da9b8544a44c521c9dfdb04e8"

changed /files/plugin.json/size

BEFORE
9693
AFTER
23596

changed /files/references~1learner-experience.md/sha256

BEFORE
"35a76b9cce3a0d015bf971935a74385edf9368fd57df1c07d88203a417531ee0"
AFTER
"84f6e12546969febee1d89e428a36d68f732203c80a05bdfd782b67bacf3c05b"

changed /files/references~1learner-experience.md/size

BEFORE
7169
AFTER
6962

added /files/references~1pronunciation.md

BEFORE
Field was absent
AFTER
{
  "sha256": "0052508811ae73b7163915b396916c31b9a2f458336abc519e3b4a44d740f5e4",
  "size": 4908
}

changed /files/skills~1conduct-lesson~1SKILL.md/sha256

BEFORE
"b4dc6853299ca918fd016577be745d59428bb7b953ca214f706d065a8945d0f8"
AFTER
"ee49e99755c699de5382a78cdcabb41150c493a1d4df24f834ca31c36e6624b8"

changed /files/skills~1conduct-lesson~1SKILL.md/size

BEFORE
7430
AFTER
11333

changed /files/skills~1conduct-lesson~1agents~1openai.yaml/sha256

BEFORE
"f93d071aec90c5e7dff1bf91e87fb3e166bdcd157c3f7a1044e03a04a194e48f"
AFTER
"375fdba69300ea7d89af5e4c50b71d02995b143099dfed406a933f4b4ca1e96f"

changed /files/skills~1conduct-lesson~1agents~1openai.yaml/size

BEFORE
471
AFTER
564

changed /files/skills~1conduct-optional-live~1SKILL.md/sha256

BEFORE
"8840ea826503ea945da6fd89ee5bea32ec4dce9055e5b776e4d9ad4a916ad9fe"
AFTER
"89bbfb3455dd0b1797483e7aaa1ad28b90348449d5fb3dcf4089d26074c14dcc"

changed /files/skills~1conduct-optional-live~1SKILL.md/size

BEFORE
3335
AFTER
7008

changed /files/skills~1conduct-optional-live~1agents~1openai.yaml/sha256

BEFORE
"d15dc99e601ceca8cd5b8b5cac05ef0d8281525cef7e4e2a50176ce96e37ba38"
AFTER
"cbfb2a5fa087e25c6b8f9af85a2d11917cbfe3673853f5f390aafedbf19bb398"

changed /files/skills~1conduct-optional-live~1agents~1openai.yaml/size

BEFORE
475
AFTER
580

changed /files/skills~1manage-vocabulary~1SKILL.md/sha256

BEFORE
"9fdfde488a452d986c4538e9eb16f54c6cf8fa3da1d12acd4cae857b6cd4c386"
AFTER
"612fe3ebfdb4f45449983aa707b44df734d4e411437df3e3a9d8af81614a68dd"

changed /files/skills~1manage-vocabulary~1SKILL.md/size

BEFORE
4086
AFTER
8168

changed /files/skills~1manage-vocabulary~1agents~1openai.yaml/sha256

BEFORE
"1a66fcdd210e1cb281c3c734e3e900914618aca1824ade872268e5bee21701e3"
AFTER
"e47fc621462ec40ceabf8cc43cbab94fe620ac528b03252ed2e0756c213678c2"

changed /files/skills~1manage-vocabulary~1agents~1openai.yaml/size

BEFORE
475
AFTER
592

changed /files/skills~1practice-vocabulary~1SKILL.md/sha256

BEFORE
"b393d72673d18c377f474828047079c013104d8f499ea445f03809310bbbb538"
AFTER
"da912481e7bbeda6e729e10de66fe40b42560d29d4977fe729d1079688a0f6a0"

changed /files/skills~1practice-vocabulary~1SKILL.md/size

BEFORE
3479
AFTER
6941

changed /files/skills~1practice-vocabulary~1agents~1openai.yaml/sha256

BEFORE
"d259ddae057b1d1dffa3755ce343a52f583e2afd9a2e967abf3ee30dfbda6294"
AFTER
"0f533b02b8862fb774d0ad0a293f031d0a729f07971e18784f221209b4b9320d"

changed /files/skills~1practice-vocabulary~1agents~1openai.yaml/size

BEFORE
475
AFTER
593

changed /files/skills~1setup~1SKILL.md/sha256

BEFORE
"60474dcfe7b8ef25cb0cef41a13a151b4e07473b7415208caadb7f258f576e17"
AFTER
"6dc40cc7f20276ab8164175713aae021be49c9f268495ec61c1b8c361eee1187"

changed /files/skills~1setup~1SKILL.md/size

BEFORE
3653
AFTER
8580

changed /files/skills~1setup~1agents~1openai.yaml/sha256

BEFORE
"92f0e7d5821cdcc3000d87ee49053d15cdafdda1813b56c0e0ae987a6c8d00fd"
AFTER
"6f3e1a85119759f9ac356b7853c56079a7de36a6daa6bc37268fc328274b7fa5"

changed /files/skills~1setup~1agents~1openai.yaml/size

BEFORE
461
AFTER
605

changed /files/skills~1setup~1references~1manage-connections.md/sha256

BEFORE
"76ad2b43879ae491eaae7141cbc690c92133db7ef37830662a483f36cb61599f"
AFTER
"03b2dd317bf71901e341b9f47ab34091547c1b3747fc52ed203b4dbea8b9c1e4"

changed /files/skills~1setup~1references~1manage-connections.md/size

BEFORE
2167
AFTER
5369

changed /files/skills~1setup~1references~1manage-learning-profile.md/sha256

BEFORE
"80e6288bc903892c7b144a88d6a243ae6734f1cff5010a4ea532458363ffe88b"
AFTER
"0dcbabf456891601fc31915b311d618242c09da88a10a6bf69e4c7f4724f6915"

changed /files/skills~1setup~1references~1manage-learning-profile.md/size

BEFORE
2301
AFTER
5503
Full snapshot data
{
  "files": {
    ".app.json": {
      "sha256": "c14af3840a96696ba34787e6952f6ef8134a530c7f86a4c4182cc5c56c9734f1",
      "size": 115
    },
    ".codex-plugin/plugin.json": {
      "sha256": "6e61b32011127d159cf09cce565de11d177c993c5015c20fac5d080fe85679c5",
      "size": 16276
    },
    "LOCAL_AUTH.md": {
      "sha256": "750dcb422c009588ea38072bca6b05c38e4daae9343360a6988301243cdbdf40",
      "size": 1661
    },
    "SECURITY_AND_REVIEW.md": {
      "sha256": "0313c18f45f548c5f306253194b7e3d6f00471c37db44930a6e8bf229f391e0b",
      "size": 2185
    },
    "assets/icon.png": {
      "sha256": "50b28a1eb9495d4cbe2d42bfa95a9ec51c677a9a03c851645bd8468d91b21f52",
      "size": 1354375
    },
    "mcp.json": {
      "sha256": "1fa41ea24decdf5f269043c54b6e0582c25bead509ea1391e2a2e2d37808d0c8",
      "size": 254
    },
    "plugin.json": {
      "sha256": "f1a520d4064727daf57350fe34a6af2893d6fa4da9b8544a44c521c9dfdb04e8",
      "size": 23596
    },
    "references/learner-experience.md": {
      "sha256": "84f6e12546969febee1d89e428a36d68f732203c80a05bdfd782b67bacf3c05b",
      "size": 6962
    },
    "references/pronunciation.md": {
      "sha256": "0052508811ae73b7163915b396916c31b9a2f458336abc519e3b4a44d740f5e4",
      "size": 4908
    },
    "skills/conduct-lesson/SKILL.md": {
      "sha256": "ee49e99755c699de5382a78cdcabb41150c493a1d4df24f834ca31c36e6624b8",
      "size": 11333
    },
    "skills/conduct-lesson/agents/openai.yaml": {
      "sha256": "375fdba69300ea7d89af5e4c50b71d02995b143099dfed406a933f4b4ca1e96f",
      "size": 564
    },
    "skills/conduct-optional-live/SKILL.md": {
      "sha256": "89bbfb3455dd0b1797483e7aaa1ad28b90348449d5fb3dcf4089d26074c14dcc",
      "size": 7008
    },
    "skills/conduct-optional-live/agents/openai.yaml": {
      "sha256": "cbfb2a5fa087e25c6b8f9af85a2d11917cbfe3673853f5f390aafedbf19bb398",
      "size": 580
    },
    "skills/manage-vocabulary/SKILL.md": {
      "sha256": "612fe3ebfdb4f45449983aa707b44df734d4e411437df3e3a9d8af81614a68dd",
      "size": 8168
    },
    "skills/manage-vocabulary/agents/openai.yaml": {
      "sha256": "e47fc621462ec40ceabf8cc43cbab94fe620ac528b03252ed2e0756c213678c2",
      "size": 592
    },
    "skills/practice-vocabulary/SKILL.md": {
      "sha256": "da912481e7bbeda6e729e10de66fe40b42560d29d4977fe729d1079688a0f6a0",
      "size": 6941
    },
    "skills/practice-vocabulary/agents/openai.yaml": {
      "sha256": "0f533b02b8862fb774d0ad0a293f031d0a729f07971e18784f221209b4b9320d",
      "size": 593
    },
    "skills/setup/SKILL.md": {
      "sha256": "6dc40cc7f20276ab8164175713aae021be49c9f268495ec61c1b8c361eee1187",
      "size": 8580
    },
    "skills/setup/agents/openai.yaml": {
      "sha256": "6f3e1a85119759f9ac356b7853c56079a7de36a6daa6bc37268fc328274b7fa5",
      "size": 605
    },
    "skills/setup/references/manage-connections.md": {
      "sha256": "03b2dd317bf71901e341b9f47ab34091547c1b3747fc52ed203b4dbea8b9c1e4",
      "size": 5369
    },
    "skills/setup/references/manage-learning-profile.md": {
      "sha256": "0dcbabf456891601fc31915b311d618242c09da88a10a6bf69e4c7f4724f6915",
      "size": 5503
    }
  }
}

SHA-256 of public snapshot: 28fca7bfc1a5122fe3ca9cc78cf6645b5751fc6e82ad477a8328ba77ae3ed178