Commit graph

468 commits

Author SHA1 Message Date
Johannes Millan
072b6e9674
Merge pull request #6104 from zenoprax/docs/configure-actions
docs(ci): Exclude docs/wiki/** from some actions
2026-01-22 13:33:26 +01:00
Ivan Kalashnikov
05282e157c fix(issue-templates): standardize type casing for bug report templates 2026-01-22 16:26:21 +07:00
Ivan Kalashnikov
7bab29940c feat(issue-templates): add improved internal app error report template 2026-01-22 15:37:18 +07:00
Ivan Kalashnikov
4e4f784f2a feat(issue-templates): type instead tag, better formatting. 2026-01-22 15:14:03 +07: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
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
ada53524b9 security: add CODEOWNERS, enhance Dependabot, document manual setup
Add comprehensive security configuration to protect against unauthorized
workflow modifications and deployment tampering:

Changes:
1. CODEOWNERS (.github/CODEOWNERS)
   - Require @johannesjo approval for workflow changes
   - Protect build configs (Electron, Docker, Android, iOS)
   - Protect package management files (package.json, package-lock.json)
   - Prevent removal of security protections

2. Enhanced Dependabot (.github/dependabot.yml)
   - Weekly GitHub Actions SHA updates (security-critical)
   - Grouped minor/patch updates to reduce noise
   - Auto-label with security tags for visibility
   - Configured reviewers and commit message format

3. Setup Documentation (.github/SECURITY-SETUP.md)
   - Step-by-step guide for manual GitHub UI configuration
   - Branch protection rules (prevent direct workflow modification)
   - Environment protection (require approval for deployments)
   - Incident response procedures
   - Security impact assessment (75/100 → 30/100 risk score)

These changes complete the automated portion of Phase 1 security hardening.
Manual steps (branch protection, environments) documented in SECURITY-SETUP.md.

Refs: CVE-2025-30066, OWASP CI/CD Security Top 10
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
Ivan Kalashnikov
21579be27d fix(issue-templates): remove conditional from bug report and feature request templates 2026-01-19 22:17:12 +07:00
Johannes Millan
1a455e294d
Merge pull request #6048 from steindvart/update-bug-issue-template
Improve issue templates
2026-01-19 16:08:54 +01: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
Ivan Kalashnikov
dfd671122a fix: conditional issue sections including and add emojis to enhance clarity in feature request template 2026-01-18 20:02:08 +07:00
Ivan Kalashnikov
5fcd96b7b7 fix: conditionally include console output field in bug report template 2026-01-18 19:54:34 +07: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
bd7944131a
Merge pull request #6034 from steindvart/pull-request-template
Add pull request template
2026-01-17 12:31:25 +01:00
Ivan Kalashnikov
8e811a4943 docs: add pull request template. 2026-01-17 15:47:22 +07: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