Khyoot Work TrackerAutomatic recording in 0.6.0After sign-in, opening an IDE workspace starts recording automatically when its folder name uniquely matches an active project or task on the website. Matching ignores case, whitespace, dots, hyphens and underscores. A saved workspace link takes precedence. No Start command, project-name entry or work-note prompt is needed. If there is no unique match, choose an existing project or task once; the link is remembered. Inactive items are never auto-selected. Measured time is saved locally every five seconds and synced to the website every thirty seconds while recording. Each session/day uses a stable log ID: later saves update cumulative minutes, rather than appending duplicates. Failed saves remain queued and retry automatically. Live status updates separately, so charts and totals no longer require Finish. Active-time detection and the two-minute research grace remain in effect. Manual Start Work Session, Finish Work Session, and notes at Finish are optional. Explicitly finishing pauses automatic restart for this workspace; Start resumes it. Version 0.6.0 supersedes the older manual-start instructions below. Install the new VSIX and reload the IDE. Existing website listeners receive the updated logs directly; no auth function is required. Version 0.5.0 shares projects and work logs with https://khyoot.web.app using the same Firebase account and Firestore rules. Version 0.5.0 publishes a live session heartbeat every 30 seconds to Version 0.4.2 adds a two-minute research grace period when you switch away from the IDE after active work. The bar shows a countdown. Returning within two minutes credits the gap to the project; a longer absence excludes the entire gap. Sleep, shutdown, inactive projects and the finish-note prompt do not receive grace credit. The focused-editor idle threshold is also two minutes. Grace time is provisional until you return and is not recovered across a reload. In 0.4.1, cancelling or failing the finish-note prompt always releases the finishing pause. While the prompt is open, the bar says Waiting for session note; save the note to finish or press Escape to resume tracking. This version also recognizes linked workspaces without an active source file and selection events without metadata. Sign inInstall the VSIX using Extensions: Install from VSIX, reload the editor, and run Khyoot: Sign In. The extension opens Khyoot automatically. Sign in using the website's email or phone flow, compare the request code displayed in the editor and website, then click Connect editor and allow the browser to open the editor. No website URL, Firebase API key or project ID needs to be entered. VS Code, VS Code Insiders and Antigravity callbacks are supported for extension ID DeploymentThe website must include the function-free sign-in flow introduced with 0.3.0. Install extension 0.4.0 for active-time tracking; no additional website deployment is needed for the tracking change.
No auth function, service-account key, Firebase Functions billing plan or token-signing permission is required for this flow. Existing phone sign-in SMS requirements still apply. Legacy auth-function source remains available for older deployments, but is no longer referenced by the Hosting config or new clients. A function previously deployed stays deployed until explicitly deleted. How credentials moveEach sign-in generates a fresh RSA key pair. The extension keeps its private key in SecretStorage and sends its public key and a random request state to the website. After explicit approval, the website encrypts the current Firebase refresh credential and public project configuration with AES-GCM, wrapping its key with RSA-OAEP. Only the initiating extension can decrypt the response. The encrypted response uses a URI fragment; no plaintext credentials are placed in the callback URL. Requests expire after ten minutes, responses after two minutes, and the extension consumes the pending private key before contacting Firebase. The extension verifies the credential directly with Firebase and checks the returned UID and project before storing it in SecretStorage. This shares the browser's Firebase session credential rather than creating a separately scoped extension session. Signing out locally does not revoke copies held elsewhere; account-wide token revocation affects both. Treat the extension as having access to your private Khyoot account. Only approve requests you initiated and whose request code matches. Track workOpen a folder and run Khyoot: Link Workspace to Project to select an active project created on the website. In a multi-root workspace, choose the folder belonging to that project. Click the status bar to start, optionally describe the work, and click again to finish and record a note. The status bar shows the linked project, active minutes/seconds, work description, and Recording/Paused state. Hover for the pause reason. After finishing, it shows the latest recorded minutes and note, marked saved or pending sync. Time is measured from activity, rather than start/end timestamps. The linked workspace must be open in the focused editor window, with the research grace described above for short trips away. No source file needs to be open when a terminal, chat or custom panel is active. Opening a file from another folder pauses tracking. Edits, file navigation, cursor selection (including events without kind metadata), scrolling, terminal switching and supported terminal command-start events reset a two-minute idle threshold. Tracking pauses after that threshold and resumes on interaction. The exact pause reason appears directly in the status bar. This is an estimate of active editor work: prolonged reading and terminal/chat input without a supported activity event may still reach the idle threshold. Unfocused file changes, editor shutdown, sleep, and the finish-note prompt do not add wall-clock gaps. Long extension-host stalls over five seconds are excluded. Only projects with type Measured time is checkpointed locally every five seconds and on focus changes; an abrupt process kill can lose the latest few seconds. Closed-editor time is never added on restore. Sessions opened in older versions have no measured activity, so their previous wall-clock estimate is reset to zero rather than treated as active work. Running and pending sessions survive reload in workspaceState. Reconnect and run Khyoot: Sync Pending Sessions after a failed save. Pending records remain tied to their original account and Firebase project. No source code or workspace files are uploaded. Extension writes retry concurrent edits and deduplicate sessions. The updated website also merges work logs in a Firestore transaction so project edits preserve concurrent IDE recordings. Older website deployments still have the previous whole-document-save limitation. DevelopmentOpen this directory and press F5. Run |