M13 packaging - #15
Merged
Merged
Conversation
…upgrade electron-builder produces a per-user NSIS installer and, once the Partner Center identity values are filled in, an MSIX for the Store. `publish: null` is set on purpose: left unset, electron-builder writes an `app-update.yml` naming a GitHub feed, and shipping a file that advertises an updater this app does not have would undercut the whole claim. A first-run screen carries the 5f statement, and nothing is captured until it is acknowledged. The session refuses capture while `firstRun` is true and the answer is remembered in settings; the default is the cautious one, so a build that loses its settings collects nothing until asked again. The upgrade test of invariant 5 was run as written and passed, with the migration performed by the artifact that ships. An M6 worktree wrote a genuine v1 file with three clips and a cursor; the NSIS installer was then installed and its app opened that same file, bringing it to v4 with every clip id, position, content, the cursor and the file's created_at unchanged, and the new columns added with defaults. That build then captured into the migrated file, which also proves the clipboard addon and SQLCipher load from app.asar.unpacked in a real install. The installer is not signed. Azure Trusted Signing needs an Azure subscription and a validated identity, so the SmartScreen criterion cannot be met yet; the configuration is present and commented rather than substituted with something weaker. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The privacy statement told the user the database key was held in Windows Credential Manager. It is not. Electron's safeStorage seals through Chromium's OSCrypt, which keeps a random AES key in the app's own Local State file and protects that key with DPAPI: the stored value literally begins with the ASCII bytes `DPAPI` followed by a DPAPI blob header, and the sealed key cannot be opened from a different user-data directory, which a Credential Manager entry would not care about. PLAN.md 12 and key.ts said DPAPI all along; only the two screens the user actually reads said otherwise. The same sentence overstated a second thing. "Never in a file" is false — the sealed key is a file, spool.key. What is true is that it is never written in plaintext, which is what it now says. `keyStoreName` becomes `keySealerName`, since what is being named is the thing that seals the key rather than a store that holds it, and a regression test pins that the Windows answer does not name the Credential Manager. Found by screenshotting the installed build rather than querying its database. Every earlier check of the package read main-process state, and the renderer is exactly where packaging diverges, so a wrong or blank screen would have passed all of them. Co-Authored-By: Claude Opus 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.
No description provided.