Skip to content

Releases: crnst8/mainly

v1.3.1

Choose a tag to compare

@crnst8 crnst8 released this 03 Sep 06:43
  • fix: domain workflow cli

v1.3.0

Choose a tag to compare

@crnst8 crnst8 released this 03 Sep 01:32
  • chore: bump deps & screenshots refresh
  • docs: release notes for 1.3.0
  • feat: optional server-side domain control

v1.2.4

Choose a tag to compare

@crnst8 crnst8 released this 31 Aug 11:13
  • Closed the three reported upstream advisories (@fastify/static 8.3.0→10.1.3, which needed a setHeaders migration to the v10 FastifyReply API; mailparser 3.9.14→3.9.17; nanoid→3.3.18 in both trees)
  • Automated via scripts/audit-check.mjs gates all three lockfiles in CI and dev.sh check, blocking on runtime highs and warning on build-time ones, backed by a weekly sweep, Dependabot across four ecosystems, and waivers that require a reason and an expiry.
  • TRUST_PROXY now defaults to trusting nobody and the login limiter keys on the account
  • One byte-comparing guard (lib/ip.ts + lib/net-guard.ts) replaced both old ones
  • Sessions are sha256 at rest via migration 011, plus CI permissions
  • Digest-pinned base image Dependabot watches
  • 600-mode backups
  • Hourly session sweeps
  • Narrowed data: image URIs

v1.2.3

Choose a tag to compare

@crnst8 crnst8 released this 29 Aug 03:12
  • feat: text weight setting

Appearance gains a Text weight slider under Text size (Light, Regular,
Bold).

Every font-weight in the app's own CSS now resolves through a
five-rung token ramp that [data-weight] shifts as a unit, anchored on
body so elements that never name a weight ride it too.

Three steps because three is all there is: the UI face ships three
static files, and a list only works while emphasis outweighs body text,
so body type can be Regular or Medium and nothing else. Paper resets the
ramp, matching print.ts. Slider now requires an ariaLabel and announces
its readout, as Segmented already did.

Closes #2

v1.2.2

Choose a tag to compare

@crnst8 crnst8 released this 26 Aug 23:38
  • docs: release notes for 1.3.0
  • feat: inverted colours toggle & print

v1.2.1

Choose a tag to compare

@crnst8 crnst8 released this 26 Aug 03:56

fix: honour imapflow command results so read marks survive sync

imapflow answers a refused STORE/MOVE/COPY/EXPUNGE with false rather than
throwing. Replay ignored that and deleted the sync_ops row anyway, which also
removed the guard in envelopes.ts that holds local flag state while a change is
in flight, so the next envelope pass wrote the server's still-unread flag back
over the read. Mail marked read came back unread seconds later and survived a
reload; the sidebar counts followed it.

Replay now fails the op on a falsy result, so it retries and then parks with the
server's own words while the guard keeps what the user did. A mailbox whose
PERMANENTFLAGS will not keep \Seen is refused up front instead of eight silent
retries. pool.ts swaps logger: false for a logger that remembers only the
refusal text, since that was the sole channel for the server's reason.

Adds replay.test.ts covering the return-value handling.

v1.2.0

Choose a tag to compare

@crnst8 crnst8 released this 25 Aug 01:41

Features:

  • Sender & domain monograms can be changed to images or icons by right-click
  • Help page added with feature walkthroughs & configurations - needs some de-slopificiation but offers some starting guidance
  • Tags assigned to emails & senders appear as badges in msg rows

Fixes:

  • Account group folder colours weren’t showing,
  • Shift-select bulk messages was intermittent
  • ‘mainly’ removed from header logo
  • clicking header logo when in collapsed/half-screen mode now goes back to message list
  • html parsing occasionally failed in previews

v1.1.4

Choose a tag to compare

@crnst8 crnst8 released this 24 Aug 05:51
  • fix: parsing error, read marks, general swag

v1.1.3

Choose a tag to compare

@crnst8 crnst8 released this 22 Aug 10:53
  • fix: publish pipeline fixes

v1.1.2

Choose a tag to compare

@crnst8 crnst8 released this 22 Aug 10:32
  • feat: bind to 0.0.0.0 so a fresh install now answers on LAN + Tailscale + localhost, and login works over plain HTTP