Commit Graph
1166 Commits
Author SHA1 Message Date
springmin 2c653187cc ohos: log through hilog and type the ability callback
Review against the installed HarmonyOS skills: replace the page's console
calls with hilog (public format specifiers, so values are not redacted and
the tag is stable), log the unused cleanup error, and annotate the
loadContent error parameter. The ArkTS compiler now reports no warnings.
2026-10-23 08:42:43 +08:00
springmin 0784cf06d3 ohos: request the pasteboard ACL permission for paste
Reading the system pasteboard requires ohos.permission.READ_PASTEBOARD
(system_basic, user_grant). Declare it with a localized reason, resolve the
reasonId while packing the hap (the packing tool normally does this), and let
the page ask for the permission when a paste is denied; a toast explains the
denial.

The hap now only installs with an ACL-enabled signing profile that lists the
permission; the README documents the requirement.
2026-10-23 08:42:43 +08:00
springmin 81d76c3427 ohos: derive the hap version from the workspace crate
versionName is the root Cargo.toml version and versionCode is derived from
it (major*10^7 + minor*10^5 + patch*10^3, plus the prerelease number or 999
for a release) so application-market uploads stay monotonic. The values in
AppScope/app.json5 remain only as the fallback for an IDE build that skips
the script.
2026-10-23 08:42:43 +08:00
springmin f163107e29 ohos: default to com.flectar.mail
Use the project's bundle name on OpenHarmony too: the Flatpak app id, the
macOS/iOS bundle identifier and the Android applicationId are all
com.flectar.mail. Document the AGC release-signing environment
(hap-sign-tool with the release certificate and profile) and keep BUNDLE=
for signing material that was issued for another name.
2026-10-23 08:42:43 +08:00
springmin eefa2daae7 ios: pass the notification publisher in the launch context
The new PlatformContext field broke the iOS launch context (CI lint iOS:
missing field notification_publisher). iOS keeps the default no-op publisher
until it gains a notification backend.
2026-10-23 08:42:43 +08:00
springmin 4b510307f4 ohos: wheel scrolling, notification permission timing, asset recovery
- Register the XComponent UI input callback for axis events and translate
  wheel/touchpad deltas into Slint's PointerScrolled (50 logical pixels per
  wheel notch, the same step the desktop backend uses), so Slint flickables
  scroll under the mouse without application-side changes.
- Request notification permission from EntryAbility after loadContent: the
  page's aboutToAppear runs too early, the system rejects the request with
  1600013 and never shows the prompt. Publishing logs the outcome and the
  failure code through hilog.
- When OH_Asset_Add fails with ASSET_CRYPTO_ERROR (a stale row from an
  earlier signing identity, for example after reinstalling the hap), remove
  the alias and retry: deletion does not need the old secret, so sign-in and
  reconnect recover instead of failing with 'asset add failed: 24000009'.
- Document wheel input and notification behaviour in platform/ohos/README,
  and restore the notification_publisher and email_font_dir rows in the
  PlatformContext contract table.
