Skip to content

WideMark v1.2.0

Choose a tag to compare

@bugstan bugstan released this 14 Oct 18:05
· 23 commits to main since this release

Added

  • Added native Chrome localization for English, Spanish, German, French,
    Simplified Chinese, Traditional Chinese, Japanese, Korean, Turkish, and Vietnamese.
  • Added automated locale/placeholder/Manifest-length validation and localized
    number and plural formatting.

Changed

  • Folder style metadata remains a simple Chrome Sync list and follows folders
    across normal rename and move operations.
  • Disclosed clearly in the UI, privacy policy, and store copy that folder style
    metadata is synchronized by Chrome Sync and is not received by developer servers.
  • CI now builds and inspects the packaged extension. The release workflow checks
    package/Manifest/tag versions, uses least privilege and a protected environment,
    serializes deployments, and pins Actions to full commit SHAs.
  • Raised the minimum Chrome version to 116 to match the side-panel shortcut API.

Fixed

  • Empty-folder cleanup now atomically refuses to delete folders that gained content.
  • Bookmark writes and cleanup jobs are serialized across extension panels with the
    Web Locks API; scans cancel cleanly when their view unmounts.
  • Collapsed folder descendants are no longer mounted, large folders are no longer
    clipped, and tree/menu/dialog keyboard focus and ARIA behavior were improved.
  • Settings and folder-style reloads no longer allow older asynchronous reads to
    overwrite newer local or cross-window changes.

Internal

  • Rewrote the UI on React 19 + Zustand, bundled by Vite with
    @crxjs/vite-plugin (replacing the vanilla-DOM controllers and the
    tsc-only build). Bookmark logic stays framework-agnostic in src/lib/ and
    is unit-tested independently. Tests run on Vitest (happy-dom). The shipped
    bundle carries no source maps. No user-facing behavior change intended.
  • Migrated the source from vanilla ES5-style UMD scripts to TypeScript. Modules
    are bundled into build/ by Vite, while tsc performs strict type checking.
    Type checking runs under strict,
    noUncheckedIndexedAccess, and the noUnused*/noImplicitReturns/
    noFallthroughCasesInSwitch/noImplicitOverride flags. Requires Node >=24
    (engines). No user-facing behavior change.
  • The build/packaging scripts (scripts/*.ts) are TypeScript too, type-checked
    by a separate Node-targeted tsconfig.scripts.json and run directly via
    Node's .ts execution. A ci.yml workflow type-checks, tests, builds, and
    validates the packaged ZIP on push/PR.
  • Development now loads the bundled build/ directory as the unpacked
    extension (npm run build); the packaged zip ships the Vite output. See
    docs/DEVELOPMENT.md.

Install manually

  1. Download the .zip file below and unzip it into a folder you will keep.
  2. Open chrome://extensions in Chrome and turn on Developer mode (top right).
  3. Click Load unpacked and select the unzipped folder (the one that contains manifest.json).

A manually installed copy does not update itself. See the README for details.