DsCrono icon

DsCrono

Extension Actions

How to install Open in Chrome Web Store
CRX ID
pgkfhmfoobanlbfcfkifecdanbobfaof
Status
  • Live on Store
Description from extension meta

Floating Timers & Stopwatches for productivity with SOLID architecture

Image from store
DsCrono
Description from store

# DsCrono - Product Listing for Chrome Web Store

**Name:** DsCrono - Floating Timers & Stopwatches

**Short Description:**
Floating countdowns, target-hour timers, and stopwatches that stay visible on any page.

**Long Description:**

DsCrono is a productivity extension for Chromium-based browsers that lets you create floating timers and stopwatches directly on top of any website. Use it for Pomodoro sessions, meetings, focus blocks, cooking, handoffs, or any workflow where you need visible time tracking without leaving the page.

**CURRENT HIGHLIGHTS:**
* **Countdown mode:** Create classic countdown timers with optional sound and browser notifications.
* **Target-hour mode:** Count down to a specific wall-clock hour, then keep counting after zero while the finished visual state stays active.
* **Open target mode:** Leave the target clock empty and DsCrono creates an open-ended count-up timer with no automatic finish.
* **From Zero mode:** Start a stopwatch at `00:00:00` immediately.
* **Safe rollover confirmation:** If the selected target hour already passed today, DsCrono asks whether it should schedule the timer for tomorrow at that same hour.
* **Stable IDs:** `createTimer` returns the generated `id`, making later stop requests deterministic.
* **Consistent expiration:** Finished timers keep their visual end state even when sound is disabled.

**KEY FEATURES:**
* **Floating overlay:** Timers stay visible on top of the current page.
* **Multiple timers:** Run several independent timers and stopwatches at once.
* **Target workflows:** Count down to a target hour, keep counting after zero, or stay open-ended in `Open target`.
* **All Pages mode:** Keep a timer visible across every tab, or restrict it to the current tab.
* **Custom appearance:** Choose location, size, font, text color, background color, and stacking direction.
* **Native alerts:** Use browser notifications and optional sound so important timers do not get missed.
* **Dedicated close button:** Each floating timer includes an `X` button that stops it through the same background API used by integrations.
* **Developer API:** Create, inspect, and stop timers programmatically.

**FOR DEVELOPERS:**
DsCrono exposes an external messaging API so other tools can create timers, check extension health, and stop timers programmatically. Popup flows and external integrations share the same background entrypoint.

**Example: Create a countdown**
```javascript
chrome.runtime.sendMessage("pgkfhmfoobanlbfcfkifecdanbobfaof", {
action: "createTimer",
payload: {
title: "Work Session",
duration: 1500,
backgroundColor: "blue",
displayAlert: true
}
}, (response) => {
console.log(response); // { success: true, id: 123 }
});
```

**Example: Create a stopwatch from zero**
```javascript
chrome.runtime.sendMessage("pgkfhmfoobanlbfcfkifecdanbobfaof", {
action: "createTimer",
payload: {
title: "Project Tracking",
fromZero: true,
backgroundColor: "green",
allPages: true
}
}, (response) => {
console.log(response.id);
});
```

**Example: Create a target-hour timer**
```javascript
const target = new Date();
target.setHours(15, 30, 0, 0);
if (target.getTime() < Date.now()) {
target.setDate(target.getDate() + 1);
}

chrome.runtime.sendMessage("pgkfhmfoobanlbfcfkifecdanbobfaof", {
action: "createTimer",
payload: {
title: "Target: 15:30:00, Handoff",
target: true,
targetTime: target.getTime(),
displayAlert: true,
sound: true
}
}, (response) => {
console.log(response.id);
});
```

If the current time is `05:30:00` and the target is `06:30:00`, DsCrono starts at `01:00:00`, reaches `00:00:00` once, triggers the finished-timer flow, and then continues as `00:00:01`, `00:00:02`, `00:00:03` while keeping the expired visual state.

**Example: Stop a timer by ID**
```javascript
chrome.runtime.sendMessage("pgkfhmfoobanlbfcfkifecdanbobfaof", {
action: "stopTimer",
payload: { id: 123 }
});
```

**Legacy stop by title**
```javascript
chrome.runtime.sendMessage("pgkfhmfoobanlbfcfkifecdanbobfaof", {
action: "stopTimer",
payload: { title: "Work Session" }
});
```

If both `id` and `title` are provided, DsCrono uses `id`. If only `title` is provided, DsCrono removes the first exact title match.

**Supported properties reference:**

| Property | Description | Default / Behavior |
| :---------------------------- | :---------------------------------------------------------------------------- | :----------------------------------------- |
| `title` - | Timer name | `"External Timer"` |
| `duration` - | Countdown duration in seconds | `300` if no other time data |
| `target` - | Enables target-hour mode | `false` |
| `targetTime` | Absolute target timestamp ( hh:mm:ss) | Optional |
| `fromZero` | Start counting up from `00:00:00` | `false` |
| `location` | Screen corner | Inherits saved user default |
| `direction` | Stack orientation | Inherits saved user default |
| `size` | `small`, `medium`, `large` | Inherits saved user default |
| `font` | Font family name | Inherits saved user default |
| `fontColor` | CSS text color | Inherits saved user default |
| `backgroundColor` | CSS background color | Inherits saved user default |
| `displayAlert` | Browser notification alert | Inherits saved user default |
| `sound` | Audio alert on finish | Inherits saved user default |
| `allPages` | Persist across all tabs | Inherits saved user default |

**API notes:**
* `createTimer` returns `{ success: true, id }`.
* `stopTimer` prefers `{ id }`.
* `stopTimer` also accepts `{ title }` for backward compatibility.
* Popup-created target timers display `Target: HH:MM:SS, <title>` or `Open target, <title>`.

**Privacy Policy:**
DsCrono works locally inside the browser. Timer data and preferences are stored in browser storage and are not sent to external servers.

---
**Category:** Productivity / Workflow
**Language:** English / Spanish
---

### Permission Justifications (Privacy Practices Tab)

**Permission:** `notifications`
**Justification (English):**
The `notifications` permission is used to show native desktop alerts when a timer expires. This ensures the user receives the alert even if the browser is minimized or another application is focused.

**Justification (Espanol):**
El permiso `notifications` se utiliza para mostrar alertas nativas de escritorio cuando un temporizador expira. Esto asegura que el usuario reciba el aviso aunque el navegador este minimizado o tenga otra aplicacion en foco.
[LLC]