Commit graph

237 commits

Author SHA1 Message Date
Corey Newton
daa5cea0f6 docs(wiki): add new notes for Quick History and Worklog 2026-02-04 14:45:00 +01:00
Corey Newton
1bb1b6839e docs(wiki): add Task Archiving section and update references across multiple documents 2026-02-04 14:45:00 +01:00
Corey Newton
f8c4e76c8e docs(wiki): add Metrics 2026-02-04 14:45:00 +01:00
Corey Newton
fd9ee3e421 docs(wiki): add Reflection 2026-02-04 14:45:00 +01:00
Corey Newton
4a8a04ecc3 docs(wiki): add Reminders and Idle Time 2026-02-04 14:45:00 +01:00
Corey Newton
1b52eb8a6b docs(wiki): add Timers and Focus Mode 2026-02-04 14:45:00 +01:00
Corey Newton
73739df285 docs(wiki): add How Time Is Logged section 2026-02-04 14:45:00 +01:00
Corey Newton
9faa3e4bb4 docs(wiki): add Repeating Tasks section and update references across multiple documents 2026-02-04 14:45:00 +01:00
Corey Newton
19a78f42fb docs(wiki): added Scheduled Tasks; updated references in multiple sections 2026-02-04 14:45:00 +01:00
Corey Newton
9a0f1a6000 docs(wiki): add Subtasks section and references in Task Attributes 2026-02-04 14:45:00 +01:00
Corey Newton
86d0242e81 docs(wiki): add Task Notes 2026-02-04 14:45:00 +01:00
Corey Newton
1f8b2504fe docs(wiki): add note about Task Attributes 2026-02-04 14:45:00 +01:00
Corey Newton
cfe8095a82 docs(wiki): create note regarding Time Estimates 2026-02-04 14:45:00 +01:00
Johannes Millan
2a6de0e41f fix(sync): remove dead code, add defensive checks, and clean up vector clock logic
- Remove redundant subset condition in compareVectorClocks
- Add clarifying comment for conservative return in hasVectorClockChanges
- Batch per-key verbose logs into single summary log
- Add defensive warning for negative startingSeq in file-based sync
- Extract magic timeout constant in E2E test
- Update stale doc date
2026-02-02 17:15:13 +01:00
Johannes Millan
192ec62d4a fix(sync): harden vector clock comparison and fix docs
- Replace fragile VectorClockComparison[result] enum lookup with safe cast
- Return CONCURRENT instead of EQUAL when only one side has non-shared
  keys in pruning-aware mode (safe direction: triggers LWW instead of
  silent skip)
- Fix docs claiming clocks "reset" at MAX_SAFE_INTEGER (they throw)
2026-01-30 20:05:48 +01:00
Johannes Millan
495f0fe0d3 fix(sync): improve vector clock pruning awareness and harden tests
Make hasVectorClockChanges pruning-aware by checking clock size before
logging missing keys — downgrade to verbose when pruning is likely,
warn when corruption is likely. Add return value assertion to LWW retry
exhaustion test, asymmetric pruning test cases, server-side pruning
tradeoff documentation, and fix stale "max 50" in docs.
2026-01-30 19:35:51 +01:00
Johannes Millan
361d0e605f refactor(sync): rename "stale" to "superseded" across sync/operation domain
Includes backward compatibility: client accepts both CONFLICT_SUPERSEDED
and CONFLICT_STALE from the server, and the server keeps a deprecated
CONFLICT_STALE alias. Remove after all deployments are updated.
2026-01-30 16:59:40 +01:00
Johannes Millan
4ab86ba0fe docs(sync): document archive-wins rule, singleton LWW, and stale op handling
Document 6 gaps found during documentation audit:

- Archive-wins conflict resolution rule (moveToArchive always wins
  over field-level updates regardless of timestamps)
- Two-level archive resurrection prevention (ConflictResolutionService
  + bulkOperationsMetaReducer pre-scan filtering)
- Singleton entity LWW update handling (adapter vs singleton vs
  unsupported storage patterns)
- Stale moveToArchive operation preservation with merged vector clocks
- Fix upload batch size from 100 to 25 in operation-rules.md and
  operation-log-architecture.md
- Update meta-reducer chain from simplified 7-phase to accurate
  8-phase, 15-entry structure matching meta-reducer-registry.ts
2026-01-30 16:59:40 +01:00
Johannes Millan
bfdac6d19a refactor(op-log): merge LWWOperationFactory into ConflictResolutionService
- Consolidate LWWOperationFactory methods (createLWWUpdateOp, mergeAndIncrementClocks)
  into ConflictResolutionService to reduce service count
