Skip to content

Releases: DerKezorm/nexmail

nexmail 0.16.0

Choose a tag to compare

@DerKezorm DerKezorm released this 16 Sep 15:27

New

  • Hide the reading pane. A button next to the search field switches between three modes: the reading pane to the right of the list as before, the pane hidden with messages opening over the list, or the pane hidden with messages opening in a window. Without the pane the list uses the full width, a click only selects a message, and a double-click or the Enter key opens it; Escape closes it again. The choice is remembered in the browser. On the phone nothing changes.

Fixed

  • An expired Google or Microsoft consent, for example after a password change at the provider, is now reported as a rejected sign-in on the affected mailbox. Until now the Refresh button answered with an error and skipped every mailbox after it, and the background sync logged a program error every two minutes. Calendars and address books on that consent show the reason on their entry.

nexmail 0.15.0

Choose a tag to compare

@DerKezorm DerKezorm released this 11 Sep 18:53

New

  • The calendar menu on the phone. Every calendar in the drawer now has a "…" button that opens the same sheet as for mail: rename, change colour, download the calendar, import events, disconnect or remove. Until now these only existed behind the right-click on the desktop.
  • The contact's photo. A card's embedded photo is shown in the contact form. It is only shown; nexmail never changes it and never fetches a photo from the web.
  • Importing a vCard file into a connected address book. With more than one book nexmail asks which one; in a connected book every card goes to the provider one by one, as a job with a progress line that can be cancelled and survives a page reload. Cards that already exist are skipped, and a card refused by the provider does not stop the rest.

Changed

  • The Beta badge on address books is gone: iCloud reads and writes both ways, Google reads and creates, both measured on a live instance. What is still unmeasured with Google, whether your own labels survive there verbatim and how a conflict from there looks, is now said in the connect dialog instead.

nexmail 0.14.1

Choose a tag to compare

@DerKezorm DerKezorm released this 11 Sep 18:01

Changed

  • Google address books can be read. Google does not answer the addressbook-query report that iCloud accepts; nexmail now lists the cards with a plain directory query instead, so a connected Google address book no longer stops at "not readable" with zero contacts.
  • A switched-off Google API is named as such. When the Google Contacts CardDAV API is not enabled in the Cloud project, nexmail says so instead of "the server refuses the username or password". Google's contacts endpoint reports this in a newer format than its calendar endpoint, which nexmail did not recognise before.

nexmail 0.14.0

Choose a tag to compare

@DerKezorm DerKezorm released this 11 Sep 17:14

New

  • Contacts carry what the phone carries. First and last name, nickname, department, job title, birthday, website, and as many phone numbers, email addresses and postal addresses as a contact has, each with a kind (mobile, home, work, main, fax, pager, other) or your own label. The number and address with the star are the ones the list shows and nexmail uses when addressing.
  • Everything is written back line by line. In a connected address book a changed number replaces exactly its line on the card and leaves the rest untouched: photo, Apple-only lines, a label someone typed on the phone. Saving without a change leaves the card as it was.
  • What only Apple knows is shown, not changed. Social profiles, messengers, anniversaries and related names appear folded under the form, stay on the card and go back unchanged.

Changed

  • Suggestions while addressing offer every address of a contact, not only the starred one; searching finds every number and label.
  • Existing contacts get the new fields filled in once on the first start: from their card where they come from a connected book, from name, number and address otherwise.
  • The vCard export of local contacts now carries all their numbers and addresses.
  • The Beta badge on address books stays until the fields have been measured against iCloud and Google.

nexmail 0.13.0

Choose a tag to compare

@DerKezorm DerKezorm released this 11 Sep 13:51

