QUILL Lite 1.1 and Quill Radio 3.1.0: Sign in with ChatGPT, pictures described, web search, Ask QUILL Radio - #1609
Merged
Conversation
…- QUILL Lite 1.1 and Quill Radio 3.1.0 Use the ChatGPT plan a person already pays for, in every QUILL app that has AI, rebuilt from the s:\q prototype on QUILL's own infrastructure. Core (wx-free, strict-typed): quill/core/ai/chatgpt_account.py signs in with OpenAI's dynamic registration and PKCE from quill.core.auth, checks the ID token's issuer, audience, nonce and expiry (OIDC 3.1.3.7, no JWT library), and keeps only the refresh token in the OS store through SecretsManager, one entry per app; the access token lives in memory. chatgpt_loopback.py is the one socket. chatgpt_http.py holds the two egress sites. chatgpt_client.py speaks the Responses API with store=false and stream=true, reads the model list in both shapes, and validates and re-encodes images with Pillow. chatgpt_ai_help.py sends the gateway's own instructions on the plan, adds web search when allowed, and describes pictures. Five coded errors in chatgpt_errors.py. Editors: Use My ChatGPT Subscription (Alt+F5), Ask About an Image (Ctrl+F5) and Tidy Dictated Text (Ctrl+F3) in both editors from one shared base of HostedAiMixin (quill/ui/hosted_ai_chatgpt_commands.py), with the account window (hosted_ai_chatgpt.py) and the picture dialog (hosted_ai_image.py). The service decides the route once -- chatgpt, own key, free -- and the pad and the conversation window take their sentences from it. A sign-in outranks a saved key. Sign Out and Forget exist only while signed in. Model and web search live in <data>/ai/chatgpt.json; no Settings field was added. Quill Radio: Ask QUILL Radio (Community, Ctrl+Shift+8), a conversation that carries the station and the title playing with every message, nine quick questions of which three attach favorites, the song log or the listening history and say what and how many before Enter; the same account window as the editors, signed in as "QUILL Radio"; no free service and no key route by design. Text only: it never listens to the stream. Quick questions act only on Enter or Use This Question, never on arrowing. Releases: QUILL Lite 1.1.0 and Quill Radio 3.1.0. Radio's 3.1 notes stand in their own release-notes-3.1.md and Help > Release Notes opens them; the portable build now carries the windows-media pywinrt group, so a stick copy has the modern Windows Media engine and Output Device routing like an installed one; the site points at Lite 1.1.0 and the 1.1 notes; every Lite and Radio guide, AI guide, changelog and release note is written, rendered and synced. Two pyproject dependencies the build checks for were installed on the build machine (winrt-Windows.Media, markitdown 0.1.8). Gates: rebaselines with dated notes for hosted_ai_commands.py (626), hosted_ai_service.py (620) and lite/commands.py (1099); two egress entries; keymap, command-table, parity, help catalogue and every snapshot regenerated; keyboard and F1 references rebuilt. 200 new tests. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…complete-url-substring-sanitization on PR #1609 The About-text test checked that "chatgpt.com" appeared somewhere in the sentence, which CodeQL reads as a URL-substring check. It is a test of the sentence, not a sanitizer, but the whole USAGE_URL is the sharper assertion anyway. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… three gates CI caught Jeff's call (2026-09-29): QUILL Lite 1.1 goes out now and Quill Radio 3.1.0 waits. The Radio 3.1 documentation stays written in its Markdown sources, but the rendered HTML and EPUB and the site's copies go back to the 3.0.4 renders, and the site map points Help > Release Notes' page at release-notes-3.0.html again, so nothing about 3.1.0 is visible on quillforall.org before the release. Flip the map to release-notes-3.1.html and re-render when Radio publishes. Also the three things the PR's unit-test job caught that the local targeted runs did not: the Lite command-coverage snapshot rewritten by its own writer (a hand edit had left one line out of order), the F1 help reference and its HTML/EPUB regenerated after the quick-question help text changed, and the ChatGPT state file classified in the persistence audit as a marker store like the gateway session beside it. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ps alone The Radio 3.1 user guide, changelogs, README, the split release notes and the Help > Release Notes mapping are held back with the Radio release itself (Jeff, 2026-09-29): CI's artifact check diffs Markdown against its renders from the merge base, so reverting only the renders left the sources orphaned. Sources, renders and the site's Radio pages are all exactly main's again; the Ask QUILL Radio code still lands. The held documentation is one patch, build/radio-3.1-docs-hold.patch (845 lines, local), to apply, re-render, sync and flip the site map when Quill Radio 3.1.0 is published. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this is
Use the ChatGPT plan a person already pays for, in every QUILL app that has AI, rebuilt from the s:\q prototype on QUILL's own infrastructure -- and the two releases that carry it: QUILL Lite 1.1.0 and Quill Radio 3.1.0.
quill/core/ai/chatgpt_*.py): OAuth with dynamic registration and PKCE fromquill.core.auth, ID-token issuer/audience/nonce/expiry checks, refresh token only in the OS store viaSecretsManager(one entry per app), Responses API withstore=falseandstream=true, model list in both shapes, Pillow image validation, five coded errors, two reviewed egress sites.HostedAiMixin; the service decides the route once (chatgpt > own key > free). Model and web search live in<data>/ai/chatgpt.json; no Settings field.release-notes-3.1.md; the portable build gains thewindows-mediagroup (a stick copy had no modern Windows Media engine and could not route output); site front page and Lite page moved to 1.1.0 with a splash; every guide, AI guide, changelog and release note written, rendered and synced.Also carries the Radio 3.1.0 follow-ups that were already in the working tree (notification targets, per-podcast alert toggle, favorites details pane).
Not yet exercised
A live ChatGPT sign-in against a real Plus/Pro account from this build. The plan-sharing endpoints and the
/v1/modelsshape come from the prototype.🤖 Generated with Claude Code