Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
8861d4b
ohos: add the OpenHarmony platform host
springmin Oct 18, 2026
4b51030
ohos: wheel scrolling, notification permission timing, asset recovery
springmin Oct 18, 2026
eefa2da
ios: pass the notification publisher in the launch context
springmin Oct 18, 2026
f163107
ohos: default to com.flectar.mail
springmin Oct 19, 2026
81d76c3
ohos: derive the hap version from the workspace crate
springmin Oct 19, 2026
0784cf0
ohos: request the pasteboard ACL permission for paste
springmin Oct 19, 2026
2c65318
ohos: log through hilog and type the ability callback
springmin Oct 19, 2026
cdea286
ohos: clear ArkTS lint findings
springmin Oct 19, 2026
9bfd7a2
ohos: ignore the generated shell page, document lint and device status
springmin Oct 19, 2026
0327bf0
ohos: configure the PDFium directory from the loaded module
springmin Oct 19, 2026
95cd321
ohos: record the PDF preview and clipboard ACL status
springmin Oct 19, 2026
7544871
ohos: add the privacy policy and first-run consent
springmin Oct 19, 2026
9b81216
ohos: localise the privacy policy and let consent be withdrawn
springmin Oct 20, 2026
d823705
ohos: add jurisdiction-specific privacy disclosures
springmin Oct 20, 2026
557c84e
ohos: localise the consent screen and polish its layout
springmin Oct 20, 2026
ec69115
ohos: revise the privacy policy wording
springmin Oct 20, 2026
136940e
chore(deps): update webpki crates for RUSTSEC-2026-0381/0382/0383
springmin Oct 20, 2026
2ff00c2
ui: drop the obsolete onboarding import-backup callback
springmin Oct 21, 2026
a5160c5
ohos: fix the inverted mouse wheel direction
springmin Oct 21, 2026
fd6d1cd
chore(ohos): refresh the lockfile for the zip dependency edge
springmin Oct 21, 2026
3064513
i18n: regenerate the catalogs after the rebase
springmin Oct 23, 2026
95ff888
Merge branch 'main' into ohos-alias
iamdarkle Oct 24, 2026
7dde8f5
fix: import certificates through the document provider
iamdarkle Oct 24, 2026
1c1c7ae
ohos: hold presentation while a picker is open
iamdarkle Oct 24, 2026
fd07736
fix: keep keyring and dirs off OpenHarmony
iamdarkle Oct 24, 2026
bbfa878
fix: keep document requests on the runtime
iamdarkle Oct 24, 2026
59a8b6c
ohos: ignore the selection clipboard
iamdarkle Oct 24, 2026
7ff4385
ohos: stop logging key codes
iamdarkle Oct 24, 2026
78f98d3
ohos: don't click on cancelled touches
iamdarkle Oct 24, 2026
df5c590
ohos: repeat the winit patch
iamdarkle Oct 24, 2026
a2f9514
fix: update vulnerable crates in the OpenHarmony lockfile
iamdarkle Oct 24, 2026
87351a6
fix: fail the fontique check when the tree is missing
iamdarkle Oct 24, 2026
5774b84
ohos: keep build output out of the repository
iamdarkle Oct 24, 2026
79e0c67
docs: correct the OpenHarmony backend notes
iamdarkle Oct 24, 2026
8b0b3d3
ohos: keep empty secrets in the Asset Store
iamdarkle Oct 24, 2026
2818b7d
ohos: use the Android version code sequence
iamdarkle Oct 24, 2026
85ae2a4
ohos: fix the shell metadata
iamdarkle Oct 24, 2026
767e301
style: format the email font fallback
iamdarkle Oct 24, 2026
e074912
Merge branch 'main' into ohos-alias
iamdarkle Oct 24, 2026
018de4b
Merge remote-tracking branch 'origin/main' into ohos-alias
springmin Oct 25, 2026
a11d552
ohos: adapt credential storage to per-connection slots
springmin Oct 25, 2026
5c88d45
ohos: move privacy and notification seams out of the port
springmin Oct 25, 2026
a412520
ohos: fix surface lifecycle, fences and wheel scaling
springmin Oct 25, 2026
c6e3900
ohos: keep the shared certificate picker path unchanged
springmin Oct 25, 2026
8022c58
ohos: forward IME password type, action key and cursor updates
springmin Oct 25, 2026
a9714fa
ohos: harden picker, fonts, input and system integration
springmin Oct 25, 2026
062ba5d
ohos: complete the P1 picker, IME and lifecycle fixes
springmin Oct 25, 2026
a0061c9
ohos: clarify the picker cache guard
springmin Oct 26, 2026
6f657eb
ohos: keep readable asset secrets on a failed overwrite
springmin Oct 26, 2026
8dbcb76
ohos: reject surface events from a torn-down generation
springmin Oct 26, 2026
3435fa0
ohos: keep the Han face out of the generic sans fallback
springmin Oct 26, 2026
43a032a
ohos: fail fast when the Slint thread panics
springmin Oct 26, 2026
d36cfce
ohos: serialize surface attach with teardown
springmin Oct 26, 2026
178b37a
ohos: honour the build profile and keep demo off the mail bundle
springmin Oct 27, 2026
bbd89a3
ohos: strip PDFium and ship third-party notices in the hap
springmin Oct 27, 2026
dc26e3d
ci: make the OHOS workflow build-only
springmin Oct 27, 2026
9463ab6
ohos: place IME candidates at the focused caret
springmin Oct 28, 2026
90f87c2
ohos: read the clipboard on the ArkTS UI thread
springmin Oct 28, 2026
197eb1e
build: drop the vendored fontique patch
springmin Oct 27, 2026
180f610
ohos: add a pinned PDFium source-build path
springmin Oct 27, 2026
cce49a7
ci: build OHOS PDFium from a pinned source revision
springmin Oct 27, 2026
54097b8
ci: allow the fork PDFium build to run from its feature branch
springmin Oct 27, 2026
70b0c9d
ci: default the PDFium revision on push events
springmin Oct 27, 2026
dfcc2d7
ci: package PDFium component-build libraries
springmin Oct 28, 2026
d1437f2
pdfium: surface load errors and bundle the C++ runtime
springmin Oct 28, 2026
6914dc2
pdfium: add the user-permissions compatibility symbol
springmin Oct 28, 2026
6a3bee9
pdfium: add compatibility symbols required by pdfium-render
springmin Oct 28, 2026
0a37f86
pdfium: define the legacy struct-attribute value type
springmin Oct 28, 2026
349569f
pdfium: export compatibility symbols from component builds
springmin Oct 28, 2026
94e8470
pdfium: cover the remaining optional pdfium-render symbols
springmin Oct 28, 2026
a00fcda
pdfium: document the C++ runtime and compatibility layer
springmin Oct 28, 2026
5d1e7b3
Merge remote-tracking branch 'origin/main' into ohos-alias
springmin Oct 29, 2026
da290d3
chore: sync the OHOS lockfile with pulldown-cmark 0.13.5
springmin Oct 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 95 additions & 0 deletions .github/workflows/ohos-pdfium-source.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
name: Build OHOS PDFium from source