New

  • Connected address books write back. Contacts from iCloud, Google or another CardDAV address book can now be edited, deleted and created in nexmail. Every change goes to the provider first, with an If-Match check on the card, and only then into nexmail's own copy. Photos, birthdays and every other line nexmail does not manage stay on the card untouched.
  • Conflicts are asked, not overwritten. If the card was changed elsewhere in the meantime, nexmail shows both versions side by side, as the calendar does: keep mine, take the other one, or cancel. Your own input stays in the form while you decide.
  • Moving contacts between books. A contact can be moved into a connected book, where it attaches to the card that already carries its address instead of creating a duplicate at the provider, or gets a new card if there is none. Moving out of a connected book deletes the card there, after a question.

Changed

  • New contacts can be created directly in a connected book; the form offers the book to write to when there is more than one.
  • Deleting a contact from a connected book asks first, because the card is deleted at the provider as well.
  • The Beta badge on address books stays until the write path has been measured against iCloud and Google. Disconnecting a book still deletes nothing at the provider.

nexmail 0.12.0

Choose a tag to compare

@DerKezorm DerKezorm released this 11 Sep 06:47

New

  • The calendar on the phone. Narrow screens now get their own calendar view instead of the squeezed desktop grid: the month with a dot per calendar under each day, and below it the events of the day you tap. Today wears a ring, the chosen day is filled, and tapping a day of the neighbouring month switches the month.
  • A list view. The second tab shows the month as a running list of days that have events, all-day events first, so you can read a month without tapping through it.
  • Calendars in a drawer. The calendar list with its checkboxes, colours and sync markers lives behind the menu button, like the folders in mail. A round button in thumb reach creates a new event on the chosen day.

Changed

  • On the phone the calendar always loads the month, whatever view was last chosen on the desktop. The week and day grids stay a desktop feature.

nexmail 0.11.0

Choose a tag to compare

@DerKezorm DerKezorm released this 10 Sep 19:46

New

  • Select several messages on the phone. Long-press a row, or tap "Select" above the list, and every row gets a circle. A tap then marks instead of opens; the header shows the count with "All" and "Done".
  • An action bar within thumb reach. Delete, Archive, Move, Read/Unread and More act on the whole selection through the same paths as the keyboard and the context menu on the desktop, including Undo.
  • Move and More open a sheet from the bottom with the same entries as the desktop context menu: folders and other mailboxes, flag, junk, tags, follow-up, task. A submenu is a second page with a back arrow.

Changed

  • Selection mode ends after an action, when the window becomes wide, or when you switch folders. Swiping is off while selection mode is on.
  • On phones a long-press no longer triggers the browser's own callout or the desktop context menu.

nexmail 0.10.1

Choose a tag to compare

@DerKezorm DerKezorm released this 06 Sep 15:25

Fixed

What the first run against a real iCloud address book showed, all within
hours of 0.10.0.

Most contacts arrived without a name. Apple writes an empty FN: line
and keeps the name in N: only. The reader took the empty line as the name
and then skipped the real one; 149 of 185 cards came in as a bare phone
number. An empty FN now counts as missing, and N is read by position, so
a first name without a last name stays a first name.

A contact with several numbers showed only one, and often the wrong one.
The single phone field now takes the mobile number first, then the one the
provider marks as preferred, then the first. Below it the form lists every
number and every email address of the card with its label, read only, so a
contact with a mobile and a landline no longer looks half fetched. Exporting a
connected contact now gives you the original card, photo and all.

⚠️ The first start after this update fetches every connected card again.
Fields are read when a card is fetched, and only changed cards are fetched;
without this step the names would stay empty until each contact was touched
on the phone. It happens once, through the normal sync, and changes nothing
at the provider.

The iCloud book was listed as "card". iCloud does not name its address
book; the collection is literally called card in the path. A book without a
display name is now named after its provider, so it shows up as "iCloud". You
can rename it either way.

Company contacts were titled with their phone number. Apple stores the
name of a company contact in the organisation field and nowhere else. The
contact list and the vCard export now put the company before address and
number when there is no person name, so "Polizei Musterstadt" reads as
"Polizei Musterstadt" and not as a phone number with the name in small print.

