Repository navigation
AllInOneIME 0.7.1 - #76
Merged
Merged
Conversation
…s set up Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…quest is too long A request too long for Apple Intelligence that couldn't go to Bedrock instead said "couldn't answer instead: AWS profile not found", because the not-set-up check looked for AWSConfigError, which the live credential resolver never throws. A missing profile or one with no credentials (AWSCredentialError) now counts as not set up, like the other providers; SSO sign-in errors still say to run aws sso login. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…keys first 0.7.1 keeps the old identity and is the only version that knows both. Its updater accepts a payload with either identity's bundle IDs (exactly those two pairs; the signature and team checks are unchanged) and reads update-v2.json; `make update-manifest` writes update.json too, only for an archive with the old identity, so earlier versions stop at 0.7.1. Installing a new-identity payload goes through Migration (one file, Sources/AllInOneIMEMac/Migration.swift), from the update helper and from `--migrate-identity APP` (the 0.7.2 installer's way): the old defaults domains' keys copied into the new ones, the old keychain group's items (synced or not) into the new group, each read back; the apps swapped, the new input method started, its input source registered and enabled and selected if the old one was; only then the old identity cleaned up. A failure before that puts everything back; a cleanup step that fails is left for the next run and never undoes the switch. The entitlements list both keychain groups (the profile allows the team's 9SR8N3UD5Y.*). Tested with fakes for defaults, keychain, input sources and the swap, and end to end by `make update-test` on a temporary install. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…date-v2.json CHANGELOG 0.7.1 (unreleased), both languages: updates can bring the next version, which moves AllInOneIME to its new system identity, carrying the settings and keys over. The READMEs name update-v2.json, say which manifest `make update-manifest` writes when, and how 0.7.1 moves to the new identity. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Assistant says Bedrock "couldn't answer" when no AWS profile is set up (#63)
…efuses their profiles Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… login shell The Assistant's profile listing read only the input method's own environment, so it fell back to ~/.aws while the AWS Profile picker and Bedrock's requests read the files AWS_CONFIG_FILE and AWS_SHARED_CREDENTIALS_FILE name in the login shell. It now finds the files as the resolver does (its live environment and AWSFileLocations), so both list the same profiles. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Assistant ignores the AWS files named in the shell and refuses their profiles (#64)
…h in a Chinese UI Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t version, no install over it The login keychain's keys (key sync off, the Cloud session, the replaced copies) are readable without asking only by the identity that saved them. Before the swap, 0.7.1 reads each without asking and copies it into the new identity's access group as a handover item (never synced, its label, comment, ending and save time kept), read back; the new version imports it at launch as its own item, so macOS never asks. The originals are deleted by the cleanup once the switch is verified, and only when their handover item holds the same key; a key that would ask is left where it is. A failure before the switch takes the handover items out again. Before the swap the migration also writes what its cleanup will remove to ~/Library/Application Support/AllInOneIME/identity-cleanup.json (0600, identifiers only: the old input source, defaults domains, app paths, launch agents, keychain group and items, login keys), updates it as each step succeeds, and deletes it when all have; a step left stays in it, handed over, for the new version to finish at launch. The installer and `make install` (install-check) refuse to replace an installed AllInOneIME with the new identity: it is newer. Tested with fakes (MigrationTests: the handover, event order, failures, the record before the swap and after a step left, the downgrade check; IdentityHandoverTests: the record file and the test install's store) and end to end by `make update-test` (the test install's login keychain, a step left in the record, install-check and the installer in a test home). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…language An inner @py, @js, run command or @READ that failed reached the panel with its English errorDescription: only @search's stream was described in the interface language first. Every inner command's stream now is, so a Chinese interface shows "@py:运行超过 10 秒,已停止" as @py does on its own. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Inner py, js and run command failures show in English in a non-English UI (#67)
… one kept until it is enabled, the new version started as a new instance What the rehearsal of 0.7.0 → 0.7.1 → 0.7.2 on a real account found: - macOS lets only the user add a new input method: asked to enable the new input source, Text Input Sources says noErr and changes nothing. After asking to enable and select it, the move now asks Text Input Sources how it is and logs that (it said "enabled, selected" after "couldn't be selected"); left off is no rollback. - Its cache can file the new source under the old bundle ID, so taking out every entry with that bundle ID left the user with no AllInOneIME at all. The old input source is now disabled by its input source ID, never an entry another source is filed under, and only once the new one is enabled as itself (filed under its own bundle ID); until then that step stays in the cleanup record, handed over, for 0.7.2. - The helper called Text Input Sources itself, so Launch Services took it for the app at the input method's path and `open` started nothing (-600). Text Input Sources is now asked by this executable in a process of its own (`--input-source`, found where the swap moved it), the input method is started as a new instance when none runs, and looked for until it runs: a launch that fails is said in the update result (`launchError`), which About shows. - A move rolled back left two empty preference files: the domains its copies created are deleted with their files once emptied. - The rollback said "nothing was changed": it says what failed and that the previous version is back, as an update's rollback does. - The helper's lines, the move's included, go to the unified log too. - The old input method's folder in ~/Library/Caches is removed by the cleanup and listed in the record (`caches`). Tested with fakes (MigrationTests: macOS leaving the source off, the cache filing it under the old bundle ID, a failed enable, the record keeping the old source until another run finds the new one enabled, the emptied files after an undo, the caches, the child process's calls and answers; UpdateRelaunchTests: a new instance, one that doesn't run, the kernel's process list after a move; InputSourceListTests, IdentityHandoverTests, UpdateTests) and by `make update-test` (a new source left to the user, then added; the caches; the rollback's text). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e can't be used, and logs a failure right after the swap The 0.7.1 → 0.7.2 rehearsal: asked to enable the new input source, Text Input Sources changes nothing and opens System Settings by itself (on a locked screen, with no window of AllInOneIME's saying why). The move no longer asks: it registers the new input source (selected only when it is enabled as itself already, as the old one was) and leaves it to the user, whom 0.7.2 shows that step first. The `enable` call is gone from MigrationInputSources, `--input-source` and the test install's input sources. What it says is the truth: until the user adds the new input source no AllInOneIME input source works; the old one's entry is kept only to be taken out once they have (its app is gone, it can't be used). The log line, `--migrate-identity`'s output, the changelogs and the READMEs say so. A failure during or right after the swap is logged as it goes (`AppsSwitch.perform(log:)`): "apps: swapped", "rolling back: …", "apps: the previous ones are back", before what went wrong. And a refused update says "nothing was changed" once: `UpdateError.invalidApp` no longer adds it to the About page's text, which says it already. Tested with fakes (MigrationTests: the input source left to the user, one enabled already, the record waiting for it, the lines of a failure at the swap with real bundles), UpdateTests, the self-test, and `make update-test` (the old input source waits in the record until the test adds the new one as the user would). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… (GitHub #70, #71) A field Accessibility tells to be a password field where secure input isn't on (some web and Electron login fields) was refused only the selection: `@reply` read and sent the text around the caret, one @ listed AI rows (⏎ on "Qwerty!@abc123" sent "abc123"), AI commands, background scripts and suggestion lookups got what was typed, and Translate as You Type collected and sent it. One check now says whether anything of the field may leave the device: `InputSession.nothingLeavesDevice()`, secure input on or `passwordField == .yes`. A field not told yet, or one the shell couldn't tell, is as before. It is what the composer goes by as its `secureInputActive` (one @'s `noAI`, `modeCollects`, `translateModeDraft`, terminal commands, links, reports, messages, a note to Notion, answers remembered), and what the session checks for @reply's `.text` read (with a key and with Option), `readFieldText`, the selection, refused requests, background scripts, `list` lookups, status lines, messages sent, a note to Notion and questions remembered. A request refused in such a field by a key ends as where secure input is on in the field itself: what was typed goes in as typed, the notice (secure input's wording) says why, and the key goes on to the field, so ⏎ signs in. Where secure input is on elsewhere it is refused in the panel as before. On the Mac, a key's `.text` read is skipped where Accessibility told a password field in the same read, and Translate as You Type's notices say text goes in as typed in a known password field too. Left as they are (nothing typed leaves the device there): warming a provider's connection, the clipboard read, ⌃V's clipboard history, the starting-input correction, the long press of Shift, refreshing suggestion lists, and the Mac's caret and window reads. Tested: Issue70Tests and Issue71Tests, NothingLeavesDeviceTests (the predicate, @reply's read, no AI rows nor Translate as You Type, a refused request in a known password field and under secure input elsewhere), `make test`, `make update-test`, `make app`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The pipeline's three fixes since 32734a4: Bedrock with no AWS profile says it isn't set up when an Assistant request is too long (#63), the Assistant reads the AWS files the login shell names (#64), and a command failing inside another's text says why in the interface language (#67). Both changelogs' 0.7.1 section keeps the bridge's lines and gets the three fixes under Fixed. Co-Authored-By: Claude Opus 5.5 <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.
AllInOneIME 0.7.1, the bridge: the last version under the old system identity. Its updater installs the next version, 0.7.2, which has AllInOneIME's own identity, and moves settings and keys over first (with a full rollback on any failure). Updates now come from update-v2.json; update.json stays on 0.7.1 for good so every older version reaches this bridge first.
Also: known password fields keep to secure input's rules (#70, #71), and the pipeline's fixes #63, #64, #67.
Tested: make test, make update-test (old→new, rollback, cleanup record), make app; a real rehearsal 0.7.0 → 0.7.1 → 0.7.2 on a separate Mac's account (keychain, defaults, input sources), and the owner's Mac.
🤖 Generated with Claude Code