# Fork-only, manually dispatched build for the OHOS PDFium source port.
# This job intentionally runs on a Linux x86_64 GitHub-hosted runner: Chromium's
# bundled GN/Ninja are linux64 binaries and cannot execute on the OHOS device.
# It downloads the public OHOS SDK at build time (the SDK is not committed),
# builds the pinned PDFium source revision, strips the library and uploads it
# as an artifact. No signing material or repository secrets are used.

on:
# Temporary fork trigger. GitHub only registers workflow_dispatch workflows
# from the default branch; this lets the pinned source build run directly
# from the feature branch before it is promoted.
push:
branches:
- ohos-pdfium-source
paths:
- .github/workflows/ohos-pdfium-source.yml
- platform/ohos/scripts/build-pdfium-source.sh
- platform/ohos/patches/pdfium-*.patch
workflow_dispatch:
inputs:
revision:
description: OHOS PDFium source revision
type: string
default: f2a7573b5fd1071f61388aeb642329006ae22153

permissions:
contents: read

jobs:
pdfium:
name: PDFium arm64 source build
runs-on: ubuntu-24.04
timeout-minutes: 360
env:
# push events have no workflow_dispatch inputs; keep the pinned default.
OHOS_PDFIUM_REVISION: ${{ inputs.revision || 'f2a7573b5fd1071f61388aeb642329006ae22153' }}
OHOS_PDFIUM_SOURCE_DIR: ${{ github.workspace }}/.pdfium-src
OHOS_PDFIUM_JOBS: "4"
CARGO_NET_OFFLINE: "false"
steps:
- uses: actions/checkout@v4

- name: Install build prerequisites
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
build-essential clang lld ninja-build pkg-config \
python3 python3-pip git curl unzip zip \
libglib2.0-dev libfontconfig1-dev libfreetype6-dev \
libjpeg-dev libpng-dev libtiff-dev libwebp-dev

