No description
Find a file
Johannes Millan e72aa77336
Add Electron packaging smoke test to catch missing dependencies (#7336)
* ci(electron): verify packaged app.asar and smoke-test launch

Adds coverage for the gap that let #7320 ship: CI built electron TS
and ran electron-builder on release, but never exercised the packaged
binary. A stray relative import reaching out of electron/** was
compiled by tsc into src/app/util/*.js, fell outside the files glob
in electron-builder.yaml, and was missing from app.asar — the main
process crashed on launch for every 18.2.7 user.

Two new checks, both running on ubuntu-latest:

1. tools/verify-electron-requires.js extracts app.asar and re-resolves
   every relative require() under electron/** against the packaged
   tree. Runs on every PR that touches electron/**, electron-builder
   config, package.json, or the workflow itself. ~10s after the build.

2. A launch-under-xvfb smoke test starts the packaged binary, waits
   30s for a crash, and greps stderr for 'Cannot find module' /
   'Uncaught Exception'. Runs on push to master, release tags, and
   manual dispatch (not every PR — needs xvfb setup + idle wait).

Exposed as npm run electron:verify-asar for local use after dist.

* ci(electron): harden smoke workflow and verify script from review

Review feedback on the previous commit surfaced a handful of real
defects. Addressed here:

verify-electron-requires.js
- Guard resolved paths against escaping the extracted asar tree.
  Without this, a relative require with enough `..` climbs above the
  temp dir and Node's resolver hits the host filesystem, masking a
  genuinely missing module behind a stray file on the CI runner.
- Walk .cjs and .mjs files too. electron/simple-store.test.cjs ships
  via the `electron/**/*` glob and was being skipped.
- Move cleanup out of the path where `process.exit(1)` runs inside a
  `try/finally` (synchronous exit does not guarantee `finally`), so
  the temp dir is reliably removed.
- Code comment noting that esbuild-bundled preload.js is opaque to
  this walker — that coverage comes from the launch smoke test.

electron-smoke.yml
- Broaden pull_request paths filter. The previous filter only matched
  electron/**, which is exactly the wrong answer: #7320's root cause
  was a file under src/app/util/ that electron/ imported. Now uses a
  negative list — docs, translations, android/, ios/, other workflows.
- Explicit Xvfb screen geometry (`-screen 0 1280x720x24`) and
  `--disable-dev-shm-usage` on the Electron side. Both known CI
  flake preventers.
- Expanded crash-marker regex: SIGSEGV, Segmentation fault,
  TypeError:, ReferenceError:, FATAL ERROR, Check failed. Also scan
  the log during the liveness loop, not just at the end — catches
  main-process exceptions that get logged without killing the
  process.
- Move the launch log under .tmp/smoke/ so upload-artifact@v7 reliably
  finds it on failure; /tmp paths are fragile across runner images.
- Sweep stray electron worker processes on teardown via pkill.

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-04-23 21:53:28 +02:00
.devcontainer chore: add git and testing tools out of the box in devcontainers 2025-05-12 11:13:06 +02:00
.github Add Electron packaging smoke test to catch missing dependencies (#7336) 2026-04-23 21:53:28 +02:00
.husky fix(build): auto-generate env.generated.ts on checkout via husky hook 2026-03-06 16:39:21 +01:00
.signpath/policies/super-productivity build: sign path setup 4 2026-01-28 12:51:50 +01:00
.vscode chore: add git and testing tools out of the box in devcontainers 2025-05-12 11:13:06 +02:00
android 18.2.8 2026-04-22 16:19:14 +02:00
build fix(electron): harden Snap+Wayland argv wrapper after multi-review 2026-04-21 15:03:42 +02:00
docs feat(schedule): add week number and date range to nav header 2026-04-21 21:50:52 +02:00
e2e fix(backup): move shared timestamp util into electron/ for snap packaging 2026-04-22 16:14:56 +02:00
electron fix(backup): move shared timestamp util into electron/ for snap packaging 2026-04-22 16:14:56 +02:00
eslint-local-rules Add hydration guard for selector-based NgRx effects (#6426) 2026-02-08 15:18:21 +01:00
fastlane/metadata/android build: update links to match our new organization 2026-01-05 14:45:06 +01:00
ios build: fix ios 2026-03-26 21:23:52 +01:00
nginx refactor(e2e): migrate to production Dockerfile for E2E tests 2026-01-21 14:30:24 +01:00
packages chore(deps): bump the npm_and_yarn group across 1 directory with 3 updates (#7332) 2026-04-23 13:54:43 +02:00
scripts refactor: replace PFLog with SyncLog/OpLog and remove obsolete migration scripts 2026-02-03 14:38:05 +01:00
snap/hooks fix(snap): add filesystem and desktop integration plugs 2026-01-17 12:44:30 +01:00
src feat: display cycle mode when interval is one (#7329) 2026-04-23 14:14:04 +02:00
tools Add Electron packaging smoke test to catch missing dependencies (#7336) 2026-04-23 21:53:28 +02:00
.browserslistrc build: update browser support list 2025-08-13 19:47:44 +02:00
.dockerignore fix(docker): simplify env handling for Docker builds 2025-08-09 12:16:31 +02:00
.editorconfig chore: update gradle/java indent_size to 4 2024-09-29 09:40:49 +08:00
.env.example docs: change template of the .env file to include the mandatory unsplash key 2025-08-12 18:10:59 +02:00
.gitattributes chore: fix LF/CRLF for errant SCSS file (again) (#7117) 2026-04-09 19:42:54 +02:00
.gitignore refactor(electron): bundle preload script with esbuild to support sandbox mode 2026-03-22 19:38:21 +01:00
.gitmodules chore: Update android submodule to use feat/platform-android-offline branch (for capacitor) 2024-09-12 09:49:41 +08:00
.gitpod.yml refactor: make prettier work for angular 2025-02-21 14:31:22 +01:00
.npmrc ci: add package-lock.json registry check and pin npm registry (#6875) 2026-03-19 12:01:40 +01:00
.nvmrc feat: add .nvmrc file with Node.js v22.18.0 2025-08-13 19:47:44 +02:00
.prettierignore feat(sync): add Helm chart and WebSocket push for SuperSync (#6971) 2026-03-30 21:34:30 +02:00
.prettierrc.json refactor: make prettier work for angular 2025-02-21 14:31:22 +01:00
.stylelintrc.mjs build(stylelint): fix font-family-no-missing-generic-family-keyword 2025-01-04 13:49:50 +01:00
AGENTS.md docs: update AGENTS.md to include CLAUDE.md reference 2026-01-15 17:20:39 +01:00
angular.json perf: lazy-load stacktrace-js, focus-mode effects, and store-devtools 2026-03-10 15:58:22 +01:00
ARCHITECTURE-DECISIONS.md fix(sync): fix stale comments, doc refs, and preserve lastSeq on clean-slate 2026-02-12 16:27:56 +01:00
capacitor.config.ts fix: android system status bar and nav bar cover app ui (#6779) 2026-03-10 15:58:10 +01:00
CLAUDE.md refactor(backup): unify backup filename format (#7141) 2026-04-21 14:09:09 +02:00
CONTRIBUTING.md docs/wiki content v0.9 (#7116) 2026-04-09 19:36:23 +02:00
docker-compose.e2e.fast.yaml fix(ci): fix WebDAV config path for hacdias/webdav v5 2026-02-16 11:07:52 +01:00
docker-compose.e2e.yaml fix(ci): fix WebDAV config path for hacdias/webdav v5 2026-02-16 11:07:52 +01:00
docker-compose.supersync.yaml fix(dev): update default SuperSync port to 1901 for local development 2026-01-24 21:14:57 +01:00
docker-compose.yaml fix(ci): fix WebDAV config path for hacdias/webdav v5 2026-02-16 11:07:52 +01:00
docker-entrypoint.sh refactor(e2e): migrate to production Dockerfile for E2E tests 2026-01-21 14:30:24 +01:00
Dockerfile fix(build): fix Docker image build by updating node version and copying tools 2026-03-01 11:35:54 +01:00
Dockerfile.e2e.dev feat(e2e): add Docker-based E2E test isolation 2026-01-04 17:09:39 +01:00
Dockerfile.e2e.dev.fast build(e2e): add fast local Docker Compose setup for E2E tests 2026-01-09 18:00:24 +01:00
electron-builder.yaml fix(electron): harden Snap+Wayland argv wrapper after multi-review 2026-04-21 15:03:42 +02:00
eslint.config.js Add hydration guard for selector-based NgRx effects (#6426) 2026-02-08 15:18:21 +01:00
Gemfile 10.1.1 2024-11-06 19:44:38 +01:00
Gemfile.lock chore(deps): bump addressable in the bundler group across 1 directory (#7174) 2026-04-09 20:34:42 +02:00
LICENSE fix: typo in license 2019-01-29 18:21:51 +00:00
ngsw-config.json build: update caching 2025-06-18 19:08:56 +02:00
package-lock.json 18.2.8 2026-04-22 16:19:14 +02:00
package.json Add Electron packaging smoke test to catch missing dependencies (#7336) 2026-04-23 21:53:28 +02:00
README.md refactor(backup): unify backup filename format (#7141) 2026-04-21 14:09:09 +02:00
SECURITY.md build: update links to match our new organization 2026-01-05 14:45:06 +01:00
tsconfig.base.json Merge branch 'master' into feat/operation-logs 2026-01-10 17:08:09 +01:00
tsconfig.json build: try to get rid of inline compilation to js 2025-04-25 12:58:16 +02:00
webdav.yaml build: simplify docker setup and fix e2e 2025-07-18 20:00:10 +02:00

Banner

An advanced todo list app with timeboxing & time tracking capabilities that supports importing tasks from your calendar, Jira, GitHub and others

🌐 Open Web App or 💻 Download


MIT license   GitHub Discussions

Reddit Community   Super Productivity on Mastodon   Tweet

animated

💻 Downloads & Install

Get it on Flathub Get it from the Snap Store English badge Play Store Badge F-Droid Badge Obtanium Badge App Store Badge

For all current downloads, package links, and platform-specific notes: check the wiki.
Get it on GitHub


Ukraine Flag
Humanitarian Aid for Ukraine
Support humanitarian relief via the official National Bank of Ukraine account.


✔️ Features

  • Keep organized and focused! Plan and categorize your tasks using sub-tasks, projects and tags and color code them as needed.
  • Use timeboxing and track your time. Create time sheets and work summaries in a breeze to easily export them to your company's time tracking system.
  • Helps you to establish healthy & productive habits:
    • A break reminder reminds you when it's time to step away.
    • The anti-procrastination feature helps you gain perspective when you really need to.
    • Need some extra focus? A Pomodoro timer is also always at hand.
    • Collect personal metrics to see, which of your work routines need adjustments.
  • Integrate with Jira, Trello, GitHub, GitLab, Gitea, OpenProject, Linear, ClickUp and Azure DevOps. Auto import tasks assigned to you, plan the details locally, automatically create work logs, and get notified immediately, when something changes.
  • Basic CalDAV integration.
  • Back up and synchronize your data across multiple devices with Dropbox and WebDAV support
  • Attach context information to tasks and projects. Create notes, attach files or create project-level bookmarks for links, files, and even commands.
  • Super Productivity respects your privacy and does NOT collect any data and there are no user accounts or registration. You decide where you store your data!
  • It's free and open source and always will be.

And much more!

Work View with global links

📖 Documentation

Full guides and reference material live in the wiki. Quick links: First steps, Reference index, How-To index.

How to use it

If you need some help, this article on dev.to is the best place to start.

If you prefer, there is also a (long) YouTube video available.

There is another article on how I implement the 'eat the frog' prioritizing scheme in the app.

If you have further questions, please refer to the discussions page.

For a structured walkthrough (web app, install, next steps), see First steps (wiki).

Keyboard shortcuts and short-syntax for new tasks are maintained in the wiki: Keyboard shortcuts, Short syntax.

🌐 Web Version

Check out the web version even though it is a bit limited: Time tracking only works if the app is open and for idle time tracking to work, the chrome extension must be installed.

If you want the Jira integration and idle time tracking to work, you also have to download and install the Super Productivity Chrome Extension.

More detail: Web app vs desktop (wiki).

Community

The development of Super Productivity is driven by a wonderful community of users and contributors. Thank you all so much for your support!

👀 Check out our awesome curated list of community-created resources about Super Productivity

♥️ Contributing

If you want to get involved, please check out the CONTRIBUTING.md

There are several ways to help.

  1. Spread the word: More users mean more people testing and contributing to the app which in turn means better stability and possibly more and better features. You can vote for Super Productivity on Slant, Product Hunt, Softpedia or on AlternativeTo, you can tweet about it, share it on LinkedIn, reddit or any of your favorite social media platforms. Every little bit helps!

  2. Provide a Pull Request: Here is a list of the most popular community requests and here some info on how to run the development build (wiki). Please make sure that you're following the commit message format and to also include the issue number in your commit message, if you're fixing a particular issue (e.g.: feat: add nice feature #31).

  3. Answer questions: You know the answer to another user's problem? Share your knowledge!

  4. Provide your opinion: Some community suggestions are controversial. Your input might be helpful and if it is just an up- or down-vote.

  5. Provide a more refined UI spec for existing feature requests

  6. Report bugs

  7. Make a feature or improvement request: Something can be done better? Something essential missing? Let us know!

  8. Translations, Icons, etc.: You don't have to be a programmer to help. Many of the translations could use some love. Guide: Contribute translations (wiki).

  1. Sponsor the project

  2. Create custom plugins: Extend Super Productivity with your own features and integrations by developing custom plugins. Overview: Develop a plugin (wiki).

Special Thanks to our Sponsors!!!

Recently support for Super Productivity has been growing! A big thank you to all our sponsors, especially the ones below!

  • Agentic AI Quality Engineering via:  TestMu AI

(If you are, intend to or have been a sponsor and want to be shown here, please let me know!)

Code Signing

Windows binaries are signed. Free code signing is provided by SignPath.io, certificate by SignPath Foundation.

Running the development server

See the wiki: Run the development server, Package the app, Build for Android.

Run as Docker Container

See the wiki: Run with Docker (wiki).

Custom themes (desktop only)

See the wiki: Theming (wiki), User data (wiki).

Custom WebDAV Syncing

See the wiki: User data (wiki), Managing your data (wiki).

Automatic Backups

See the wiki: User data (wiki), Restore data from backup (wiki).

User Data Folder

See the wiki: User data (wiki), Other (wiki).