2026-10-23 08:42:43 +08:00
springmin 8861d4b7f2 ohos: add the OpenHarmony platform host
Tier-3 community port (maintainer: springmin), rebased onto the merged
document-provider abstraction (#84) and the opener seam (#80).

- platform/ohos: Slint backend (XComponent window adapter, software renderer
  with the experimental femtovg/wgpu path, input/IME, clipboard, system
  fonts), the NAPI cdylib that builds a PlatformContext (app-private paths,
  DocumentProvider over the ArkTS pickers, Asset Store credential store,
  loopback OAuth broker, external URL opener, notification publisher) and
  calls flectar_mail::run, the demo crate, the ArkTS shell and the build and
  packaging scripts (bundle name configurable, defaults to
  com.flectar.mail_ohos).
- src/platform/ohos.rs: PDFium directory, renderer name, thread priority,
  preview lifecycle, email font directory; OpenHarmony stays under the
  mobile capability alias.
- patches/fontique + crates/fontique: the Fontconfig opt-out as a patch queue
  applied by the platform/ohos workspace, verified from quality.yml.
- .github/workflows/ohos.yml: manually dispatched tier-3 workflow, unsigned by
  default, signing material only from the FLECTAR_OHOS_* secrets.
- src/documents.rs: run_request blocks the calling thread on mobile hosts;
  the picker covers the window, and keeping the presentation thread idle is
  what OpenHarmony needs (verified on device; desktop keeps the runtime
  request for the native dialog).
- The email renderer and the compose editor load platform::email_font_dir()
  and the Han fallback, so CJK mail bodies and composed text render with the
  platform fonts.
- New-mail notifications: a publisher seam fed by CoreEvent::MailNew; the host
  publishes through @kit.NotificationKit.
2026-10-23 08:42:42 +08:00
Tomás Romero d6e5382195 fix: record POP3 mail the account already had as matched 2026-10-23 02:22:44 +02:00
Tomás Romero 2b5490fecc fix: undo IMAP moves that already reached the server 2026-10-23 01:17:47 +02:00
Tomás Romero 3e079b797a Merge pull request #113 from flectar/iamdarkle/pop3-client
feat: add a POP3 client
2026-10-23 01:02:18 +02:00
Tomás Romero fc0d1b30a2 Merge pull request #112 from flectar/iamdarkle/unencrypted-connections
feat: allow unencrypted IMAP and SMTP connections
2026-10-23 01:02:03 +02:00
Tomás Romero d975475120 Merge pull request #110 from flectar/iamdarkle/account-model
refactor: separate account protocols from providers
2026-10-23 01:01:42 +02:00
Tomás Romero 91a5f80d3e fix: keep account form buttons inside the dialog on phones 2026-10-22 23:45:20 +02:00
Tomás Romero f909398833 feat: set up POP3 accounts in the app 2026-10-22 23:29:48 +02:00
Tomás Romero 0d844cbe6f fix: clean up mail files and search entries when deleting folders 2026-10-22 23:29:43 +02:00
Tomás Romero 621d1a6557 feat: snapshot and export POP3 mail 2026-10-22 23:29:43 +02:00
Tomás Romero 09a07a3628 feat: add POP3 accounts 2026-10-22 23:29:43 +02:00
Tomás Romero 04015ff071 test: expect opt-in contact learning in the Dovecot e2e 2026-10-22 23:28:55 +02:00
Tomás Romero f7a286ee76 feat: import accounts that connect without encryption 2026-10-22 23:28:55 +02:00
Tomás Romero 1f7c951d3d fix: keep POP3 sessions usable after an oversized header 2026-10-22 23:28:55 +02:00
Tomás Romero 84702115ac feat: add a POP3 client 2026-10-22 23:28:55 +02:00
Tomás Romero 737bca1528 feat: allow unencrypted IMAP and SMTP connections 2026-10-22 23:28:55 +02:00
Tomás Romero 2e3a8067a6 refactor: share message import between protocols 2026-10-22 23:28:55 +02:00
Tomás Romero e7bb2cad59 fix: label Gmail accounts by their protocol in Settings 2026-10-22 23:28:48 +02:00
Tomás Romero 4632c5c7f9 refactor: share mail connection setup across protocols 2026-10-22 23:28:48 +02:00
Tomás Romero c2a64d3319 fix: restore JMAP mailbox membership when undoing a move 2026-10-22 23:28:48 +02:00
Tomás Romero 0360670464 refactor: store account protocols and connection security explicitly 2026-10-22 23:28:48 +02:00
Tomás Romero 3611765e69 refactor: store folder paths under a protocol-neutral name 2026-10-22 23:23:26 +02:00
Tomás Romero 092b8300b2 Merge pull request #111 from flectar/iamdarkle/support-for-carddav-feature-request
feat: store contacts as complete vCards
2026-10-22 21:18:05 +02:00
Lorenzo Caverzan 6c9ffcfa29 chore(l10n): add Italian translation
Translation: Mail/Flectar Mail
Language: Italian
Translate-URL: https://translate.flectar.com/projects/flectar-mail/mail/it/
2026-10-22 19:10:48 +00:00
Tomás Romero 83373aa996 chore: update screenshots 2026-10-22 20:33:18 +02:00
Tomás Romero 9193d5dc5f feat: store contacts as complete vCards 2026-10-22 20:33:17 +02:00
Tomás Romero 1a268b608e refactor: tell oversized responses apart by error type 2026-10-22 20:33:17 +02:00
Yusuke Miyajima 428643b685 chore(l10n): add Japanese translation
Translation: Mail/Flectar Mail
Language: Japanese
Translate-URL: https://translate.flectar.com/projects/flectar-mail/mail/ja/
2026-10-22 06:19:13 +00:00
Tomás Romero 3f269e8987 Merge pull request #98 from flectar/fix/tabs-revisit
feat: redesign the tab strip, switch profiles and fix tab state
2026-10-21 23:15:11 +02:00
neomodeandClaude Opus 5 15c6c0c256 feat: add a setting for the default download location
Attachment and file downloads always opened the folder the platform
suggests, with no way to change it (#71). The save dialog is built in a
single place, `DocumentDialog::file_dialog`, which never called
`set_directory`.

Settings → General now carries a Download location card to pick a folder
or reset to the platform default. The stored path is resolved when a
download is saved, not when the path is stored: a location can become
unavailable later, such as an unmounted network share, so a download
falls back to the platform default instead of failing.

The setting covers mail attachments and the Files view, which share
`DocumentProvider::export`. Import dialogs keep the platform default,
since a download location does not describe where files are read from.

Tests cover path resolution (empty, missing, a file instead of a
directory, and a usable directory), the dialog built from the setting,
and that settings blobs written before this field still load.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-21 20:28:24 +02:00
Tomás Romero a5246b3ac1 chore: update screenshots 2026-10-21 19:55:36 +02:00
Tomás Romero 0b56cc0694 fix: keep the OpenPGP reader below the tab strip 2026-10-21 19:55:32 +02:00
Tomás Romero 1ecfd6f4e9 fix: draw one divider beside the Minimal mail sidebar 2026-10-21 19:55:30 +02:00
Tomás Romero 6cf9bc3ad5 feat: focus the mail view on a profile 2026-10-21 19:55:28 +02:00
Tomás Romero 4a246500d3 fix: rework the profile picker and editor 2026-10-21 19:55:26 +02:00
Tomás Romero a9088306ae feat: curve the active tab into the content 2026-10-21 19:55:24 +02:00
Tomás Romero 2432c4efef fix: line the contact toolbar up with the list 2026-10-21 19:55:22 +02:00
Tomás Romero 711669fb3d feat: reopen and close tabs from the tab menu 2026-10-21 02:10:14 +02:00
Tomás Romero c8e19aa9e3 fix: keep each tab's settings, scroll and open message 2026-10-21 02:10:09 +02:00
Tomás Romero 6b5337cba4 feat: redesign the tab strip 2026-10-21 02:10:03 +02:00
Tomás Romero f14df7f857 fix: refresh launch at login whenever settings opens 2026-10-21 02:09:55 +02:00
Tomás Romero 3400f02acb fix: discard unsaved theme edits when settings closes 2026-10-21 02:09:50 +02:00
Tomás Romero 9edbaee030 fix: keep folder changes in the mailbox they were made in 2026-10-21 02:09:32 +02:00
Tomás Romero 1852742742 fix: refresh every loaded mail row 2026-10-21 02:09:32 +02:00