- name: Clone the pinned OHOS PDFium source
run: |
git clone --filter=blob:none \
https://gitcode.com/OpenHarmonyPCDeveloper/pdfium.git \
"$OHOS_PDFIUM_SOURCE_DIR"
cd "$OHOS_PDFIUM_SOURCE_DIR"
git fetch --depth 1 origin "$OHOS_PDFIUM_REVISION"
git checkout --detach "$OHOS_PDFIUM_REVISION"
test "$(git rev-parse HEAD)" = "$OHOS_PDFIUM_REVISION"

- name: Install the public OHOS SDK
id: sdk
run: |
cd "$OHOS_PDFIUM_SOURCE_DIR"
bash ohos_sdk/.install
sdk_root="$OHOS_PDFIUM_SOURCE_DIR/ohos_sdk/openharmony"
test -d "$sdk_root/native/llvm"
test -d "$sdk_root/native/sysroot"
echo "OHOS_SDK_ROOT=$sdk_root" >> "$GITHUB_ENV"
echo "OHOS_SDK_NATIVE=$sdk_root/native" >> "$GITHUB_ENV"

- name: Build PDFium
run: |
bash platform/ohos/scripts/build-pdfium-source.sh

- name: Verify and checksum the artifact
run: |
test -s platform/ohos/prebuilt/arm64/libpdfium.so
file platform/ohos/prebuilt/arm64/libpdfium.so
sha256sum platform/ohos/prebuilt/arm64/*.so > platform/ohos/prebuilt/SHA256SUMS
cat platform/ohos/prebuilt/SHA256SUMS

- uses: actions/upload-artifact@v4
with:
name: ohos-pdfium-arm64-source
path: |
platform/ohos/prebuilt/arm64/*.so
platform/ohos/prebuilt/SHA256SUMS
platform/ohos/prebuilt/PDFium-LICENSE
platform/ohos/prebuilt/README.md
if-no-files-found: error
retention-days: 14
70 changes: 70 additions & 0 deletions .github/workflows/ohos.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
name: OpenHarmony hap

# Tier 3 (platform/README.md): a community port built by a manually dispatched
# workflow, never on pull requests. The HarmonyOS SDK and hvigor are not
# anonymously downloadable, so the build job targets a self-hosted runner with
# the toolchain described in platform/ohos/README.md.
#
# This workflow is build-only. It never receives signing material; release
# signing stays a local, explicit step outside CI.

on:
workflow_dispatch:
inputs:
app:
description: Application to package
type: choice
options:
- mail
- demo
default: mail
profile:
description: Cargo profile
type: choice
options:
- release
- debug
default: release
run_quality:
description: Run the shared quality suite first
type: boolean
default: true

permissions:
contents: read

concurrency:
group: ohos-${{ github.ref }}
cancel-in-progress: false

jobs:
quality:
if: inputs.run_quality
name: Shared quality suite
uses: ./.github/workflows/quality.yml

hap:
name: ${{ inputs.app }} hap (${{ inputs.profile }})
needs: quality
if: always() && (needs.quality.result == 'success' || needs.quality.result == 'skipped')
runs-on: [self-hosted, linux, ohos]
timeout-minutes: 180
steps:
- uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5

- name: Check the OHOS workspace formatting
run: cargo fmt --manifest-path platform/ohos/Cargo.toml --all -- --check

- name: Build the hap
env:
APP: ${{ inputs.app }}
PROFILE: ${{ inputs.profile }}
CARGO_BUILD_JOBS: "4"
SKIP_SIGN: "1"
run: sh platform/ohos/scripts/build-hap.sh

- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: flectar-ohos-${{ inputs.app }}-${{ inputs.profile }}
path: platform/ohos/build/*.hap
if-no-files-found: error
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ objc2-foundation = { version = "0.3", default-features = false, features = ["std
objc2-service-management = { version = "0.3", default-features = false, features = ["std", "objc2", "objc2-foundation", "SMAppService"] }

# This is `desktop`; keep it in step with the `mobile` alias in build.rs.
[target.'cfg(not(any(target_os = "android", target_os = "ios")))'.dependencies]
[target.'cfg(not(any(target_os = "android", target_os = "ios", target_env = "ohos")))'.dependencies]
arboard = { version = "3.6", default-features = false, features = ["wayland-data-control"] }
rfd = { version = "0.16", default-features = false, features = ["tokio", "xdg-portal"] }

Expand Down
Loading
Loading