Lux Privacy Policy
Last updated: August 18, 2026
Lux (“the extension”) is a new tab dashboard for Chrome and Brave. This policy explains what data Lux accesses and how it is handled. The short version: Lux runs in your browser and keeps your data on your device. Lux operates no server that stores your data — the only Lux-run infrastructure is a minimal, stateless relay (described below) used to connect certain accounts, refresh their access tokens, and forward feedback you explicitly choose to send. It stores nothing.
Who operates Lux
Lux is operated by an individual developer. Contact: hyun@hyunwk.me.
Data Lux accesses
On your device
- Dashboard settings and content you create (widget layout, tasks,
quick links, preferences). Stored locally via the browser’s
chrome.storage.
From accounts you connect
- Connected-account tokens. When you connect Google, Outlook, Spotify, GitHub, or AniList, the resulting OAuth access/refresh tokens are stored locally on your device so the relevant widget can call that service on your behalf.
- Basic account identity. When you connect an account, Lux reads basic profile details (such as your email address or username) to confirm which account is connected.
- Google Calendar and Outlook Calendar (read-only). If you connect a calendar, Lux reads your upcoming events to display them in the calendar widget, fetched directly from Google or Microsoft to your browser.
- GitHub (read-only). If you connect GitHub, Lux reads your contribution activity, notifications, pull requests, and the repositories you watch together with their latest releases, to display them in the GitHub widget, fetched directly from GitHub to your browser.
- Spotify. If you connect Spotify, Lux reads your current playback and available devices to show and control what’s playing (play, pause, or skip at your request), and reads your saved tracks and playlists to power in-widget search. Fetched directly from Spotify to your browser.
- AniList. If you connect AniList, Lux reads your anime and manga lists,
notifications, and the recent activity of people you follow, fetched directly from
AniList to your browser. AniList offers no scoped or read-only access, so its token is
account-wide — but Lux only writes when you explicitly act (the like
button, the +/− episode/chapter buttons, or mark-all-read) and makes no other
changes to your account. Sign-in briefly redirects through a Lux page
(
lux.hyunwk.me/anilist/callback) that reads the token from the page address and hands it to the extension; the token rides in the URL fragment, which is never sent to any server.
From keyless public services (no account)
- Weather location. The Weather widget looks up conditions from Open-Meteo for a place you choose by name. Only the place name you search is sent to resolve it and return the forecast — no account or API key, no precise device location — and your chosen location is stored only on your device.
- Stock symbols. The Stocks widget fetches public quotes from Yahoo Finance for the ticker symbols you add. Only those symbols (for example, AAPL) are sent; no account, API key, or personal data is involved, and your watchlist is stored only on your device.
- Sports scores. The Sports widget fetches public scoreboards from ESPN for the league you select. Only the league (and, where you narrow it, a date range) is sent — no account, API key, or personal data — and the teams you follow are stored only on your device.
- News. The News widget fetches public RSS headlines (Google News, the New York Times, the BBC, The Guardian, NPR, and Yahoo News) for the edition you choose (United States, United Kingdom, Australia, or International) — plain public feed requests, no account or key. The Google News search box sends only your typed words to return matches. Where a feed provides a thumbnail, it loads from the publisher’s own image server; clicking a headline opens the article on the publisher’s site.
Optional browser access
- Bookmarks, history, and recently closed tabs. If you enable features that use them, Lux may read your bookmarks, browsing history, recently closed sessions, or most-visited sites to power the quick-access features. These are requested only when you turn on a feature that needs them and are used only on your device.
- Tab details for the recently closed list. Chrome does not include the title or address of a closed tab unless an extension can read tab details, so enabling the “Recently closed tabs” feature asks for that access alongside it. Lux uses it only to label the rows in that list. It does not list, read, or track your open tabs, and nothing about them leaves your device.
How Lux uses this data
Data is used solely to provide the features you see: rendering your dashboard, displaying your calendar events, controlling playback, and powering quick access. Lux does not use this data for advertising, profiling, or any purpose unrelated to the features you enable.
How your data is protected
Lux applies the following safeguards to all of the data it accesses, including sensitive data such as your Google Calendar events and account email:
- Encrypted in transit. Every network request Lux makes — to the services you connect, to the Lux relay, and to the weather, stock, news, and sports sources — is sent over HTTPS/TLS, so data is encrypted while it travels between your browser and those servers.
- Stored only on your device, in isolated browser storage. Your settings
and your connected-account access and refresh tokens are held using the browser’s
chrome.storage.localAPI. This storage is sandboxed to the Lux extension and isolated by your browser profile and operating-system user account — it is not readable by websites or by other extensions, and it is never synced to any cloud service. - Minimized and never sent to a Lux server. Lux requests only the scopes, and reads only the data, that the features you turn on require. Sensitive data is processed on your device to render the relevant widget and is fetched directly from the provider to your browser. The Lux relay is stateless: it holds no database, stores none of your data, and writes no logs of your personal information, so your calendar, email, and other account data never pass through — or rest on — any Lux-operated server. The single exception is feedback you deliberately submit, which you write yourself and which is forwarded without being stored (see “Feedback you send” below).
- Not shared, sold, or profiled. Your data is not transferred to third parties, sold, used for advertising or profiling, used to train any model, or accessed by any human at Lux.
- Revocable and deletable by you. Disconnecting an account in the extension deletes its stored tokens from your device; clearing the extension’s data or uninstalling it removes everything Lux has stored. You can additionally revoke Lux’s access at any time from the provider’s own security settings — for Google, at your Google Account third-party access page.
Storage and retention
All settings and tokens are stored locally in your browser and remain there until you remove them — by disconnecting an account, clearing the data, or uninstalling the extension. Background and widget images you upload are kept the same way, as files in the extension’s own browser storage, and are never uploaded anywhere. Nothing is stored off your device; the Lux relay described below keeps no data either — neither the tokens it exchanges nor the feedback it forwards.
Sharing
Lux does not sell, rent, or share your data with any third party. The only network requests Lux makes are directly to the services you connect (Google, Microsoft, Spotify, GitHub, AniList), to the Open-Meteo weather service when you use the Weather widget, to Yahoo Finance when you use the Stocks widget, to news publishers' public feeds (Google News, NYT, BBC, The Guardian, NPR, Yahoo News) when you use the News widget, to ESPN’s public scoreboard service when you use the Sports widget, and to the Lux relay when connecting and refreshing accounts that require it — all to provide the features you requested. If you choose to send feedback, that message is forwarded through the Lux relay to a private channel on Discord, which receives it as the developer’s support inbox.
Lux relay
Some services — Google, Microsoft, and GitHub — require a confidential client secret to exchange and refresh access tokens, a step that cannot be performed safely inside a browser extension. To support them, Lux runs a small, stateless relay (hosted on Cloudflare). For sign-in it performs only these token steps: it receives a single-use authorization code (when you sign in) or a refresh token (when a short-lived access token expires) from your browser, exchanges it with the provider for a fresh access token, and returns that token to your browser. The relay has no database, stores no data, and keeps no logs of your personal information. Your tokens are stored only on your device, and the relay is contacted only to complete sign-in and to refresh expired tokens — at all other times the widget talks to the service directly from your browser.
Feedback you send
Lux includes a feedback form. It is entirely user-initiated: nothing is sent unless you open the form, write a message, and press send. Lux has no automatic error reporting, no crash reports, no usage analytics, and no background telemetry of any kind.
When you submit, the message is sent to the Lux relay, which forwards it to a private channel on Discord that serves as the developer’s support inbox. The relay does not store it.
What is included:
- The category you pick (bug, idea, or other) and the message you write.
- An email address only if you choose to enter one, so a reply is possible. The field is optional and the form works without it.
- Diagnostics only if you tick the box, which is off by default: the Lux version, your browser and operating system, which widget types are on your dashboard, and which provider names you have connected. The exact text that will be sent is shown on screen before you send it.
Feedback never includes the contents of your widgets — no note or task text, no links, no calendar or email content, no tokens, and no account identifiers. Diagnostics record that (for example) a Calendar widget exists and that Google is connected, never what is in it or whose account it is.
As with any internet request, Cloudflare sees the connecting IP address at the network edge, and it is used solely to rate-limit abuse of the endpoint. The endpoint neither stores that address nor forwards it to Discord.
Google user data — Limited Use
Lux’s use of information received from Google APIs adheres to the
Google API Services User Data Policy, including the Limited Use
requirements. Specifically, the Google data Lux accesses — your calendar events (via the
calendar.readonly scope) and your account email (via the
userinfo.email scope) — is used only to display your events and identify the
connected account, on your device; it is not transferred to others, not used for
advertising, and not read by humans. It is safeguarded by the measures described in
How your data is protected above: encrypted in transit, stored
only in isolated on-device browser storage, and never routed through a Lux-operated server.
Changes
If this policy changes, the updated version will be posted at this URL with a new “Last updated” date.