packages feed

espial-0.0.37: changelog.md

# Changelog

## v0.0.37 (2026-06-30)

- add Bulk Edit for bookmarks
  - toggle the **bulk edit** panel via the top-level `edit` link in the bookmark listing toolbar
  - Action and tag operations can be combined in a single submission
  - Selection scope respects the current page's filter, tag, and search context, allowing targeted bulk edits
    - e.g. effective rename of a tag by first clicking on an instance of it to filter by that tag. Then, bulk edit all pages, removing the existing tag and adding the new tag
- Tag Cloud improvements
  - Add account setting `Public Tag Cloud` to make user's tag cloud available for public users (fixes #48)
  - Related Tags includes `all‧2‧5‧10‧20` selectors
  - By default, or when clicked, `Related Tags` only shows top 200 tags similar to `Top Tags`
  - Related Tags section is now always closed by default
- add optional in-process TLS
  - to enable HTTPS without a reverse proxy, set `TLS_CERT_FILE` and `TLS_KEY_FILE` (PEM)
  - certificate is reloaded from disk automatically every 12 hours; send `SIGHUP` to trigger an immediate reload
  - reverse proxy (Caddy, nginx, Cloudflare Tunnel, etc.) remains the recommended approach for production
- standardized bookmark api routes
- update stack package set lts-24.42 -> lts-24.46
- improved error handling & feedback in UI for api requests
- bug fix: properly escape `_` and `%` in queries so they're treated as literals, not SQL wildcards

## v0.0.36 (2026-06-26)

- improve UI stability & positioning of elements after first render for less flash of content
- add language internationalization
  - add language selector on `settings` page (persisted in user db and in session cookie)
  - supported languages: `en`, `de`, `es`, `fr`, `it`, `ja`, `ko`, `pl`, `pt-BR`, `ru`, `tr`, `uk`, `zh-Hans`, `zh-Hant`
  - add appSetting `language-default`
    - if not logged in and no previous cookie is present, the `language-default` is used
  - adjusted `migration` command `createUser` to take `language` option
- corrected `migration` command `createUser` to set additional properties correctly on initial user creation
- replaced npm Moment package with Intl.DateTimeFormat

## v0.0.35 (2026-06-17)

- add "appMigrations" on startup; normalize utctime fields in db for correct sorting
- record "appMigration" history and app version history in db
- add startup logs with version and revision information
- add 'view in context' link, visible when viewing single bookmark listing
- on bookmark and note listing, change '« earlier' and 'later »' links from pagenum-based params to time-based 'before'/'after' params
- update robots.txt to disallow robots
- add short versions of search term specifiers & updated search documentation:
  - u: for url:, t: for tags:, ti: for title:, d: for description:, b: for before:, a: for after:
- add OCI Image Specification annotation keys to docker image (including version & revision)

## v0.0.34 (2026-06-11)

- fix serialization bug in Add bookmark handler (introduced in v0.0.33)

## v0.0.33 (2026-06-08)

- add new `archive-backend`: `archivebox07`
  - additional documentation in readme
- add new archive-related elements on UI (visible when `archive-backend` is enabled)
  - add url popup: `archive` checkbox (only displays for new bookmarks)
    - when `Account Settings`: `Archive new non-Private bookmarks by default` is checked, the Archive checkbox is checked by default
    - upon submission, the archive backend will run if checked
  - bookmark edit form: `archive` button
    - when clicked, immediately sends a request to the archive backend
  - when a bookmark is marked as private, the archive checkbox/archive button are disabled
  - `Account Settings`: `Privacy Lock (Private Account)` only controls authorization to view user's content on espial; it has no effect on whether bookmarks are archived.
- update shared libs in runtime docker image
- add docker compose examples

## v0.0.32 (2026-05-28)

- change runtime docker image from `jonschoning/espial:scratch` to `gcr.io/distroless/base-debian12`
- fix css for 404 page

## v0.0.31 (2026-05-27)

- use values in `config/settings.yml` at run-time (on app startup), instead of only the values from compile-time embedding of `config/settings.yml`
- add Archive Backend: `wayback-machine`
  - add Wayback Machine Backend-related settings:
    - `wayback-machine-access-key`
    - `wayback-machine-secret-key`
- remove Archive Backend: `archive-li`
- only show the archive link icon on the user's bookmark page if the the `archiveUrl` exists
- adjust dark-mode link visited color and toggle
- hide status of starred, to-read, and archive properties of bookmarks when not viewed by the bookmark owner

## v0.0.30 (2026-05-24)

- add Dark Mode (fixes #59)

## v0.0.29 (2026-05-07)

- Extend migration to add commands: `importnetscapebookmarks`, `exportnetscapebookmarks` (fixes #30)
- fix migration command `ImportBookmarks` (pinboard import file) parsing bug to handle when the description is a boolean (fixes #32)
- tag suggestions: when a tag exactly matches an existing tag, it will appear first in the suggestion list

## v0.0.28 (2026-05-06)

- add new app setting: `archive-backend: "_env:ARCHIVE_BACKEND:disabled"`
  - default to `disabled`, since `archive-li` appears to no longer be working due to added captchas
  - when archiving is disabled, the `Archive Non-Private Bookmarks` Account Setting is also disabled in the UI

## v0.0.27 (2026-05-05)

- prevent private tags (starts with ".") from showing on public bookmark listing for a user if not owned

## v0.0.26 (2026-05-04)

- Add Tag Suggestion when adding/editing bookmarks.
- Add account settings controls for `suggestTags` (default `True`).
- Extend migration `createuser` with `suggestTags` setting.
- Extend migration to add `showuser` command
- Extend migration to load sql connection from yaml settings if not provided
- use hashed js output + manifest.json in frontend build

## v0.0.25 (2026-05-03)

- Fix display bug for non-markdown notes.

## v0.0.24 (2026-04-24)

- Correct `extra-source-files` in `package.yaml`.
- Correct GHC warnings.

## v0.0.23 (2026-04-24)

- Migrate frontend code from PureScript to TypeScript/React.
- Update Stackage resolver: `lts-24.37`.

## v0.0.22 (2025-05-23)

- Update to Stackage LTS 23 (`ghc-9.8.4`).
- Purs package-set update.

## v0.0.21 (2024-01-15)

- Switch to ESM JavaScript module imports.

## v0.0.20 (2024-01-18)

- Update version bounds for Cabal dependencies.

## v0.0.19 (2023-12-19)

- Update GHC and PureScript dependencies to latest.

## v0.0.18 (2023-10-02)

- Update GHC and PureScript dependencies to latest.

## v0.0.17 (2023-07-04)

- Update to GHC 9.4.5.

## v0.0.16 (2023-01-05)

- Add SIGTERM handler on Linux.
- Adjust Docker CMD entrypoint.

## v0.0.15 (2022-09-11)

- Avoid using external `static/tmp` folder for generated static files.

## v0.0.14 (2022-06-01)

- Upgrade to PureScript v0.15.
- Increase bookmarklet window height.

## v0.0.13 (2022-04-26)

- Add setting `ALLOW_NON_HTTP_URL_SCHEMES` (default `false`).

## v0.0.12 (2022-04-17)

- Update to GHC 9.

## v0.0.11 (2022-04-16)

- Add API key auth.
- Add `CreateApiKey`/`DeleteApiKey` commands to executable `migration`.

## v0.0.10 (2022-04-05)

- Update PureScript and package versions.

## v0.0.9 (2022-04-05)

- Rolling releases.

## v0.0.7 (2019-01-30)

- Init.