- Remove redundant caching in SuperSyncProvider (SyncCredentialStore already caches)
- Remove _onBlurWhenNotTracking$ sync trigger from SyncTriggerService
- Add documentation for dueDay/dueWithTime mutual exclusivity pattern
- Change docker-compose postgres port to 55432 to avoid conflicts
2026-01-29 18:24:15 +01:00
Corey Newton
3aa21d751a
docs/wiki content v0.4 (#6257)
* docs(wiki): enhance keyboard shortcuts documentation

Added detailed descriptions of functional grouping for keyboard shortcuts, including categories such as Global, Navigation, Task management, and UI panels. Updated the Global Shortcuts section for clarity and included platform-specific differences, configurable vs reserved shortcuts, context-dependent behavior, and storage definitions. This improves user understanding of the shortcut system and its configuration.

* docs(wiki): add reference to Web App vs Desktop differences

Updated the 3.00-Reference and 3.02-Settings-and-Preferences documentation to include a new section on differences between the Web app and Desktop app, linking to the newly created [[3.05-Web-App-vs-Desktop]] page. This enhances clarity and provides users with a direct reference for understanding the distinctions.

* docs(wiki): expand short syntax documentation

Enhanced the 3.04-Short-Syntax.md file by detailing the four main short syntax forms for task metadata: tags, projects, time estimates, and due dates. Each syntax form now includes its purpose, grammar, valid and invalid examples, and additional parsing rules. This update improves user understanding of how to effectively utilize short syntax in task management.

* docs(wiki): add User Data reference to documentation

Included a new reference to [[3.06-User-Data]] in both the 3.00-Reference and _Sidebar.md files. This addition enhances navigation and provides users with direct access to information regarding user data management.

* docs(wiki): expand API documentation for Sync Server and Plugin API

Added comprehensive details on the Sync Server REST API and Plugin API, including authentication methods, endpoint descriptions, request/response schemas, error codes, rate limits, and data retention policies. This update significantly enhances the documentation, providing users with a clearer understanding of the APIs available for data synchronization and plugin development.
2026-01-29 17:35:38 +01:00
Corey Newton
8118f7cada
docs/wiki content v0.3 (#6231)
* docs(wiki): add "views"

* docs(wiki): fix MD compliance (inline HTML)

* docs(wiki): local style linting
2026-01-28 16:11:22 +01:00
Johannes Millan
e6fba6b3ed docs(sync): document protected client IDs mechanism and update tests
Add documentation explaining why all vectorClock keys must be protected
during SYNC_IMPORT/BACKUP_IMPORT operations to prevent incorrect
CONCURRENT comparisons after vector clock pruning.

Update tests to verify multi-key vectorClock protection.
2026-01-27 18:43:22 +01:00
Serif
bc3df77e3f
feat(tools): enhance translation management script (#6171)
- Add extract and merge modes to manage missing translations
- Implement functions to extract missing keys and merge WIP files
- Create usage documentation for the translation management script
2026-01-25 18:08:06 +01:00
Johannes Millan
c3db97b0e8 docs: add plan 2026-01-25 13:49:30 +01:00
Corey Newton
c5f99f3bf8
docs/fix broken links (#6158)
* docs(wiki): update use of aliases

* docs(wiki): fix broken links from aliases

Removed aliases from Wiki-style links, exclamation marks for image embedding, and recombine the Installation instructions.
This is also a test of the new permissions for the GitHub Action.
2026-01-25 10:08:09 +01:00
Johannes Millan
ec847ce897 fix(sync): use manual code entry for Dropbox auth on all platforms
- Force dialog to show input field instead of OAuth redirect spinner
- Remove platform-specific OAuth redirect URI logic
- Ensures reliable copy/paste auth flow on Android, web, and Electron
2026-01-24 21:14:57 +01:00
Corey Newton
db5f927062
docs(wiki) v0.2: refactor and populate meta notes (#6134)
Substantial re-work and addition of meta notes. Still many stub notes
and incomplete placeholders but the majority of the structure is
established and filling out the actual content is now a priority.
2026-01-24 21:14:29 +01:00
Johannes Millan
8931759745 docs(supersync): add CORS wildcard support design 2026-01-24 12:56:11 +01:00
Johannes Millan
683600799f docs: add plans 2026-01-23 22:16:31 +01:00
Johannes Millan
f6a7c28f43 feat(build): add SignPath code signing integration for Windows
- Add SignPath signing step to windows-bin job in build workflow
- Configure signing for all Windows executables (NSIS installers and portable .exe)
- Disable auto-release in electron-builder to allow signing before release
- Add manual GitHub Release upload after signing completes
- Add comprehensive documentation for SignPath setup and configuration
- Document required GitHub secrets and workflow configuration
- Include verification steps and troubleshooting guide

The integration is ready but signing steps will be commented out initially
until the SignPath certificate is fully issued (currently CSR PENDING).
2026-01-23 14:31:24 +01:00
Johannes Millan
b20db79f1d docs(supersync): fix critical issues in encryption-at-rest plan
Address all critical findings from Codex AI security review:

Critical Fixes:
- Fix AES-256 key size (256→512 bits for XTS mode)
- Fix rollback procedure to restart container before restore
- Add mount guards to prevent data loss from unmounted volumes
- Add prerequisites section with verification script
- Add Docker naming clarification with discovery scripts

Security Enhancements:
- Switch to OpenSSL streaming encryption (no temp files)
- Add MD5 checksum verification to migration
- Add LUKS header backup/restore procedures
- Add passphrase complexity validation

Operational Improvements:
- Add monitoring integration (Prometheus, Nagios, email)
- Implement backup rotation script (7d/4w/12m retention)
- Add systemd mount integration option
- Enhance unlock script with data verification

Scores updated:
- Security: 75/100 → 92/100
- GDPR Compliance: 80/100 → 95/100
- Confidence: 85% → 92%

Plan is now production-ready with all critical issues resolved.
2026-01-23 14:31:24 +01: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
73c1848ba9 fix(docs): resolve markdown linting errors in all wiki files
- Add top-level headings to all wiki files (MD041)
- Fix heading spacing and blank line issues (MD022, MD012)
- Convert HTML badges to markdown format (MD033)
- Add alt text to images (MD045)
- Fix list indentation and numbering (MD005, MD029, MD032)
- Remove trailing punctuation from headings (MD026)
- Convert emphasis to proper headings (MD036)
- Fix heading level increments (MD001)
- Add trailing newlines to all files (MD047)

This ensures the wiki-sync.yml GitHub Action will pass linting.
All changes maintain the same visual appearance and functionality.

Fixes the lint failures reported in GitHub Action run #21212863659
2026-01-21 18:03:05 +01:00
Johannes Millan
0b266bebc5 docs: add plan 2026-01-21 14:30:24 +01:00
Johannes Millan
dab0172a48
Merge pull request #6071 from zenoprax/pr/wiki-sync
docs(wiki): initial revision (v0.1)
2026-01-21 12:22:34 +01:00
Johannes Millan
955a3e13c5 docs: add plan 2026-01-20 17:07:23 +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
johannesjo
9d19a481c8 fix(ios): use correct bundle ID com.super-productivity.app 2026-01-16 16:07:33 +01:00
johannesjo
d58f5eb6b7 docs: add iOS App Store build and publish notes 2026-01-16 16:02:13 +01:00
Johannes Millan
038a722ed8 style: apply prettier formatting 2026-01-10 17:09:14 +01:00
Johannes Millan
150fd074ab Merge branch 'master' into feat/operation-logs
Integrate master branch updates into operation-logs feature branch:
- Add heatmap components and scheduled date group pipe
- Add task delete confirmation dialog and tests
- Update Android focus mode and sound configuration
- Add GitLab PAT authentication support
- Merge translation keys and i18n updates
2026-01-09 16:57:25 +01:00
Johannes Millan
af4e622f91 chore(i18n): remove additional 86 orphan translation keys
Remove keys that are duplicates, never implemented, or obsolete:
- F.SAFETY_BACKUP.* (32) - orphan duplicate of F.SYNC.SAFETY_BACKUP
- F.PROCRASTINATION.* (32) - feature never implemented
- GCF.PAST.* (11) - orphan duplicate of GLOBAL_RELATIVE_TIME.PAST
- GCF.TIMELINE.* (10) - settings form never implemented
- WW.HELP_PROCRASTINATION (1) - related to unimplemented feature

Total unused keys reduced: 350 → 264
Remaining 264 keys need case-by-case review (planned features,
dynamic object access patterns, edge cases).

Add docs/unused-translations-analysis.md with detailed findings.
2026-01-09 14:59:05 +01:00
Johannes Millan
9605177fc0 docs: enhance SuperSync vs file-based comparison with detailed diagrams
Add comprehensive comparison diagrams:
- Side-by-side architecture showing upload/download flows
- Key conceptual differences (source of truth, sequencing, etc.)
- Detailed feature comparison table with "winner" column
- Trade-offs visualization (bandwidth, setup, history, etc.)
- Concurrent edit scenario showing gap detection vs piggybacking
2026-01-08 11:31:07 +01:00
Johannes Millan
c7bc9d4978 docs: add detailed master architecture diagram for file-based sync
Replace simple "Complete System Flow" with comprehensive diagram showing:
- Client-side sync loop, download flow, upload flow
- Conflict management with LWW auto-resolution
- First-sync conflict dialog and snapshot hydration
- Piggybacking mechanism on upload
- File provider layer with adapter methods
- Remote storage structure

Also add Quick Reference Tables for:
- File operations (download/upload methods)
- sync-data.json structure
- Key implementation details
2026-01-08 11:12:42 +01:00
Johannes Millan
9f0adbb95c docs: fix outdated file paths and types in diagrams
- Fix FileBasedSyncData type: remove non-existent lastSeq, add clientId
- Fix file paths: op-log/processing → op-log/apply
- Fix file paths: features/time-tracking → features/archive
- Fix file path: super-sync not supersync
- Fix vector-clock path: now in op-log/sync/
- Remove non-existent state-capture.meta-reducer.ts reference
- Remove pfapi-migration.service.ts (no longer exists)

docs: remove outdated .bak file references from diagrams

The backup file (sync-data.json.bak) is no longer created during
upload. It's only deleted as cleanup from legacy implementations.

docs: add sync comparison and simple sync flow diagrams

- Add 07-supersync-vs-file-based.md comparing the two sync approaches
- Add 08-sync-flow-explained.md with step-by-step sync explanation
- Remove consolidated unified-oplog-sync-diagrams.md
- Update diagrams README with new entries

docs(sync): reorganize diagrams into subfolder and update for unified architecture

- Create docs/sync-and-op-log/diagrams/ with topic-based diagram files
- Remove outdated PFAPI Legacy Bridge references from diagrams
- Update archive diagrams to use generic "Archive Database" naming
- Fix file paths from sync/providers/ to sync-providers/
- Update quick-reference Area 12 to show unified file-based sync
- Update README to reference new diagram locations

docs: update architecture docs to reflect PFAPI elimination

- Delete obsolete PFAPI documentation:
  - docs/sync-and-op-log/pfapi-sync-persistence-architecture.md
  - docs/sync-and-op-log/pfapi-sync-overview.md
  - docs/plans/pfapi-elimination-status.md

- Update sync-and-op-log/README.md:
  - Describe unified operation log architecture
  - Document file-based sync (Part B) and server sync (Part C)
  - Update file structure to reflect sync-providers location

- Update operation-log-architecture.md:
  - Rewrite Part B from "Legacy Sync Bridge" to "File-Based Sync"
  - Remove all PFAPI code examples and references
  - Update IndexedDB structure diagram (single SUP_OPS database)
  - Update architecture overview to show current provider structure
  - Add notes about PFAPI elimination (January 2026)

- Mark completed implementation plans:
  - replace-pfapi-with-oplog-plan.md - marked as COMPLETED
  - file-based-oplog-sync-implementation-plan.md - marked as COMPLETED

Also includes fix for file-based sync gap detection to handle
snapshot replacement (when "Use Local" is chosen in conflict resolution).
2026-01-08 11:10:29 +01:00
Johannes Millan
4e49628eca chore: clean up leftover pfapi references after refactor
- Remove dead test:shard:pfapi script from package.json
- Update AGENTS.md persistence layer path to op-log and sync
- Update documentation file paths in secure-storage.md,
  vector-clocks.md, and quick-reference.md
2026-01-07 21:10:38 +01:00
Johannes Millan
db990b7018 refactor: integrate pfapi into oplog 2 2026-01-07 13:37:05 +01:00
Johannes Millan
1f8fe61c84 refactor: integrate pfapi into oplog 1 2026-01-07 13:30:09 +01:00
Johannes Millan
a42c8a4cee Merge branch 'master' into feat/operation-logs
* master:
  refactor(dialog): remove unused OnDestroy implementation from DialogAddNoteComponent
  fix(calendar): poll all calendar tasks and prevent auto-move of existing tasks
  docs: add info about how to translate stuff #5893
  refactor(calendar): replace deprecated toPromise with firstValueFrom
  build: update links to match our new organization
  add QuestArc to community plugins list
  feat(calendar): implement polling for calendar task updates and enhance data retrieval logic
  fix(heatmap): use app theme class instead of prefers-color-scheme
  fix(focus-mode): start break from banner when manual break start enabled
  feat(i18n): connect Finnish and Swedish translation files
  refactor(focus-mode): split sessionComplete$ and breakComplete$ into single-responsibility effects
  Fixing Plugin API doc on persistence

# Conflicts:
#	src/app/features/issue/store/poll-issue-updates.effects.ts
#	src/app/t.const.ts
2026-01-05 19:12:46 +01:00
Johannes Millan
08971fce47 docs: add info about how to translate stuff #5893 2026-01-05 18:05:45 +01:00