Commit Graph
100 Commits
Author SHA1 Message Date
Linus Rath c5b1731a63 feat: add attachment position setting in email settings
- Introduced a new setting for attachment position in email settings, allowing users to choose between displaying attachments beside the sender or below the header.
- Updated the settings store to include the new attachment position type and default value.
- Added translations for the new setting in multiple languages (de, en, es, fr, it, ja, nl, pt).
2026-03-19 21:14:18 +01:00
Linus Rath 40cf164df3 fix: update calendar agenda view to auto-scroll to today's events and ensure today's date is included in the groups 2026-03-19 19:25:34 +01:00
Linus Rath ff56245db8 fix: improve account restoration logic and handle stale accounts in auth store 2026-03-19 19:21:08 +01:00
Linus Rath 9b4de4d152 fix: remove claude directory from .dockerignore and .gitignore 2026-03-19 19:06:31 +01:00
Linus Rath 0c9e60db8b fix: update flatted to 3.4.2 2026-03-19 19:01:40 +01:00
Linus Rath e7e07a38d7 fix: use native ARM runners instead of QEMU for Docker builds 2026-03-19 18:57:17 +01:00
Linus Rath a009e5ae32 fix: enhance health check functionality with detailed memory diagnostics and stable liveness probe 2026-03-19 18:50:59 +01:00
Linus Rath 44896dee3e chore: bump version to 1.4.4 2026-03-19 18:12:16 +01:00
Linus Rath a5c5fa6669 fix: improve mailbox role management by ensuring roles are cleared from all mailboxes when reassigning 2026-03-19 18:00:09 +01:00
Linus Rath 95af61c4be fix: enhance account management by updating existing accounts and improving session handling 2026-03-19 17:47:18 +01:00
Linus Rath 34e495dde3 Fix email signature rendering 2026-03-19 17:20:39 +01:00
Linus Rath 0b721661e9 Fix logout redirects and unauthenticated home rendering 2026-03-19 17:01:27 +01:00
Linus Rath 9fa851a674 feat: implement CalDAV discovery API and enhance calendar ID handling 2026-03-19 16:56:00 +01:00
Linus Rath 41f91244d9 Fix duplicate calendar edits and prevent double-save submissions 2026-03-19 14:40:16 +01:00
Linus Rath 77514bd054 fix: RFC 9553 compliance for contacts (birthday, addresses) 2026-03-19 13:33:53 +01:00
Linus Rath fb8c9db716 chore: bump version to 1.4.2 2026-03-19 01:38:23 +01:00
Linus Rath 2793d4b4af feat: add calendar task list view and shared calendar grouping
- Add TaskListView component for displaying calendar tasks
- Group shared calendars by account in sidebar panel
- Add task view toggle to calendar toolbar
- Extend calendar store with task-related state
2026-03-19 01:21:43 +01:00
Linus Rath 96c2ee9e13 chore: remove scripts already moved to local-data 2026-03-19 01:21:36 +01:00
Linus Rath af115e3245 feat: add address book directories with drag-and-drop and editor picker
- Show address books in sidebar organized by personal directories and
  shared accounts, replacing the flat shared accounts list
- Make contact list items draggable with multi-select support using
  native HTML5 drag-and-drop (application/x-contact-ids MIME type)
- Add drop targets on sidebar address book items with visual feedback
- Add moveContactToAddressBook store method supporting same-account
  updates and cross-account create+delete moves
