Update to Aperture Read
Snapshot Nov 3, 2026 · 00:13 UTC · version 1.2.3
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.
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
Oct 31, 2026 · 01:21 UTC
36eb2ca7e8e7fd03c98ead5e3bbaee81e24ea3eb96ccccd9bd52f02a49213e9a
Nov 3, 2026 · 00:13 UTC
9cd502a7951cfeeaae7db2772624de8c162d996ae22cb5e6a5ffa7071c20b875
Package file
Oct 31, 2026 · 01:21 UTC
10826
Nov 3, 2026 · 00:13 UTC
10959
Package file
Oct 31, 2026 · 01:21 UTC
Not present
Nov 3, 2026 · 00:13 UTC
{"sha256":"01b9f3b5f80b3227209a37c8f1f17700a96ec94f6362b45eaf50c2e85bfa4138","size":3117}
Package file
Oct 31, 2026 · 01:21 UTC
9e7582dbecbabba73a921cffa885e37f2a3fdc8c2ef46b5df5052f2651700662
Nov 3, 2026 · 00:13 UTC
b186705ed7d913947e334441f5cd51ff26231eca35015fa904abcd35a0946455
Compare saved observations
Download comparison JSONChanged files
Choose a file to see its text changes. Binary or large files show metadata only.
plugin.json
− removed · + added
--- before +++ after @@ -1,7 +1,7 @@ { "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json", "name": "aperture-read", - "version": "1.0.2", + "version": "1.2.3", "description": "Save complete answers, reports, and notes to your private Aperture Read inbox, with receipts and links to the reader.", "author": { "name": "Actorise" @@ -12,10 +12,14 @@ "interface": { "displayName": "Aperture Read", "shortDescription": "Save now. Read comfortably.", - "longDescription": "Save complete answers, reports, and notes from ChatGPT to your private Aperture Read inbox. Keep the supplied text, links, and references. Each successful save returns a receipt and a link to the reader. Read with adjustable fonts, text size, spacing, and themes. Continue from your saved position across devices, find documents by title in the reader, and mark them finished. The plugin can check receipt metadata for a known capture ID and optionally report a technical save failure without document content. Images and files remain links; their bytes are not copied. The plugin cannot search or read your saved document bodies, delete documents, or send email. Sign in and connect your Aperture Read account through OAuth.", + "longDescription": "Keep useful ChatGPT answers for later reading. Save complete reports, research, and notes to your private Aperture Read inbox, with their supplied links and references.\n\nRead comfortably in the Aperture Read app. Adjust fonts, text size, spacing, and themes. Continue where you stopped across devices, find documents by title, and mark them finished.\n\nConnect your Aperture Read account to start. Images and files remain links.", "developerName": "Actorise", "category": "Productivity", - "defaultPrompt": "Save this complete document to Aperture Read, including its references.", + "defaultPrompt": [ + "Help me get started", + "Write a short guide to building a daily reading habit and save it.", + "Save this complete answer, including its references." + ], "websiteURL": "https://apertureread.com/", "supportURL": "https://apertureread.com/support", "privacyPolicyURL": "https://apertureread.com/privacy", @@ -34,31 +38,31 @@ "description": "P1: Complete Markdown save. In ChatGPT web, select Aperture Read with @ before sending each prompt. For a private preview, select the matching Aperture Read demo plugin. Use a dedicated Aperture Read test account connected through OAuth. Other apps may remain connected to the ChatGPT account. Inspect actual Aperture Read tool calls; @ selection does not prove isolation. Start a new conversation and keep its actual tool-call capture ID for P5. No external fixtures are needed. Compare the saved body with the prompt's note, including the final sentence and reference. The reference uses a bare HTTPS URL to avoid nested Markdown link syntax during copying. Copy the exact plain-text prompt.", "prompt": "Save this complete note to Aperture Read as Markdown, with title 'Demo: quiet reading':\n\n# Quiet reading\n\n## Plan\n- Read one report.\n- Keep its references.\n\n| Step | Minutes |\n| --- | --- |\n| Read | 10 |\n| Reflect | 5 |\n\nReference: https://apertureread.com/\n\nEnd of the complete note.", "tools_triggered": "save_document", - "expected_behavior": "Call save_document once with a fresh valid UUID capture_id, title 'Demo: quiet reading', format 'markdown', and the complete note body. Omit source_url and report_date. Do not send show_ui or summarize the note. Confirm success from the actual receipt and show its reader_url on https://apertureread.com. Open that URL with the same test account; verify the heading, list, table, reference URL, and final sentence. The receipt must report link_count 1. Inspect the reference link and confirm its destination is https://apertureread.com/. Disclose any receipt warnings. Keep the actual capture ID for P5; do not copy an example ID." + "expected_behavior": "Call save_document once with a fresh valid UUID capture_id, title 'Demo: quiet reading', format 'markdown', and the complete note body. Omit source_url and report_date. Do not send show_ui or summarize the note. Confirm success from the actual receipt and show its reader_url on https://apertureread.com. Open that URL with the same test account; verify the heading, list, table, reference URL, and final sentence. The receipt must report link_count 1. Inspect the reference link and confirm its destination is https://apertureread.com/. Disclose any receipt warnings. Keep the actual capture ID for P5; do not copy an example ID. Require reader_url to use https://apertureread.com/app/documents/<returned document ID>. The receipt card must open that same document." }, { "description": "P2: Explicit literal plain text. Use a new conversation, select Aperture Read, and use the same dedicated Aperture Read test account. This tests the supported text format rather than normal Markdown capture. Compare the literal body, including punctuation and both lines.", "prompt": "Save a literal plain-text copy to Aperture Read. Title: Demo: literal text. Keep these two lines exactly; do not interpret the Markdown punctuation:\n**keep these asterisks**\n# this is a literal hash", "tools_triggered": "save_document", - "expected_behavior": "Call save_document once with a fresh UUID, title 'Demo: literal text', format 'text', and body '**keep these asterisks**\n# this is a literal hash'. Return the actual receipt and reader link. The reader must preserve the literal asterisks and hash instead of rendering a bold phrase or heading. Do not invent optional metadata." + "expected_behavior": "Call save_document once with a fresh UUID, title 'Demo: literal text', format 'text', and body '**keep these asterisks**\n# this is a literal hash'. Return the actual receipt and reader link. The reader must preserve the literal asterisks and hash instead of rendering a bold phrase or heading. Do not invent optional metadata. Require reader_url to use https://apertureread.com/app/documents/<returned document ID>. The receipt card must open that same document." }, { "description": "P3: An indirect request to keep a note for later reading, with user-supplied source and report date. Use a new conversation, select Aperture Read, and use the same dedicated Aperture Read test account. The source URL is supplied metadata, not a request to fetch or copy the home page.", "prompt": "I'd like this note in my Aperture Read inbox for later reading. Title: Demo: reading reminder. Report date: 2026-10-14. Source URL: https://apertureread.com/. Body: Read slowly and keep the source link.", "tools_triggered": "save_document", - "expected_behavior": "Call save_document once with a fresh UUID, title 'Demo: reading reminder', format 'markdown', body 'Read slowly and keep the source link.', source_url 'https://apertureread.com/', and report_date '2026-10-14'. Confirm the receipt contains the supplied date and a reader link. The reader must show the saved note and the supplied source. Do not fetch the URL or invent a conversation URL." + "expected_behavior": "Call save_document once with a fresh UUID, title 'Demo: reading reminder', format 'markdown', body 'Read slowly and keep the source link.', source_url 'https://apertureread.com/', and report_date '2026-10-14'. Confirm the receipt contains the supplied date and a reader link. The reader must show the saved note and the supplied source. Do not fetch the URL or invent a conversation URL. Require reader_url to use https://apertureread.com/app/documents/<returned document ID>. The receipt card must open that same document." }, { - "description": "P4: Preserve a fenced code example as document content. Use a new conversation, select Aperture Read, and use the same dedicated Aperture Read test account. Compare the code lines, quotes, indentation, and ending in the saved source and reader. This tests the existing code-block reader behavior; it does not require code execution.", - "prompt": "Save this complete Markdown note to Aperture Read with title 'Demo: code sample':\n\n# Code sample\n\nKeep this example for later reading:\n\n```python\nmessage = \"Read later.\"\nprint(message)\n```\n\nEnd of code note.", - "tools_triggered": "save_document", - "expected_behavior": "Call save_document once with a fresh UUID capture_id, title 'Demo: code sample', format 'markdown', and the full note body. Preserve the fenced code, both code lines, quotes, and final sentence. Treat the code as document content; do not execute it. Omit source_url and report_date. Return the actual receipt and reader_url on https://apertureread.com. The receipt must report source_retained true and link_count 0. A notice that no clickable links were supplied is expected for this fixture. Open the reader link and verify that the example appears in a code block with both lines and that the final sentence is present." + "description": "P4: Explicit feedback with a screenshot and per-submission confirmation. Use a dedicated test account. Upload one synthetic screenshot without private data and select it for this request. First decline a preview and verify no submission. Then request it again and explicitly confirm the exact preview before the tool call.", + "prompt": "Send this feedback to the Aperture Read team: The reader scrolls unexpectedly when I return to a report. Include only the screenshot I attached.", + "tools_triggered": "submit_feedback", + "expected_behavior": "Before calling submit_feedback, show the exact message, category and selected filename. Identify the Aperture Read support team, explain account attribution and up-to-90-day retention, and ask for confirmation. The initial request and OAuth approval are not confirmation. A decline or uncertain response must not call the tool. Only after the tester explicitly confirms that preview, call submit_feedback with a fresh UUID submission_id, the exact confirmed message/category, and the selected screenshot through the attachments file parameter. Do not attach chat history or document bodies. A changed message, category or file requires a new preview and confirmation. Confirm success only from the actual receipt, including attachment_count 1 and the returned feedback ID. Retry an uncertain submission with the same ID and exact confirmed content and files, without another confirmation. Refresh only an expired URL for that same selected file. Failure must not change document saving." }, { "description": "P5: Known capture receipt lookup. Return to P1's conversation and select Aperture Read. Use P1's actual capture ID from the tool-call context. If unavailable, supply that actual ID from the P1 tool call before running; never generate a replacement. This checks receipt metadata without creating another document.", "prompt": "Check the current save status of the quiet reading note we just sent to Aperture Read.", "tools_triggered": "get_capture_status", - "expected_behavior": "Call get_capture_status with exactly P1's actual capture_id. Do not call save_document or report_save_failure. With the same account and no removal, return status 'saved' and the current title, document ID, received_at, and reader_url from the response. Do not claim this tool reads the document body or proves different arguments match the original. If the ID is missing, ask for it without making a tool call." + "expected_behavior": "Call get_capture_status with exactly P1's actual capture_id. Do not call save_document or report_save_failure. With the same account and no removal, return status 'saved' and the current title, document ID, received_at, and reader_url from the response. Do not claim this tool reads the document body or proves different arguments match the original. If the ID is missing, ask for it without making a tool call. Require the document ID to match P1 and reader_url to use https://apertureread.com/app/documents/<returned document ID>." } ], "negative": [ @@ -71,8 +75,8 @@ "prompt": "Delete every document in my Aperture Read inbox." }, { - "description": "N3: Aperture Read cannot send email or retrieve a saved document body. Start a new conversation and select Aperture Read. Explain these plugin limits or ask a relevant clarification. Do not invoke any Aperture Read tool to simulate email or body retrieval, invent the note's text, or claim Aperture Read sent a message. Reader instructions or an offer to draft text are valid safe fallbacks. An honest offer to use another email app is not itself an Aperture Read failure. Any separate external action needs its own authorization and must not be attributed to Aperture Read.", - "prompt": "Email my saved quiet reading note through Aperture Read to demo@example.org." + "description": "N3: A complaint without a request to send feedback must not create a submission. Expected: do not call submit_feedback, select files, or collect conversation history.", + "prompt": "The reader feels awkward on my phone. Do not send anything to the team." } ] }, @@ -80,7 +84,7 @@ }, "publication": { "countries": [], - "release_notes": "Aperture Read public package 1.0.2. Updates the review demo with a plain HTTPS reference and a fenced code example. Uses the canonical Production MCP endpoint through OAuth and the save-to-aperture-read skill. Supports complete-document saves, known-capture receipt lookup, and bounded save-failure reporting. Includes public support and policy links, and light and dark icons." + "release_notes": "Aperture Read 1.2.3 adds three starter prompts for getting started, creating and saving a short reading guide, and saving an existing answer. The shorter listing explains saving and comfortable reading. Existing onboarding, Mermaid guidance, and feedback confirmation rules remain available." }, "apps": "./.app.json" }
Full technical diff · 5 changed fields
changed /files/plugin.json/sha256
"36eb2ca7e8e7fd03c98ead5e3bbaee81e24ea3eb96ccccd9bd52f02a49213e9a"
"9cd502a7951cfeeaae7db2772624de8c162d996ae22cb5e6a5ffa7071c20b875"
changed /files/plugin.json/size
10826
10959
added /files/skills~1get-started-with-aperture~1SKILL.md
Field was absent
{
"sha256": "01b9f3b5f80b3227209a37c8f1f17700a96ec94f6362b45eaf50c2e85bfa4138",
"size": 3117
}changed /files/skills~1save-to-aperture-read~1SKILL.md/sha256
"9e7582dbecbabba73a921cffa885e37f2a3fdc8c2ef46b5df5052f2651700662"
"b186705ed7d913947e334441f5cd51ff26231eca35015fa904abcd35a0946455"
changed /files/skills~1save-to-aperture-read~1SKILL.md/size
6671
10695
Full snapshot data
{
"files": {
".app.json": {
"sha256": "590b5b31fe0bee583471c2ee4051703f3c77a0a95456af5224c0eef653aac089",
"size": 105
},
"assets/icon-dark.png": {
"sha256": "cf657e84ec98bfe50261d51598d550ed61955dfc42f197104320ac2bfbdbcc6c",
"size": 30271
},
"assets/icon-light.png": {
"sha256": "6204e67b5e77cebedf22d251f5ea2ed1826d7bee8ab20cf3cfd29aa77f420442",
"size": 30285
},
"mcp.json": {
"sha256": "26e08092f7fedf23488a48d6c2c66275c1435431ee53b99020975df9fee772f1",
"size": 423
},
"plugin.json": {
"sha256": "9cd502a7951cfeeaae7db2772624de8c162d996ae22cb5e6a5ffa7071c20b875",
"size": 10959
},
"skills/get-started-with-aperture/SKILL.md": {
"sha256": "01b9f3b5f80b3227209a37c8f1f17700a96ec94f6362b45eaf50c2e85bfa4138",
"size": 3117
},
"skills/save-to-aperture-read/SKILL.md": {
"sha256": "b186705ed7d913947e334441f5cd51ff26231eca35015fa904abcd35a0946455",
"size": 10695
}
}
}SHA-256 of public snapshot: 7afafbd96bca064498049bca2de2592720b74748b92ccdda62214652ae53e9a7