Commit Graph

26 Commits

Author SHA1 Message Date
efacfab213 fix(release): expose Apple notarization failures 2026-07-30 21:03:30 +02:00
8b75423b7a fix(release): repair Apple and Android builds 2026-07-30 20:26:27 +02:00
caaa9a472d ci: automate Microsoft Store updates 2026-07-30 19:12:50 +02:00
c6655da7db refactor(version): derive Apple build numbers 2026-07-28 11:27:45 +02:00
2d7982bbb9 ci: add coordinated release pipeline 2026-07-28 11:09:53 +02:00
407a0d2d60 feat(release): unify cross-platform versioning 2026-07-28 08:22:58 +02:00
cc194f6a7b feat(apple): add direct-download macOS channel (notarized DMG + Sparkle + Homebrew)
Add a second macOS shipping channel alongside the App Store build:

- New VniDropDirect target (Release-Direct config) sharing VniDrop's sources via
  an AppBase target template; links Sparkle behind the DIRECT_DISTRIBUTION flag so
  the App Store binary never bundles a self-updater. arm64-only (core is arm64).
- Sparkle updater (SparkleUpdater.swift) + "Check for Updates" menu, compiled only
  under DIRECT_DISTRIBUTION; Info.plist SUFeedURL points at the GitHub Release
  /latest/download/appcast.xml, non-sandboxed entitlements for Developer ID.
- build-dmg.sh (archive → Developer ID export → DMG → sign → notarize → staple),
  generate-appcast.sh, and ExportOptions-DeveloperID.plist.
- apple-release.yml: on tag v*.*.*, build/notarize the DMG, publish the GitHub
  Release with appcast, and push the Homebrew cask to sudosylabs/homebrew-vnidrop.
  apple.yml gains a PR compile-check of the direct target.
- CFBundleVersion is stamped at build time as a UTC YYMMDD.HHMM timestamp for both
  channels, replacing the hand-maintained build number.
- Docs (RELEASE-MACOS.md, README), cask template + tap README, localized
  updates_check string, Makefile targets, gitignore for dist/ artifacts.
2026-07-27 14:31:36 +02:00
83ddf9f059 ci(apple): install SwiftLint for the required lint build phase
The VniDrop target's SwiftLint pre-build phase is required (fails if missing), so
the Apple CI job must have SwiftLint available. Add a brew install step.
2026-07-24 18:52:26 +02:00
0e0d43bc4d build(apple): stop tracking generated localization outputs
Localizable.xcstrings and Generated/L10n.swift are generated from
localization/strings.json — the single source of truth — yet were committed,
which caused redundant tracking and a spurious ~10k-line diff every time
Xcode reformatted the catalog on build.

Treat them like the (already gitignored) Rust bindings: generate at build
time instead of tracking them. gitignore both; make the `apple-project`
target depend on `localization` so `bun run generate` recreates them before
xcodegen; install Bun in the Apple CI job and trigger it on localization/**.
Android strings.xml stays tracked — it has no reformatting churn and its
build doesn't run the generator.
2026-07-23 18:48:03 +02:00
58c470b279 fix(ci): isolate Linux Gradle caches 2026-07-22 19:02:01 +02:00
a8a873c83d build: unify project development commands 2026-07-21 18:07:06 +02:00
9e8564e013 refactor(platform): remove Apple targets from KMP 2026-07-21 17:09:59 +02:00
17099d32f2 test(apple): CoreGateway seam, XCTest suite, and CI
- Introduce a CoreGateway protocol so feature models depend on a seam
  (CoreRepository conforms); enables faking the core in tests
- Add a VniDropTests target with 42 tests mirroring the KMP suites:
  approval coordinator, send/receive/settings/app models, preferences,
  file previews, invitation decode, message queue, error mapping
- Add a fake gateway/file-system/device-info and fixtures
- Add .github/workflows/apple.yml: build the Rust core, generate the
  project, and run the tests on an iOS Simulator
2026-07-19 23:48:11 +02:00
ec03f210dc fix(ci): expose Android SDK to RPM container 2026-07-17 14:51:16 +02:00
d0844068bb ci: build Linux release packages 2026-07-17 02:08:57 +02:00
32c2734378 fix(ci): pass named MSIX build arguments 2026-07-16 23:11:32 +02:00
afa593b6db fix(ci): use available Temurin release version 2026-07-16 22:52:24 +02:00
97dd9b32be ci: build Windows Store release artifacts 2026-07-16 22:34:02 +02:00
68b379e6b5 ci(docs): validate typecheck and production build 2026-07-16 20:10:50 +02:00
24e14565b3 fix(android): package native core for x86_64 2026-07-15 01:35:10 +02:00
b602a3acb6 feat(diagnostics): harden ingestion and delivery 2026-07-15 00:43:49 +02:00
d0c8d8774a fix(security): address medium findings for ACL, limits, and UX
Tighten approve-endpoint to active shares with TTL sessions, reject non-file
FDs, lower default ticket/approval/size caps, show endpoint IDs and Public-mode
warnings, harden Android receive path checks, and run cargo-audit in CI.
2026-07-13 18:54:28 +02:00
76dbff5a7c fix(shared): build only host-compatible targets 2026-07-13 10:17:40 +02:00
172f244ed4 ci: avoid duplicate workflow runs on pull requests
Limit push triggers to master so PR branch updates only run once via
pull_request, and cancel superseded in-progress runs with concurrency groups.
2026-07-12 15:57:47 +02:00
95eeeb6a23 ci(shared): run jvmTest on pull requests
Add a path-filtered Shared KMP workflow so receive/send ViewModel and
Compose foundation regressions fail CI. Runs on macOS arm64 because host
Rust embedding for Linux JVM is disabled in the Gradle cargo config.
2026-07-12 08:56:30 +02:00
382a015688 test(core): organize hardening coverage and CI 2026-07-10 12:25:33 +02:00