Labelled numbers and addresses were not read. Apple writes them as
item1.TEL and item1.EMAIL, grouped with their label. The reader now looks
past the group prefix, otherwise a contact whose only number carried a custom
label came in without it.

The Google dialog said nothing when the consent did not reach the
contacts.
With no usable consent the account list looked filled but nothing
was selected, so the hint pointing to reconnecting the account never appeared
and the test button was simply grey. The first account is now selected either
way and the hint shows.

Changed

Requests to the AI service now carry a temperature: 0.2 for spelling and
translation, 0.7 for rephrasing. Without it most providers assume 1.0, the
setting for free writing, which works against the rule that no fact may
change; a local model turned a spelling correction into an essay that never
ended.

A slow AI service is no longer reported as unreachable. A read timeout has
its own message now. Before, a model that was busy writing for two minutes
sent you off to check the address and the key.

nexmail 0.10.0

Choose a tag to compare

@DerKezorm DerKezorm released this 05 Sep 07:16

New

Address books from iCloud, Google and other CardDAV servers, as a beta.
Contacts → Address books → the plus. nexmail finds the books behind an
account, you tick the ones you want, and their cards arrive right away and
every ten minutes after that. iCloud takes an app-specific password, Google a
consent, anything else a CardDAV address.

⚠️ The beta reads and never writes. No request other than a read ever
leaves for the provider: connecting, syncing, hiding and disconnecting a book
change nothing at iCloud or Google, and disconnecting removes only nexmail's
copy. Contacts from a connected book are read only in nexmail for now; change
them at the provider and the next sync picks it up. Writing back comes in a
later release, with the same conflict handling as the calendar.

A contact no longer needs an email address. A name with a phone number is
enough, or a company. Such entries are not offered while addressing a message
and groups do not send to them, but they show up in the list, the search finds
them by number, and vCard import and export carry them.

Removing a Google or Microsoft consent now takes its address books along,
as it already did with mailboxes and calendars, and the question before
removing counts them.

⚠️ For Google, connect the account again. The consent nexmail asks for now
includes contacts; a consent granted before this version does not, and the
dialog says so. The Google project also needs the CardDAV API enabled, next to
the CalDAV API.

⚠️ The first start rebuilds the contact table. SQLite cannot drop a table
constraint, so the table is recreated and copied over, with a restore point
taken first. It takes seconds and is logged before it starts.

Fixed

Disconnecting an address book left its contacts' group memberships behind,
so a group kept counting members that were gone.

Restore points taken before a schema change could miss the last writes.
The copy is now taken after the write-ahead log has been checkpointed.

nexmail 0.9.1

Choose a tag to compare

@DerKezorm DerKezorm released this 04 Sep 20:48

New

The operator decides whether AI services may be used at all. New entry
AI in the left rail: a gate for the whole installation, and next to every
account in Administration → Users a switch to block that one. Two locks in
series, both the operator's; what the user chooses sits below them.

⚠️ The installation gate is off after the update, and that is deliberate. If
you set up an access in 0.9.0, rephrasing stays switched off until you tick the
box — one click against an unnoticed path out of the house. Nothing is deleted:
keys, addresses and models stay exactly as they were.

Why it exists: in 0.9.0 every signed-in user decided for themselves whether text
from their mail went to a foreign service, and the operator — who is the
controller for the installation — could neither see it nor forbid it. For a
household that is right. For anyone running nexmail for an organisation it is
the opposite.

Everything about AI now lives in one place. The gate, your own access and the
list of what was sent stand on one page instead of being spread across
administration and settings.

Fixed

Removing your own device from the notification list no longer signs it back
on.
Signing off drops the subscription, but the browser permission stays — a
page cannot give that back — and the self-healing step that runs on every page
load created a fresh subscription straight away. The device was back within the
same click, while the line below the list promised the opposite.

The self-healing itself stays: after a move, after cleared browser data or on a
fresh install, a device whose permission still stands is signed back on
silently. What is new is that a deliberate sign-off is remembered as such, and
the page then offers Sign on again without asking the browser twice.