Privacy policy English

Privacy Policy

Effective date: 2026-10-22

DJS321 is a local-first productivity app. Core planning works without an account with us. Local-first does not mean offline-only: configured sync, widgets, voice input, notifications and Apple purchases can involve external services. Availability depends on the platform.

Apple editions (iOS / Mac App Store): weather from MET Norway is retained; crypto, news, public-holiday API, contribution charts, sample-server monitoring, remote quotes, AI polish, PushPlus and SMTP are disabled, including saved opt-ins. On every platform, restored home cards require device-local activation. Time-off and watchlist summaries use local records; the other deferred online home cards remain disabled on every platform. Other features remain subject to platform support. Local reminders, Apple speech/purchases and optional sync to your own drive remain. Your drive sync does not automatically mean that we collect all its content. Weather coarse coordinates are cached by the proxy; hosting/upstream logs may be retained. This is not a no-data-collection claim. Older builds may have a different scope. Apple bundled wallpaper presets and thumbnails are local files; they do not contact Unsplash. Unverified ocean/desert presets are deferred; older saved remote backgrounds render a bundled mountains fallback without deleting the preference. User-uploaded wallpapers remain local unless included in optional sync. The djs321.com weather proxy is hosted by Cloudflare. Cloudflare receives IP addresses and request/network metadata needed for delivery and security; Workers Logs, Workers Traces and telemetry export are disabled in the verified configuration, not all platform network processing. Forecast coordinates are cached: entries are bounded to 256 and stale entries are cleaned lazily after 24 hours; deletion is not a fixed-time guarantee and caches are per instance. MET Norway receives coarse coordinates and the proxy's network address, not the device IP. Hosting/network retention follows the provider's policy; there is no universal three-day deletion promise. Weather coarse location and hosting network diagnostics are disclosed for App Functionality, conservatively linked and not used for tracking. Your chosen cloud provider receives synced content under its own account and policies, without a DJS321 content-relay or purchase-verification server.

1. Local storage and deletion

Plans, tasks, notes, focus records, reviews, habits, tracked bills, goals and settings are stored in IndexedDB and other device storage, with separate local automatic backups. Clearing local data or uninstalling does not delete cloud copies, exported files, synced folders or provider backups, and uninstall behavior varies by platform. Record deletion during sync is not a remote wipe. To remove remote copies, manage files, trash and version history with the provider and check other devices; existing copies may be restored by later sync.

2. Optional sync, backups and encryption

After you configure a supported connection, the app actively uploads and downloads database records through OneDrive API, Dropbox, WebDAV or the native iCloud Drive bridge (iOS/Mac Catalyst and the Mac App Store edition). Sync may run automatically after edits. Records include task/note content and settings, which may contain notification tokens and SMTP account details/passwords. These cloud paths exclude sync configuration and do not transfer the separate attachment files; attachment references or content embedded in records can still travel with the records. Local folder sync writes attachments separately; a cloud client may upload that folder. OneDrive/Dropbox OAuth access and refresh tokens are stored on the device for continued access; WebDAV saves the server URL, username and a password protected with a device-local key, not the backup recovery key. To stop access, revoke the app's authorization in your Microsoft or Dropbox account; for WebDAV, revoke or change the application password at the provider. Manage iCloud access and folder permissions in system/browser settings. Clearing local credentials does not revoke provider authorization. Backup encryption is optional: JSON exports and sync shards use AES-GCM only when enabled with a recovery key, stored locally and not included in sync shards. Without it, they are readable JSON. Local databases, automatic local backups, Markdown exports, separate attachment files and filenames are not encrypted by this backup option. Keep the recovery key separately; enabling encryption does not erase older plaintext copies. The raw database export can include attachments and sync credentials, unlike the structured export; review any export before sharing.

3. Widgets and network requests

Widgets and remote images contact services when loaded. Requests can expose an IP address, request metadata and selected inputs such as a place name, stock symbol or GitHub username. Fetching public information is not the same as sending no data. The providers used by these features include:

  • Bangumi (CC BY-SA 3.0): Public catalog facts with source and license attribution; no posters, plot summaries or reviews are imported.
  • Wikidata (CC0): Public catalog facts with source and license attribution; no posters, plot summaries or reviews are imported.
  • Weather — MET Norway: Current conditions and forecast under CC BY 4.0.
  • Weather proxy — djs321.com: Rounds coordinates to two decimals, caches forecasts and forwards requests without the user's IP address.
  • Public holidays — Nager.Date: Holiday calendars by country.
  • Crypto prices — CoinGecko: Cryptocurrency market quotes.
  • Market sentiment — CNN, Alternative.me: Fear & Greed index.
  • Stock quotes — Sina Finance: A-share and Hong Kong index quotes.
  • Trending topics — Baidu, Weibo, Douyin: Public trending lists.
  • Movies — Douban: Now-playing and top-rated films.
  • Tech news — Hacker News: Top stories.
  • Daily quote — Hitokoto: A random short quote.
  • Images — Unsplash, Lorem Picsum: Wallpaper and placeholder images.
  • Contribution chart — ghchart: A GitHub-style contribution graph image.

