* test(e2e): raise timeouts for two CI-flaky waits
Both timeouts repeatedly hit their limit on saturated scheduled runners
without indicating a real product regression:
- supersync.page.ts:781 — final sync-state icon waitFor went 10s → 30s.
The race above it already consumed a 30s budget, so falling back to
10s here is too tight when the runner is hot (e.g. SuperSync 5/6 in
run 26514574130, "Client A can migrate multiple times" failure).
- repeat-task-day-change #6230 — post-midnight visibility went 30s → 60s.
Even with the focus-event fallback added in 46ac873570, the 1s tick
+ debounce + sync chain can still exceed 30s under contention.
* fix(android): keep foreground services alive across task removal
The focus-mode and tracking foreground services overrode onTaskRemoved
to stop themselves when the app was swiped from recents, which defeats
the purpose of running them as foreground services. Remove the
overrides so the native countdown continues ticking and the notification
persists after task removal.
Refs #7818, #4513
* fix(theme): stabilize Android keyboard-height tracking
Per-event commits during the Android IME open animation sampled
partial keyboard amounts from `window.innerHeight - visualViewport.height`
(layout-viewport adjustResize and visual-viewport resize fire at slightly
different times), parking the global add-task bar mid-page. Debounce the
open path 200ms so only the final value lands; commit synchronously when
the value falls back to zero so the bar drops the moment the IME is gone.
* fix(theme): prevent white flash on Android keyboard resize
The Android WebView surface defaulted to white, so adjustResize keyboard
animations briefly exposed it before the page repainted at the new size —
jarring in dark theme. Paint the surface in the theme background: a
values/values-night color resource provides the cold-start default, and a
new NavigationBar.setWebViewBackgroundColor push keeps it in sync on live
theme switches (the activity is not recreated since uiMode is in
configChanges).
Also promote the full-viewport gradient backdrop to its own compositor
layer as a first-pass mitigation for resize choppiness, pending deeper work.
Not yet verified on-device.
* docs(android): plan to smooth soft-keyboard resize jank
Research + multi-reviewed plan for the remaining keyboard-resize choppiness
(the white-flash half is already fixed in 80b08f0e96). Root cause: adjustResize
resizes the WebView window per frame (WebView is excluded from Chrome 108's
visual-viewport fix). Recommends a KISS core — flip only CapacitorMainActivity
to adjustNothing + reuse the existing visualViewport/--keyboard-height model and
scroll-into-view — gated behind a baseline trace, with VirtualKeyboard API and
CSS containment kept as contingencies behind proven need.
* perf(theme): dedupe Android keyboard-visibility emissions
The native OnGlobalLayoutListener pushes isKeyboardShown$ on every layout pass
(every frame of the IME slide), so the subscriber rewrote <body> classes and
re-triggered change detection each frame. distinctUntilChanged collapses it to
actual show/hide transitions.
* docs(android): correct keyboard-resize plan for min-Chrome-107
Implementation review found MIN_CHROMIUM_VERSION=107, but WebView only
auto-resizes the visual viewport for the IME at ~Chrome 139. So a static
adjustNothing flip would leave Chrome 107-138 with no keyboard-height signal
(inputs silently covered). Corrected the plan: VirtualKeyboard API is required
(not optional), the switch must be runtime-gated via a native setSoftInputMode
method keeping adjustResize as the fallback, and the cheap containment route is
now Phase 1 (try first) with the bigger flip as Phase 2. distinctUntilChanged
win shipped (f486496b7b).
* style(theme): drop no-op keyboard backdrop compositing
The will-change/backface-visibility on body::before was added to reduce
keyboard-resize choppiness, but review showed it's a no-op: the backdrop
resizes every frame so it re-rasterizes regardless of layer promotion, while
the hint allocates an always-on compositor layer on every platform. The
white-flash fix (WebView background color) is unaffected.
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
* fix(readme): correct anchor and strong tag nesting
Corrected <strong> and <a> tag nesting.
* fix(readme): correct anchor and strong tag nesting
Corrected <strong> and <a> tag nesting
The wiki is now ready for general use. I have added some notes regarding
the use of DeepWiki and how it complements the official one. The
`.devin` directory contains a file that should help steer the auto-doc
process. My two primary aims are:
1. avoid polluting the DeepWiki resource with the existing docs in case
of error propagation and LLM context poisoning
2. Generate a differential of the observed code and the observed content
in docs/wiki to aid in future doc updates.
* docs(wiki): refactor download page
Rework and improve download page in preparation for README updates.
* chore(ci): simplify the initial release text
Centralizing all links to one place will make maintenance of docs
easier.
* chore(docs): Update meta docs and templates
Aligning issue templates and other docs to support the use of the wiki
and to encourage additions from others.
* chore(docs): align README with new download page
* Revise AUR installation commands for Super Productivity
Updated AUR installation instructions for Super Productivity.
* Revise AUR installation instructions in README
Updated AUR installation instructions for Arch Linux with AUR helpers and manual installation steps.
* fix(tasks): hide play indicator immediately when marking current task as done
The play triangle on the checkbox was visible for 200ms during the done
animation because setDone() is called after a timeout. Check
showDoneAnimation() to hide it instantly.
* style(zen): remove borders from repeat projections and calendar events
---------
Co-authored-by: Johannes Millan <johannes.millan@gmail.com>
- Remove outdated feature requests from .github/CONTRIBUTING.md (GitLab
support already exists) and add commit message format section
- Improve PR template with type-of-change checkboxes and checklist
- Update commit guideline links in README and CONTRIBUTING.md to
reference the project's own format instead of external angular.js docs
- Add "only edit en.json" rule to TRANSLATING.md and clarify workflow
- Update add-new-integration.md provider list to match codebase (add
Trello, ClickUp, Linear, Azure DevOps, Nextcloud Deck; note GitHub
plugin migration; fix type name to BuiltInIssueProviderKey)
- Add cross-references between mac certificate docs and remove 240-line
duplicate section from update-mac-certificates.md
- Clean up update-android-app.md (specify npm version args, collapse
deprecated workflow, translate German UI labels to English)
- Add context to howto-refresh-snap-credentials.md
- Fix fine-grained token note in github-access-token-instructions.md
- Fix absolute URL to relative path in gitlab-access-token-instructions.md
- Fix grammar in i18n-script-usage.md
- Add status headers to all 19 long-term plan files (Planned, Completed,
Archived with reason, Investigation Complete)
- Fix broken relative link in hybrid-manifest-architecture.md
- Delete supersync-scenarios-simplified.md (duplicate of
supersync-scenarios.md; known issues already covered there)
- Rename vector-clock-pruning-research.md to
vector-clock-history-and-alternatives.md for clarity
Remove dead links to the deleted super-productivity-themes repository
and document the current theming options including built-in themes,
per-project/tag color customization, and custom CSS support.
Closes#6635
* feat(azure-devops): add Azure DevOps issue provider integration
Add support for connecting Azure DevOps work items as an issue provider,
following the current architecture where Issue Providers are independent
from projects.
Features:
- Work item search by title or ID
- Auto-import to backlog with scope filtering (all/assigned/created)
- Issue refresh and polling
- WIQL injection prevention via search term sanitization
- Personal Access Token (PAT) authentication
Technical implementation:
- AzureDevOpsApiService for Azure DevOps REST API interactions
- AzureDevOpsCommonInterfacesService implementing IssueServiceInterface
- Configuration form with host, organization, project, and token fields
- Unit tests for API service
Closes#356
Supersedes #2388
* fix(azure-devops): address code review feedback
- Add proper TypeScript interfaces for Azure DevOps API responses
- Remove all 'any' type usages per CLAUDE.md guidelines
- Sanitize cfg.project in WIQL queries to prevent injection
- Remove unnecessary 'as any' type cast
- Use explicit return type annotations for type safety
* docs: update README with Azure DevOps and other missing integrations
* fix(azure-devops): remove all remaining 'any' type usages and implement proper type narrowing
* fix(azure-devops): address code review feedback regarding 'any' usage and Promise type safety
* fix(azure-devops): resolve PR findings: add isVisible guard and use undefined for missing project
* fix(azure-devops): use api 5.1-preview, fix config string, add ticket type to title
---------
Co-authored-by: Pascal Schär <pascal@sonneggring.ch>
Fixes#6031
- Add home and removable-media plugs for local file sync access
- Add desktop and desktop-legacy plugs for taskbar pinning in Cinnamon
- Update install hook to prompt for home interface connection
- Add documentation warnings about snap limitations and data persistence
All plugs include inline comments explaining their purpose and linking to issue.
- Published @super-productivity/plugin-api v1.0.1 to npm
- Configure package as types-only (no JavaScript output)
- Add emitDeclarationOnly to tsconfig.json
- Update package.json to only include .d.ts files
- Add plugin development link to README contributing section
- Package now provides complete TypeScript definitions for plugin developers
In the docker setup, allow admin to provide the default values for
WebDAV settings in the "Sync" section of the "Settings" page, via
setting some environment variables of the docker container. This could
be used for single user instances to pre-fill those settings. The
available environment variables are:
- WEBDAV_BASE_URL=<base-url>
- WEBDAV_USERNAME=<username>
- WEBDAV_SYNC_FOLDER_PATH=<sync-folder-path>
- SYNC_INTERVAL=<integer-in-minutes>
- IS_COMPRESSION_ENABLED=<true-or-false>
- IS_ENCRYPTION_ENABLED=<true-or-false>
These configurations are provided as environment variables after the
build process of the app, so they have to be loaded at runtime, instead
of build process. This can be achieved by the following way:
1. The environment variables are loaded into the docker container.
2. The container starts with `docker-entrypoint.sh`.
3. `docker-entrypoint.sh` converts the variables into a JSON file placed
at `assets/sync-config-default-override.json`.
4. `sync-config.service.ts` fetches
`assets/sync-config-default-override.json` dynamically at runtime to
override the default values from `default-global-config.const.ts`.
* master:
feat: don't show go to project snack if task is in current list
feat: remove task drawer since it is not working at the moment anyway
Update README.md
feat: enhance updateCurrentTask to include Pomodoro state and session time
feat: update indicator to use time estimate for countdown message
feat: add countdown message to the indicator
Fix#4184: Added fractional time parsing when creating a new task
Add functionality if a Issue on Gitlab is closed the Issue on Super is also closed after syncron.
fix: minor fixes to italian translation
feat: updated italian translations
# Conflicts:
# src/app/features/tasks/store/task-electron.effects.ts