Skip to content

Sync upstream pdfcraft and trim packaging to Windows+iOS scope - #1999

Closed
smestayer wants to merge 23 commits into
storytold:mainfrom
smestayer:sync-upstream-pdfcraft
Closed

smestayer wants to merge 23 commits into
storytold:mainfrom
smestayer:sync-upstream-pdfcraft

Conversation

@smestayer

Copy link
Copy Markdown

Summary

Merges the latest changes from upstream storytold/pdfcraft into this fork, then trims packaging back down to the project's supported scope (Windows x64/ARM64 and iOS).

What's included

  • Merge of upstream/main (fixes/features landed upstream since the last sync — iOS fixes, sample PDF bundling, demo-pdf CI, etc.)
  • Re-application of aRTI-PDF rebrand on top of the merge (fork's app version/name/branding preserved)
  • Removal of macOS/Linux/FreeBSD/Web packaging that the upstream merge reintroduced, keeping CI/workflows and STATUS.md scoped to Windows (x64 + ARM64) and iOS (iPhone/iPad) only

Verification

  • git log --oneline upstream/main..HEAD shows only fork-specific commits (rebrand + scope trim), confirming no upstream work is missing
  • Root Cargo.toml version (0.7.1) preserved through the merge

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com

smestayer and others added 23 commits October 9, 2026 18:44
…TI-PDF

Remove the Discord invite and ArtCraft community-banner references from the
UI, CLI, README, i18n tables, and Linux packaging metadata.

Rename the app's user-visible display name from PdfCraft to aRTI-PDF across
shared UI text (window title, About dialog, home screen, recovery dialog,
update-checker dialog, Help-menu link labels), the PDF /Producer metadata
written to created files, and Windows packaging (MSI ProductName, install
folder name, feature title, shortcuts, context-menu text, FriendlyAppName,
Default Apps entry, code-signing description).

Crate/binary names, the bundle ID, ProgIDs/registry paths, README.md, and
Linux/macOS packaging identifiers are intentionally left as pdfcraft/PdfCraft;
i18n translations fall back to English for the changed strings.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Remove the ArtCraft trademark, logo, and community branding and replace
it with Refined Technologies, Inc. (RTI) branding, per our own fork's
asset policy:

- Delete docs/brand/ (ArtCraft logo/mark assets and its trademark
  license) and remove its 8 ATTRIBUTION.toml entries.
- About dialog now shows plain 'Developed by Refined Technologies,
  Inc.' text instead of the ArtCraft logo/mark.
- Help menu's website link is now a 'Contact support' mailto link to
  artiassist@r-t-i.com (no company website exists yet); the GitHub
  link and release-check URLs point at
  github.com/refinedtechnologiesinc/arti-pdf.
- Add the missing 'mail' icon (Lucide, ISC) used by the new support
  command, plus its ATTRIBUTION.toml entry.
- Update all 5 bundled i18n catalogs (cs, es, ja, zh-hans, zh-hant)
  for the renamed/removed command labels and UI literals, and add
  translations for the new support and About-dialog strings.
- Rewrite README.md: drop ArtCraft logo/nav/community-callout/Crafting
  Apps section, update repo URLs, rewrite Community and License
  sections for the fork.
- Update NOTICE and Cargo.toml's repository field for the fork; keep
  the required upstream copyright line.
- Internal crate/binary/package names remain 'pdfcraft' intentionally;
  installer/packaging rebrand is deferred.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Drop macOS, Linux, FreeBSD, and Web/wasm from CI and release
workflows since RTI only ships Windows builds. Removes the
FreeBSD VM workflow entirely, collapses ci.yml's test matrix to
windows-latest, drops the wasm32 check job, and trims release.yml
to the windows job only (x64 + arm64). Keeps deny and fuzz jobs
(platform-agnostic quality gates) on ubuntu-latest as cheap runners.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Only groups/items with at least one usable entry today are shown in the
tool palette and panels. Availability::Planned items are filtered out
rather than displayed with a milestone chip, and Provider items get a
clearer 'needs an AI provider you configure' hint instead of a generic
Ready/Planned label.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
New apps/pdfcraft-mobile-ffi crate exposes a minimal MobileSession API
(open/render-page/close) over the existing engine via UniFFI, with
generated Swift bindings consumed by a SwiftUI viewer app in ios/.

- ios/project.yml + ios/Sources/App: XcodeGen project and SwiftUI views
  for picking, opening, and paging through a PDF (viewer only, no
  editing yet).
- ios/Scripts/build-ffi.sh: builds the Rust crate for iOS/iOS Simulator
  targets, generates Swift bindings, and assembles an XCFramework.
- .github/workflows/ios.yml: CI on macos-14 that runs the FFI build,
  generates the Xcode project, and builds against an iOS Simulator
  destination. No code signing or distribution yet.
- xtask/src/layers.rs: registers the new crate for layering checks.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
The script was authored on Windows and committed with CRLF line
endings, which corrupted the shebang (#!/bin/bash\r) and made the
macOS CI runner fail with 'bash\r: No such file or directory' (exit
127). Normalized to LF.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
xcodegen 2.46.0 writes a project file in a format that only the
newest Xcode on the macos-14 runner can open, but xcodebuild was
resolving to an older Xcode (15.4) by default, causing:
'cannot be opened because it is in a future Xcode project file
format (77)'. Explicitly select the newest installed Xcode via
xcode-select before generating/building.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…n step

The prior fix embedded a multi-line Python script inside a YAML |
block with lines less-indented than the block's base indentation,
which breaks YAML parsing entirely (the workflow run failed in 0s
with 'likely failed because of a workflow file issue'). Collapsed
to a single-line python3 -c invocation to avoid the conflict between
YAML indentation rules and Python's indentation-sensitive syntax.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
SwiftUI's type-checker couldn't disambiguate .toolbar(content:) overloads when applied directly atop a 4-branch if/else VStack. Extracting the branching content into its own @ViewBuilder computed property simplifies inference and resolves the ambiguity.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
ContentUnavailableView requires iOS 17.0+, but project.yml targets
iOS 16.0. Replace both usages with a custom placeholder view that
renders the same icon/title/description layout on iOS 16.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Bundles the existing contributor-original form.pdf fixture as
ios/Resources/Sample.pdf so the companion app shows real rendered
content instead of the empty 'No Document' state, both for first-run
UX and for the CI simulator screenshot. Adds ATTRIBUTION.toml entry,
wires auto-load via PDFSessionViewModel.openBundledSample(), and adds
a 'Try Sample' retry button for the error/empty states. Bumps the CI
screenshot sleep slightly to give the render time to complete.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…source

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
XcodeGen silently drops resources: entries when a target also has
multiple sources: paths (yonaskolb/XcodeGen#772, storytold#1645). Moved
Sample.pdf into sources: with buildPhase: resources, which forces
XcodeGen to register it in PBXResourcesBuildPhase. Confirmed via CI
debug step that project.pbxproj had zero mention of Sample.pdf before
this fix. Removed the now-unneeded debug step.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Generates dist/demo/pdfcraft-showcase.pdf on ubuntu-latest (reliable
headless Chrome) via workflow_dispatch, uploaded as a build artifact.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Chrome's setuid sandbox refuses to start when running as root, which is
how GitHub Actions ubuntu-latest runners execute jobs, causing an
immediate SIGABRT. Pass --no-sandbox and --disable-dev-shm-usage when
CI or GITHUB_ACTIONS env vars are set; local developer runs are
unaffected.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Use the cargo xtask demo-pdf output (feature showcase, 13 pages) as the
iOS app's bundled sample document instead of a 1-page blank placeholder.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
9e3dd92 hid Planned-only tool groups from the catalog view via
is_visible() but didn't update this test, which asserted against the
unfiltered TOOL_GROUPS list. Failing on all platforms, not just
Windows ARM64.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
cargo-deny was rejecting the iOS FFI bridge's uniffi 0.28.3 dependency
family: MPL-2.0 isn't GPL/AGPL/LGPL (weak, file-level copyleft; only
modifications to MPL-covered files need sharing, not the linked app),
so it fits the project's existing licensing policy. Also ignore two
unmaintained-but-not-vulnerable advisories for uniffi's transitive
deps bincode 1.3.3 and paste 1.0.15, following the same pattern
already used for RUSTSEC-2023-0071.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
The MSI already creates aRTI-PDF.lnk shortcuts under
Program Files\aRTI-PDF\ (pdfcraft.wxs), but the ARM64 install smoke
test still looked for the old PdfCraft.lnk / Program Files\PdfCraft
paths, failing every run since the rebrand.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
# Conflicts:
#	.github/workflows/ci.yml
#	.github/workflows/freebsd.yml
#	.github/workflows/release.yml
#	.github/workflows/windows-arm64.yml
#	ATTRIBUTION.md
#	ATTRIBUTION.toml
#	Cargo.lock
#	Cargo.toml
#	README.md
#	apps/pdfcraft-cli/src/main.rs
#	crates/automation/src/mcp.rs
#	crates/engine/src/links.rs
#	crates/ui-egui/src/chrome.rs
#	crates/ui-egui/src/dialogs.rs
#	crates/ui-egui/src/i18n/cs.tsv
#	crates/ui-egui/src/i18n/es.tsv
#	crates/ui-egui/src/i18n/ja.tsv
#	crates/ui-egui/src/i18n/zh-hans.tsv
#	crates/ui-egui/src/i18n/zh-hant.tsv
#	crates/ui-egui/src/lib.rs
#	crates/ui-egui/src/panels.rs
#	crates/ui-egui/src/widgets.rs
#	packaging/windows/pdfcraft.wxs
#	xtask/src/demo_pdf/chrome.rs
- Delete packaging/{macos,linux,freebsd,web}/ directories
- Delete apps/pdfcraft/tests/winit_x11_dpi.rs (Linux/X11-only test)
- Remove desktop-entry test in main.rs referencing deleted .desktop file
- Remove macOS bundle gate tests in xtask/src/gates.rs
- Clean ATTRIBUTION.toml/.md of macOS DMG assets and stale icon usage text
- Fix stale comments in packaging/env.sh and packaging-lint.yml
- Rewrite docs/releasing.md as Windows-only with an iOS cross-reference

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@smestayer

Copy link
Copy Markdown
Author

Opened against the wrong repo by mistake; closing. Correct PR will target refinedtechnologiesinc/arti-pdf.

@smestayer smestayer closed this Oct 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant