2025-09-22 - 2026-09-22
Overview
352 Issues closed from 4 users
Closed
#417 The toolbar above an open message acts on that message
Closed
#416 A reply to a self-addressed message follows its Reply-To
Closed
#313 #313 (no record recovered)
Closed
#305 #305 (no record recovered)
Closed
#46 #46 (no record recovered)
Closed
#47 #47 (no record recovered)
Closed
#45 #45 (no record recovered)
Closed
#43 #43 (no record recovered)
Closed
#48 #48 (no record recovered)
Closed
#397 #397 (no record recovered)
Closed
#315 #315 (no record recovered)
Closed
#317 #317 (no record recovered)
Closed
#413 Quote images through the proxy, and unproxy them on the way out
Closed
#410 Replying fetches the quoted message's remote images, whatever the reader decided
Closed
#411 Quoting follows the message's own image decision
Closed
#409 Switching format keeps the original quote, not a flattened copy
Closed
#408 Offer the message's own format when replying
Closed
#406 Call the app by its name in every sentence that names it
Closed
#405 Reorder folders by dragging, with special folders first
Closed
#404 Open the composer full screen, as a setting
Closed
#403 Update nl.ts
Closed
#400 Drag calendar events to another day in the week grid
Closed
#399 Match Shift+letter shortcuts (Shift+I, Shift+U)
Closed
#396 Keep only the app page as the app page
Closed
#395 Start at once on a device marked as your own
Closed
#394 Fetch the rest of a new build in the background
Closed
#393 Fold a push's follow-up requests together
Closed
#392 Open conversations in one request, and start them early
Closed
#391 Ask before opening a shared item in a message
Closed
#390 Advertise byte ranges on downloads, and record the live checks
Closed
#375 Bug(push): Duplicate notifications from SW polling/SSE & accumulative PushSubscriptions causing "too many subscriptions"
Closed
#389 Stop duplicate push notifications and piling up subscriptions
Closed
#388 Save contact photos inline, and load cards so avatars show
Closed
#387 Let go of old message bodies and of exported files
Closed
#386 Precompress the bundle, validate the shell, and pass byte ranges on
Closed
#385 Mbjboon netizen patch 1
Closed
#384 Sync contacts by what changed, and hold fewer calendar windows
Closed
#383 Ask shared accounts together, and about files only when Files opens
Closed
#382 Load the composer, previews, dialogs and other sidebars on demand
Closed
#381 Render only the message rows that changed
Closed
#380 Keep the service worker's cache to the current build
Closed
#379 Close the smaller gaps from the security review
Closed
#378 Keep list refreshes within the server's limits and stop repeating them
Closed
#377 Bound what a request can make the server hold
Closed
#374 Group six more lib clusters, and split the mock server
Closed
#373 Split the extractable parts out of the mail store
Closed
#372 Group the admin and calendar modules, and stop calling screenshots docs
Closed
#371 Pin every action to a commit SHA
Closed
#370 Add the pull request template CONTRIBUTING.md already refers to
Closed
#369 Use American English spelling
Closed
#368 Shorter README: an introduction and links
Closed
#366 Find Stalwart's administration instead of asking for it
Closed
#365 Record the schema route working on production
Closed
#367 Take the production server's domains out of KNOWN-ISSUES
Closed
#364 Add Tenants to Administration, and let an account be put in one
Closed
#363 Add Roles to Administration, with Stalwart's permissions in every language
Closed
#362 Add Mailing lists to Administration
Closed
#361 Add Groups to Administration
Closed
#360 Open Administration on a dashboard of what the role can read
Closed
#359 Ignore a keydown that carries no key
Closed
#358 Let the contact list be resized, and give the contact the rest of the page
Closed
#354 Bump jsdom from 26.1.0 to 30.0.1
Closed
#353 Bump vitest from 4.1.11 to 5.0.0
Closed
#352 Bump lucide-react from 0.477.0 to 1.45.0
Closed
#351 Bump concurrently from 9.2.4 to 10.0.5
Closed
#350 Bump @tanstack/react-virtual from 3.14.11 to 3.14.12 in the minor-and-patch group
Closed
#355 type:"Feature" In addition to drag & drop, Move folders with a dropdown exactly like you can move a message to a folder
Closed
#357 Move a folder from its menu, with the same picker as moving mail
Closed
#349 Translate English built from template literals in attributes
Closed
#348 Check component props for untranslated literals, and fail on a finding
Closed
#345 Be able to resize the side bar with the mouse
Closed
#347 Let the sidebar be resized by dragging its edge
Closed
#346 Move the weekly release off the top of the hour
Closed
#344 Point to the companion tools near the top of the README
Closed
#343 Bring FEATURES and KNOWN-ISSUES up to 0.16.22
Closed
#342 Follow Stalwart 0.16.22 in the mock
Closed
#341 Say 0.16.22 in the README
Closed
#340 Say every Administration refusal in the reader's language
Closed
#339 Record what Administration proved on the live server
Closed
#338 Offer administration only on a device marked as your own
Closed
#337 Move Administration's section list into the folder pane
Closed
#336 Filter accounts on @type, the name Stalwart uses
Closed
#335 Add Domains to Administration
Closed
#334 Add Administration, starting with accounts
Closed
#333 Send account requests to the account's own Stalwart
Closed
#332 Let the deploy compute its version without node
Closed
#330 Maximised composer is painted under other open composers
Closed
#331 Paint a full-screen composer above the others
Closed
#329 Report the stale keys that are stale, and remove them
Closed
#328 Give the i18n scripts a parser again
Closed
#327 Let conversation view off mean off
Closed
#326 Render plain-text mail with its line breaks
Closed
#325 Point the Sponsor button at the current GitHub username
Closed
#324 Move CI, the image and the Node types to 26 together
Closed
#323 Take @hono/node-server to 2.1.1
Closed
#318 Bump typescript from 5.9.3 to 7.0.2
Closed
#322 Move the build to vite 8, and chunk the way rolldown wants
Closed
#321 Point the @ alias at a relative path, and drop baseUrl
Closed
#314 Bump the minor-and-patch group across 1 directory with 4 updates
Closed
#316 Bump the actions group with 7 updates
Closed
#320 Take vitest to 4.1.11, and stop two suites leaking their spies
Closed
#312 Take hono to 4.13.7 and let Dependabot open the next one
Closed
#309 Never serve the service worker from a cache
Closed
#308 Archive and mark read from the notification itself
Closed
#307 Be somewhere a phone can share to
Closed
#304 Say who owns settings.json, not just where it lives
Closed
#303 Move the translation and UI-verification notes into CONTRIBUTING
Closed
#302 Limit CLAUDE.md to translations and verifying UI work
Closed
#301 Update a re-imported event rather than skipping it
Closed
#300 Raise dialogs and the composer over the mobile drawer
Closed
#299 Say 0.16.21 where the docs still said 0.16.20
Closed
#298 Catch the README and FEATURES up with the themes and 0.16.21
Closed
#297 Translate the eight strings that were still falling back
Closed
#296 Six more palettes, taking the picker to twelve
Closed
#295 Stop naming every palette in the credit line
Closed
#294 Force the theme onto mail that styles itself
Closed
#293 Follow Stalwart 0.16.21 in the mock
Closed
#292 Push by subscription, and a latency fix for the compressor
Closed
#289 Smaller footprint: three times the tabs, a third of the image, a budget per session
Closed
#287 Compress the bundle in the nginx example
Closed
#286 Check S/MIME signatures, and remember who signed
Closed
#285 Write down what Stalwart's x:PublicKey registry does, and withdraw the key manager
Closed
#284 Add GitHub Sponsors funding config
Closed
#283 Say why S/MIME rather than OpenPGP, and why neither is urgent
Closed
#282 Say near the top that latest lags main, and by how long
Closed
#281 Say in CONTRIBUTING that main is protected, and that strings need nine catalogues
Closed
#280 Write down the plural-key gotcha, and how to tell it happened
Closed
#278 Select contacts, and empty an address book
Closed
#247 untranslated/untranslatable strings
Closed
#260 keyboard focus after clicking the "select all mails" checkbox
Closed
#223 Contacts: duplicate checking on re-import (vCard and LDIF)
Closed
#275 Replying to my own message addresses the reply to me
Closed
#276 Ask the folder, not just the identity list, whether a message was mine
Closed
#274 Match an LDIF re-import on the entry's dn
Closed
#273 Write the S/MIME position down
Closed
#272 Add seven plural forms no catalogue ever had
Closed
#270 Translate the rule sentences into Ukrainian
Closed
#269 Translate the rule sentences into Russian
Closed
#268 Translate the rule sentences into Simplified Chinese
Closed
#267 Translate the rule sentences into Japanese
Closed
#266 Translate the rule sentences into Brazilian Portuguese
Closed
#265 Translate the rule sentences into Dutch
Closed
#264 Translate the rule sentences into French
Closed
#263 Translate the rule sentences into Spanish
Closed
#262 Translate the rule sentences into German
Closed
#271 Keep shortcuts working after a checkbox is clicked
Closed
#261 Build the two rule descriptions as sentences, not fragments
Closed
#259 Third pass: the strings libraries build and views render raw
Closed
#258 Second pass: four dialogs that were never wrapped
Closed
#257 Catch the Simplified Chinese catalogue up with what shipped after it
Closed
#256 Catch the Ukrainian catalogue up with what shipped after it
Closed
#255 Catch the Russian catalogue up with what shipped after it
Closed
#254 Catch the Japanese catalogue up with what shipped after it
Closed
#253 Catch the Brazilian Portuguese catalogue up with what shipped after it
Closed
#252 Catch the Dutch catalogue up with what shipped after it
Closed
#251 Catch the French catalogue up with what shipped after it
Closed
#250 Catch the Spanish catalogue up with what shipped after it
Closed
#249 Catch the German catalogue up with what shipped after it
Closed
#248 Translate three lists the code was rendering raw
Closed
#246 Prune old images, and keep every release
Closed
#245 Cut a release once a week, and only when there is something in it
Closed
#244 Publish the image the docs have been telling people to pull
Closed
#243 Call the instance what it calls itself, on the page that matters most
Closed
#242 Update a contact on re-import rather than skipping it
Closed
#241 Choose the Stalwart by the domain somebody signs in with
Closed
#240 Do not spend login attempts on an outage nobody caused
Closed
#237 Make "Show original" in the headers dialog the action, not a description
Closed
#235 Go to a folder by name, with g then o
Closed
#234 Say how much an LDIF re-import duplicated, without acting on it
Closed
#232 Ship an example settings policy, and name the variables in .env.example
Closed
#231 Apply installation policy changes once each, per account
Closed
#230 Let an installation seed and lock user settings
Closed
#229 Define the zones an export names, instead of only naming them
Closed
#228 Skip vCards on re-import that the address book already has
Closed
#227 Export a calendar as an iCAL file
Closed
#226 Give the address books the menus the calendars have
Closed
#225 Skip events on re-import that the calendar already has
Closed
#221 Set the Archive role from ihasmail, rather than describing it
Closed
#220 Say the Archive folder needs the role, not the name
Closed
#219 Highlight saving, not discarding, on the unsaved-changes guard
Closed
#218 Set contact cards in batches the server will take
Closed
#215 Import an iCal file in batches the server will take
Closed
#214 Move an event by the days the hand moved it, not to the date dropped on
Closed
#213 Name the push verification entry absolutely, from both sides
Closed
#212 Apply the upload limit only where something is uploaded
Closed
#211 Subscribe to a calendar published at a URL
Closed
#210 Drag an event to move it, and its edge to resize it
Closed
#209 Six palettes, each with a light half and a dark one
Closed
#208 Let the message list be sorted by something other than the date
Closed
#206 Show birthdays from the address book as a calendar
Closed
#205 Open winmail.dat
Closed
#203 Select a whole folder, not just the rows that are loaded
Closed
#202 Warn about outside senders, large sends and links that mislead
Closed
#201 Serve ihasmail from a subpath
Closed
#200 Gather the privacy settings into a section of their own
Closed
#197 Forward a message as an attachment
Closed
#199 Swipe the calendar sideways to step a day or a month
Closed
#198 Archive into a dated folder
Closed
#194 Select more than one file at a time
Closed
#193 Edit a text file where you are already reading it
Closed
#192 Read a Markdown file as the document it is
Closed
#191 Look at a file without downloading it first
Closed
#189 Print on white, and start on page one
Closed
#188 Take the message you were reading into the selection
Closed
#187 Point at the demo from the top of the README
Closed
#185 Write down what the last week's features actually do
Closed
#184 Put "compose as new" where a thumb can find it
Closed
#183 Schedule against the whole guest list, and say who cannot be read
Closed
#182 Say what the availability bar is showing, and show all of it
Closed
#174 feature request: import address book in LDIF format
Closed
#180 Import an address book in LDIF
Closed
#179 Send a message again as a new one
Closed
#178 Import an iCal file into a calendar
Closed
#177 Ask before the filter editors lose your changes
Closed
#170 Say in the README that a message can become an event
Closed
#169 Invite the people the message was already between
Closed
#168 Make an event out of a message
Closed
#166 Hang every folder off one edge, and give the drawer a way out
Closed
#165 Folders one level at a time on a phone, and targets a thumb can hit
Closed
#164 Ten languages, not nine: correct the count everywhere
Closed
#163 Document the nine languages, and what Beta means on them
Closed
#162 Keep a settings change made before the first read, and wait for it
Closed
#161 Second extraction pass: the strings the codemod could not see
Closed
#160 Stop a language change undoing itself, and stop the translate prompt
Closed
#159 Translate the labels the extractor could not see
Closed
#158 Add a Japanese interface catalogue
Closed
#157 Add a Simplified Chinese interface catalogue
Closed
#156 Ukrainian, and not the Russian one with a different name on it
Closed
#155 Russian, and the first real use of the plural machinery
Closed
#154 Portuguese (Brazil), completing Phase 1
Closed
#153 Spanish, fourth of Phase 1
Closed
#152 Dutch, third of Phase 1
Closed
#151 French, on the same terms as German
Closed
#150 Folder names follow the language, and three bugs that found
Closed
#148 Finish extraction: 100%, and a coverage number worth believing
Closed
#147 Extract 515 strings by codemod
Closed
#144 Keep push alive across a deploy, not just across a week
Closed
#143 Renew the push subscription, so it does not lapse in a week
Closed
#142 Write down what the mail list does under a finger
Closed
#141 Give the mail list the gestures a phone already has
Closed
#139 Deploy immutably by default
Closed
#138 Mock: let an override move an occurrence, as the server does
Closed
#137 Calendar: edit and delete a single occurrence
Closed
#135 Resolve the base event id in the calendar store, not at the call sites
Closed
#136 Stalwart has not reached 1.0 yet
Closed
#134 Stalwart 0.16.20 on the live instance
Closed
#131 Point at the Coffey-Labs organisation
Closed
#130 Stop borrowing Stalwart's version number
Closed
#129 Link the project site from inside the app
Closed
#128 Let a dry run answer without a terminal
Closed
#127 Send the length of the bytes we are actually sending
Closed
#126 Change the copyright holder to Coffey Labs
Closed
#125 Link the project site from inside the app
Closed
#124 Say where to report a code of conduct violation
Closed
#123 Ask whose computer this is, and believe the answer
Closed
#122 Say where the 2FA entry came from, not that something is tracking it
Closed
#121 Lead with what makes it different
Closed
#120 Notice a new build without being told
Closed
#119 Reload when the server is running a newer build
Closed
#118 Deploy immutably when asked to
Closed
#117 Let the container run with nothing writable
Closed
#116 Link the documentation from the profile menu
Closed
#115 Say a missing folder is missing, not empty
Closed
#114 Take a screenshot of the recipient picker
Closed
#113 Use an example address, and the right name, in the test fixtures
Closed
#112 Take the files screenshot with the others
Closed
#110 Ask for shareWith on mailboxes too
Closed
#109 Ask for shareWith, or the server does not send it
Closed
#108 Let the owner stop sharing a calendar or an address book
Closed
#107 Load the contacts the recipient picker is meant to show
Closed
#106 Keep the full copy of an email the server says changed
Closed
#105 Make the mock report what changed
Closed
#104 Stop rebuilding the message body when it is marked read
Closed
#103 Remember an added address book when the server will not
Closed
#102 Say so when the server refuses a subscribe
Closed
#101 Add shared collections deliberately, and pick recipients from the address books
Closed
#99 Shared calendars in the calendar, and no more account switcher
Closed
#98 Put address books in the left pane, other people's included
Closed
#97 Stop offering to share mail folders, and let a share be removed
Closed
#95 Reach shared folders from Files, not the profile menu
Closed
#94 Keep your own settings out of someone else's account
Closed
#93 Show the folder tree in a shared account
Closed
#92 A folder tree, and dragging things into it
Closed
#91 Share files and folders with other people
Closed
#90 Hold the opening scroll while the conversation settles
Closed
#88 Open a conversation on its first unread message
Closed
#86 docs: put the Docker quick start back in the README
Closed
#85 docs: slim the README, split out known issues and roadmap
Closed
#84 Remove the two-factor entry point from the login form
Closed
#83 Stop offering to turn two-factor authentication on
Closed
#82 Hide identities from the compose picker
Closed
#81 Stop the reading view rearranging itself as you read
Closed
#80 Move focus off a row that has been deleted
Closed
#79 Theme the dropdown a native select paints for itself
Closed
#78 Never overwrite filters we could not read
Closed
#75 Authentiction with 2FA (TOTP) fails (possibly a stalwart issue?)
Closed
#77 Stop pretending the two-factor field can work
Closed
#74 Say what "even when ihasmail is closed" actually means
Closed
#72 Send a filter the server can read
Closed
#68 Notifications that arrive when ihasmail is closed
Closed
#67 Manage public keys, over Stalwart's x:PublicKey registry
Closed
#66 Keep the last few images, and record delete-all-spam as verified live
Closed
#65 Delete all spam, and call folders what the server calls them
Closed
#64 Add the ihasmail theme, and make it the default
Closed
#63 Rework the sign-in footer
Closed
#62 Nothing left pending in QA
Closed
#61 Stop the deploy script rewriting itself mid-run
Closed
#60 Add a deploy script, with no host in it
Closed
#59 Give builds a version number
Closed
#57 Drop Stalwart 0.15 support
Closed
#58 Let CI be started by hand
Closed
#56 Record the settings file as verified live
Closed
#55 Keep settings with the account, not the browser
Closed
#53 Retake the screenshots on the new logo
Closed
#52 Drop the .com wordmark from the logo
Closed
#51 Trim the badges to three, and credit LINUXexpert.org
Closed
#50 Put badges under the logo
Closed
#49 Make the AGPL's source offer point at the source being run
Closed
#44 Close the colour menu on a pick, and make the push dot readable
Closed
#42 Fill a coloured folder in, rather than outlining it
Closed
#41 Give a folder a colour from its right-click menu
Closed
#40 Move a folder by dragging it
Closed
#39 Take the filing action, not the whole rule
Closed
#38 Relicense to the AGPL, version 3 or later
Closed
#37 Keep filter rules pointing at the folder they were aimed at
Closed
#36 Make the light screenshot actually light
Closed
#35 Take the screenshots again, on today's build
Closed
#34 Record that a hold really does hold, on the live server
Closed
#33 Bring the stranded calendar work into main
Closed
#32 Let a filter rule be dragged into place
Closed
#31 Say it in the words Stalwart 0.16 answers to
Closed
#29 Give a hand-typed header its own box
Closed
#28 Stop calling every event a series
Closed
#27 Keep an edited filter rule where it was
Closed
#22 Record that the registry path has now met a live 0.16.19
Closed
#21 Send the read receipt the sender asked for
Closed
#20 Empty a folder in batches the server will accept
Closed
#19 Connect the image proxy to the address it checked
Closed
#18 Harden four things the security audit turned up
Closed
#17 Stop a message painting over the whole application
Closed
#16 Teach the mock to impersonate Stalwart 0.15
Closed
#15 Make signatures and Files work on Stalwart before 0.16
Closed
#14 Self-service credentials, plus the account-locale fix, server info and a theme toggle
Closed
#13 Ask for the submission capability when using identities
Closed
#11 Add contacts by right-clicking anyone named in a message
Closed
#10 Stop the composer stealing focus while the subject is typed
Closed
#9 Fix sending: never send null for an empty header property
Closed
#8 Keep the live mail host out of the repo
Closed
#7 Let messages follow the app theme, at the user's choice
Closed
#6 Offer ihasmail as the browser's mailto: handler
Closed
#5 Custom date and time pickers that follow the configured format
Closed
#2 Configurable date and time formats, defaulting to the Stalwart locale
417 Issues created by 4 users
Opened
#1 #1 (title not recovered)
Opened
#2 Configurable date and time formats, defaulting to the Stalwart locale
Opened
#4 mail text remains light mode even if UI is configured for dark mode
Opened
#3 #3 (title not recovered)
Opened
#5 Custom date and time pickers that follow the configured format
Opened
#6 Offer ihasmail as the browser's mailto: handler
Opened
#7 Let messages follow the app theme, at the user's choice
Opened
#8 Keep the live mail host out of the repo
Opened
#9 Fix sending: never send null for an empty header property
Opened
#10 Stop the composer stealing focus while the subject is typed
Opened
#11 Add contacts by right-clicking anyone named in a message
Opened
#12 cannot create identities, even with
role administrator
Opened
#13 Ask for the submission capability when using identities
Opened
#14 Self-service credentials, plus the account-locale fix, server info and a theme toggle
Opened
#15 Make signatures and Files work on Stalwart before 0.16
Opened
#16 Teach the mock to impersonate Stalwart 0.15
Opened
#17 Stop a message painting over the whole application
Opened
#18 Harden four things the security audit turned up
Opened
#19 Connect the image proxy to the address it checked
Opened
#20 Empty a folder in batches the server will accept
Opened
#21 Send the read receipt the sender asked for
Opened
#22 Record that the registry path has now met a live 0.16.19
Opened
#23 Sieve filter dialog missing operation when "other header" is selected
Opened
#24 Sieve rules: editing rule moves it to the end of the list
Opened
#25 Calendar: warning about editing an event series for non-recurring events
Opened
#26 Calendar: added external people (guests) are dropped, no email sent to them
Opened
#27 Keep an edited filter rule where it was
Opened
#28 Stop calling every event a series
Opened
#29 Give a hand-typed header its own box
Opened
#30 Recurring events cannot be created on Stalwart 0.16 (recurrenceRule vs recurrenceRules)
Opened
#31 Say it in the words Stalwart 0.16 answers to
Opened
#32 Let a filter rule be dragged into place
Opened
#33 Bring the stranded calendar work into main
Opened
#34 Record that a hold really does hold, on the live server
Opened
#35 Take the screenshots again, on today's build
Opened
#36 Make the light screenshot actually light
Opened
#37 Keep filter rules pointing at the folder they were aimed at
Opened
#38 Relicense to the AGPL, version 3 or later
Opened
#39 Take the filing action, not the whole rule
Opened
#40 Move a folder by dragging it
Opened
#41 Give a folder a colour from its right-click menu
Opened
#42 Fill a coloured folder in, rather than outlining it
Opened
#44 Close the colour menu on a pick, and make the push dot readable
Opened
#49 Make the AGPL's source offer point at the source being run
Opened
#50 Put badges under the logo
Opened
#51 Trim the badges to three, and credit LINUXexpert.org
Opened
#52 Drop the .com wordmark from the logo
Opened
#53 Retake the screenshots on the new logo
Opened
#54 request: consider changing user settings storage to be server-side
Opened
#55 Keep settings with the account, not the browser
Opened
#56 Record the settings file as verified live
Opened
#57 Drop Stalwart 0.15 support
Opened
#58 Let CI be started by hand
Opened
#59 Give builds a version number
Opened
#60 Add a deploy script, with no host in it
Opened
#61 Stop the deploy script rewriting itself mid-run
Opened
#62 Nothing left pending in QA
Opened
#63 Rework the sign-in footer
Opened
#64 Add the ihasmail theme, and make it the default
Opened
#65 Delete all spam, and call folders what the server calls them
Opened
#66 Keep the last few images, and record delete-all-spam as verified live
Opened
#67 Manage public keys, over Stalwart's x:PublicKey registry
Opened
#68 Notifications that arrive when ihasmail is closed
Opened
#72 Send a filter the server can read
Opened
#74 Say what "even when ihasmail is closed" actually means
Opened
#75 Authentiction with 2FA (TOTP) fails (possibly a stalwart issue?)
Opened
#76 "Filter messages like this" rules get overwritten by newer rules
Opened
#77 Stop pretending the two-factor field can work
Opened
#78 Never overwrite filters we could not read
Opened
#79 Theme the dropdown a native select paints for itself
Opened
#70 cosmetics: identity selection in
"compose mail view" vs dark theme
Opened
#80 Move focus off a row that has been deleted
Opened
#71 Email: keyboard shortcut inconsistencies -deleting message asks for delete confirmation every other message - jumps in the message list.
Opened
#81 Stop the reading view rearranging itself as you read
Opened
#69 handling of thread with multiple
unread mails when "conversation mode" is active
Opened
#82 Hide identities from the compose picker
Opened
#73 feature request: able to hide identities from the identity selection in the "compose new mail" dialog
Opened
#83 Stop offering to turn two-factor authentication on
Opened
#84 Remove the two-factor entry point from the login form
Opened
#85 docs: slim the README, split out known issues and roadmap
Opened
#86 docs: put the Docker quick start back in the README
Opened
#87 jump to first unread mail on thread selection instead of newest/last mail when "conversation mode" is active
Opened
#88 Open a conversation on its first unread message
Opened
#89 Opening an already-read conversation lands short of the newest message
Opened
#90 Hold the opening scroll while the conversation settles
Opened
#91 Share files and folders with other people
Opened
#92 A folder tree, and dragging things into it
Opened
#93 Show the folder tree in a shared account
Opened
#94 Keep your own settings out of someone else's account
Opened
#95 Reach shared folders from Files, not the profile menu
Opened
#96 Attach a file that is already in Files
Opened
#97 Stop offering to share mail folders, and let a share be removed
Opened
#98 Put address books in the left pane, other people's included
Opened
#99 Shared calendars in the calendar, and no more account switcher
Opened
#101 Add shared collections deliberately, and pick recipients from the address books
Opened
#102 Say so when the server refuses a subscribe
Opened
#100 auto-marking as read still redraws the message view pane
Opened
#103 Remember an added address book when the server will not
Opened
#104 Stop rebuilding the message body when it is marked read
Opened
#105 Make the mock report what changed
Opened
#106 Keep the full copy of an email the server says changed
Opened
#107 Load the contacts the recipient picker is meant to show
Opened
#108 Let the owner stop sharing a calendar or an address book
Opened
#109 Ask for shareWith, or the server does not send it
Opened
#110 Ask for shareWith on mailboxes too
Opened
#111 An unknown mailbox id says the folder is empty, not that it is missing
Opened
#112 Take the files screenshot with the others
Opened
#113 Use an example address, and the right name, in the test fixtures
Opened
#114 Take a screenshot of the recipient picker
Opened
#115 Say a missing folder is missing, not empty
Opened
#116 Link the documentation from the profile menu
Opened
#117 Let the container run with nothing writable
Opened
#118 Deploy immutably when asked to
Opened
#119 Reload when the server is running a newer build
Opened
#120 Notice a new build without being told
Opened
#121 Lead with what makes it different
Opened
#122 Say where the 2FA entry came from, not that something is tracking it
Opened
#123 Ask whose computer this is, and believe the answer
Opened
#124 Say where to report a code of conduct violation
Opened
#125 Link the project site from inside the app
Opened
#126 Change the copyright holder to Coffey Labs
Opened
#127 Send the length of the bytes we are actually sending
Opened
#128 Let a dry run answer without a terminal
Opened
#129 Link the project site from inside the app
Opened
#130 Stop borrowing Stalwart's version number
Opened
#131 Point at the Coffey-Labs organisation
Opened
#132 Calendar: per-occurrence edit and delete, now that 0.16.20 supports synthetic ids
Opened
#133 Calendar store: resolve the base event id at the boundary, not at four call sites
Opened
#134 Stalwart 0.16.20 on the live instance
Opened
#135 Resolve the base event id in the calendar store, not at the call sites
Opened
#137 Calendar: edit and delete a single occurrence
Opened
#136 Stalwart has not reached 1.0 yet
Opened
#138 Mock: let an override move an occurrence, as the server does
Opened
#139 Deploy immutably by default
Opened
#140 Write down everything ihasmail does
Opened
#141 Give the mail list the gestures a phone already has
Opened
#142 Write down what the mail list does under a finger
Opened
#143 Renew the push subscription, so it does not lapse in a week
Opened
#144 Keep push alive across a deploy, not just across a week
Opened
#145 Defend against Chrome rewriting the DOM, and add the language setting
Opened
#146 Start extraction: an i18n core, and a way to see how far it has got
Opened
#147 Extract 515 strings by codemod
Opened
#148 Finish extraction: 100%, and a coverage number worth believing
Opened
#149 German, generated by AI and marked Beta until somebody signs it off
Opened
#150 Folder names follow the language, and three bugs that found
Opened
#151 French, on the same terms as German
Opened
#152 Dutch, third of Phase 1
Opened
#153 Spanish, fourth of Phase 1
Opened
#154 Portuguese (Brazil), completing Phase 1
Opened
#155 Russian, and the first real use of the plural machinery
Opened
#156 Ukrainian, and not the Russian one with a different name on it
Opened
#157 Add a Simplified Chinese interface catalogue
Opened
#158 Add a Japanese interface catalogue
Opened
#159 Translate the labels the extractor could not see
Opened
#160 Stop a language change undoing itself, and stop the translate prompt
Opened
#161 Second extraction pass: the strings the codemod could not see
Opened
#162 Keep a settings change made before the first read, and wait for it
Opened
#163 Document the nine languages, and what Beta means on them
Opened
#164 Ten languages, not nine: correct the count everywhere
Opened
#165 Folders one level at a time on a phone, and targets a thumb can hit
Opened
#166 Hang every folder off one edge, and give the drawer a way out
Opened
#167 Suggestion: Would it possible to add a right click option to email to add to calendar
Opened
#168 Make an event out of a message
Opened
#169 Invite the people the message was already between
Opened
#170 Say in the README that a message can become an event
Opened
#171 Spike: run the whole app on Cloudflare Workers
Opened
#175 sieve filter settings: silently discarding unsaved changes when navigating away
Opened
#177 Ask before the filter editors lose your changes
Opened
#172 feature request: improved "availability" indication for multi-participant events
Opened
#173 feature request: iCAL file import into calendars
Opened
#178 Import an iCal file into a calendar
Opened
#176 feature request: "compose as new"
Opened
#179 Send a message again as a new one
Opened
#174 feature request: import address book in LDIF format
Opened
#180 Import an address book in LDIF
Opened
#182 Say what the availability bar is showing, and show all of it
Opened
#183 Schedule against the whole guest list, and say who cannot be read
Opened
#181 Compose as new feature missing from mobile
Opened
#184 Put "compose as new" where a thumb can find it
Opened
#185 Write down what the last week's features actually do
Opened
#187 Point at the demo from the top of the README
Opened
#188 Take the message you were reading into the selection
Opened
#186 multi-mail selection with Ctrl
Opened
#189 Print on white, and start on page one
Opened
#190 Print the message you asked to print
Opened
#191 Look at a file without downloading it first
Opened
#192 Read a Markdown file as the document it is
Opened
#193 Edit a text file where you are already reading it
Opened
#194 Select more than one file at a time
Opened
#195 Fill placeholders when a template is inserted
Opened
#196 Show what the spam filter said, in the message details
Opened
#197 Forward a message as an attachment
Opened
#198 Archive into a dated folder
Opened
#199 Swipe the calendar sideways to step a day or a month
Opened
#200 Gather the privacy settings into a section of their own
Opened
#202 Warn about outside senders, large sends and links that mislead
Opened
#201 Serve ihasmail from a subpath
Opened
#203 Select a whole folder, not just the rows that are loaded
Opened
#204 Nest labels, and let each one say how prominent it is
Opened
#205 Open winmail.dat
Opened
#206 Show birthdays from the address book as a calendar
Opened
#208 Let the message list be sorted by something other than the date
Opened
#209 Six palettes, each with a light half and a dark one
Opened
#210 Drag an event to move it, and its edge to resize it
Opened
#207 feature request: installation-wide defaults for user settings
Opened
#211 Subscribe to a calendar published at a URL
Opened
#212 Apply the upload limit only where something is uploaded
Opened
#213 Name the push verification entry absolutely, from both sides
Opened
#214 Move an event by the days the hand moved it, not to the date dropped on
Opened
#215 Import an iCal file in batches the server will take
Opened
#218 Set contact cards in batches the server will take
Opened
#219 Highlight saving, not discarding, on the unsaved-changes guard
Opened
#217 misleading error message when no archive folder is set yet
Opened
#220 Say the Archive folder needs the role, not the name
Opened
#221 Set the Archive role from ihasmail, rather than describing it
Opened
#222 Calendar: skip events on re-import when their UID is already in the calendar
Opened
#223 Contacts: duplicate checking on re-import (vCard and LDIF)
Opened
#224 Contacts: bring the address book menus in line with the calendar's
Opened
#225 Skip events on re-import that the calendar already has
Opened
#226 Give the address books the menus the calendars have
Opened
#216 feature request: calendar export as iCAL
Opened
#227 Export a calendar as an iCAL file
Opened
#228 Skip vCards on re-import that the address book already has
Opened
#229 Define the zones an export names, instead of only naming them
Opened
#230 Let an installation seed and lock user settings
Opened
#231 Apply installation policy changes once each, per account
Opened
#232 Ship an example settings policy, and name the variables in .env.example
Opened
#234 Say how much an LDIF re-import duplicated, without acting on it
Opened
#233 feature requests: "go to folder" keyboard shortcut
Opened
#235 Go to a folder by name, with g then o
Opened
#236 feature request: "message headers" dialog: make 'show original' a clickable link
Opened
#237 Make "Show original" in the headers dialog the action, not a description
Opened
#238 Optional domain-to-Stalwart mapping, with the single server as the default
Opened
#239 An unreachable Stalwart burns login attempts and locks people out of the recovery
Opened
#240 Do not spend login attempts on an outage nobody caused
Opened
#241 Choose the Stalwart by the domain somebody signs in with
Opened
#242 Update a contact on re-import rather than skipping it
Opened
#243 Call the instance what it calls itself, on the page that matters most
Opened
#244 Publish the image the docs have been telling people to pull
Opened
#245 Cut a release once a week, and only when there is something in it
Opened
#246 Prune old images, and keep every release
Opened
#247 untranslated/untranslatable strings
Opened
#248 Translate three lists the code was rendering raw
Opened
#249 Catch the German catalogue up with what shipped after it
Opened
#250 Catch the Spanish catalogue up with what shipped after it
Opened
#251 Catch the French catalogue up with what shipped after it
Opened
#252 Catch the Dutch catalogue up with what shipped after it
Opened
#253 Catch the Brazilian Portuguese catalogue up with what shipped after it
Opened
#254 Catch the Japanese catalogue up with what shipped after it
Opened
#255 Catch the Russian catalogue up with what shipped after it
Opened
#256 Catch the Ukrainian catalogue up with what shipped after it
Opened
#257 Catch the Simplified Chinese catalogue up with what shipped after it
Opened
#258 Second pass: four dialogs that were never wrapped
Opened
#259 Third pass: the strings libraries build and views render raw
Opened
#260 keyboard focus after clicking the "select all mails" checkbox
Opened
#262 Translate the rule sentences into German
Opened
#261 Build the two rule descriptions as sentences, not fragments
Opened
#271 Keep shortcuts working after a checkbox is clicked
Opened
#263 Translate the rule sentences into Spanish
Opened
#264 Translate the rule sentences into French
Opened
#265 Translate the rule sentences into Dutch
Opened
#266 Translate the rule sentences into Brazilian Portuguese
Opened
#267 Translate the rule sentences into Japanese
Opened
#268 Translate the rule sentences into Simplified Chinese
Opened
#269 Translate the rule sentences into Russian
Opened
#270 Translate the rule sentences into Ukrainian
Opened
#272 Add seven plural forms no catalogue ever had
Opened
#273 Write the S/MIME position down
Opened
#274 Match an LDIF re-import on the entry's dn
Opened
#275 Replying to my own message addresses the reply to me
Opened
#276 Ask the folder, not just the identity list, whether a message was mine
Opened
#277 No way to delete more than one contact at a time
Opened
#278 Select contacts, and empty an address book
Opened
#279 Calendar: should a re-imported event update the one already there, rather than be skipped?
Opened
#280 Write down the plural-key gotcha, and how to tell it happened
Opened
#281 Say in CONTRIBUTING that main is protected, and that strings need nine catalogues
Opened
#282 Say near the top that latest lags main, and by how long
Opened
#283 Say why S/MIME rather than OpenPGP, and why neither is urgent
Opened
#284 Add GitHub Sponsors funding config
Opened
#285 Write down what Stalwart's x:PublicKey registry does, and withdraw the key manager
Opened
#286 Check S/MIME signatures, and remember who signed
Opened
#287 Compress the bundle in the nginx example
Opened
#288 Compress our own responses
Opened
#289 Smaller footprint: three times the tabs, a third of the image, a budget per session
Opened
#290 Appearance: option to force the theme onto HTML mail that styles itself
Opened
#291 Issue running ihasmail locally via Podman
Opened
#292 Push by subscription, and a latency fix for the compressor
Opened
#293 Follow Stalwart 0.16.21 in the mock
Opened
#294 Force the theme onto mail that styles itself
Opened
#295 Stop naming every palette in the credit line
Opened
#296 Six more palettes, taking the picker to twelve
Opened
#297 Translate the eight strings that were still falling back
Opened
#298 Catch the README and FEATURES up with the themes and 0.16.21
Opened
#299 Say 0.16.21 where the docs still said 0.16.20
Opened
#300 Raise dialogs and the composer over the mobile drawer
Opened
#301 Update a re-imported event rather than skipping it
Opened
#302 Limit CLAUDE.md to translations and verifying UI work
Opened
#303 Move the translation and UI-verification notes into CONTRIBUTING
Opened
#304 Say who owns settings.json, not just where it lives
Opened
#306 Badge the installed icon, and share to the phone rather than to Downloads
Opened
#307 Be somewhere a phone can share to
Opened
#308 Archive and mark read from the notification itself
Opened
#309 Never serve the service worker from a cache
Opened
#310 Forced theme: light panels nested inside dark painted cards survive theming
Opened
#311 Neutralise light panels nested inside dark painted cards
Opened
#312 Take hono to 4.13.7 and let Dependabot open the next one
Opened
#320 Take vitest to 4.1.11, and stop two suites leaking their spies
Opened
#316 Bump the actions group with 7 updates
Opened
#314 Bump the minor-and-patch group across 1 directory with 4 updates
Opened
#321 Point the @ alias at a relative path, and drop baseUrl
Opened
#322 Move the build to vite 8, and chunk the way rolldown wants
Opened
#318 Bump typescript from 5.9.3 to 7.0.2
Opened
#319 #319 (title not recovered)
Opened
#323 Take @hono/node-server to 2.1.1
Opened
#324 Move CI, the image and the Node types to 26 together
Opened
#325 Point the Sponsor button at the current GitHub username
Opened
#326 Render plain-text mail with its line breaks
Opened
#327 Let conversation view off mean off
Opened
#328 Give the i18n scripts a parser again
Opened
#329 Report the stale keys that are stale, and remove them
Opened
#330 Maximised composer is painted under other open composers
Opened
#331 Paint a full-screen composer above the others
Opened
#332 Let the deploy compute its version without node
Opened
#333 Send account requests to the account's own Stalwart
Opened
#334 Add Administration, starting with accounts
Opened
#335 Add Domains to Administration
Opened
#336 Filter accounts on @type, the name Stalwart uses
Opened
#337 Move Administration's section list into the folder pane
Opened
#338 Offer administration only on a device marked as your own
Opened
#339 Record what Administration proved on the live server
Opened
#340 Say every Administration refusal in the reader's language
Opened
#341 Say 0.16.22 in the README
Opened
#342 Follow Stalwart 0.16.22 in the mock
Opened
#343 Bring FEATURES and KNOWN-ISSUES up to 0.16.22
Opened
#344 Point to the companion tools near the top of the README
Opened
#346 Move the weekly release off the top of the hour
Opened
#347 Let the sidebar be resized by dragging its edge
Opened
#345 Be able to resize the side bar with the mouse
Opened
#348 Check component props for untranslated literals, and fail on a finding
Opened
#349 Translate English built from template literals in attributes
Opened
#354 Bump jsdom from 26.1.0 to 30.0.1
Opened
#355 type:"Feature" In addition to drag & drop, Move folders with a dropdown exactly like you can move a message to a folder
Opened
#357 Move a folder from its menu, with the same picker as moving mail
Opened
#350 Bump @tanstack/react-virtual from 3.14.11 to 3.14.12 in the minor-and-patch group
Opened
#351 Bump concurrently from 9.2.4 to 10.0.5
Opened
#352 Bump lucide-react from 0.477.0 to 1.45.0
Opened
#353 Bump vitest from 4.1.11 to 5.0.0
Opened
#358 Let the contact list be resized, and give the contact the rest of the page
Opened
#359 Ignore a keydown that carries no key
Opened
#360 Open Administration on a dashboard of what the role can read
Opened
#361 Add Groups to Administration
Opened
#362 Add Mailing lists to Administration
Opened
#363 Add Roles to Administration, with Stalwart's permissions in every language
Opened
#364 Add Tenants to Administration, and let an account be put in one
Opened
#365 Record the schema route working on production
Opened
#366 Find Stalwart's administration instead of asking for it
Opened
#367 Take the production server's domains out of KNOWN-ISSUES
Opened
#368 Shorter README: an introduction and links
Opened
#369 Use American English spelling
Opened
#370 Add the pull request template CONTRIBUTING.md already refers to
Opened
#371 Pin every action to a commit SHA
Opened
#372 Group the admin and calendar modules, and stop calling screenshots docs
Opened
#373 Split the extractable parts out of the mail store
Opened
#374 Group six more lib clusters, and split the mock server
Opened
#356 Dutch translation
Opened
#375 Bug(push): Duplicate notifications from SW polling/SSE & accumulative PushSubscriptions causing "too many subscriptions"
Opened
#376 bug(contacts): Contact photo upload fails with "blobIds in media is not supported" and avatars do not show in overview
Opened
#377 Bound what a request can make the server hold
Opened
#378 Keep list refreshes within the server's limits and stop repeating them
Opened
#379 Close the smaller gaps from the security review
Opened
#380 Keep the service worker's cache to the current build
Opened
#381 Render only the message rows that changed
Opened
#382 Load the composer, previews, dialogs and other sidebars on demand
Opened
#383 Ask shared accounts together, and about files only when Files opens
Opened
#384 Sync contacts by what changed, and hold fewer calendar windows
Opened
#385 Mbjboon netizen patch 1
Opened
#386 Precompress the bundle, validate the shell, and pass byte ranges on
Opened
#387 Let go of old message bodies and of exported files
Opened
#388 Save contact photos inline, and load cards so avatars show
Opened
#389 Stop duplicate push notifications and piling up subscriptions
Opened
#390 Advertise byte ranges on downloads, and record the live checks
Opened
#391 Ask before opening a shared item in a message
Opened
#392 Open conversations in one request, and start them early
Opened
#393 Fold a push's follow-up requests together
Opened
#394 Fetch the rest of a new build in the background
Opened
#395 Start at once on a device marked as your own
Opened
#396 Keep only the app page as the app page
Opened
#399 Match Shift+letter shortcuts (Shift+I, Shift+U)
Opened
#398 Shifted shortcuts actions for read and un-read not working
Opened
#400 Drag calendar events to another day in the week grid
Opened
#403 Update nl.ts
Opened
#404 Open the composer full screen, as a setting
Opened
#405 Reorder folders by dragging, with special folders first
Opened
#401 #401 (title not recovered)
Opened
#402 #402 (title not recovered)
Opened
#406 Call the app by its name in every sentence that names it
Opened
#407 Offer to keep a reply in the format the message was written in
Opened
#408 Offer the message's own format when replying
Opened
#409 Switching format keeps the original quote, not a flattened copy
Opened
#410 Replying fetches the quoted message's remote images, whatever the reader decided
Opened
#411 Quoting follows the message's own image decision
Opened
#412 A quote's allowed images bypass the image proxy
Opened
#413 Quote images through the proxy, and unproxy them on the way out
Opened
#43 #43 (no record recovered)
Opened
#47 #47 (no record recovered)
Opened
#46 #46 (no record recovered)
Opened
#45 #45 (no record recovered)
Opened
#397 #397 (no record recovered)
Opened
#317 #317 (no record recovered)
Opened
#315 #315 (no record recovered)
Opened
#313 #313 (no record recovered)
Opened
#48 #48 (no record recovered)
Opened
#305 #305 (no record recovered)
Opened
#414 Bug? All e-mails linked by a conversation are marked as unread when pressing the 'mark as unread' button when the mail is opened.
Opened
#415 Bug: When replying to a message the To: field is not filled with the Reply-To adress
Opened
#416 A reply to a self-addressed message follows its Reply-To
Opened
#417 The toolbar above an open message acts on that message