{"_id":"osc-progress","_rev":"7-c399256872b9035f2f4bb9f293d5d097","name":"osc-progress","dist-tags":{"latest":"0.3.4"},"versions":{"0.1.0":{"name":"osc-progress","version":"0.1.0","keywords":["osc","terminal","progress","cli","ghostty","wezterm","windows-terminal"],"author":{"name":"Peter Steinberger"},"license":"MIT","_id":"osc-progress@0.1.0","maintainers":[{"name":"steipete","email":"steipete@gmail.com"}],"homepage":"https://github.com/steipete/osc-progress#readme","bugs":{"url":"https://github.com/steipete/osc-progress/issues"},"dist":{"shasum":"1eb358e00381a7a07bcbf2aa4edd2b147fb5e69d","tarball":"https://registry.npmjs.org/osc-progress/-/osc-progress-0.1.0.tgz","fileCount":10,"integrity":"sha512-9HrEuN+6C/ZsbLI58ZVIOMMfk3K9y1wEf7v1KA9eiChfWoe/HCOVJrRdPhP815tY/CB4wt5snJMfFMEBPZDhng==","signatures":[{"sig":"MEQCIE8j5OGoa81b2tn7/Ki7FnFGowgabVF2/fRoWK91YsrHAiBOa5mTzU2hRloFVSKWWjNWKMKKxWBiEz5xe56kMyCELA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23926},"main":"./dist/esm/index.js","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js"}},"gitHead":"b4589770622a3a037c99c0ef58792808593a28b6","scripts":{"lint":"biome check .","test":"pnpm build && vitest run","build":"tsc -p tsconfig.build.json","check":"pnpm lint && pnpm test:coverage","format":"biome format --write .","prepack":"pnpm build","prepare":"pnpm build","lint:fix":"biome check --write .","typecheck":"tsc -p tsconfig.build.json --noEmit","test:coverage":"pnpm build && vitest run --coverage","prepublishOnly":"pnpm check"},"_npmUser":{"name":"steipete","email":"steipete@gmail.com"},"repository":{"url":"git+https://github.com/steipete/osc-progress.git","type":"git"},"_npmVersion":"11.6.2","description":"Tiny TypeScript helper for OSC 9;4 terminal progress sequences.","directories":{},"sideEffects":false,"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"packageManager":"pnpm@10.25.0","devDependencies":{"vitest":"^4.0.16","typescript":"^5.9.3","@types/node":"^25.0.3","@biomejs/biome":"^2.3.10","@vitest/coverage-v8":"^4.0.16"},"_npmOperationalInternal":{"tmp":"tmp/osc-progress_0.1.0_1766149227919_0.5070711198522255","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"osc-progress","version":"0.2.0","keywords":["osc","terminal","progress","cli","ghostty","wezterm","windows-terminal"],"author":{"name":"Peter Steinberger"},"license":"MIT","_id":"osc-progress@0.2.0","maintainers":[{"name":"steipete","email":"steipete@gmail.com"}],"homepage":"https://github.com/steipete/osc-progress#readme","bugs":{"url":"https://github.com/steipete/osc-progress/issues"},"dist":{"shasum":"e66dd094fc44e782a0f15aa269eda2fc7d98fb30","tarball":"https://registry.npmjs.org/osc-progress/-/osc-progress-0.2.0.tgz","fileCount":10,"integrity":"sha512-GJR9XnS8dQ+sAdbhX90RA4WbmEyrso7X9aHMws4MaQ2GRpfEjnOUSZIdOXJQfnIfBoy9oCc7US/MNFCyuJQzjg==","signatures":[{"sig":"MEUCIQC7J9D6gzkggFsTbOWzUSIJ3naIKsF8JJ8/pceRr9L89wIgDsmTeZbdIezOa89E2X51/sjj7a6/iKhzBi+UnZlfBWc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29965},"main":"./dist/esm/index.js","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js"}},"gitHead":"44bd742691cda9a11c08bcd27ec69aaf4576e850","scripts":{"lint":"biome check .","test":"pnpm build && vitest run","build":"tsc -p tsconfig.build.json","check":"pnpm lint && pnpm test:coverage","format":"biome format --write .","prepack":"pnpm build","prepare":"pnpm build","lint:fix":"biome check --write .","typecheck":"tsc -p tsconfig.build.json --noEmit","test:coverage":"pnpm build && vitest run --coverage","prepublishOnly":"pnpm check"},"_npmUser":{"name":"steipete","email":"steipete@gmail.com"},"repository":{"url":"git+https://github.com/steipete/osc-progress.git","type":"git"},"_npmVersion":"11.6.2","description":"Tiny TypeScript helper for OSC 9;4 terminal progress sequences.","directories":{},"sideEffects":false,"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"packageManager":"pnpm@10.25.0","devDependencies":{"vitest":"^4.0.16","typescript":"^5.9.3","@types/node":"^25.0.3","@biomejs/biome":"^2.3.10","@vitest/coverage-v8":"^4.0.16"},"_npmOperationalInternal":{"tmp":"tmp/osc-progress_0.2.0_1766626571659_0.028077726545152393","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"osc-progress","version":"0.3.0","keywords":["osc","terminal","progress","cli","ghostty","wezterm","windows-terminal"],"author":{"name":"Peter Steinberger"},"license":"MIT","_id":"osc-progress@0.3.0","maintainers":[{"name":"steipete","email":"steipete@gmail.com"}],"homepage":"https://github.com/steipete/osc-progress#readme","bugs":{"url":"https://github.com/steipete/osc-progress/issues"},"dist":{"shasum":"449d9d7b346c8ea2a7838841103b98d23f5c6a06","tarball":"https://registry.npmjs.org/osc-progress/-/osc-progress-0.3.0.tgz","fileCount":10,"integrity":"sha512-4/8JfsetakdeEa4vAYV45FW20aY+B/+K8NEXp5Eiar3wR8726whgHrbSg5Ar/ZY1FLJ/AGtUqV7W2IVF+Gvp9A==","signatures":[{"sig":"MEUCIB/39CZwdRiw4TTHYVGGq7h3gcPE+0qGG53/l0f00GnFAiEA/sTjwfzGKZpzDFTSSU/jA4icveE5m9QTxzBQqcNlNlg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41163},"main":"./dist/esm/index.js","type":"module","_from":"file:osc-progress-0.3.0.tgz","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js"}},"scripts":{"lint":"biome check .","test":"pnpm build && vitest run","build":"tsc -p tsconfig.build.json","check":"pnpm lint && pnpm test:coverage","format":"biome format --write .","lint:fix":"biome check --write .","typecheck":"tsc -p tsconfig.build.json --noEmit","test:coverage":"pnpm build && vitest run --coverage"},"_npmUser":{"name":"steipete","email":"steipete@gmail.com"},"_resolved":"/private/var/folders/qp/t4t5pw1n1279_1qckf4gqhyc0000gn/T/1b412a2beff4d4708debd83453ff4eed/osc-progress-0.3.0.tgz","_integrity":"sha512-4/8JfsetakdeEa4vAYV45FW20aY+B/+K8NEXp5Eiar3wR8726whgHrbSg5Ar/ZY1FLJ/AGtUqV7W2IVF+Gvp9A==","repository":{"url":"git+https://github.com/steipete/osc-progress.git","type":"git"},"_npmVersion":"11.6.2","description":"Tiny TypeScript helper for OSC 9;4 terminal progress sequences.","directories":{},"sideEffects":false,"_nodeVersion":"25.3.0","_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.16","typescript":"^5.9.3","@types/node":"^25.0.3","@biomejs/biome":"^2.3.10","@vitest/coverage-v8":"^4.0.16"},"_npmOperationalInternal":{"tmp":"tmp/osc-progress_0.3.0_1768891732017_0.1679489791530162","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"osc-progress","version":"0.3.1","keywords":["cli","ghostty","osc","progress","terminal","wezterm","windows-terminal"],"author":{"name":"Peter Steinberger"},"license":"MIT","_id":"osc-progress@0.3.1","maintainers":[{"name":"steipete","email":"steipete@gmail.com"}],"homepage":"https://github.com/steipete/osc-progress#readme","bugs":{"url":"https://github.com/steipete/osc-progress/issues"},"dist":{"shasum":"e7ce8bf5e13411c6fd4611cb6c39556dad573f20","tarball":"https://registry.npmjs.org/osc-progress/-/osc-progress-0.3.1.tgz","fileCount":10,"integrity":"sha512-2+kMidO/YodbpyjdKUfR2Io978LuXfWpgu47zT8rF6hsaiWeD7CxHpU9deG8nB953M9og+A4qDlcmR6VFqAHaQ==","signatures":[{"sig":"MEYCIQDSciIIofe+LioegSkBOeEVLduy7BmqwuLpsC1I0WU8VQIhANqKcVVC8S1NHAjVlj6qRRG3XOUZC1qSd+NVfUCnsQpd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42400},"main":"./dist/esm/index.js","type":"module","_from":"file:osc-progress-0.3.1.tgz","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=24"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","default":"./dist/esm/index.js"}},"scripts":{"lint":"pnpm format:check && oxlint --deny-warnings src tests","test":"pnpm build && vitest run","build":"tsgo -p tsconfig.build.json","check":"pnpm lint && pnpm typecheck && pnpm test:coverage","format":"oxfmt --write .","lint:fix":"pnpm format && oxlint --fix src tests","typecheck":"tsgo -p tsconfig.build.json --noEmit","format:check":"oxfmt --check .","test:coverage":"pnpm build && vitest run --coverage"},"_npmUser":{"name":"steipete","email":"steipete@gmail.com"},"_resolved":"/private/var/folders/m_/4htdcqkn5cjdh0cs4psnxs5w0000gn/T/b9ee4d1ee2e2d0eba511f6a9da3a5c36/osc-progress-0.3.1.tgz","_integrity":"sha512-2+kMidO/YodbpyjdKUfR2Io978LuXfWpgu47zT8rF6hsaiWeD7CxHpU9deG8nB953M9og+A4qDlcmR6VFqAHaQ==","repository":{"url":"git+https://github.com/steipete/osc-progress.git","type":"git"},"_npmVersion":"11.11.0","description":"Tiny TypeScript helper for OSC 9;4 terminal progress sequences.","directories":{},"sideEffects":false,"_nodeVersion":"25.8.1","_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","oxfmt":"^0.53.0","oxlint":"^1.62.0","vitest":"^4.1.5","postcss":"^8.5.13","typescript":"^6.0.3","@types/node":"^25.6.0","@vitest/coverage-v8":"^4.1.5","@typescript/native-preview":"7.0.0-dev.20260605.1"},"_npmOperationalInternal":{"tmp":"tmp/osc-progress_0.3.1_1781075887445_0.07162511651841519","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"osc-progress","version":"0.3.2","keywords":["cli","ghostty","osc","progress","terminal","wezterm","windows-terminal"],"author":{"name":"Peter Steinberger"},"license":"MIT","_id":"osc-progress@0.3.2","maintainers":[{"name":"steipete","email":"steipete@gmail.com"}],"homepage":"https://github.com/steipete/osc-progress#readme","bugs":{"url":"https://github.com/steipete/osc-progress/issues"},"dist":{"shasum":"d14b96e364e837e2cece4a102b3fbdd0f70056d4","tarball":"https://registry.npmjs.org/osc-progress/-/osc-progress-0.3.2.tgz","fileCount":10,"integrity":"sha512-ZKd6rgRqlnBpw/XwK+x9LwRbgQiJbxvOFD8F8wGLrEF9FxzWDbJQdvWLk6oFxhlLI1S43ECEGPDpI+J7Oi20YA==","signatures":[{"sig":"MEUCIEO14FE0y6YuYonioH/igI7xV9polXdOAFS4ayilxEfOAiEA4022gaBeAjb76KfwFJ6AQzFxGnXWrFt5YwvWpE6FDhQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43351},"main":"./dist/esm/index.js","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=24"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","default":"./dist/esm/index.js"}},"gitHead":"96e34215caf414337e39f1e2cc3bc17875444103","scripts":{"lint":"pnpm format:check && oxlint --deny-warnings src tests","test":"pnpm build && vitest run","build":"tsgo -p tsconfig.build.json","check":"pnpm lint && pnpm typecheck && pnpm test:coverage","format":"oxfmt --write .","prepack":"pnpm build","prepare":"pnpm build","lint:fix":"pnpm format && oxlint --fix src tests","typecheck":"tsgo -p tsconfig.build.json --noEmit","format:check":"oxfmt --check .","test:coverage":"pnpm build && vitest run --coverage","prepublishOnly":"pnpm check"},"_npmUser":{"name":"steipete","email":"steipete@gmail.com"},"repository":{"url":"git+https://github.com/steipete/osc-progress.git","type":"git"},"_npmVersion":"11.11.0","description":"Tiny TypeScript helper for OSC 9;4 terminal progress sequences.","directories":{},"sideEffects":false,"_nodeVersion":"25.8.1","_hasShrinkwrap":false,"packageManager":"pnpm@10.33.2","devDependencies":{"vite":"^8.1.2","oxfmt":"^0.57.0","oxlint":"^1.72.0","vitest":"^4.1.9","postcss":"^8.5.16","typescript":"^6.0.3","@types/node":"^26.0.1","@vitest/coverage-v8":"^4.1.9","@typescript/native-preview":"7.0.0-dev.20260703.1"},"_npmOperationalInternal":{"tmp":"tmp/osc-progress_0.3.2_1783136927184_0.445308708576275","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"osc-progress","version":"0.3.3","keywords":["cli","ghostty","osc","progress","terminal","wezterm","windows-terminal"],"author":{"name":"Peter Steinberger"},"license":"MIT","_id":"osc-progress@0.3.3","maintainers":[{"name":"steipete","email":"steipete@gmail.com"}],"homepage":"https://github.com/steipete/osc-progress#readme","bugs":{"url":"https://github.com/steipete/osc-progress/issues"},"dist":{"shasum":"8d48b61436b65f092abe32eea89a251ff53fd0b7","tarball":"https://registry.npmjs.org/osc-progress/-/osc-progress-0.3.3.tgz","fileCount":10,"integrity":"sha512-cXhDQc8G8KoIouY/fuOsoKjv2sL7l5TwocUufxD4UY/MlHeL7AenYDLHoDgjHUBVdhXPd/frhzYruZHgnMQ0kg==","signatures":[{"sig":"MEQCIGNb6DsoFvmEcW5cmPxLmF+VJ4ZS3dgX6rRTOZKS64FUAiAYAXPEaJXfejiy8kHyWUVJCq2sD7xQ8i1A6Lw1eR7lSQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC9IfB/psNWOnz0cZU4Qrw0lZvHPY9yWfV2nfLkaLOLKQIgPVdcVkokUoQ5wuw5fS/5hiGQM5/+pOF6XVlPLKy3nMc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43561},"main":"./dist/esm/index.js","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=24"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","default":"./dist/esm/index.js"}},"gitHead":"713121910214b468b12cc6af1bc5104a004da3a1","scripts":{"lint":"pnpm format:check && oxlint --deny-warnings src tests","test":"pnpm build && vitest run","build":"tsc -p tsconfig.build.json","check":"pnpm lint && pnpm typecheck && pnpm test:coverage","format":"oxfmt --write .","prepack":"pnpm build","prepare":"pnpm build","lint:fix":"pnpm format && oxlint --fix src tests","typecheck":"tsc -p tsconfig.build.json --noEmit","format:check":"oxfmt --check .","test:coverage":"pnpm build && vitest run --coverage","prepublishOnly":"pnpm check"},"_npmUser":{"name":"steipete","email":"steipete@gmail.com"},"repository":{"url":"git+https://github.com/steipete/osc-progress.git","type":"git"},"_npmVersion":"11.17.0","description":"Tiny TypeScript helper for OSC 9;4 terminal progress sequences.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","_hasShrinkwrap":false,"packageManager":"pnpm@11.18.0","devDependencies":{"vite":"^8.2.1","oxfmt":"^0.63.0","oxlint":"^1.78.0","vitest":"^4.1.10","postcss":"^8.5.26","typescript":"^7.0.2","@types/node":"^26.2.0","@vitest/coverage-v8":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/osc-progress_0.3.3_1786622562528_0.5093315470499835","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"_id":"osc-progress@0.3.4","bugs":{"url":"https://github.com/steipete/osc-progress/issues"},"dist":{"shasum":"5738813c210fb9176ed22dd328965b15e5d7c4a5","tarball":"https://registry.npmjs.org/osc-progress/-/osc-progress-0.3.4.tgz","fileCount":13,"integrity":"sha512-dUreuPFdv7eRPAbkv9LtBz8HmrXT1Buz5zg4OptSC3zlNwHBUL/FYWxApp3K0bYxTWnNzAaKZDNajg1QFkyiRg==","signatures":[{"sig":"MEUCIQDP5Qkow/ZqM3eRYHUd5ikfwRd39MbzRPZg5Rs8wrwoWwIgA7pIlzbVuNIEc357LPkjdEtbPJNNdJtCez8QPRzpJLs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD8nrn8mf51AOi42FC4qHIETF+JCUi/BlssWMud0WkPiwIhAKPdMJBqwZ6dftF/j7BcmS/tJHWeq+K4vy7pVclYAgpy"}],"unpackedSize":45151},"main":"./dist/esm/index.js","name":"osc-progress","type":"module","types":"./dist/types/index.d.ts","author":{"name":"Peter Steinberger"},"module":"./dist/esm/index.js","engines":{"node":">=24"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","default":"./dist/esm/index.js"}},"gitHead":"d19508dc8fca7f43b6581a06dbdabcdef5725f64","license":"MIT","scripts":{"lint":"pnpm format:check && oxlint --deny-warnings src tests scripts","test":"pnpm build && vitest run","build":"tsc -p tsconfig.build.json","check":"pnpm lint && pnpm typecheck && pnpm test:coverage","format":"oxfmt --write .","prepack":"pnpm build","prepare":"pnpm build","lint:fix":"pnpm format && oxlint --fix src tests scripts","typecheck":"tsc -p tsconfig.json --noEmit","format:check":"oxfmt --check .","test:coverage":"pnpm build && vitest run --coverage","prepublishOnly":"pnpm check"},"version":"0.3.4","_npmUser":{"name":"steipete","email":"steipete@gmail.com"},"homepage":"https://github.com/steipete/osc-progress#readme","keywords":["cli","ghostty","osc","progress","terminal","wezterm","windows-terminal"],"repository":{"url":"git+https://github.com/steipete/osc-progress.git","type":"git"},"_npmVersion":"11.19.0","description":"Tiny TypeScript helper for OSC 9;4 terminal progress sequences.","directories":{},"maintainers":[{"name":"steipete","email":"steipete@gmail.com"}],"sideEffects":false,"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"packageManager":"pnpm@11.26.0","devDependencies":{"vite":"^8.3.0","oxfmt":"^0.67.0","oxlint":"^1.82.0","vitest":"^5.0.0","postcss":"^8.5.28","typescript":"^7.0.2","@types/node":"^24.13.4","@vitest/coverage-v8":"^5.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/osc-progress_0.3.4_1789351194054_0.007605543918113522"}}},"time":{"created":"2025-12-19T13:00:27.918Z","modified":"2026-09-14T01:59:54.301Z","0.1.0":"2025-12-19T13:00:28.055Z","0.2.0":"2025-12-25T01:36:11.810Z","0.3.0":"2026-01-20T06:48:52.227Z","0.3.1":"2026-06-10T07:18:07.613Z","0.3.2":"2026-07-04T03:48:47.320Z","0.3.3":"2026-08-13T12:02:42.608Z","0.3.4":"2026-09-14T01:59:54.144Z"},"bugs":{"url":"https://github.com/steipete/osc-progress/issues"},"author":{"name":"Peter Steinberger"},"license":"MIT","homepage":"https://github.com/steipete/osc-progress#readme","keywords":["cli","ghostty","osc","progress","terminal","wezterm","windows-terminal"],"repository":{"url":"git+https://github.com/steipete/osc-progress.git","type":"git"},"description":"Tiny TypeScript helper for OSC 9;4 terminal progress sequences.","maintainers":[{"name":"steipete","email":"steipete@gmail.com"}],"readme":"# osc-progress ⏳ — Tiny progress, right in the tab.\n\n[![CI](https://img.shields.io/github/actions/workflow/status/steipete/osc-progress/ci.yml?branch=main&style=flat-square&label=ci)](https://github.com/steipete/osc-progress/actions/workflows/ci.yml)\n[![npm](https://img.shields.io/npm/v/osc-progress?style=flat-square)](https://www.npmjs.com/package/osc-progress)\n[![Node](https://img.shields.io/node/v/osc-progress?style=flat-square)](https://nodejs.org)\n[![License](https://img.shields.io/github/license/steipete/osc-progress?style=flat-square)](LICENSE)\n\n`osc-progress` is a TypeScript library for emitting and removing OSC 9;4 terminal progress\nsequences. It is intended for Node.js CLIs running in Ghostty, WezTerm, Canario, or Windows\nTerminal and becomes a no-op outside supported TTYs.\n\n## Install\n\n```sh\npnpm add osc-progress\n```\n\nNode.js 24 or newer is required.\n\n## Quick start\n\n```ts\nimport { setTimeout as delay } from \"node:timers/promises\";\nimport { startOscProgress } from \"osc-progress\";\n\nconst stop = startOscProgress({ label: \"Indexing\", indeterminate: true });\ntry {\n  await delay(1_000);\n} finally {\n  stop();\n}\n```\n\n`startOscProgress()` writes to stderr by default. In a supported terminal it starts progress and\nreturns an idempotent function that clears it; elsewhere both operations do nothing.\n\n## Report real progress\n\nUse a controller when the work already exposes a percentage or moves between states:\n\n```ts\nimport { createOscProgressController } from \"osc-progress\";\n\nconst progress = createOscProgressController({ stallAfterMs: 10_000 });\nprogress.setIndeterminate(\"Connecting\");\nprogress.setPercent(\"Downloading\", 42);\nprogress.done();\n```\n\nUpdates are deduplicated and throttled to about one every 150 ms. Percentages are rounded and\nclamped to `0..100`; `done()` and `fail()` emit their final state before clearing it.\n\n## Detection and overrides\n\nProgress is enabled only for a TTY recognized as Ghostty, WezTerm, Canario, or Windows Terminal.\nThe same detection applies to both `startOscProgress()` and `createOscProgressController()`.\n\n```ts\nimport { supportsOscProgress } from \"osc-progress\";\n\nconst supported = supportsOscProgress(process.env, process.stderr.isTTY === true, {\n  forceEnvVar: \"MY_CLI_FORCE_PROGRESS\",\n  disableEnvVar: \"MY_CLI_NO_PROGRESS\",\n});\n```\n\nThe named environment variables take effect when their value is `\"1\"`. Direct `force` and\n`disabled` options are also available; a non-TTY stream always remains disabled.\n\n## Clean stored output\n\nRemove progress control sequences before saving captured terminal output:\n\n```ts\nimport { sanitizeOscProgress } from \"osc-progress\";\n\nfunction prepareForStorage(output: string): string {\n  return sanitizeOscProgress(output, process.stdout.isTTY === true);\n}\n```\n\nThe parser recognizes sequences terminated by `BEL`, `ST` (`ESC \\\\`), or C1 `ST` (`0x9c`).\n\n## API and terminal behavior\n\nThe public API includes the timer-based helper, a stateful controller, support detection, label\nsanitization, sequence discovery, and stripping helpers. See the [API reference](docs/API.md) for\nsignatures, options, exported constants, and OSC 9;4 portability notes.\n\nOSC 9;4 state `4` is interpreted as paused by some terminals and warning by others. The library\nemits the numeric state without trying to normalize that terminal-specific behavior. Labels are\nan extra payload outside the canonical OSC 9;4 fields, so terminals may ignore them.\n\n## Development\n\n```sh\npnpm install\npnpm build\npnpm test\npnpm check\n```\n\n`pnpm check` runs formatting, linting, typechecking, tests, and coverage thresholds.\nAfter building, `node scripts/smoke.mjs` checks the compiled package through ESM and CommonJS\nentrypoints with real timers. CI runs tests and this smoke check on Node 24 and 26;\nformatting, typechecking, and coverage run once on Node 24. The Vitest 5 development toolchain\nexcludes the odd, non-LTS Node 25 line; the package still requires Node.js 24 or newer.\n\n## License\n\nMIT. See [LICENSE](LICENSE).\n","readmeFilename":"README.md"}