VS Code Extension
The TimeCampus time-tracking workspace, in your editor. Manage projects, tasks, time entries, timesheet approvals, and Pomodoro focus sessions against the Burdenoff workspace + global GraphQL gateways — without leaving VS Code.
Publisher burdenoff · extension id burdenoff.timecampus-code-extension.
Features
- Activity-bar views for the core TimeCampus entities:
- Projects (expand to their tasks)
- Tasks (workspace-wide, attributed to their project)
- Time Entries (running + stopped timers)
- Approvals (timesheet approval requests)
- Pomodoro (focus / break sessions)
- Dashboard (live time-tracking KPIs)
- Create / update / delete flows via guided input pickers: create projects and tasks, start/stop timers, submit timesheets for approval, approve/reject requests, and start/complete Pomodoro sessions.
- Webview panels (dual-bundled browser UI): rich Project Detail, Task Detail, Dashboard, and Reports panels.
- Status bar showing tracked hours + running-timer state at a glance.
- Editor integration: start a timer from the current text selection.
- Output-channel Analytics Overview and a copy/export-friendly log buffer.
Install
From the Marketplace
Search for TimeCampus in the VS Code Extensions view and install. The extension defaults to the production Burdenoff endpoints.
From a VSIX
git clone https://github.com/algoshred/timecampus-code-extension.git
cd timecampus-code-extension
bun install
bun run build
bun run package
# Install the generated timecampus-code-extension-*.vsix in VS Code
Authentication
TimeCampus uses the Burdenoff OAuth 2.0 device-code flow (works on local, Remote-SSH, Codespaces, and WSL). Tokens are stored in VS Code SecretStorage.
- Run TimeCampus: Login (or click Sign In in the Projects view).
- Enter the displayed code at the verification URL.
- Pick a workspace. The extension issues a workspace-scoped token and scopes all data requests to it.
The VS Code OAuth client id is burdenoff_vscode_timecampus and the redirect is vscode://burdenoff.timecampus-code-extension/auth/callback.
Environment selection
Endpoint selection is controlled exclusively by the BURDENOFF_ENV environment variable. The default is always prod.
BURDENOFF_ENV | Workspace gateway | Global gateway | App URL |
|---|---|---|---|
prod (default) | https://graphqlworkspaces.burdenoff.com/workspaces/graphql | https://graphql.burdenoff.com/global/graphql | https://app.timecampus.com |
alpha | https://alphagraphqlworkspaces.burdenoff.com/workspaces/graphql | https://alphagraphql.burdenoff.com/global/graphql | https://alphaapp.timecampus.com |
local | http://127.0.0.1:4003/workspaces/graphql | http://127.0.0.1:4000/global/graphql | https://app.local.timecampus.com |
Set the variable in the shell before launching VS Code:
BURDENOFF_ENV=local code .
All endpoint URLs are defined in a single file: src/config/environment.ts.
Development
git clone https://github.com/algoshred/timecampus-code-extension.git
cd timecampus-code-extension
bun install
bun run lint # eslint, zero warnings
bun run typecheck # tsc --noEmit
bun run compile # tsc -> out/ (test harness)
BURDENOFF_ENV=local bun run build # webpack (extension host + webview UI)
bun run compile:test
bun run test # @vscode/test-electron (needs a display / xvfb)
bun run smoke:build # production-build smoke check
bun run package # vsce package -> .vsix
bun run sanity # all of the above
Running tests
Extension-host tests launch a real VS Code instance. On Linux without a display, use xvfb-run:
xvfb-run -a env TIMECAMPUS_FORCE_EXTENSION_TESTS=true bun run test
Mock-based unit tests use nock to intercept GraphQL HTTP requests and do not require a running backend.
Configuration
| Setting | Default | Purpose |
|---|---|---|
timecampus.clientId | (built-in) | OAuth client id override |
timecampus.workspaceId | (auto) | Set after login |
Endpoint URLs are no longer configurable through VS Code settings; use BURDENOFF_ENV to select the target environment.
Keybindings
| Command | Keybinding |
|---|---|
| TimeCampus: Quick Actions | Ctrl+Shift+K / Cmd+Shift+K |
| TimeCampus: Open Dashboard | Ctrl+K Ctrl+D / Cmd+K Cmd+D |
| TimeCampus: Open Reports | Ctrl+K Ctrl+R / Cmd+K Cmd+R |
| TimeCampus: Start Timer from Selection | Ctrl+Shift+T / Cmd+Shift+T |
Release
Tag pushes (v*) build + test + package a VSIX and attach it to a GitHub Release — they never auto-publish. Marketplace / OpenVSX publishing is a deliberate, human-gated workflow_dispatch with the relevant PAT secret. See RELEASE.md in the repo.
Source
Source at github.com/algoshred/timecampus-code-extension.