aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* refactor(sdk): stop allocating borrowed API argumentssaturneric2026-09-1413-99/+108
| | | | | | | | - return static module identity strings without duplicating them - remove unnecessary DUP allocations from SDK registration and calls - convert temporary Qt strings directly to UTF-8 API arguments - preserve ownership for transferred command execution contexts - avoid leaks now that SDK arguments are borrowed
* feat(modules): add single-symbol module bootstrap APIsaturneric2026-09-145-6/+179
| | | | | | | | - define versioned host and module API bootstrap tables - adapt classic module lifecycle functions to the new API - validate host ABI compatibility before exposing modules - migrate email, GnuPG, key server, and version modules - retain legacy metadata and event handling compatibility
* feat(module): expose SDK ABI version metadatasaturneric2026-09-143-1/+16
| | | | | | | - add the SDK ABI version export to module declarations and definitions - terminate allocated buffers safely for C-string consumers - return null when SDK buffer allocation fails - document the non-secure behavior of Secure helper names
* refactor(email): migrate to list-based GPG APIssaturneric2026-09-142-51/+60
| | | | | | - replace raw recipient and address arrays with SDK list handles - use borrowed accessors with centralized list release - update key lookup rendering to consume key brief lists safely
* fix(email): free verification error stringsaturneric2026-09-141-0/+6
| | | | | - release error_string on successful region verification - prevent a per-region memory leak confirmed by ASan
* fix(network): use explicit UTF-8 user agent conversionsaturneric2026-09-142-2/+2
| | | | | | - replace the undefined UDUP conversion in key server requests - construct user agent strings with QString::fromUtf8 - keep probe and VKS request headers consistent
* fix(gpg): release gathered component datasaturneric2026-09-141-4/+10
| | | | | | - use CharArrayToQStringList to free the component array and strings - duplicate component JSON before parsing to release caller-owned data - prevent leaks during repeated GnuPG information gathering
* test(imap): cover folder status validationsaturneric2026-09-143-9/+153
| | | | | | | | - add tests for STATUS-based folder validation without fetching messages - verify listing validators detect mailbox recreation and message changes - cover unknown folders and optional mod-sequence handling - extend the fake IMAP server with STATUS and UIDVALIDITY support - reformat affected corpus test expressions consistently
* feat(email): add validated folder listing cachesaturneric2026-09-148-35/+443
| | | | | | | | | - cache email folders and message pages across dialog reopenings - restore the last account and folder for faster navigation - validate cached listings with IMAP STATUS before reuse - invalidate stale pages when mailbox validators change - register folder validator types for queued worker signals - apply formatting cleanup in email sources
* refactor(email): reposition imap progress indicatorssaturneric2026-09-141-12/+20
| | | | | | | - move the main progress bar into the action row near its related buttons - resize the main indicator for improved visibility during operations - center a compact loading bar within the empty-state pane - remove the former full-width header progress bar layout
* test(email): cover encrypted messages and reply renderingsaturneric2026-09-141-0/+177
| | | | | | | - verify ciphertext discovery in direct and nested MIME structures - cover decryption verdicts for secret, public-only, hidden, and unresolved recipients - test subject-based tab titles, sanitization, elision, and empty fallbacks - validate localized reply attribution and RFC 5322 forward dates
* fix(email): show loading state before declaring folders emptysaturneric2026-09-142-0/+59
| | | | | | | - add an indeterminate loading pane for empty folders being fetched - preserve cached messages while refresh operations are in progress - track busy status and descriptive loading text for the left pane - apply theme colors to the loading label
* feat(email): show accurate decryption capabilitysaturneric2026-09-142-9/+123
| | | | | | | - inspect encrypted recipient keys instead of relying on message addresses - distinguish readable, unreadable, and unknown decryption states - refresh locked message status after keyring changes - name reply and forward tabs from their sanitized subjects
* feat(email): add encrypted recipient capability modelssaturneric2026-09-141-0/+43
| | | | | | - represent message encryption recipients by key and subkey identity - track resolved key metadata, secret key availability, and hidden recipients - add verdict types for determining whether a message can be opened
* feat(email): add message metadata helperssaturneric2026-09-142-5/+135
| | | | | | | | - detect encrypted ciphertext parts in nested MIME structures - describe whether available recipients can decrypt messages - sanitize and truncate subjects for tab titles - format quoted dates according to header and locale conventions - translate reply attribution text for localized readers
* feat(email): update localized email messagessaturneric2026-09-139-3710/+6775
| | | | | | | | | - add translations for network errors and signature details - update account, message, recipient, and security wording - refresh source locations after email code changes - mark obsolete translations as vanished across locales - add German, Spanish, French, Italian, Polish, Russian, and Chinese translations for new messages
* i18n(key-server): complete Russian translationssaturneric2026-09-131-45/+65
| | | | | | | - translate key server synchronization messages - localize key server settings and validation dialogs - translate key search prompts, statuses, and errors - remove unfinished markers from completed entries
* refactor(email): inline translation callssaturneric2026-09-131-67/+112
| | | | | | - replace the local Tr helper with explicit Qt translation calls - preserve the EMailTransport translation context - keep translated strings and formatting unchanged
* style(i18n): normalize Russian translation XMLsaturneric2026-09-134-592/+723
| | | | | | - add the Russian locale declaration and TS doctype - normalize XML declaration, indentation, and empty tag formatting - add a trailing newline to the translation file
* style(email): clarify email UI messagessaturneric2026-09-139-48/+50
| | | | | | | - improve wording for security, validation, and network messages - make recipient and signature explanations more precise - standardize capitalization and punctuation in user-facing text - apply minor formatting cleanup to affected code 񟿿
* feat(email): unify message verification resultssaturneric2026-09-136-76/+736
| | | | | | | | - add end-to-end tests for one verification result across all surfaces - cover per-region verdict aggregation, nesting, and engine failures - verify exact bytes, staleness anchors, payload encoding, and findings - update crypto tests to use the unified verification API - fix EMailHelper filename references and add the new test target
* feat(email): add detailed verification reasonssaturneric2026-09-131-7/+115
| | | | | | | - show specific signature outcomes on result cards - include rewritten-content guidance for bad signatures - reuse verification descriptions for decrypt-and-verify results - propagate aggregated verification data through the decrypt flow
* refactor(email): centralize verification result handlingsaturneric2026-09-132-61/+164
| | | | | | | | | - route verification requests through the host-owned crypto operation - cache and validate one result for badges, attachments, and security details - avoid automatic verification when opening tabs or refreshing keyrings - invalidate pending and cached results when message data changes - distinguish inconclusive checks from bad or unchecked signatures - prevent removing locked message parts after selection changes
* feat(email): unify signature verificationsaturneric2026-09-132-181/+315
| | | | | | | | - verify all MIME signature regions in a single pass - preserve exact signed byte ranges without canonicalization - expose per-region verdicts, reports, and aggregated status - retain message metadata for nested and ordinary MIME messages - record malformed or unverifiable regions instead of skipping them
* fix(email): offer signature verification before retriessaturneric2026-09-131-5/+12
| | | | | | - Show verification actions whenever message regions are available - Label the initial action "Verify Signatures" instead of "Verify Again" - Avoid implying verification already occurred when it has not
* feat(email): unify verification result reportingsaturneric2026-09-131-70/+55
| | | | | | | - derive status from the aggregated verification verdict - reuse verification results across email and decrypt flows - include structured verification payloads in callbacks - prevent duplicate attachment metadata during decrypt verification
* feat(email): add unified verification resultssaturneric2026-09-131-1/+85
| | | | | | | - distinguish verification errors from invalid signatures - track per-region execution status and verdict details - store aggregate results and source fingerprints for consumers - preserve report metadata from the verification pass
* fix(email): anchor verification to source bytessaturneric2026-09-132-18/+148
| | | | | | | | - aggregate badge state from candidate signature regions - preserve verification errors instead of treating them as unsigned - report canonical-byte findings from verifier verdicts - validate verification results with source length and SHA-256 - rename the email helper implementation consistently
* feat(email): add verification payload serializationsaturneric2026-09-132-0/+444
| | | | | | | - serialize verification results to versioned JSON - preserve regions, verdicts, signatures, metadata, and source anchors - decode payloads with stable enum names and validation - compare verification results semantically across round trips
* i18n(email): complete email translationssaturneric2026-09-139-6953/+8189
| | | | | | | - translate email account, IMAP, security, and sending dialogs - add strings for new signature and encryption states - translate message editing, attachment, and validation feedback - update source locations for changed email implementation lines
* build(email): hide internal module symbolssaturneric2026-09-131-0/+25
| | | | | | - set hidden visibility for the module and vmime targets - reduce exported ELF symbols to the public module ABI - preserve Windows behavior where visibility settings are inert
* test(email): cover security boundary regressionssaturneric2026-09-137-11/+1130
| | | | | | | | | | - test export risk checks and bounded regular-file reads - verify MIME transfer decoding and Content-Type parameters - cover failed crypto result cleanup and error propagation - validate failure payload preservation and security badge states - test IMAP UID fetching, size limits, quoting, and TLS pins - cover secure secret conversion and non-ASCII passwords - extend crypto stubs to model SDK failure allocations
* style(email): reformat email module codesaturneric2026-09-136-30/+25
| | | | | | - adjust spacing and line wrapping to match formatting conventions - reorder includes for consistent header organization - preserve existing behavior across email views and operations
* fix(email): use paging cursor for next pagesaturneric2026-09-131-1/+3
| | | | | - track the page position with the row sequence cursor - avoid using message UID as a reconstructed paging position
* fix(tls): preserve certificates per connectionsaturneric2026-09-134-27/+91
| | | | | | | - attach the verifier's certificate details to connection errors - prevent concurrent connections from overwriting certificate identity - bound message fetching by both server claims and an application limit - remove global certificate state clearing from IMAP and SMTP workers
* fix(email): isolate captured certificates per connectionsaturneric2026-09-132-67/+60
| | | | | | | - replace the process-global certificate slot with connection-owned state - return the recording slot from TLS setup for failure handling - pass captured state directly into each certificate verifier - clarify test coverage claims for certificate verification ordering
* style(email): format EMailSecret declarationssaturneric2026-09-132-3/+3
| | | | | - wrap the CopyFrom return type consistently - condense the move constructor initializer formatting
* fix(email): pin the certificate from the reported errorsaturneric2026-09-132-6/+12
| | | | | | - use the probe error's fingerprint and summary for certificate pinning - prevent concurrent connections from supplying the wrong certificate - pass the originating MailError through the pin offer API
* fix(email): align security badges with verificationsaturneric2026-09-132-29/+118
| | | | | | | | | - derive badge tone and wording from signature verification results - refresh security and attachment indicators after verification - distinguish unchecked, valid, mismatched, expired, and bad signatures - pass the sender address into security inspection - safely reject non-regular and oversized dropped attachments - avoid marking the message modified when all drops are refused
* feat(email): add secure SDK string conversionsaturneric2026-09-132-1/+29
| | | | | | - wipe the temporary UTF-8 buffer after copying its contents - provide NUL-terminated copies using the SDK secure allocator - avoid extra unwiped QString conversion copies for SDK calls
* fix(email): clarify signature security statussaturneric2026-09-132-15/+68
| | | | | | | - mark bad signatures as dangerous instead of mildly valid - show explicit labels for revoked and mismatched signatures - explain when the signer differs from the message sender - align signature details with message badge state and tone
* fix(imap): harden message fetching and searchsaturneric2026-09-132-20/+177
| | | | | | | | - fetch messages by stable UID instead of mutable sequence number - preserve sequence numbers separately for pagination cursors - reject unsafe search values and escape IMAP quoted strings - bound fetched message output to prevent excessive memory use - report messages removed from the folder with a clear error
* fix(email): preserve secure credential storagesaturneric2026-09-132-4/+14
| | | | | | - accept EMailSecret without converting credentials to QString - allocate a secure buffer before persisting the secret - handle secure buffer allocation failures explicitly
* fix(email): protect staged passwordssaturneric2026-09-132-13/+40
| | | | | | | - store pending credentials in erasable EMailSecret instances - avoid refilling password fields with staged plaintext copies - wipe staged secrets on every settings exit path - reuse staged secrets during transport tests without extra copies
* fix(email): bound file reads before GUI handoffsaturneric2026-09-133-51/+129
| | | | | | | - centralize regular-file, size, and readability checks - read email files on the module thread with a hard limit - preserve raw bytes for signatures and attachments - reject oversized or special files with clear errors
* fix(email): marshal widget access to the GUI threadsaturneric2026-09-131-88/+112
| | | | | | | - run dialogs and widget reads through a blocking GUI helper - keep message inspection on the module thread before confirmation - protect cursor, document, tab, and warning updates from thread violations - preserve the original document data when encryption fails
* fix(email): preserve crypto failure detailssaturneric2026-09-131-11/+80
| | | | | | | - reclaim SDK result structs and associated buffers on failures - include engine-provided error messages in operation failures - decode signed and encrypted MIME parts before processing - reclaim failed verification results while continuing region checks
* feat(email): add security badge state enumssaturneric2026-09-131-0/+42
| | | | | | - define detailed states for malformed, encrypted, and signed messages - distinguish verified, expired, unknown, mismatched, and bad signatures - add badge tones to separate muted, good, warning, and danger outcomes
* feat(email): add security badge preflight logicsaturneric2026-09-132-0/+258
| | | | | | | | - classify signature validity, identity mismatches, and protection states - derive the worst security badge and its display tone - add export checks that require confirmation for risks - preserve documents after failed operations - decode MIME part content before cryptographic processing
* feat(email): preserve decrypted unsigned messagessaturneric2026-09-135-29/+501
| | | | | | | | | - distinguish unsigned, unreadable, and signed plaintext - verify only top-level multipart/signed messages - merge verification metadata without duplicating content - retain decrypted headers, body, and attachments - report unsigned messages as successfully decrypted - add coverage for decrypt-and-verify planning and metadata merging