Skip to content

v0.4.0 — a new interface, and a list that finally shows up

Pre-release
Pre-release

Choose a tag to compare

@elkojo elkojo released this 06 Sep 13:05
· 22 commits to main since this release

Still pre-release. No security review, no Czech eIDAS counsel review. The timestamps are real
and independently verifiable; treat the app itself as unfinished.

Live at https://elkojo.github.io/xNotary/

A new interface, and one bug that had quietly broken a whole screen since it was written. No
certificate format changed and nothing you already hold is affected — existing Certificate 1 PDFs
and .ots proofs verify exactly as before, here and with the reference client.

The interface was rebuilt

A landing page, and the four working screens as guided flows: Timestamp, Signatures,
Verify, My certificates. Dark for the page that explains the product, light "paper" for
the screens where you work on a document.

Bookmarks still work. The route names did not change (#/notarize, #/attest, #/verify,
#/library, #/help), including the installed PWA's start URL.

Two changes are more than cosmetic:

  • Timestamping now shows you the fingerprint before anything is sent. Choosing a file hashes
    it locally and stops at a review step, so you can see the exact digest that is about to reach
    the calendars — and back out if it isn't the file you meant.
  • The Signatures screen says what it is. It reads signatures out of files signed elsewhere; it
    does not send signing invitations and never holds a key. That is now stated on the screen rather
    than left to be inferred.

"My certificates" worked for the first time

The certificate list had never rendered. It sat behind a permanent "Loading…" with the records
already in memory, and nothing said why.

The cause was localStamp, which formats every time shown on screen. It asked
toLocaleString for dateStyle and timeStyle together with timeZoneName — a combination
ECMA-402 rejects with a TypeError rather than ignoring. Every call threw, in every browser and
in Node. Because one of those calls happened inside the list's render, the framework abandoned
that branch and left the spinner up.

Nothing was lost and nothing was wrong with the data: the digests, the proofs and the certificate
PDFs were all correct the whole time. The list simply never appeared. It does now, and a test
pins it.

Smaller

  • The page description still advertised "collect qualified electronic signatures", a workflow this
    app does not have. Corrected — the same wrong line that was fixed in the README in v0.3.1.
  • The certificate list no longer blanks itself while re-reading storage after an upgrade or a
    delete, and no longer waits on a storage-quota estimate that some browsers are slow to answer.
  • New brand mark, favicon and PWA icons.

Deliberately unchanged

The redesign was applied as layout, not as behaviour. Certificate 1 is still a PDF with the .ots
embedded and the ots verify command printed on it; xNotary still runs with no server, holds no
copy of anything, and still reports what a signing certificate claims rather than ruling on its
legal status.

144 offline tests, and Flow A driven end to end through a real browser against the production
build and live OpenTimestamps calendars.