Available widgets vary by platform. Some web/desktop requests pass through an app proxy and may be cached. Provider and hosting logs or retention are outside what the app's local storage controls; consult the relevant service's policy. Remove unwanted widgets to limit their requests. Watch search runs only when you actively search. The title, type and language pass through the djs321.com proxy hosted by Cloudflare to Bangumi and Wikidata. The app does not send watching progress, custom categories, account credentials, tasks or knowledge-library content. The proxy does not persist search queries or results; responses use no-store. Cloudflare receives connection IP addresses and network metadata; providers receive the proxy connection and search text. Worker logging is disabled, which is not a promise of zero network data processing or of third-party retention. Each service handles data under its policy. Imported facts and progress stay locally and may be included in your chosen drive sync. No posters, plot summaries or reviews are imported.

Optional Pro AI polish is off by default. If you enable it and provide an API key, weekly suggestion text and summary figures, which may include a custom area name, are sent with that key to the OpenAI-compatible endpoint you configure. No task list or attachments are sent. The provider may retain requests under its policy; the device-encrypted key may also be included in optionally synced settings.

Local MCP connections

2026-10-14

Allow a desktop MCP client to read only resources you explicitly select, for a limited time. Choose up to 32 existing resources. New connections have no selected defaults; changing scope keeps the original expiry. Continue to the desktop App's native confirmation. Cancel is the default; access changes only after you approve there.

Only selected titles, bodies, categories and tags are readable, including future edits while this grant remains valid. Folder text uses the last manual cache refresh and may be out of date. Returned text may be sent to the client's model provider and retained under its policies. Revocation blocks new reads but cannot recall data already delivered to the client or provider.

The client name is your label, not verified identity. Anyone with its private connection file can use the approved access.

Configuration contains helper and private connection-file paths, not tokens. Keep that file private. Copying does not install a client or change its settings; add it yourself using the client's MCP instructions. An installed Node.js runtime version 20 or later is required for both JSON and TOML configurations.

Local MCP is available only in the supported Mac or Windows desktop app. This browser or mobile app does not run an MCP server.

4. Location and voice input

Weather uses bundled city presets or device location only after you request it. Precise device coordinates are read locally, rounded to two decimals before storage or transfer, sent to the djs321.com proxy, and forwarded to MET Norway without your device IP address. City search filters the bundled list locally; no reverse-geocoding service is contacted. Saved locations can be included in synced settings. Voice input starts when you activate it and grant microphone/speech permissions. On Apple native platforms the app uses Apple's speech recognition and does not require on-device recognition, so audio may be sent to Apple for processing. Web Speech recognition depends on the browser and may use its provider's servers. The app streams audio for recognition and does not save an audio recording file; this does not describe the provider's retention. Transcripts are returned to the editor; saved text becomes task/note content and can be synced. Revoke location, microphone or speech permissions in system/browser settings.

5. Optional notifications

Local reminders use the device notification system. Configured PushPlus sends its token and the reminder title/content to PushPlus. Email on supported Electron builds authenticates to your SMTP server and sends the sender/recipient addresses and message there. Notification configuration is stored in settings and may be included in sync or exports (section 2). Disable unused channels and revoke their tokens or application passwords with the provider.

6. Apple purchases and other data handling

  • Where Apple purchases are supported, StoreKit handles purchase and restore with Apple. The app receives transaction results/identifiers and verified entitlements; payment-card details are not passed to the app by this bridge.
  • The local membership cache contains Pro status, product ID, expiry and refresh time. This cache is not an account with us, and a cloud-provider login is also separate. Clearing data does not cancel an Apple subscription or erase Apple's purchase records; manage subscriptions through Apple.
  • The current app does not integrate advertising or cross-app tracking SDKs. This is not a claim that connected services receive no data.
  • Diagnostic logs are kept locally and can be exported by you. If you send logs, content or an email for support, the recipient and mail service receive what you send.
  • Cloud, speech, notification, widget and purchase providers process the data needed for their features under their own policies. Review those policies before using the connected features.

7. Children's privacy

This is a general-purpose productivity tool, not a service designed for children under 13. Parents or guardians should consider the content entered and the permissions and external services enabled. The data flows described above also apply when a child uses the app.

8. Changes to this policy

We update this policy and its effective date when features or data handling practices change.

9. Contact

For privacy questions, contact the address below. Your message and return address will be received through email; do not send passwords, recovery keys or full database exports.

support@djs321.com