Features
| Feature | Description | |
|---|---|---|
| ⏱️ | Auto Tracking | Timer starts automatically when you open a project |
| 📊 | Project Rankings | See your top projects sorted by total time |
| 🔘 | Per-Project Toggle | Enable/disable tracking per project |
| 💤 | Idle Detection | Pauses when you step away — no phantom time |
| 📌 | Status Bar | Always-visible elapsed time in the bottom bar |
| 🗂️ | Sidebar Panel | Dedicated activity bar icon with project list |
| 💾 | Persistent Storage | Data survives across sessions and restarts |
Commands
Open the Command Palette (Ctrl+Shift+P / Cmd+Shift+P) and type:
| Command | What it does |
|---|---|
County: Display Time |
Shows current project time + ranked project list |
County: Show Settings |
Opens County settings |
County: Toggle Timer |
Enable/disable timer for any tracked project |
Settings
| Setting | Default | Description |
|---|---|---|
county.idleTimeoutSeconds |
300 |
Seconds of inactivity before the timer pauses |
county.saveIntervalSeconds |
30 |
How often data is persisted to disk |
county.showStatusBar |
true |
Show/hide the status bar timer |
Getting Started
Prerequisites
Build
# Install dependencies
npm install
cd native && npm install && cd ..
# Build everything (Rust + TypeScript)
npm run build
Run in Development
Press F5 in VS Code — it launches an Extension Development Host with County loaded.
Package for Distribution
npm run package
# Produces county-0.1.0.vsix
code --install-extension county-0.1.0.vsix
Note: The
.vsixcontains a platform-specific native binary. Build on each target OS for cross-platform support.
Architecture
County/
├── native/ Rust core (napi-rs)
│ ├── Cargo.toml
│ ├── build.rs
│ └── src/lib.rs Storage, stats, duration formatting
│
├── src/ TypeScript extension
│ ├── extension.ts Lifecycle, timers, idle detection
│ ├── commands.ts Command palette handlers
│ ├── statusBar.ts Status bar widget
│ ├── projectsView.ts Sidebar tree view
│ └── types.ts Shared type definitions
│
├── media/ Icons
│ ├── icon.svg Activity bar icon
│ └── marketplace-icon.png Marketplace listing icon
│
├── package.json Extension manifest
└── tsconfig.json
| Layer | Responsibility |
|---|---|
| Rust | JSON persistence, project data, time formatting, rankings |
| TypeScript | VS Code API, timer intervals, idle detection, UI components |
License
MIT