Skip to content

Nija 0.4.0

Choose a tag to compare

@github-actions github-actions released this 22 Sep 20:11
· 19 commits to main since this release
ad3b028

Unsigned builds: see docs/release.md for Gatekeeper / SmartScreen steps.
Verify downloads with SHA256SUMS.txt, and their origin with
gh attestation verify <file> --repo appfide/nija.
An SPDX bill of materials ships with the release.

What changed in 0.4.0

Changed

  • The app is now called Nija. निज (nija) is Sanskrit for "one's own" — the name says what the product is: your clipboard, on your database, under your keys. The About page and the README explain it. Nothing about how syncing, encryption or pairing works has changed.
  • Bundle identifiers are now com.appfide.nija on every platform (from com.appfide.clipboardSync / com.appfide.clipboard_sync). The operating system treats a new identifier as a different app, so 0.3.0 will not upgrade in place: install Nija, pair it as you would a new device, and remove the old app afterwards. Local history kept by the old install stays in its own sandbox and is not carried over; anything already in your database syncs back down on first run.
  • Pairing codes now start with NIJA1. instead of CSYNC1., and derive from a matching label. A device still running 0.3.0 cannot pair with one running this build — upgrade both.
  • The repository, the Flutter app and the core package are now appfide/nija, apps/nija and packages/nija_core. Live-backend tests read NIJA_TEST_<BACKEND>_* environment variables instead of CLIPSYNC_TEST_*.
  • Noto Sans Devanagari (SIL OFL 1.1) ships with the app so the name renders in its own script on every platform, not only where the OS happens to have a Devanagari face.

Added

  • Every release is now verified before it is published. scripts/verify_artifacts.sh opens each installer and checks it is the app it claims to be — bundle identifier com.appfide.nija, the version being released, a plausible binary size, and the signing state the release promises (Developer ID plus a notarization staple on macOS, a verified upload-key signature on Android). A build carrying the wrong identifier or last version's number now fails the release rather than reaching users.
  • Build provenance. Every published file carries a GitHub-signed attestation naming the workflow, commit and runner that produced it: gh attestation verify <file> --repo appfide/nija. A checksum only proves a file is intact; provenance proves where it came from, which matters because whoever can replace the file can replace the checksum beside it.
  • An SPDX software bill of materials ships with each release and is covered by SHA256SUMS.txt.
  • Release notes now lead with the CHANGELOG section for that version instead of only a list of commit subjects.
  • Releases are serialised: a second version bump queues behind the one in flight instead of racing it for the tag.

Unchanged (deliberately)

  • The passphrase-to-key derivation, the keyed content fingerprint and the key-envelope labels still carry their original clipsync-* v1 names. They are wire constants baked into data already sitting in users' databases: renaming them would make existing clips undecryptable and break de-duplication. The app's name is not part of its key schedule.

What's Changed

  • rename: Clipboard Sync is now Nija (0.4.0) by @dhipin in #25
  • ci(release): build the SBOM without a third-party action by @dhipin in #30
  • fix(release): compare version cores, not packager spellings by @dhipin in #31
  • fix(release): stop grep -q from failing the checks it passes by @dhipin in #32

Full Changelog: v0.3.0...v0.4.0