Commit graph

422 commits

Author SHA1 Message Date
Johannes Millan
70aae24449 fix(sync): defer ImmediateUploadService initialization until data loads
Prevents race condition where upload attempts happen before sync config
is loaded from IndexedDB, eliminating 404 errors to default baseUrl
during app startup and E2E tests.
2026-01-22 17:33:17 +01:00
Johannes Millan
a0fdc2efee fix(ci): pin pr-preview-deploy workflow actions to commit SHAs
- Update peter-evans/find-comment to v4.0.0 (pinned SHA)
- Update peter-evans/create-or-update-comment to v5.0.0 (pinned SHA)

Fixes GitHub Actions failure where v4 tag pointed to unavailable commit.
Uses commit SHAs instead of version tags for supply chain security.
2026-01-22 16:57:19 +01:00
Johannes Millan
c07ee10d47 fix(ci): use stable version tags for GitHub Actions 2026-01-22 15:38:55 +01:00
Johannes Millan
a81f5601c4
Merge pull request #6102 from super-productivity/claude/pr-deployment-previews-p5QsV
feat(ci): add Cloudflare Pages PR preview deployments
2026-01-22 15:01:52 +01:00
Corey Newton
ababd99b57
docs(ci): Exclude docs/wiki/** from some actions
There is no reason to run certain checks on simple documentation
updates. These Actions showed up during the initial v0.1 PR and added
noise to the PR process.
2026-01-21 20:04:16 -08:00
Claude
519e12beb1
feat(ci): add Cloudflare Pages PR preview deployments
Add automated preview deployments for pull requests using Cloudflare Pages.
Each PR gets a unique preview URL that updates on every push.

Requires configuring these repository secrets:
- CLOUDFLARE_API_TOKEN
- CLOUDFLARE_ACCOUNT_ID
2026-01-21 23:43:52 +00:00
Johannes Millan
cd5151f4f7 fix(ci): exclude WebDAV and SuperSync tests from build workflow
WebDAV and SuperSync E2E tests require dedicated server infrastructure
and should only run in the scheduled E2E workflow or manually. This
prevents build failures when the required servers are not available.

- Added @webdav tag to all WebDAV test files for consistent filtering
- Updated build.yml to exclude @webdav and @supersync tagged tests
2026-01-21 20:42:50 +01:00
Johannes Millan
623971eacd fix(ci): allow external contributors to trigger Claude Code review workflow
Add allowed_non_write_users parameter to bypass actor permission check for PRs from external contributors. This enables automated code reviews for all PRs, including those from forks, while maintaining security through pull_request_target context.
2026-01-21 19:23:27 +01:00
Johannes Millan
01f8c6cd5f fix(ci): allow Dependabot PRs to trigger code review workflow 2026-01-21 15:30:18 +01:00
Johannes Millan
d73ba67489
Merge pull request #6090 from super-productivity/dependabot/github_actions/github-actions-minor-05604d7d6b
chore(deps)(deps): bump easingthemes/ssh-deploy from 5.0.3 to 5.1.1 in the github-actions-minor group
2026-01-21 15:26:13 +01:00
Johannes Millan
c74cc61866
Merge pull request #6091 from super-productivity/dependabot/github_actions/docker/login-action-3.6.0
chore(deps)(deps): bump docker/login-action from 2.2.0 to 3.6.0
2026-01-21 15:26:03 +01:00
Johannes Millan
ee135f28ab
Merge pull request #6092 from super-productivity/dependabot/github_actions/github/codeql-action-4.31.10
chore(deps)(deps): bump github/codeql-action from 3.31.10 to 4.31.10
2026-01-21 15:25:55 +01:00
dependabot[bot]
5ef7fbfb0f
chore(deps)(deps): bump actions/checkout from 4.3.1 to 6.0.1
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.3.1 to 6.0.1.
- [Release notes](https://github.com/actions/checkout/releases)
- [Commits](https://github.com/actions/checkout/compare/v4.3.1...v6.0.1)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 6.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-21 13:45:27 +00:00
dependabot[bot]
58be8c5b07
chore(deps)(deps): bump github/codeql-action from 3.31.10 to 4.31.10
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.31.10 to 4.31.10.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](4bdb89f480...cdefb33c0f)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.31.10
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-21 13:45:05 +00:00
dependabot[bot]
793a14a010
chore(deps)(deps): bump docker/login-action from 2.2.0 to 3.6.0
Bumps [docker/login-action](https://github.com/docker/login-action) from 2.2.0 to 3.6.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](465a07811f...5e57cd1181)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-version: 3.6.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-21 13:44:49 +00:00
dependabot[bot]
06ddb727eb
chore(deps)(deps): bump easingthemes/ssh-deploy
Bumps the github-actions-minor group with 1 update: [easingthemes/ssh-deploy](https://github.com/easingthemes/ssh-deploy).


Updates `easingthemes/ssh-deploy` from 5.0.3 to 5.1.1
- [Release notes](https://github.com/easingthemes/ssh-deploy/releases)
- [Changelog](https://github.com/easingthemes/ssh-deploy/blob/main/docs/CHANGELOG.md)
- [Commits](01a39e3348...a1aa0b6cf9)

---
updated-dependencies:
- dependency-name: easingthemes/ssh-deploy
  dependency-version: 5.1.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-21 13:44:43 +00:00
Johannes Millan
27630a59fe security: add Harden-Runner and fix remaining unpinned actions
Add StepSecurity Harden-Runner to production workflows for runtime monitoring
and fix all remaining unpinned GitHub Actions that were missed in initial pass.

Changes:
1. StepSecurity Harden-Runner (Phase 2.2.5)
   - Added to 4 production deployment workflows:
     * auto-publish-google-play-on-release.yml (Google Play)
     * publish-to-hub-docker.yml (Docker Hub)
     * build-update-web-app-on-release.yml (Web server)
     * build-publish-to-mac-store-on-release.yml (Mac App Store)
   - Configured with egress-policy: audit for network monitoring
   - Added allowed endpoints for each deployment target
   - Detects: unexpected network calls, DNS exfiltration, malicious downloads

2. Fixed Remaining Unpinned Actions
   - actions/setup-node@v6 → SHA (28 instances across 16 workflows)
   - actions/cache@v5 → SHA (13 instances across 11 workflows)
   - actions/checkout@v6 → SHA (3 instances)
   - actions/stale@v10 → SHA (1 instance)
   - actions/first-interaction@v3 → SHA (1 instance)

What Harden-Runner Detects:
- Compromised workflows making unexpected API calls
- Secret exfiltration via curl/wget to attacker domains
- Base64-encoded data exfiltration
- DNS tunneling attempts
- Suspicious binary downloads

Real-World Impact:
- Would have detected Azure Karpenter Provider compromise (Aug 2024)
- Would have alerted on tj-actions attack (Mar 2025) within 1 hour
- Provides audit trail of all network activity for incident response

All 22 workflows validated with YAML syntax checks.

Risk Score: 55/100 → 45/100 (runtime monitoring added)

Refs: StepSecurity Blog, CVE-2025-30066
2026-01-21 14:30:24 +01:00
Johannes Millan
9b2afbe109 security: pin all GitHub Actions to commit SHAs (CVE-2025-30066 mitigation)
Pin all GitHub Actions to immutable commit SHAs to prevent supply chain attacks.
This protects against tag-poisoning attacks like the March 2025 tj-actions compromise
that affected 23,000+ repositories.

Changes:
- Pin 55 action references across 19 workflow files to commit SHAs
- Add version comments (e.g., "# v6") for readability
- Manually resolved: gradle/actions, github/codeql-action, actions/setup-node

All actions now use immutable references following GitHub security best practices:
https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions

Future updates should be managed via Dependabot to automate SHA updates.
2026-01-21 14:30:24 +01:00
Johannes Millan
aa7103d4a8 build: remove unsplash secrets from lint and test flow 2026-01-21 14:30:24 +01:00
Corey Newton
f9a328022d
docs(wiki): initial revision (v0.1)
Contains both a first-draft of content as well as
a comprehensive GH Action to replicate from
docs/wiki to the `.wiki` sub-repo. The linting is
non-blocking at the moment.

- the existing markdown linking appears reliably
rendered in GH but more testing needed.
- style guide for contributions/expectations needs
to be added to the wiki
- **a significant re-work of the README** to
re-direct users to the Wiki is needed to avoid
doc duplication
- updates to the PR templates and contributor
guidelines to emphasize the importance of adding
documentation is still needed
2026-01-20 03:04:08 -08:00
Johannes Millan
9e7a9ccdc9 fix(ci): grant write permissions for fork PRs in Claude Code review
Change trigger from pull_request to pull_request_target to allow the
workflow to run with write permissions even for external contributors.
This fixes the "Actor has insufficient permissions" error.

Also add condition to skip draft PRs to reduce API usage.
2026-01-19 14:43:26 +01:00
Johannes Millan
a8d154530e ci(e2e): increase scheduled workflow timeout to 120 minutes
The E2E test suite has grown to 111+ spec files with an estimated
execution time of 80-100 minutes, exceeding the previous 60-minute
timeout limit. This increase prevents premature workflow termination.
2026-01-18 15:35:32 +01:00
Johannes Millan
4bbe7634d8 build(ios): update to iOS 26 SDK for App Store requirements
- Change workflow runner from macos-latest to macos-26
- Add Xcode and SDK version verification step
- Ensures compliance with Apple's April 2026 requirement for iOS 26 SDK
- Maintains iOS 14.0 deployment target for backward compatibility
2026-01-18 12:21:38 +01:00
Johannes Millan
1f4eecbe70 fix(e2e): create missing .env file and update GitHub Actions syntax
Docker Compose was failing because env_file: .env was referenced but the
file doesn't exist in CI (it's gitignored). Also updates deprecated
set-output command to use GITHUB_OUTPUT environment file.
2026-01-18 12:07:55 +01:00
Johannes Millan
4d78d7b9fc fix(ci): add E2E tests to PR workflow 2026-01-17 15:23:45 +01:00
Johannes Millan
6a9d39838c build: don't run e2e tests every 2026-01-17 15:02:11 +01:00
Johannes Millan
a11257e70b fix(ci): grant write permissions for Claude code review to post comments
The Claude Code Review workflow needs pull-requests: write permission to post review comments on PRs. Previously it only had read access, causing "Actor does not have write permissions" errors.
2026-01-17 12:36:07 +01:00
Johannes Millan
7a7cb031b9 fix(ci): add memory allocation to Mac test step to prevent OOM 2026-01-17 12:36:07 +01:00
Johannes Millan
ce4e61fd94 fix(ci): grant write permissions to Claude Code action
The Claude Code GitHub Action was failing with 403 errors when trying
to create comments on issues due to read-only permissions. Updated
contents, pull-requests, and issues permissions from read to write.
2026-01-16 22:34:49 +01:00
Johannes Millan
f421d2387a fix(e2e): add robust overlay cleanup to prevent blocked clicks
Angular Material overlay backdrops were not being properly cleared between
tag operations, causing subsequent clicks to timeout when overlays blocked
element interactions.

Added ensureOverlaysClosed() helper with:
- Early exit if no overlays present (performance)
- Escape key dismissal with retry for stacked overlays
- Logging for debugging when fallbacks trigger
- Uses Playwright's native locator.waitFor() instead of waitForFunction()
- Cleanup at operation start (prevent blocking) and end (clean state)

Benefits:
- Eliminates fixed timeouts, uses smart waiting (tests run 2x faster)
- Handles edge cases like stacked overlays
- Provides visibility into when overlays are unexpectedly present

Fixes 4 failing tests:
- Tag CRUD: remove tag via context menu
- Tag CRUD: delete tag and update tasks
- Tag CRUD: navigate to tag view
- Menu: toggle tags via submenu
2026-01-16 22:34:49 +01:00
johannesjo
5813ea6f94 fix(ios): strip pre-release suffix from version for App Store 2026-01-16 16:52:53 +01:00
johannesjo
98855bb577 fix(ios): skip code signing during archive, sign during export 2026-01-16 16:37:53 +01:00
johannesjo
9d19a481c8 fix(ios): use correct bundle ID com.super-productivity.app 2026-01-16 16:07:33 +01:00
johannesjo
5b4dfa09a3 fix(ios): fix archive step for CocoaPods compatibility
- Remove PROVISIONING_PROFILE_SPECIFIER from archive (breaks Pods)
- Use CODE_SIGN_STYLE=Automatic for archive step
- Manual signing handled during export via ExportOptions.plist
- Add bundle ID verification to catch mismatches early
2026-01-16 16:03:51 +01:00
johannesjo
04a7e0e6aa refactor(ios): reuse existing mac_certs for iOS signing
Apple Distribution certificate works for both macOS and iOS.
Only new secret needed: ios_provision_profile
2026-01-16 15:42:28 +01:00
johannesjo
2996aaa361 feat(ios): add GitHub Actions workflow for iOS App Store release
- Create build-ios.yml workflow triggered on releases
- Configure signing keychain with iOS distribution certificate
- Install provisioning profile for App Store distribution
- Sync version from package.json using agvtool
- Build, archive, and export IPA with manual code signing
- Validate and upload to App Store Connect via xcrun altool
- Add sync:ios and dist:ios:prod npm scripts
2026-01-16 15:24:03 +01:00
Johannes Millan
27e17222d4 fix(ci): add github_token fallback to fix OIDC token error 2026-01-16 13:28:05 +01:00
Ivan Kalashnikov
5bd7d8b6b5 Merge remote-tracking branch 'origin/master' into select-multiple-tags 2026-01-16 15:39:32 +07:00
Johannes Millan
1308c378d2 "Claude Code Review workflow" 2026-01-15 21:08:54 +01:00
Johannes Millan
6a7feb681e "Claude PR Assistant workflow" 2026-01-15 21:08:49 +01:00
Johannes Millan
b583454327 fix(android): support pre-release versions in APK builds
- Update bump-android-version.js to handle RC/alpha/beta versions
- Pre-releases use versionCode suffix 0001-8999, stable uses 9000
- This ensures users can upgrade from RC to stable without uninstalling
- Skip Play Store upload for pre-release tags (GitHub only)
- Skip fastlane changelog generation for pre-releases

Fixes #5964
2026-01-12 15:25:18 +01:00
Johannes Millan
a8cf4378da fix(ci): restore Docker Hub image name to personal repo
The Docker Hub image remains under johannesjo/ to maintain existing
references for users, while the GitHub repo moved to super-productivity/
2026-01-10 14:43:35 +01:00
Johannes Millan
9b7b01d24a fix(ci): update references for repo migration to super-productivity org
- Add permissions: contents: write to build.yml and manual-build.yml
  to fix GitHub release creation after org migration
- Update AUR PKGBUILD download URL to new org
- Update release notes changelog link
- Update GitHub project example hints in translation files
2026-01-10 12:56:27 +01:00
Johannes Millan
e0031b1378 build(ci): improve android build release upload reliability
- Add explicit contents: write permission for GITHUB_TOKEN
- Increase wait time for release creation from 15 to 20 minutes
- Add failure check if release is not found after waiting
2026-01-10 12:55:14 +01:00
Johannes Millan
dc498ef77d fix(ci): fix first-time contributor welcome action
- Change repo-token to repo_token (correct parameter name)
- Add write permissions for issues and pull-requests
2026-01-09 15:01:06 +01:00
Johannes Millan
7870c9238e build(ci): update CodeQL analysis permissions for security events 2026-01-06 13:19:21 +01:00
Johannes Millan
80389c542f fix(ci): add issues write permission to autoresponse workflow
GitHub Actions requires explicit permissions for write operations.
Adding `issues: write` permission resolves the "Resource not accessible
by integration" error when posting auto-reply comments.

Fixes #5904
2026-01-06 13:17:15 +01:00
Johannes Millan
1a79592aca build: update links to match our new organization 2026-01-05 14:45:06 +01:00
Johannes Millan
218e99721f
Merge pull request #5854 from johannesjo/dependabot/github_actions/actions/cache-5
chore(deps): bump actions/cache from 4 to 5
2026-01-02 12:15:30 +01:00
dependabot[bot]
25225a7609
chore(deps): bump actions/upload-artifact from 5 to 6
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 6.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-01 13:01:51 +00:00