Commit Graph
130 Commits
Author SHA1 Message Date
Tomás Romero 63aa12e56c chore: update async-executor 2026-11-02 21:28:15 +01:00
Tomás Romero 3da1da329f chore: merge main 2026-11-02 17:09:57 +01:00
Tomás Romero ec1db861de Merge pull request #160 from flectar/iamdarkle/keyring
fix: handle a missing Linux keyring
2026-11-02 17:04:37 +01:00
Tomás Romero fe61a6a539 fix: declare local network use on macOS 2026-11-02 15:37:16 +01:00
Tomás Romero 79815c3e3e fix: update pulldown-cmark for RUSTSEC-2026-0433 2026-11-02 15:33:04 +01:00
Tomás Romero e25337ce40 chore: update the OpenHarmony lockfile 2026-11-02 15:29:03 +01:00
Tomás Romero e2842fb5ca chore: merge main 2026-11-02 15:28:31 +01:00
Tomás Romero dabdb1b87f docs: list the OpenHarmony port 2026-11-01 13:40:57 +01:00
Tomás Romero c7c633264a Merge pull request #85 from springmin/ohos-alias
ohos: add the OpenHarmony platform host
2026-11-01 02:59:31 +01:00
Tomás Romero 3ec99b3369 fix: explain why the system keyring is unavailable 2026-10-31 19:25:53 +01:00
Tomás Romero b07038b024 ohos: hide the app icon choice 2026-10-31 16:43:15 +01:00
springmin f9ace0e1b1 ohos: support multi-select in the document picker
Expose pickOpenMany on the bridge, stage selected files as one JSON result, and implement DocumentProvider::import_many so compose attachments can import several files in one picker action.
2026-10-31 09:05:32 +08:00
Tomás Romero 2ed589680e ohos: alias the picker reply type 2026-10-31 01:48:16 +01:00
Tomás Romero ec698c3e5f fix: store picked files under generated names 2026-10-31 01:35:34 +01:00
springmin 8335f7852e ohos: pass the original picker name through the attachment bridge
Carry the staged path and display name together from the ArkTS picker through the NAPI bridge. Keep the cache name random and only use the decoded original name as attachment metadata.
2026-10-31 06:50:22 +08:00
springmin 4845e4fbe4 ohos: address final platform review fixes
Keep the wheel axis step from cancelling the system scroll setting, validate present buffer stride and bounds before copying, and harden the PDFium source workflow with dispatch-only triggers, pinned actions and a checksum-verified SDK download.
2026-10-31 06:45:13 +08:00
springmin da290d3232 chore: sync the OHOS lockfile with pulldown-cmark 0.13.5
Keep the nested OpenHarmony workspace on the patched dependency version after merging the root security update.
2026-10-29 11:15:30 +08:00
springmin 5d1e7b3053 Merge remote-tracking branch 'origin/main' into ohos-alias 2026-10-29 11:03:43 +08:00
Tomás Romero ab8447ee99 Merge pull request #152 from springmin/security-pulldown-cmark
fix: update pulldown-cmark for RUSTSEC-2026-0414
2026-10-28 17:46:39 +01:00
springmin a00fcdaa48 pdfium: document the C++ runtime and compatibility layer
Ship the LLVM libc++ license, document why the OpenHarmony PDFium component bundles libc++_shared.so, and record the pinned source-build compatibility patch and CI workflow.
2026-10-28 22:43:28 +08:00
springmin 94e8470503 pdfium: cover the remaining optional pdfium-render symbols
Add compatibility entries for the annotation, catalog, font-name, page-object and text-object APIs that the pinned source no longer exports. These are not used by the preview renderer, but all dynamic bindings must resolve before the library can load.
2026-10-28 22:43:28 +08:00
springmin 349569f794 pdfium: export compatibility symbols from component builds
Define FPDF_IMPLEMENTATION before the PDFium headers so FPDF_EXPORT applies default visibility; without it the compatibility functions were compiled hidden and dlsym still failed.
2026-10-28 22:43:28 +08:00
springmin 0a37f86c7b pdfium: define the legacy struct-attribute value type
The compatibility translation unit uses FPDF_STRUCTELEMENT_ATTR_VALUE, which pdfium-render expects but the pinned OHOS header no longer declares. Add the opaque typedef locally.
2026-10-28 22:43:28 +08:00
springmin 6a3bee9252 pdfium: add compatibility symbols required by pdfium-render
pdfium-render 0.9.4 dynamically binds several optional struct-tree, text, font-map and page-move APIs that the pinned OHOS source no longer exports. Add a compatibility translation unit for the missing symbols so the library can load; the preview path only uses the core render APIs.
2026-10-28 22:43:28 +08:00
springmin 6914dc2040 pdfium: add the user-permissions compatibility symbol
The source port exposes FPDF_GetDocPermissions with user semantics but no separate FPDF_GetDocUserPermissions symbol required by pdfium-render 0.9.4. Apply a pinned source patch that adds the compatibility entry point, and rebuild the CI artifact.
2026-10-28 22:43:28 +08:00
springmin d1437f211d pdfium: surface load errors and bundle the C++ runtime
Report the underlying pdfium-render load error instead of discarding it. Component PDFium builds require libc++_shared.so; stage the matching SDK runtime beside libpdfium.so because the OHOS app namespace does not search /system/lib64 for it.
2026-10-28 22:43:28 +08:00
springmin dfcc2d780f ci: package PDFium component-build libraries
The OHOS port's default GN configuration is a component build and emits libpdfium.cr.so plus sibling .cr.so dependencies. Stage all component libraries beside a stable libpdfium.so and upload/checksum the complete set.
2026-10-28 22:43:28 +08:00
springmin 180f61084c ohos: add a pinned PDFium source-build path
Add build-pdfium-source.sh for the OHOS PDFium port at a pinned source revision, using the local SDK through the port's ohos_sdk/18 path and staging a stripped libpdfium.so plus its license. Keep the checksum-pinned prebuilt as an offline fallback and package the source license when present.
2026-10-28 22:43:28 +08:00
springmin 9bc4b814bd chore: sync lockfiles and Flatpak sources for pulldown-cmark
Update the Android nested lockfile and Flatpak offline source metadata to match the patched pulldown-cmark 0.13.5.
2026-10-28 22:31:05 +08:00
springmin 197eb1e0f0 build: drop the vendored fontique patch
fontique 0.11.1 already supports fontconfig-dlopen, which leaves an empty system collection when Fontconfig is absent. OHOS registers /system/fonts explicitly, so the local fontique copy, patch queue and quality verification are no longer needed; use the crates.io package and keep the lockfile pinned.
2026-10-28 19:17:59 +08:00
springmin 90f87c2d0a ohos: read the clipboard on the ArkTS UI thread
Cache plain text from the page's pasteboard listener and let Slint read that cache, so a cross-device pasteboard read cannot stall the Slint thread. Writes keep the cache coherent, and permission grants trigger a fresh read.
2026-10-28 19:08:26 +08:00
springmin 9463ab674b ohos: place IME candidates at the focused caret
Slint reports the initial caret rectangle with InputMethodRequest::Enable, not a separate Update. Forward it too, cache cursor updates while attach/showTextInput is pending, and replay the latest rectangle after the IME becomes editable.\n\nOnly mark a rectangle as applied after updateCursor succeeds, retry transient 12800016 errors, and ignore late completions for an older caret.
2026-10-28 18:44:19 +08:00
springmin bbd89a33f0 ohos: strip PDFium and ship third-party notices in the hap
Strip the staged native libraries for release builds (PDFium 62 MB -> 22 MB), package THIRD_PARTY_NOTICES.md plus the repository license texts under resources/rawfile, and document the pinned OHOS PDFium archive and its remaining reproducible-build limitation.
2026-10-27 09:16:49 +08:00
springmin 178b37a176 ohos: honour the build profile and keep demo off the mail bundle
Pass the selected PROFILE to hvigor instead of always building debug. Default APP=demo to com.flectar.demo so it can coexist with the signed mail app; BUNDLE still overrides both.
2026-10-27 09:16:48 +08:00
springmin d36cfce06c ohos: serialize surface attach with teardown
Hold the surface gate while attaching, so a destroy callback cannot invalidate the window between the epoch check and gpu::set_surface. This closes the remaining attach race beyond queued stale events.
2026-10-26 20:40:31 +08:00
springmin 43a032aa02 ohos: fail fast when the Slint thread panics
Catch unwinding panics on the Slint thread, log the payload, and abort instead of leaving a frozen window backed by a dead event loop. Slint's thread-local platform cannot be safely reinitialized.
2026-10-26 20:35:06 +08:00
springmin 3435fa0237 ohos: keep the Han face out of the generic sans fallback
Latin text that asks for sans-serif must not be rendered by a CJK face. Prefer Roboto/Noto Sans/other non-Han families for generic sans and retain Han as the final fallback.
2026-10-26 20:35:05 +08:00
springmin 8dbcb76907 ohos: reject surface events from a torn-down generation
Tag surface events with a gate epoch, invalidate it in OnSurfaceDestroyed, and ignore queued Surface/Destroyed events that cross the 500ms teardown timeout. A stale acknowledgement can no longer detach a newer surface.
2026-10-26 20:35:05 +08:00
springmin 6f657eb748 ohos: keep readable asset secrets on a failed overwrite
A crypto error can mean the row belongs to a previous signing identity, but deleting it before verifying loses a readable secret if the overwrite fails for another reason. Query the existing value first; only remove a confirmed stale entry.
2026-10-26 20:35:05 +08:00
springmin a0061c948e ohos: clarify the picker cache guard
The 50 MiB constant only keeps an accidental huge selection out of the app cache; the shared core still enforces the 25 MiB total compose/draft attachment limit.
2026-10-26 10:57:46 +08:00
springmin 062ba5da20 ohos: complete the P1 picker, IME and lifecycle fixes
- use async fileIo open/stat/mkdir/close in both picker paths so slow content providers do not block the ArkUI thread
- add the window origin to IME updateCursor coordinates, since CursorInfo is in absolute physical screen coordinates
- subscribe the page to UIAbility.onBackground through the ability eventHub so preview resources are released on every background path, while keeping onPageHide as a fallback
- cache the latest password/type request while an IME attach or detach is in flight and replay it when the transition finishes
2026-10-26 06:20:45 +08:00
springmin a9714fa1a7 ohos: harden picker, fonts, input and system integration
- chunk Asset Store secrets above its 1024-byte limit with generation-suffixed entries; publish the marker last and cover the chunked path in the self-test and unit tests
- picker: copy asynchronously, cap imports at 50 MiB, stage under a random UUID (no picked filename in the cache), and let the native side report whether a late result was accepted so the page cleans up orphaned copies
- register the native mouse callback for right-click/ContextMenuArea and reset Shift/CapsLock/auto-repeat state when the window hides or is destroyed
- register non-Latin script fallbacks for the Slint UI and the email renderer from the platform font directory
- report the system light/dark scheme through AppStorage, the NAPI bridge and SlintContext; throttle repeated IME cursor/color updates and guard overlapping IME attach calls
- expose suspendPreview for the page lifecycle so preview resources are released
2026-10-25 23:33:04 +08:00
springmin 8022c58c16 ohos: forward IME password type, action key and cursor updates
- pass the focused field's InputType::Password through the show hook, use VISIBLE_PASSWORD/DONE, and detach/attach when the keyboard type changes
- subscribe sendFunctionKey and send a full Return press/release for the keyboard action key; the reported enter-key value varies by keyboard and is not a fixed code
- forward InputMethodRequest::Update's caret rectangle to the OHOS controller's updateCursor
- remove the remaining privacy bridge closures and URL interception left after the privacy UI was dropped
2026-10-25 22:53:37 +08:00
Tomás Romero aabd902ce8 chore: merge main 2026-10-25 15:20:34 +01:00
springmin a4125207a3 ohos: fix surface lifecycle, fences and wheel scaling
- request a redraw on Surface/SurfaceShown instead of only invalidating the cache, and skip drawing while the window is hidden so the request survives until it is shown
- wait for and close the acquire fence returned by RequestBuffer, and abort a rejected flush instead of leaking a dequeued buffer
- key buffer geometry to the current surface size so a resize on the same native window reconfigures the queue
- expose only the active renderer to Slint and re-associate the software renderer when the GPU attach or render falls back
- scale mouse-wheel degrees by the user scroll step, leaving touchpad pixel deltas at 1:1
2026-10-25 22:12:49 +08:00
Tomás Romero 34adcd9ab3 feat: pick several files on phones 2026-10-25 13:42:46 +01:00
springmin 5c88d455f9 ohos: move privacy and notification seams out of the port
Remove the bundled policy, first-launch consent screen, bridge URL interception and Settings/onboarding rows; Flectar hosts the policy at https://flectar.com/mail/privacy/. Remove the notification publisher seam and the permission request so they can be reviewed separately.
2026-10-25 20:26:35 +08:00
springmin a11d552430 ohos: adapt credential storage to per-connection slots
main now keys CalDAV secrets by connection id and names the legacy fixed slot AccountCaldavPassword; use Slot::key() and drop the host notification publisher assignment (the seam moves to its own PR).
2026-10-25 20:26:34 +08:00
springmin 018de4b51a Merge remote-tracking branch 'origin/main' into ohos-alias
# Conflicts:
#	lang/da/LC_MESSAGES/flectar-mail.po
#	lang/de/LC_MESSAGES/flectar-mail.po
#	lang/es/LC_MESSAGES/flectar-mail.po
#	lang/flectar-mail.pot
#	lang/fr/LC_MESSAGES/flectar-mail.po
#	lang/it/LC_MESSAGES/flectar-mail.po
#	lang/ja/LC_MESSAGES/flectar-mail.po
#	lang/nl/LC_MESSAGES/flectar-mail.po
#	lang/ru/LC_MESSAGES/flectar-mail.po
#	lang/tr/LC_MESSAGES/flectar-mail.po
#	lang/zh_Hans/LC_MESSAGES/flectar-mail.po
2026-10-25 20:02:56 +08:00
Tomás Romero ba89e9cfc3 feat: sync several calendar servers per account 2026-10-25 01:05:50 +02:00