A lightweight, privacy-focused Manifest V3 Chrome extension that seamlessly rewrites UTC timestamps on Cursor's dashboard to Indian Standard Time (UTC+5:30) in place.
- Overview
- Before & After Showcase
- Key Features
- Supported Formats
- How It Works
- Installation Guide
- Verification & Testing
- Extension Popup
- Privacy & Security
- Project Structure
- Packaging for Distribution
- Troubleshooting & FAQ
- Contributing
- License
The Cursor dashboard (/dashboard/usage, audit logs, and request history) displays all timestamps strictly in UTC (Coordinated Universal Time).
For developers and teams working in IST (Indian Standard Time), calculating +5 hours 30 minutes in your headβespecially across midnight date boundariesβcauses unnecessary friction when monitoring model usage, inspecting request spikes, or verifying monthly quotas.
Cursor IST Time runs discreetly in the background, automatically translating UTC dates and times across cursor.com into clear, localized IST strings.
| Location / Context | Default Cursor Dashboard (UTC) | With Cursor IST Time (IST) |
|---|---|---|
| Usage Table Row | Sep 15, 07:06 PM |
Sep 16, 12:36 AM IST (date rolled forward!) |
| Full Date & Time | Sep 15, 2026, 07:06 PM |
Sep 16, 2026, 12:36 AM IST |
| Table Column Header | Date (UTC) |
Date (IST) |
| ISO Timestamp | 2026-09-15T19:06:00Z |
2026-09-16T00:36:00 IST |
| Spaced ISO Format | 2026-09-15 19:06 UTC |
2026-09-16 00:36 IST |
| Chart Hover Tooltip | 07:06 PM (context: Sep 15) |
12:36 AM IST |
Note
All token counts, dollar amounts, usage costs, and model names are strictly preserved and never modified.
- β‘ Zero-Latency In-Place Conversion: Uses targeted DOM
TreeWalkeralgorithms to rewrite text nodes directly without inducing layout shifts or page re-renders. - π Instantly Reversible: Caches original UTC strings on elements (
data-ist-original). Switching the popup toggle off restores the exact original UTC text instantly without a page reload. - π SPA & React Optimized:
- Automatically handles client-side route transitions by intercepting HTML5 History API (
pushState,replaceState, andpopstate). - Employs a debounced
MutationObserver(100ms) to smoothly process dynamically appended table rows, pagination, and Radix UI hover tooltips.
- Automatically handles client-side route transitions by intercepting HTML5 History API (
- π§ Smart Year Rollover Engine: For yearless dates (e.g.,
Dec 31, 09:30 PM), if assuming the current year would land more than 2 days in the future (e.g. reviewing December logs in January), it seamlessly falls back to the previous calendar year. - π‘οΈ Ultra-Secure & Privacy-First:
- Zero external HTTP requests or remote dependencies.
- Zero telemetry, tracking, or background analytics.
- Requires only the minimal
storagepermission to preserve your toggle setting.
- π¨ Cursor-Native Aesthetics: Popup toggle is tailored with a clean, dark-mode design matching Cursor's official design language.
The extension detects and converts multiple timestamp formats used across Cursor's web interfaces:
1. Month Day, Year, Time:
"Sep 15, 2026, 07:06 PM" --> "Sep 16, 2026, 12:36 AM IST"
"Sep 15, 2026, 07:06 PM UTC" --> "Sep 16, 2026, 12:36 AM IST"
2. Month Day, Time (Yearless):
"Sep 15, 07:06 PM" --> "Sep 16, 12:36 AM IST"
"Sep 15, 07:06 PM UTC" --> "Sep 16, 12:36 AM IST"
3. ISO 8601 Strings:
"2026-09-15T19:06:00Z" --> "2026-09-16T00:36:00 IST"
"2026-09-15T19:06Z" --> "2026-09-16T00:36 IST"
4. Spaced UTC Dates:
"2026-09-15 19:06:00 UTC" --> "2026-09-16 00:36:00 IST"
"2026-09-15 19:06 UTC" --> "2026-09-16 00:36 IST"
5. Table Headers:
"Date (UTC)" --> "Date (IST)"
6. Context-Aware Bare Time (Chart Tooltips & Axes):
"07:06 PM" --> "12:36 AM IST" (when anchored to date context)
flowchart LR
A[Page Loads / DOM Updates] --> B{Extension Enabled?}
B -- No --> C[Keep / Restore Original UTC]
B -- Yes --> D[TreeWalker Scans Text Nodes]
D --> E[Filter out scripts, inputs & editable elements]
E --> F[Match Regex Patterns]
F --> G[Shift +330 Minutes: Fixed IST Offset]
G --> H[Tag Element & Replace Text in DOM]
H --> I[MutationObserver listens for new rows]
I --> D
- Fixed UTC Offset: IST does not observe Daylight Saving Time (DST). The conversion relies on a constant
OFFSET_MINUTES = 330(+5 hours 30 minutes). - Safe Traversal: Skips
<script>,<style>,<textarea>,<input>, and any[contenteditable]elements to guarantee that prompt inputs and code editors are never modified. - Loop Prevention: Converted elements are marked with
data-ist-converted="1", avoiding recursive DOM mutation loops while theMutationObserveris active.
Works on any Chromium-based browser (Google Chrome, Brave, Arc, Microsoft Edge, Opera, Vivaldi).
-
Clone or download this repository to your local machine:
git clone https://github.com/BuildWithSubha/cursor-ist-time.git
(Alternatively, download and extract the ZIP archive).
-
Open your browser's Extensions page:
- Chrome: Navigate to
chrome://extensions - Brave: Navigate to
brave://extensions - Edge: Navigate to
edge://extensions
- Chrome: Navigate to
-
Toggle on Developer mode (switch located at the top-right corner).
-
Click the Load unpacked button in the top-left toolbar.
-
Select the folder containing
manifest.json(cursor-ist-time). -
(Optional) Click the puzzle piece icon in the browser toolbar and pin Cursor IST Time for quick access.
Verify that the extension is operating properly in under a minute:
- Navigate to
https://cursor.com/dashboard/usage(ensure you are logged in). - Look at the request history or usage logs table:
- Notice that the table header reads
Date (IST)instead ofDate (UTC). - Notice timestamps end with
ISTand reflect Indian Standard Time.
- Notice that the table header reads
- Click the extension icon in your browser toolbar to open the popup:
- Uncheck Convert times to IST. The page will instantly revert all timestamps back to UTC without a reload.
- Re-check the box. The timestamps immediately convert back to IST.
- Paginate or scroll down to load additional rows; newly loaded rows convert automatically.
The extension includes a clean, dark-mode popup menu:
+---------------------------------------+
| [icon] Cursor IST Time |
| UTC +5:30 on cursor.com |
+---------------------------------------+
| [X] Convert times to IST |
| Rewrites dashboard UTC |
| timestamps in place. |
| |
| Status: On β UTC timestamps on |
| cursor.com are shown in IST. |
+---------------------------------------+
- Preferences are stored in
chrome.storage.sync, persisting across browser sessions and synchronizing across devices signed into the same browser profile.
We believe browser extensions should adhere to the highest standard of user privacy:
- 0 Network Requests: Does not connect to any external server, CDN, or third-party API.
- Minimal Permissions: Requests only
"permissions": ["storage"]to remember your toggle preference. - Strict Host Scope: Active only on
https://cursor.com/*andhttps://www.cursor.com/*. Cannot read or interact with any other websites. - No Analytics / Telemetry: No tracking pixels, error monitoring services, or fingerprinting.
- Open Source: 100% auditable JavaScript with zero obfuscation or minification.
cursor-ist-time/
βββ manifest.json # Chrome Manifest V3 configuration
βββ content.js # DOM observer, parsing engine & IST math
βββ popup.html # Clean popup user interface
βββ popup.js # Preference sync and toggle controller
βββ icons/ # Extension icons in standard resolutions
β βββ icon16.png # Favicon / context menu size (16x16)
β βββ icon32.png # Windows toolbar / popup header (32x32)
β βββ icon48.png # Extension management page (48x48)
β βββ icon128.png # Chrome Web Store & installation (128x128)
βββ README.md # Documentation
No Build Steps: Built purely with native Vanilla JavaScript, HTML5, and CSS. No
node_modules, npm dependencies, or bundlers required.
To package the extension into a zip file for distribution or Chrome Web Store submission:
zip -r cursor-ist-time.zip manifest.json content.js popup.html popup.js icons README.mdCompress-Archive -Path manifest.json, content.js, popup.html, popup.js, icons, README.md -DestinationPath cursor-ist-time.zip -ForceQ: Why aren't timestamps converting on my page?
- Ensure the extension toggle is turned On in the extension popup.
- Confirm you are on
https://cursor.com/*orhttps://www.cursor.com/*. - If you just installed or reloaded the extension, refresh any previously open Cursor tabs once so the content script can initialize.
Q: Does this affect token counts or dollar billing calculations?
No. The replacement regex explicitly targets date strings and timestamp structures (MMM DD, hh:mm A, ISO 8601, and Date (UTC)). Token counts, dollar signs ($), model labels (claude-3.5-sonnet, gpt-4o), and integers are never altered.
Q: Can I turn it off temporarily?
Yes. Simply click the extension icon in your browser toolbar and uncheck Convert times to IST. All original UTC timestamps are restored immediately without reloading the page.
Q: Why is IST offset always 5 hours and 30 minutes?
Indian Standard Time (IST) does not observe Daylight Saving Time (DST). Its UTC offset remains constant at UTC+5:30 year-round.
Contributions, bug reports, and suggestions are welcome!
- Fork the repository.
- Create a branch for your feature or bugfix:
git checkout -b feature/awesome-feature
- Commit your changes:
git commit -m "Add support for format X" - Push to your fork:
git push origin feature/awesome-feature
- Open a Pull Request.
This project is licensed under the MIT License. Feel free to use, modify, and distribute it.