- Add address book picker dropdown in contact create/edit form
- Update ContactCategory type from sharedAccountId to addressBookId
- Add address_books translations to all 8 locales
- Fix contact-list-item tests for new selectedContactIds prop
2026-03-19 01:13:34 +01:00
Linus Rath 84abfe79dd feat: update changelog for version 1.4.0 with new features and fixes
feat: update README.md to reflect version 1.4.0 and new features
chore: bump version to 1.4.0 in VERSION and package files
feat: implement identity refresh behavior in identity management
feat: add TNEF support for Outlook emails and archive organization modes
feat: enhance UI with configurable sidebar apps and branding options
refactor: remove unused addon-plugin-theme-concept.md file
2026-03-18 00:18:48 +01:00
Linus Rath 8a92d53125 feat: improve calendar view mode handling with validation and defaulting 2026-03-17 23:56:10 +01:00
Linus Rath 6fe4a98b02 feat: add sidebar apps management feature
- Implemented sidebar apps functionality including adding, editing, and deleting apps.
- Created a modal for managing sidebar apps with forms for inputting app details.
- Added icon picker component for selecting app icons.
- Introduced inline app view for displaying apps within the sidebar.
- Updated translations for new sidebar apps feature in Dutch and Portuguese.
- Enhanced settings store to manage sidebar apps state.
- Added hooks for managing sidebar apps state and modal visibility.
2026-03-17 23:02:26 +01:00
Linus Rath 3186198fad feat: enhance identity management with identity refresh functionality and improved modal behavior 2026-03-17 21:50:35 +01:00
Linus Rath 5c933a595f feat: implement time format preference across calendar and email components 2026-03-17 21:39:59 +01:00
Linus Rath 828ad4df72 Remove unused files: ROADMAP.md and TNEF test outputs 2026-03-17 21:26:11 +01:00
Linus Rath f720cb3ef8 feat: add TNEF (winmail.dat) support for email attachments and parsing 2026-03-17 21:22:43 +01:00
Linus Rath 818a02428b Merge branch 'dev' of https://github.com/bulwarkmail/webmail into dev 2026-03-17 20:54:02 +01:00
Linus Rath 1f7cd61fc7 feat: implement email archiving options and reorganize functionality 2026-03-17 20:37:57 +01:00
Linus Rath 070eeeecee feat: add translation key collection utility and update test for completeness 2026-03-17 20:20:44 +01:00
Linus Rath de35d1d8e8 feat: add S/MIME store for managing key records and public certificates
- Implemented Zustand store for S/MIME functionality, including state management for key records and public certificates.
- Added methods for importing PKCS#12 files and public certificates, binding identities to keys, and managing unlocked keys.
- Introduced session storage for remembering unlocked keys across sessions.
- Enhanced error handling and loading states during data operations.
2026-03-17 20:14:01 +01:00
Linus Rath 7c5785e9e8 feat: enhance branding options with custom favicon and logos in configuration 2026-03-17 15:25:06 +01:00
Linus Rath 54f4d37595 fix: update author information in package.json 2026-03-17 15:14:06 +01:00
Linus Rath 71cd826c6f fix: update vendor label in Dockerfile to correct value 2026-03-17 15:12:37 +01:00
Linus Rath e96b9a72e7 fix: update page title to use appName from configuration 2026-03-17 15:07:50 +01:00
Linus Rath ce4ebb3dc2 fix: correct formatting of HOSTNAME environment variable in docker-compose.yml 2026-03-17 15:00:34 +01:00
Linus Rath 6680b65863 feat: add server listen address configuration to .env and README 2026-03-17 14:58:12 +01:00
Linus Rath 6e78f2a09e feat: add 'Always Light Mode' setting for email display 2026-03-17 00:56:34 +01:00
Linus Rath a834528bc1 chore: update version to 1.3.0 and enhance changelog with new features and fixes 2026-03-16 22:58:13 +01:00
Linus Rath 7cf79d8775 fix: resolve test failures across translations, contact form, and vitest config
- Add 18 missing translation keys to all non-English locales (de, es, fr, it, ja, nl, pt) with English fallback values
- Fix contact form submit test targeting prefix input instead of given_name
- Exclude .next/ build output from vitest to prevent Playwright spec conflicts
2026-03-16 22:51:49 +01:00
Linus Rath dc3e5b7706 fix: adjust text wrapping for email subject in EmailViewer and ThreadConversationView components 2026-03-16 22:22:05 +01:00
Linus Rath d86d109725 feat: enhance EventModal with alert and recurrence labels, add view/edit mode toggle 2026-03-16 22:17:59 +01:00
Linus Rath 0f5d030d5f feat: calendar invitations RSVP, trust assessment, file preview 2026-03-16 22:00:11 +01:00
Linus Rath cde1d61d02 fix: correct all-day multi-day event rendering 2026-03-16 17:57:56 +01:00
Linus Rath 4b262a2746 feat: update LICENSE to include fork notice and improve formatting 2026-03-16 17:42:55 +01:00
Linus Rath 119bfed1eb feat: update licensing information to AGPL-3.0-only and add NOTICE file for fork lineage 2026-03-16 16:46:45 +01:00
Linus Rath 3cd123778e feat: add keyboard shortcuts button and show/hide toolbar labels option
- Implemented a keyboard shortcuts button in the navigation rail.
- Added a setting to toggle the visibility of toolbar labels in appearance settings.
- Updated the email context menu to streamline actions for archiving, deleting, and marking emails as read/unread.
- Enhanced the email viewer with improved spam handling and read state toggling.
- Updated localization files to include new strings for keyboard shortcuts and toolbar labels.
2026-03-16 16:19:51 +01:00
Linus Rath f2f3e1d85c feat: update README with enhanced descriptions and images for various features 2026-03-16 15:43:47 +01:00
Linus Rath f7a38a22ee Refactor code structure for improved readability and maintainability 2026-03-16 15:40:46 +01:00
Linus Rath 89488e6fc9 fix: add missing newline in README for better formatting 2026-03-16 15:10:36 +01:00
Linus Rath 7af16f2de0 feat: enhance README with new features and improvements in functionality 2026-03-16 15:07:11 +01:00
Linus Rath 800499f54a feat: implement sidebar resizing functionality across calendar, contacts, and settings pages 2026-03-16 02:32:22 +01:00
Linus Rath e02477323f feat: add contacts settings with import/export functionality and update UI components 2026-03-16 02:18:22 +01:00
Linus Rath 37b0bacccb feat: enhance settings page with tab icons and grouping
feat(files-settings): improve file settings preview and layout
feat(locales): update translations for tab groups and add preview labels
2026-03-16 02:10:29 +01:00
Linus Rath 716db8d003 feat: add JMAP FileNode file storage backend and file settings
- Implement JMAP FileNode client methods (get, query, list, create,
  update, destroy, copy) with Stalwart-compatible flat name encoding
