This document records the reproducible checks behind VispNote’s core capture, find, connect, and act experience.
## Source wiki link.The sidebar local-status control reports Saved, Saving, or Conflict. Its disclosed panel shows the active vault folder, the last successful backup timestamp, Vault Health, and a manual backup action. Backup metadata stores only the timestamp; it does not add the destination path to usage reports.
The allowlisted local feature report may count:
The counter API accepts no payload beyond allowlisted feature and action names. Note text, titles, tags, search queries, prompts, filenames, paths, note or vault identifiers, and secrets are rejected or dropped. Local reporting can be disabled, cleared, or exported; network sharing remains separately opt-in.
Run:
npm run benchmark:10k
The benchmark creates and deletes an owned temporary vault, indexes 10,000 representative notes, and reports:
The final July 13, 2026 Windows/Electron verification measured a 164.04 ms index build, 0.33 ms direct-result p95, and 10.89 ms search p95. Treat these numbers as one machine’s evidence; rerun the command on release hardware instead of assuming they remain constant.
npm run test:all, a required live
regression:memory run, npm run benchmark:10k, and a native platform build.
The unpacked and final-installer verifiers compare renderer SHA-256 and
package version, parse the Electron/native-module CPU, test archive
integrity, and reject anything outside the fixed per-platform inventory.v${package.json.version}. Matrix CLI
--x64/--arm64 flags are the only package-architecture authority.17 6 * * 1). It validates
and builds installers on all four targets and cannot publish: every
publishing step needs a tag ref or an explicit dispatch input, and the publish
job additionally refuses github.event_name == 'schedule'.
Added for 0.2.3. Everything in scripts/release-tools/ was written after
v0.2.1 and first ran months later, by which point it carried eight
independent breakages — npm that could not launch on Windows, an asar lookup
using the wrong path separator, a blockmap assertion comparing undefined to
a number, among others. A release pipeline is only exercised by releasing.
GitHub disables scheduled workflows after 60 days of repository inactivity;
if the rehearsals stop arriving, that is why.ci.yml runs per platform on every pull request.
Changed for 0.2.3. Those two previously ran the full test:all at release
time and nowhere else, so a platform-specific test defect was invisible on
every PR and surfaced only when someone tried to ship. Combined with the
signing gate it blocked every release after v0.2.1 (2026-07-25); 0.2.2 was
never published. In three months it caught a CRLF checkout, a POSIX
permission assertion and a Windows clock-granularity quirk — three test
defects, no product regression — while macOS validation began hanging past 30
minutes. Widen it again when the cost lands somewhere other than shipping.MAC_CSC_LINK is configured, the job requires the full Developer ID and
App Store Connect set and then verifies codesign, Gatekeeper, and the
stapled notarization ticket. If no signing secrets are configured at all, the
build is deterministically unsigned (CSC_IDENTITY_AUTO_DISCOVERY=false) and
the signature verification is skipped via --verify-mac-signing false.
A partial credential set still fails; only a complete absence relaxes it.
This was changed for 0.2.3. Requiring signing unconditionally meant every
release after v0.2.1 (2026-07-25) failed at the signing step, and 0.2.2 was
never published as a result. Unsigned macOS builds warn under Gatekeeper on
first launch. Restoring signed releases needs the five secrets plus
mac.notarize: true in electron-builder.yml.
macOS updates remain manual and latest-mac.yml is excluded.