Commit graph

18267 commits

Author SHA1 Message Date
Johannes Millan
2c1a443bc8 test(sync): update ImmediateUploadService tests for deferred initialization
Add DataInitStateService mock and tests for constructor-based initialization.
Ensures tests verify the new timing behavior.
2026-01-22 17:35:14 +01:00
Johannes Millan
74f813d6c2 test(e2e): fix form initialization wait logic in project and tag creation
Replace semantic wait for enabled button with 500ms timeout to allow
Angular form initialization. The previous approach of waiting for
button[type=submit]:enabled to be visible created a timeout because
the button only becomes enabled after filling the form input.

Fixes 5 failing tests in context-switching.spec.ts and 1 in notes-crud.spec.ts
that were timing out after commit 6a5c5f722.
2026-01-22 17:33:33 +01:00
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
a8da38d840 style: enhance sync button icon visibility and positioning 2026-01-22 17:30:27 +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
6a5c5f722d test: improve form initialization wait logic for project and tag pages 2026-01-22 16:41:14 +01:00
Johannes Millan
b05b0400ed feat: add EU data hosting badge with SVG image to login page 2026-01-22 16:40:34 +01:00
Johannes Millan
169cdf6551 test(e2e): fix LWW Delete vs Update race condition timing
Add strategic waits to ensure operations are created and flushed in the
correct sequence:
- 50ms wait after DELETE to ensure operation is created
- 500ms wait after UPDATE to ensure operation is flushed before sync

This ensures UPDATE has a later timestamp than DELETE, allowing LWW
conflict resolution to correctly recreate the updated task.

