Skip to content

CRTL - v1.2.0

Choose a tag to compare

@BrainInBlack BrainInBlack released this 15 Jul 21:33
· 76 commits to main since this release
Immutable release. Only release title and notes can be modified.

Added

  • Encrypted local backup. Global options can now export the config as a
    passphrase-encrypted file and import it on another machine - no GitHub
    account needed. The key is derived per export via PBKDF2-SHA256 (600k
    iterations, random salt); the payload is AES-GCM encrypted and mirrors the
    gist payload: groups, links, and probes only - no icon cache (icons re-embed
    from their bi:/svg: ids on import) and never any sync credentials. Like
    gist sync it needs a secure context (file:// or https://).
  • Accessibility menu + colour-blind friendly health dots. A new button next
    to Help opens an Accessibility menu; its first option renders resolved health
    dots as a check (up) or cross (down) glyph instead of relying on colour alone.
    The setting is part of the synced config, so it follows you across machines.
    Thanks to @hckroeger for the prototype.
  • Per-entry health-check URL. An entry can now probe a dedicated endpoint
    (e.g. a /health path) instead of its first link, so services that block the
    cross-origin health fetch (CORS/CORP) or sit behind a login stop showing a
    false "down" while the tile still opens the first link. Thanks to
    @hckroeger for the prototype.

Changed

  • Tidier Global options. The gist sync and encrypted backup sections are now
    collapsible and collapsed by default, so the modal opens compact. Each header
    stays visible - including the sync on/off toggle - and the sync section
    auto-expands when there's a sync error to surface.
  • Deep config sanitization. normalizeConfig now also drops null/non-object
    records inside groups/entries/links, non-string probes and icon-cache
    values, and coerces non-string entry icons, so a corrupt or hostile payload -
    from localStorage, a synced gist, or an imported backup file - can't crash
    rendering and persist itself as a bricked config.
  • Relicensed from PolyForm Noncommercial 1.0.0 to MIT + Commons Clause.
    PolyForm NC barred all commercial use, including a company running CRTL on its
    own internal homelab. The new terms allow use (companies included),
    modification, and free redistribution, and forbid only selling the software
    (per the Commons Clause). Updated LICENSE, package.json, the README badge
    and license note, and CONTRIBUTING.

Fixed

  • http:// no longer disappears when re-editing a link. The entry editor
    used to strip any scheme from the URL field for display, so an explicitly
    entered http:// looked lost on the next edit (it was still saved, via a
    hidden original-scheme fallback). Now only the default https:// is hidden;
    http:// stays visible and round-trips - and deleting it upgrades the link to
    the https:// default. Thanks to @hckroeger
    for the prototype.