- Add FileNode/FileNodeFilter types to JMAP type definitions
- Create file-store with Zustand for file management state (navigate,
  upload, delete, rename, move, cut/copy/paste, undo, favorites)
- Add folder tree sidebar component for sidebar navigation layout
- Add files settings dialog and settings page component with options
  for view mode, sort, icons, thumbnails, hidden files, folder layout
- Update files page and file browser to support JMAP FileNode backend
  alongside WebDAV, with folder layout switching and settings integration
- Add settings tab for files configuration in the settings page
- Add translation keys for file settings, calendar subscriptions,
  identity deletion, contact deletion, email navigation, and
  reconnection messages across all 8 locales
- Change WebDAV file storage to File storage in availability messages
- Enhance translations test to verify source-referenced keys exist in
  the en locale
- Fix duplicate JSX attribute in folder-tree-sidebar
2026-03-16 01:05:59 +01:00
Linus Rath 73d6e581b7 feat(email-viewer): add security tooltips, contact actions, and scroll fix 2026-03-15 18:52:57 +01:00
Linus Rath f4d34477a6 feat(email-viewer): improve message details and contact sidebar
- Show sender name and email in message details From field
- Add "Add to contacts" button in contact sidebar for unknown senders
- Add info tooltips explaining SPF, DKIM, DMARC, and Spam Score
- Use portal-based tooltips to prevent overflow clipping
- Move desktop sender info into scrollable area to fix scroll when details expanded
2026-03-15 18:52:01 +01:00
Linus Rath 26b38982ac fix: adjust email content area layout for better responsiveness 2026-03-15 18:15:33 +01:00
Linus Rath 9bffb72338 feat: iframe-based email rendering with smart dark mode support
- Render HTML emails in sandboxed iframe (srcdoc) for true-to-life
  display with complete CSS isolation from app styles
- Detect emails with native dark mode (prefers-color-scheme) and
  let them handle their own theming
- Apply CSS filter inversion for dark mode on emails without native
  support, with re-inversion for images/media to preserve appearance
- Add per-email light/dark toggle button (Sun/Moon icon) next to
  email size, resets on email change (not persisted)
