Commit Graph
548 Commits
Author SHA1 Message Date
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 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 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 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 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
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
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
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
Tomás Romero 1bc087fdc0 Merge pull request #97 from flectar/iamdarkle/enhancement-import-from-various-sources-includin
Import accounts from Thunderbird and K-9 Mail
2026-10-21 01:30:14 +02:00
Tomás Romero ed48fcebed chore: update webpki crates 2026-10-21 00:46:49 +02:00
Tomás Romero 2b9402f547 feat: import accounts from other mail apps 2026-10-21 00:46:48 +02:00
Tomás Romero e10ba0b48a feat: add account import planner 2026-10-21 00:46:00 +02:00
Tomás Romero e6ff363059 fix: keep added sender addresses when editing an account 2026-10-21 00:46:00 +02:00
Tomás Romero 29ac4e11ba Merge pull request #94 from flectar/fix/android-persistent-alpha-signing
Preserve Android signing identity from alpha 8 through stable
2026-10-20 22:55:55 +02:00
Tomás Romero d5ea80b294 Merge main into Android signing branch 2026-10-20 21:19:09 +02:00
Tomás Romero eaa75d7e44 fix(android): share signing identity across all release channels 2026-10-20 21:18:42 +02:00
Tomás Romero 7efab85a92 Merge pull request #96 from flectar/iamdarkle/ui-bug-button-labels-overflow-button-borders-ins
fix: keep account button labels inside their buttons
2026-10-20 21:04:36 +02:00
Tomás Romero e5fbef1319 test: check button labels stay inside their buttons 2026-10-20 18:07:32 +02:00
Tomás Romero e7e6bc8151 fix: fit account calendar and contacts controls 2026-10-20 18:07:32 +02:00
Tomás Romero b0315f2f89 Merge pull request #95 from flectar/iamdarkle/visual-glitch-local-data-ready
fix: stop clipping text at larger desktop fonts
2026-10-20 16:47:31 +02:00
Tomás Romero d9992b8dfa test(android): exercise OAuth builds with CI signing guard 2026-10-20 15:14:33 +02:00