Verified with 15 consecutive successful test runs.
2026-01-22 16:19:25 +01:00
Johannes Millan
c07ee10d47 fix(ci): use stable version tags for GitHub Actions 2026-01-22 15:38:55 +01:00
Johannes Millan
5be9aea701 feat(supersync): add EU data hosting badge to login page
Add a trust badge displaying EU flag stars and "Data hosted in EU" text to the SuperSync server login/register page. The badge uses official EU flag colors (blue #039 and gold #fc0) with the circle of 12 stars from public domain SVG.
2026-01-22 15:36:57 +01:00
Johannes Millan
5b09b9a88e chore: remove internal GDPR compliance documentation
Internal compliance documentation has been moved to a private location.
These documents contain sensitive operational procedures and security
analysis that should not be public.

Files moved:
- GDPR compliance analysis
- Incident response playbooks
- Data subject request procedures
- DPIA screening decisions
- Records of processing activities
- Infrastructure verification documents
2026-01-22 15:36:57 +01:00
Johannes Millan
a9b969f2f1 fix(mobile): increase dialog content max-height to 90vh on mobile
Increases max-height of mat-mdc-dialog-content from default to 90vh on
mobile viewports (≤599px) to better utilize available screen space and
reduce unnecessary scrolling in dialogs like the schedule task dialog.
2026-01-22 15:36:57 +01:00
Johannes Millan
36f91a845f docs(compliance): update operational procedures for encryption disclosure
Update incident response, data subject request, and DPIA procedures to
accurately reflect that database encryption at rest is NOT implemented
for non-E2EE users.

Changes:
- INCIDENT-RESPONSE-PLAYBOOK.md: Clarify E2EE is optional throughout,
  add physical server compromise scenarios, update risk assessments to
  differentiate E2EE vs non-E2EE users, document encryption gap in
  prevention measures
- DATA-SUBJECT-REQUEST-PROCEDURES.md: Add encryption status disclosure
  to access responses, clarify data export formats, add security notice
  about unencrypted storage for non-E2EE users
- DPIA-SCREENING-DECISION.md: Document encryption gap as additional
  consideration, update risk level to LOW-MEDIUM, add encryption gap
  to conclusion and re-assessment triggers

All procedures now consistently acknowledge 85% compliance score and
risk variance based on E2EE usage, while maintaining that DPIA is not
required per Art. 35.
2026-01-22 15:36:57 +01:00
Johannes Millan
78802af0ff feat: update wording 2026-01-22 15:36:57 +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
Johannes Millan
dbb0b0f679
Merge pull request #6111 from steindvart/advanced-issue-types
🔥 Hotfix: Advanced issue templates
2026-01-22 14:57:01 +01:00
Johannes Millan
b073b482a8
Merge pull request #6106 from zzoyu/master
fix(i18n): correct mistranslation in Korean
2026-01-22 14:56:38 +01:00
Ivan Kalashnikov
33ce515f79 fix(issue-templates): correct type casing from 'Future' to 'Feature' in feature request template 2026-01-22 19:42:05 +07:00
Johannes Millan
eb1bee33d7 docs(security): add SuperSync encryption at rest implementation plan
Add comprehensive plan for implementing LUKS volume encryption to meet
GDPR compliance requirements. Includes:

- Dual-key LUKS setup (operational + emergency recovery)
- Encrypted backup procedures with GPG
- Complete migration runbook with rollback procedures
- Key management and rotation procedures
- Audit logging for GDPR compliance
- Performance benchmarking criteria

Addresses primary GDPR compliance gap (database encryption at rest).
Reviewed by technical and security agents with 85% confidence level.
2026-01-22 13:34:54 +01:00
Johannes Millan
0bbced2b08 docs(compliance): document encryption risk and update privacy policy
Update GDPR compliance documentation to accurately reflect that database
encryption at rest is NOT implemented for non-E2EE users. This critical
finding required:

- Update compliance score from 92% to 85% (10% deduction for encryption gap)
- Add comprehensive encryption disclosure to privacy policies (German & English)
- Document risk: unencrypted PostgreSQL data on disk
- Update GDPR analysis with compensating controls (optional E2EE)
- Revise Records of Processing Activities with encryption status
- Add context to Alfahosting verification tracker

Changes prioritize GDPR transparency by honestly documenting security
limitations rather than overstating compliance.
2026-01-22 13:34:54 +01:00
Johannes Millan
11d6dc1738 docs(compliance): remove outdated VPS verification files 2026-01-22 13:34:54 +01:00
Johannes Millan
e93760dfb8 refactor(tasks): simplify template conditionals with @if/@else patterns
- Convert sequential @if blocks to @if/@else for mutually exclusive conditions
- Remove redundant nested repeatCfgId check (parent already guarantees condition)
- Remove redundant nested subTasks?.length checks (parent already guarantees condition)

Improves template readability without changing behavior.
2026-01-22 13:34:54 +01:00
Johannes Millan
32eca5a326 fix(e2e): resolve timing issues in 4 failing tests
- Fix tag assignment by waiting for tag to appear on task after assignment
- Fix project/tag dialog forms by adding initialization delay (300ms)
- Fix issue provider panel by handling auto-closing dialogs
- Replace arbitrary timeouts with proper element visibility checks

All 4 previously failing tests now pass consistently:
- menu-touch-submenu: tag toggling via submenu
- context-switching: project navigation and TODAY tag switching
- issue-provider-panel: dialog opening without errors

Test results: 191 passed, 0 failed (previously 4 failed)
2026-01-22 13:34:54 +01:00
Johannes Millan
b46688c553 feat: update icons 2026-01-22 13:34:54 +01:00
Johannes Millan
e5ca294680 refactor(schedule): extract magic numbers to named constants
Create schedule.constants.ts and schedule-constants.scss with named
constants for viewport thresholds, breakpoints, column widths, and
scrollbar dimensions. Update components to use constants for better
maintainability and documentation.
2026-01-22 13:34:54 +01:00
Johannes Millan
527bb229ac test(sync): add integration test for entity extraction from DELETE payload
Add integration test verifying that when a remote DELETE is applied first
but a local UPDATE wins LWW conflict resolution, the entity can be
extracted from the DELETE payload and the UPDATE applied on top of it.
2026-01-22 13:34:54 +01:00
Johannes Millan
13d3f5e96b feat(mobile-bottom-nav): add active route styling for Today and Planner buttons
- Add active state CSS reusing magic side nav theme variables
- Switch to routerLinkActive directive for declarative route matching
- Remove manual currentRoute signal tracking
2026-01-22 13:34:54 +01:00
Johannes Millan
631659de2e
Merge pull request #6103 from steindvart/make-close-buttons
Fix unlocalization text and 'Close' for single buttons
2026-01-22 13:34:48 +01:00
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
Johannes Millan
cd8faafe6d
Merge pull request #6100 from super-productivity/dependabot/npm_and_yarn/packages/plugin-dev/ai-productivity-prompts/npm_and_yarn-8567b85e05
chore(deps): bump the npm_and_yarn group across 5 directories with 1 update
2026-01-22 13:30:43 +01:00
Johannes Millan
4eef92a28e
Merge pull request #6101 from super-productivity/dependabot/npm_and_yarn/npm_and_yarn-f3562b46b9
chore(deps): bump lodash from 4.17.21 to 4.17.23 in the npm_and_yarn group across 1 directory
2026-01-22 13:30:33 +01:00
Johannes Millan
e509685c81
Merge pull request #6108 from steindvart/advanced-issue-types
Advanced issue types
2026-01-22 13:23:32 +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
zzoyu
d46a198b1a
fix(i18n): correct mistranslation in Korean 2026-01-22 17:23:02 +09: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
Ivan Kalashnikov
ea5eb6be7d fix: import TranslatePipe in dialog share component 2026-01-22 08:35:59 +07:00
Ivan Kalashnikov
0a8fe0a243 Merge remote-tracking branch 'origin/master' into adbanced-issue-types 2026-01-22 08:27:10 +07:00
Ivan Kalashnikov
5b070a395c fix: import translation constants in dialog share component 2026-01-22 08:23:55 +07:00
Ivan Kalashnikov
0c73198a71 fix: translate close button text in share and productivity breakdown dialogs 2026-01-22 08:10:03 +07: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
dependabot[bot]
3e5b7c601a
chore(deps): bump lodash in the npm_and_yarn group across 1 directory
Bumps the npm_and_yarn group with 1 update in the / directory: [lodash](https://github.com/lodash/lodash).


Updates `lodash` from 4.17.21 to 4.17.23
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.21...4.17.23)

---
updated-dependencies:
- dependency-name: lodash
  dependency-version: 4.17.23
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-21 23:25:58 +00:00
dependabot[bot]
89236bc50d
chore(deps): bump the npm_and_yarn group across 5 directories with 1 update
Bumps the npm_and_yarn group with 1 update in the /packages/plugin-dev/ai-productivity-prompts directory: [lodash](https://github.com/lodash/lodash).
Bumps the npm_and_yarn group with 1 update in the /packages/plugin-dev/automations directory: [lodash](https://github.com/lodash/lodash).
Bumps the npm_and_yarn group with 1 update in the /packages/plugin-dev/boilerplate-solid-js directory: [lodash](https://github.com/lodash/lodash).
Bumps the npm_and_yarn group with 1 update in the /packages/plugin-dev/procrastination-buster directory: [lodash](https://github.com/lodash/lodash).
Bumps the npm_and_yarn group with 1 update in the /packages/plugin-dev/sync-md directory: [lodash](https://github.com/lodash/lodash).


Updates `lodash` from 4.17.21 to 4.17.23
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.21...4.17.23)

Updates `lodash` from 4.17.21 to 4.17.23
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.21...4.17.23)

Updates `lodash` from 4.17.21 to 4.17.23
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.21...4.17.23)

Updates `lodash` from 4.17.21 to 4.17.23
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.21...4.17.23)

Updates `lodash` from 4.17.21 to 4.17.23
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.21...4.17.23)

---
updated-dependencies:
- dependency-name: lodash
  dependency-version: 4.17.23
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: lodash
  dependency-version: 4.17.23
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: lodash
  dependency-version: 4.17.23
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: lodash
  dependency-version: 4.17.23
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: lodash
  dependency-version: 4.17.23
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-21 23:25:54 +00:00
Johannes Millan
14f4ed233e
Merge pull request #6099 from super-productivity/claude/evaluate-actions-workflow-4c4ZB
fix(lighthouse): increase font budget for Material Symbols upgrade
2026-01-22 00:22:17 +01:00
Claude
47001a1228
fix(lighthouse): increase font budget for Material Symbols upgrade
The font budget was set to 260KB before the Material Icons to Material
Symbols upgrade. Material Symbols font is ~456KB, causing Lighthouse CI
to fail. Increase budget to 520KB to accommodate the larger font with
headroom for future updates.
2026-01-21 23:18:58 +00:00
Johannes Millan
0775650e6e 17.0.0-RC.13 2026-01-21 22:12:01 +01:00
Johannes Millan
86850c711a fix(sync): restore entity from DELETE payload when UPDATE wins LWW conflict
When a remote DELETE is applied before LWW resolution and the local UPDATE
wins (newer timestamp), extract the entity from the DELETE operation payload
to recreate it, preventing data loss from the race condition.
2026-01-21 21:36:26 +01:00
Johannes Millan
cfb1c656dd feat: change bottom nav order again 2026-01-21 21:19:56 +01:00
Johannes Millan
d13701e071 test(performance): add stress tests for bulk hydration and adjust timeout values 2026-01-21 21:06:19 +01:00