- Fix HTML reply/forward to include original email HTML content
- Send replies as multipart/alternative (text + HTML)
- Add drag-and-drop file attachments with overlay indicator
- Auto-resize composer textarea to avoid double scrolling
- Pin attachments section and bottom toolbar outside scroll area
- Collapsible attachment list (show 3, toggle for more)
2026-03-15 17:42:41 +01:00
Linus Rath 0965fbc7c1 feat: add iCal/webcal subscription support to calendar view
- Add subscribe option to toolbar import dropdown menu
- Add right-click context menu on subscribed calendars (refresh/unsubscribe)
- Show refresh spinner on subscription calendars during sync
- Support webcal:// protocol URLs (auto-converts to https://)
- Update i18n strings with webcal:// references
2026-03-15 16:29:14 +01:00
Linus Rath d6cf195bfc Fix nested button hydration error in sidebar mailbox tree 2026-03-15 16:13:06 +01:00
Linus Rath 0080d27b3e fix: sync identity stores and append signatures to outgoing emails (#15)
- Add syncIdentities() to auth store to propagate identity changes from
  identity store, fixing stale data that caused save failures and duplicates
- Call syncIdentities() after every create, update, and delete in the
  identity manager modal
- Switch email composer to read identities from identity store for
  consistency with the rest of the app
- Append identity text signature (with RFC 3676 separator) to email body
  when sending from the composer and quick reply paths
- Add tests for syncIdentities and signature appending logic
2026-03-15 16:07:45 +01:00
Linus Rath 5643170220 fix: handle non-string anniversary dates in contact detail
JMAP servers can return PartialDate objects for anniversary dates per RFC 9553, causing a TypeError on .startsWith(). Coerce date input and guard URI property accesses.
2026-03-15 15:56:47 +01:00
Linus Rath e87e35cc48 feat: add recursive depth calculation for mailbox tree structure 2026-03-15 15:52:23 +01:00
Linus Rath b7fa25c314 feat: implement empty folder functionality for junk and trash mailboxes with confirmation dialog 2026-03-15 15:47:58 +01:00
Linus Rath c24fabe977 feat: add unread filter functionality in mailbox sidebar 2026-03-15 15:32:34 +01:00
Linus Rath 1f1db8fac8 feat: add WebDAV file browser with auth improvements
Add a new Files section powered by WebDAV for browsing, uploading,
downloading, renaming, and deleting files and folders.

New features:
- WebDAV file browser with grid/list views and breadcrumb navigation
- File upload (drag-and-drop and button), folder creation, rename, delete
- File preview modals for images and other file types
- WebDAV proxy API route to handle authentication
- Navigation rail entry for Files (auto-hidden when WebDAV is unsupported)

Auth improvements:
- Fix premature redirects on calendar, contacts, and settings pages by
  adding explicit auth check on mount before redirecting to login
- Persist active settings tab in localStorage

Other:
- Expose getAuthHeader() and getServerUrl() on JMAPClient
- Add WebDAV store with connection testing and capability detection
- Add i18n translations for file browser in all 8 locales (de, en, es,
  fr, it, ja, nl, pt)
2026-03-15 05:24:27 +01:00
Linus Rath cb74e3bf73 feat: add mobile bottom action bar with reply and email navigation
- Move Reply, Reply All, Forward from toolbar to fixed bottom bar on mobile
- Add Next/Previous email navigation buttons to the bottom bar
- Style bottom bar to match existing NavigationRail horizontal pattern
- Add onNavigateNext/onNavigatePrev props to EmailViewer
- Wire up email list index-based navigation in page.tsx
- Add padding to email content area to prevent bottom bar overlap
2026-03-15 02:23:09 +01:00
Linus Rath 05f02402e3 feat: add move-to mailbox functionality in email viewer 2026-03-15 00:53:19 +01:00
Linus Rath 5accf0a86c feat: enhance contact group management with uid normalization and improved member handling 2026-03-15 00:40:32 +01:00
Linus Rath 8c5e3ee240 feat: enhance configuration fetching and implement retry logic for API requests 2026-03-15 00:21:59 +01:00
Linus Rath caed067cda feat: implement calendar management features including create, update, and delete functionalities 2026-03-15 00:14:58 +01:00
Linus Rath f149501dff feat: auto-fetch full email content when an email is auto-selected 2026-03-14 21:47:50 +01:00
Linus RathandGitHub 596ebecfbb Update logo file names in README.md 2026-03-14 01:04:05 +01:00
Linus Rath d49dcb52e6 feat: add .env.dev.example for development configuration 2026-03-13 19:20:28 +01:00
Linus Rath 81c0a8a971 chore: include .env.dev.example in .dockerignore 2026-03-13 19:18:55 +01:00
Linus Rath 56f4195ab5 chore: update dependencies in changelog for version 1.2.3 2026-03-13 15:05:13 +01:00
Linus Rath 099434a125 chore: release v1.2.3
Bump version to 1.2.3 across package.json, VERSION, README badge,
and login page. Add changelog entry for features and fixes since v1.1.2.
2026-03-13 14:48:32 +01:00
Linus Rath 0cd928d1fe URL-encode spaces in logo srcset paths for GitHub compatibility 2026-03-13 14:36:02 +01:00
Linus Rath 04e8b023de Fix logo dark/light mode: white text for dark bg, dark text for light bg 2026-03-13 14:34:22 +01:00
Linus Rath ecfb197c82 Swap dark/light mode logo sources to match actual file contents 2026-03-13 14:33:00 +01:00
Linus Rath 9438cf75ab Update logos to use lettering variants with light/dark mode support 2026-03-13 14:30:39 +01:00
Linus Rath 091c10d828 Add branding assets, update logos in README/CONTRIBUTING/ROADMAP, replace favicon with SVG icon 2026-03-13 14:27:35 +01:00
Linus Rath 02808fa4c3 docs: update contributing guidelines and enhance README formatting 2026-03-13 14:12:20 +01:00
Linus Rath 82a790de0f docs: rework README with logo, improved layout, and updated features 2026-03-13 13:17:43 +01:00
Linus Rath e85d0b946e chore: rename JMAP Webmail to Bulwark Webmail and update all URLs 2026-03-13 13:14:08 +01:00
Linus Rath 02344d169c feat: expand addon system documentation with rebuild requirements and runtime loading strategy 2026-03-13 03:16:07 +01:00
Linus Rath 1267efa307 docs: add RFC specifications (txt + pdf) organized by category (core, mail, contacts, calendar, sieve, quotas, auth) 2026-03-13 02:51:07 +01:00
Linus Rath 5a679275ca feat: enhance JMAP server verification with multiple endpoint checks and improved response handling 2026-03-13 01:19:16 +01:00
Linus Rath 25f0088957 feat: add JMAP server URL validation and improve user prompts in setup script 2026-03-13 01:14:56 +01:00
Linus Rath 18485951c7 refactor: rework setup.sh for better UX and terminal compatibility
- Replace all Unicode symbols (─, █, ░, ●, ✓, ✗, ➜, braille spinners)
  with ASCII-safe equivalents that render correctly when piped via
  curl | bash
- Add contextual TIP/NOTE hints to every input field explaining what
  each setting does and showing examples
- Redesign progress bar to show labeled step names
  (Server > Auth > Security > Logging > Branding > Deploy > Confirm)
  with color-coded completion state
- Replace BG_BLUE block header with ASCII box() function
- Add section headers with subtitles to each step
- Add deployment method recommendations and requirement notes
- Add "Next steps" checklist to completion screen
- Show existing .env.local detection notice on welcome screen
- Use dotted-line separators in summary for cleaner alignment
- Fix shell injection vulnerability: replace eval with printf -v
  in prompt_value and prompt_yesno helpers
2026-03-13 01:08:47 +01:00
Linus Rath 5e2329b55f fix: handle non-interactive terminal scenarios in setup script 2026-03-13 00:58:06 +01:00
Linus Rath 46a80f3773 fix: reopen stdin from terminal when script is piped 2026-03-13 00:48:19 +01:00
Linus Rath 21e6fd9078 feat: reopen stdin from terminal when script is piped 2026-03-13 00:45:01 +01:00
Linus Rath 2a48740ebd fix: ensure SCRIPT_DIR assignment is not affected by unset variables 2026-03-13 00:43:53 +01:00
Linus Rath 8509550812 refactor: simplify SCRIPT_DIR assignment in setup script 2026-03-13 00:42:42 +01:00
Linus Rath 60a6ede063 fix: ensure SCRIPT_DIR is set correctly in setup script 2026-03-13 00:40:06 +01:00
Linus Rath eb6e73191f feat: add dry-run option to setup script for safer configuration testing 2026-03-13 00:36:51 +01:00
Linus Rath af64c96b9f feat: add interactive setup script for JMAP Webmail configuration 2026-03-13 00:36:22 +01:00
Linus Rath b090bf6d52 feat: add support for OAuth-only login mode and update configuration handling 2026-03-12 22:05:29 +01:00
Linus Rath ae29e64197 feat: implement hover functionality for calendar events and enhance email deletion confirmation 2026-03-12 19:53:08 +01:00