{"_id":"@appoutlet/cc-statusline","_rev":"7-8585d9d2dd8390f7878e0b145347d43a","name":"@appoutlet/cc-statusline","dist-tags":{"latest":"2.1.0"},"versions":{"2.0.0":{"name":"@appoutlet/cc-statusline","version":"2.0.0","keywords":["claude","claude-code","statusline","cli"],"license":"Apache-2.0","_id":"@appoutlet/cc-statusline@2.0.0","maintainers":[{"name":"messiaslima","email":"messiaslima.03@gmail.com"}],"homepage":"https://github.com/MessiasLima/cc-statusline#readme","bugs":{"url":"https://github.com/MessiasLima/cc-statusline/issues"},"bin":{"cc-statusline":"dist/cli.js"},"dist":{"shasum":"a46bb22ef69d9f8356b4319a8faac5056d1de560","tarball":"https://registry.npmjs.org/@appoutlet/cc-statusline/-/cc-statusline-2.0.0.tgz","fileCount":6,"integrity":"sha512-z4qEUsrvOeVILrfnA8beHfdfqblDmEyk8OmzuqIbj7MNIpIn30hYOzAIkK5wIgtetMn1KpYRcGr5+QNE0/JUDg==","signatures":[{"sig":"MEYCIQC2byk6dK5eBvN0w7Cny15YdVuYuPNxYkoQwIY2lGikrAIhAI2w5PVahrDhXPmN6c4nx7mOv9JHcaUaJ6SiICRGE8Hm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24513},"type":"commonjs","engines":{"node":">=18"},"gitHead":"2aadd12a88595321cf4f53a083b31df6a319a559","scripts":{"lint":"eslint .","build":"esbuild src/cli.ts src/install.ts src/update.ts --bundle --minify --platform=node --format=cjs --target=node18 --banner:js=\"#!/usr/bin/env node\" --outdir=dist","format":"prettier --write .","prepare":"husky || true","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","postinstall":"node -e \"const f='dist/install.js';require('fs').existsSync(f)&&require('child_process').execFileSync(process.execPath,[f],{stdio:'inherit'})\"","format:check":"prettier --check .","prepublishOnly":"npm run typecheck && npm run lint && npm run build"},"_npmUser":{"name":"messiaslima","email":"messiaslima.03@gmail.com"},"repository":{"url":"git+https://github.com/MessiasLima/cc-statusline.git","type":"git"},"_npmVersion":"11.12.1","description":"Rich multi-line status line for Claude Code — context, model, git and plan-usage bars","directories":{},"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^9.17.0","esbuild":"^0.28.0","prettier":"^3.4.2","typescript":"^5.7.2","@types/node":"^22.10.2","typescript-eslint":"^8.18.2","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cc-statusline_2.0.0_1780405922917_0.5282711617779023","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"@appoutlet/cc-statusline","version":"2.0.2","keywords":["claude","claude-code","statusline","cli"],"license":"Apache-2.0","_id":"@appoutlet/cc-statusline@2.0.2","maintainers":[{"name":"messiaslima","email":"messiaslima.03@gmail.com"}],"homepage":"https://github.com/MessiasLima/cc-statusline#readme","bugs":{"url":"https://github.com/MessiasLima/cc-statusline/issues"},"bin":{"cc-statusline":"dist/cli.js"},"dist":{"shasum":"d0fda9952e0acd99b48fe2ec5103ce579b8c9d90","tarball":"https://registry.npmjs.org/@appoutlet/cc-statusline/-/cc-statusline-2.0.2.tgz","fileCount":6,"integrity":"sha512-566iLpVhtro92zCz77UbKPrX+OIHTcLHgyHYQ3lJQ5syu1leUQgWQh/rEAyy5U5Ckd+6CI0iFscWtGuZU2SVuw==","signatures":[{"sig":"MEQCID6a+xdExERtuXZTu07Abg0uEkmLhebgnJSkOqJkU9lyAiAZrSgSJjtLK3p5TTDP9HBwtGUFVJlrRBl7E4KYrB87LA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@appoutlet%2fcc-statusline@2.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24513},"type":"commonjs","engines":{"node":">=18"},"gitHead":"f835946726ca5a09503038fcf1fe0324afce3ff7","scripts":{"lint":"eslint .","build":"esbuild src/cli.ts src/install.ts src/update.ts --bundle --minify --platform=node --format=cjs --target=node18 --banner:js=\"#!/usr/bin/env node\" --outdir=dist","format":"prettier --write .","prepare":"husky || true","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","postinstall":"node -e \"const f='dist/install.js';require('fs').existsSync(f)&&require('child_process').execFileSync(process.execPath,[f],{stdio:'inherit'})\"","format:check":"prettier --check .","prepublishOnly":"npm run typecheck && npm run lint && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46589781-d750-46f8-aa68-e9e1647ec7d2"}},"repository":{"url":"git+https://github.com/MessiasLima/cc-statusline.git","type":"git"},"_npmVersion":"11.12.1","description":"Rich multi-line status line for Claude Code — context, model, git and plan-usage bars","directories":{},"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^9.17.0","esbuild":"^0.28.0","prettier":"^3.4.2","typescript":"^5.7.2","@types/node":"^22.10.2","typescript-eslint":"^8.18.2","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cc-statusline_2.0.2_1780407075576_0.917585026292441","host":"s3://npm-registry-packages-npm-production"}},"2.0.3":{"name":"@appoutlet/cc-statusline","version":"2.0.3","keywords":["claude","claude-code","statusline","cli"],"license":"Apache-2.0","_id":"@appoutlet/cc-statusline@2.0.3","maintainers":[{"name":"messiaslima","email":"messiaslima.03@gmail.com"}],"homepage":"https://github.com/MessiasLima/cc-statusline#readme","bugs":{"url":"https://github.com/MessiasLima/cc-statusline/issues"},"bin":{"cc-statusline":"dist/cli.js"},"dist":{"shasum":"df3017ee25ca6a4b0bdb53c77991152c6f4d0c87","tarball":"https://registry.npmjs.org/@appoutlet/cc-statusline/-/cc-statusline-2.0.3.tgz","fileCount":6,"integrity":"sha512-3xpHB9ogGhN/cx281/bVeFSPaYMAnCqhVRzyu8EacEuclm82a5qIs7M/MLP5u938ixCfmH0BFC3J6QxfYFlZJw==","signatures":[{"sig":"MEYCIQD2aXc46Tbyr5ICA/Sgl7UFz5tGnefnWPK5qDnd12331wIhAKJuwglpVC18kBy66FGo5LDnG02Qv1AIhn11HbrLPVRE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@appoutlet%2fcc-statusline@2.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24741},"type":"commonjs","engines":{"node":">=18"},"gitHead":"ca0809d201384792981e48e1b84c7bb5385b6687","scripts":{"lint":"eslint .","build":"esbuild src/cli.ts src/install.ts src/update.ts --bundle --minify --platform=node --format=cjs --target=node18 --banner:js=\"#!/usr/bin/env node\" --outdir=dist","format":"prettier --write .","prepare":"husky || true","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","postinstall":"node -e \"const p=require('path');const f=p.join(p.dirname(process.env.npm_package_json||p.resolve('package.json')),'dist','install.js');require('fs').existsSync(f)&&require('child_process').execFileSync(process.execPath,[f],{stdio:'inherit'})\"","format:check":"prettier --check .","prepublishOnly":"npm run typecheck && npm run lint && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46589781-d750-46f8-aa68-e9e1647ec7d2"}},"repository":{"url":"git+https://github.com/MessiasLima/cc-statusline.git","type":"git"},"_npmVersion":"11.12.1","description":"Rich multi-line status line for Claude Code — context, model, git and plan-usage bars","directories":{},"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^9.17.0","esbuild":"^0.28.0","prettier":"^3.4.2","typescript":"^5.7.2","@types/node":"^22.10.2","typescript-eslint":"^8.18.2","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cc-statusline_2.0.3_1780408592002_0.19768343056119653","host":"s3://npm-registry-packages-npm-production"}},"2.0.4":{"name":"@appoutlet/cc-statusline","version":"2.0.4","keywords":["claude","claude-code","statusline","cli"],"license":"Apache-2.0","_id":"@appoutlet/cc-statusline@2.0.4","maintainers":[{"name":"messiaslima","email":"messiaslima.03@gmail.com"}],"homepage":"https://github.com/MessiasLima/cc-statusline#readme","bugs":{"url":"https://github.com/MessiasLima/cc-statusline/issues"},"bin":{"cc-statusline":"dist/cli.js"},"dist":{"shasum":"8323836b11f7a03d714233f2a499cf81b6ddf9e9","tarball":"https://registry.npmjs.org/@appoutlet/cc-statusline/-/cc-statusline-2.0.4.tgz","fileCount":5,"integrity":"sha512-gX7mHs5bhfVjx6Y5v4T6iuUoeyFCxuhZc3nRlsLuEyhaRolSLFOW5LrpYZFffQzzTte8KEGh2NQn1zf99Q8R4g==","signatures":[{"sig":"MEQCIAYUSb+d7KCLipGSUBnEb6XltUP1KWOypFKconxeEfd7AiBz299N53rGvytmIvUqwbtdaWVW34s0rjMY3k9YM6HWpQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@appoutlet%2fcc-statusline@2.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":23130},"type":"commonjs","engines":{"node":">=18"},"gitHead":"7e5dbba8638a1f2fac5c45dc9666f98e3498cca1","scripts":{"lint":"eslint .","build":"esbuild src/cli.ts src/update.ts --bundle --minify --platform=node --format=cjs --target=node18 --banner:js=\"#!/usr/bin/env node\" --outdir=dist","format":"prettier --write .","prepare":"husky || true","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","format:check":"prettier --check .","prepublishOnly":"npm run typecheck && npm run lint && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46589781-d750-46f8-aa68-e9e1647ec7d2"}},"repository":{"url":"git+https://github.com/MessiasLima/cc-statusline.git","type":"git"},"_npmVersion":"11.12.1","description":"Rich multi-line status line for Claude Code — context, model, git and plan-usage bars","directories":{},"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^9.17.0","esbuild":"^0.28.0","prettier":"^3.4.2","typescript":"^5.7.2","@types/node":"^22.10.2","typescript-eslint":"^8.18.2","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cc-statusline_2.0.4_1785498165244_0.9802340425675062","host":"s3://npm-registry-packages-npm-production"}},"2.0.5":{"name":"@appoutlet/cc-statusline","version":"2.0.5","keywords":["claude","claude-code","statusline","cli"],"license":"Apache-2.0","_id":"@appoutlet/cc-statusline@2.0.5","maintainers":[{"name":"messiaslima","email":"messiaslima.03@gmail.com"}],"homepage":"https://github.com/MessiasLima/cc-statusline#readme","bugs":{"url":"https://github.com/MessiasLima/cc-statusline/issues"},"bin":{"cc-statusline":"dist/cli.js"},"dist":{"shasum":"2aa13f9c499c0309e8d5fcc4fddfd20bf8449b1a","tarball":"https://registry.npmjs.org/@appoutlet/cc-statusline/-/cc-statusline-2.0.5.tgz","fileCount":5,"integrity":"sha512-/UnDcCIiKpknJ7w+co5GqmHc1MtTt2qH/3fXFMmkeu1NyBeZPczxtGp7+BsNKR2l6Zf5zQmc2m3CcTTig+evOA==","signatures":[{"sig":"MEUCIQDNFzTfPUzrpX+BtP6XKVtD2aC8Df1jV3A0MzV74gYpaAIgC4MyrbKp1bZEW39wrxCTYBNnlgyu3+SSdH/sGr/1io4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@appoutlet%2fcc-statusline@2.0.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":23130},"type":"commonjs","engines":{"node":">=18"},"gitHead":"936d00e4cedba1833a45d8769e953f67b2804c6d","scripts":{"lint":"eslint .","build":"esbuild src/cli.ts src/update.ts --bundle --minify --platform=node --format=cjs --target=node18 --banner:js=\"#!/usr/bin/env node\" --outdir=dist","format":"prettier --write .","prepare":"husky || true","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","format:check":"prettier --check .","prepublishOnly":"npm run typecheck && npm run lint && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46589781-d750-46f8-aa68-e9e1647ec7d2"}},"repository":{"url":"git+https://github.com/MessiasLima/cc-statusline.git","type":"git"},"_npmVersion":"11.12.1","description":"Rich multi-line status line for Claude Code — context, model, git and plan-usage bars","directories":{},"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^9.17.0","esbuild":"^0.28.0","prettier":"^3.4.2","typescript":"^5.7.2","@types/node":"^22.10.2","typescript-eslint":"^8.18.2","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cc-statusline_2.0.5_1785511082385_0.8435290061565177","host":"s3://npm-registry-packages-npm-production"}},"2.0.6":{"name":"@appoutlet/cc-statusline","version":"2.0.6","keywords":["claude","claude-code","statusline","cli"],"license":"Apache-2.0","_id":"@appoutlet/cc-statusline@2.0.6","maintainers":[{"name":"messiaslima","email":"messiaslima.03@gmail.com"}],"homepage":"https://github.com/MessiasLima/cc-statusline#readme","bugs":{"url":"https://github.com/MessiasLima/cc-statusline/issues"},"bin":{"cc-statusline":"dist/cli.js"},"dist":{"shasum":"19b2566d6aa2d58897243b69f9b621df4b8cbcfb","tarball":"https://registry.npmjs.org/@appoutlet/cc-statusline/-/cc-statusline-2.0.6.tgz","fileCount":5,"integrity":"sha512-npdb2CNIPXybOFvziJ6dQ7VizOw8n0IfogFN9V9nDVBhhzsCzYs0ro+KNzgFIk4lyXFJ2ymzYdL2OX+9eA92ig==","signatures":[{"sig":"MEUCIQCfBmL7KapuEGTe60Leu1Bklvw4j4HkJvWmYpethqxQqAIgSaLAun+PPha0AsK+UvrFdjTnknkDXvfIte/+A2Sdgkc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@appoutlet%2fcc-statusline@2.0.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":23130},"type":"commonjs","engines":{"node":">=18"},"gitHead":"9412cd7ffd5e2e0df98d88c35370d50100484c89","scripts":{"lint":"eslint .","build":"esbuild src/cli.ts src/update.ts --bundle --minify --platform=node --format=cjs --target=node18 --banner:js=\"#!/usr/bin/env node\" --outdir=dist","format":"prettier --write .","prepare":"husky || true","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","format:check":"prettier --check .","prepublishOnly":"npm run typecheck && npm run lint && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46589781-d750-46f8-aa68-e9e1647ec7d2"}},"repository":{"url":"git+https://github.com/MessiasLima/cc-statusline.git","type":"git"},"_npmVersion":"11.12.1","description":"Rich multi-line status line for Claude Code — context, model, git and plan-usage bars","directories":{},"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","eslint":"^9.17.0","esbuild":"^0.28.0","prettier":"^3.4.2","typescript":"^5.7.2","@types/node":"^22.10.2","typescript-eslint":"^8.18.2","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cc-statusline_2.0.6_1785512506168_0.15509721384263808","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@appoutlet/cc-statusline","version":"2.1.0","description":"Rich multi-line status line for Claude Code — context, model, git and plan-usage bars","keywords":["claude","claude-code","statusline","cli"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/MessiasLima/cc-statusline.git"},"bin":{"cc-statusline":"dist/cli.js"},"type":"commonjs","engines":{"node":">=18"},"publishConfig":{"access":"public"},"scripts":{"build":"esbuild src/cli.ts src/update.ts --bundle --minify --platform=node --format=cjs --target=node18 --banner:js=\"#!/usr/bin/env node\" --outdir=dist","typecheck":"tsc --noEmit","lint":"eslint .","lint:fix":"eslint . --fix","format":"prettier --write .","format:check":"prettier --check .","prepare":"husky || true","prepublishOnly":"npm run typecheck && npm run lint && npm run build"},"devDependencies":{"@types/node":"^22.10.2","esbuild":"^0.28.0","eslint":"^9.17.0","eslint-config-prettier":"^9.1.0","husky":"^9.1.7","prettier":"^3.4.2","typescript":"^5.7.2","typescript-eslint":"^8.18.2"},"gitHead":"5c2611cb4f8e6e353deead4a1635179e8d3fa21e","_id":"@appoutlet/cc-statusline@2.1.0","bugs":{"url":"https://github.com/MessiasLima/cc-statusline/issues"},"homepage":"https://github.com/MessiasLima/cc-statusline#readme","_nodeVersion":"24.15.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-kBHWSut8FuwnbExQVPZqnkMi+BxWr2XWMDCsa74VPsLraOiSxrI2g0ERqhOTCTgXBzHKlG06OURxOXdofR0SBA==","shasum":"39dae252e09a895c600c0ce6a948deb14eb1debb","tarball":"https://registry.npmjs.org/@appoutlet/cc-statusline/-/cc-statusline-2.1.0.tgz","fileCount":5,"unpackedSize":24840,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@appoutlet%2fcc-statusline@2.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAXUFow8AbKsB+++SF8GIoxYUtUN+vjp/SaWJj06OIuoAiEAyPNozsplQwVW8ZfFRTV+p3Z3+8ga6EWiWMsOAEf/psY="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:46589781-d750-46f8-aa68-e9e1647ec7d2"}},"directories":{},"maintainers":[{"name":"messiaslima","email":"messiaslima.03@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cc-statusline_2.1.0_1786110986614_0.7548062817513916"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-02T13:12:02.721Z","modified":"2026-08-07T13:56:27.088Z","2.0.0":"2026-06-02T13:12:03.070Z","2.0.2":"2026-06-02T13:31:15.736Z","2.0.3":"2026-06-02T13:56:32.136Z","2.0.4":"2026-07-31T11:42:45.394Z","2.0.5":"2026-07-31T15:18:02.605Z","2.0.6":"2026-07-31T15:41:46.328Z","2.1.0":"2026-08-07T13:56:26.745Z"},"bugs":{"url":"https://github.com/MessiasLima/cc-statusline/issues"},"license":"Apache-2.0","homepage":"https://github.com/MessiasLima/cc-statusline#readme","keywords":["claude","claude-code","statusline","cli"],"repository":{"type":"git","url":"git+https://github.com/MessiasLima/cc-statusline.git"},"description":"Rich multi-line status line for Claude Code — context, model, git and plan-usage bars","maintainers":[{"name":"messiaslima","email":"messiaslima.03@gmail.com"}],"readme":"# cc-statusline\n\n![Screenshot](docs/screenshot2.png)\n\nA rich, multi-line status line for [Claude Code](https://claude.ai/code) — context window usage,\nmodel name + reasoning effort, current project, git branch, and your Claude plan rate-limit usage\nas progress bars. Written in TypeScript, shipped as a single dependency-free Node binary.\n\n> **Note:** Only tested on macOS.\n\n## Preview\n\n```\n◈ 42% · ◆ Opus (high) · ⌂ my-project · ⎇ main\n⏱ ██░░░░░░░░ 23% (resets 14:30) · ▦ ████░░░░░░ 41% (resets Fri)\n```\n\n> Line 2 (rate-limit bars) only appears for Claude.ai Pro/Max subscribers, after the first API\n> response in a session.\n\n## Requirements\n\n- [Claude Code](https://claude.ai/code) CLI\n- [Node.js](https://nodejs.org) ≥ 18 (only `git` is used at runtime; no other external tools)\n- A terminal with ANSI color support\n\n## Setup\n\n### Recommended: global install\n\n```bash\nnpm install -g @appoutlet/cc-statusline\n```\n\nThen add this to `~/.claude/settings.json`:\n\n```json\n{\n  \"statusLine\": {\n    \"type\": \"command\",\n    \"command\": \"cc-statusline\"\n  }\n}\n```\n\nA global install is recommended because the status line runs on **every render** — the binary is\ninvoked directly with no per-render resolution overhead.\n\n### Alternative: no install (npx)\n\n```json\n{\n  \"statusLine\": {\n    \"type\": \"command\",\n    \"command\": \"npx -y @appoutlet/cc-statusline\"\n  }\n}\n```\n\n`npx` re-resolves the package on every render, so it is noticeably slower for a status line, and it\ndoes not run the auto-update. Use `-y` because stdin carries the JSON payload and cannot answer\nnpx's first-run install prompt.\n\n## Auto-update\n\nWhen installed globally, `cc-statusline` keeps itself current with npm. At most once every 24 hours\nit checks the registry in a **detached background process** — it never delays a render — and, when a\nnewer version is published, updates the global install in place. A dim `⬆ vX.Y.Z` indicator appears\non line 1 while an update is pending or if it could not be applied.\n\nIf the npm global prefix isn't writable by your user, the auto-update can't run; the `⬆` indicator\nthen reminds you to update manually:\n\n```bash\nnpm i -g @appoutlet/cc-statusline@latest\n```\n\nEnvironment variables:\n\n| Variable                        | Effect                                   |\n| ------------------------------- | ---------------------------------------- |\n| `CC_STATUSLINE_NO_UPDATE`       | Disable update checks entirely           |\n| `CC_STATUSLINE_UPDATE_DRY_RUN`  | Check and notify (`⬆`) but never install |\n| `CC_STATUSLINE_UPDATE_INTERVAL` | Hours between checks (default `24`)      |\n\n## What it displays\n\n| Symbol | Field                     | Source                                 |\n| ------ | ------------------------- | -------------------------------------- |\n| `◈`    | Context window usage (%)  | `context_window.used_percentage`       |\n| `◆`    | Model name + effort level | `model.display_name` + `effort.level`  |\n| `⌂`    | Project folder name       | `workspace.current_dir`                |\n| `⎇`    | Git branch                | `git branch --show-current`            |\n| `⏱`    | 5-hour rate-limit bar     | `rate_limits.five_hour` (Pro/Max only) |\n| `▦`    | 7-day rate-limit bar      | `rate_limits.seven_day` (Pro/Max only) |\n| `⬆`    | Update available          | background update check                |\n\nAll symbols above are defaults — see [Customization](#customization) to change them.\n\n### Progress bar colors\n\nThe icon, bar, and percentage are all colored by usage level:\n\n| Range  | Color  |\n| ------ | ------ |\n| 0–60%  | Green  |\n| 61–80% | Yellow |\n| 81–95% | Orange |\n| > 95%  | Red    |\n\n## Customization\n\nEvery icon, the progress-bar characters, the bar width, and the segment separator are configurable\nvia the `ccStatusline` key in `~/.claude/settings.local.json` (falling back to\n`~/.claude/settings.json`). The local file wins per-key. Settings missing from both files keep their\ndefaults; an unparseable or invalid value also falls back to its default. Set an icon to `\"\"` to hide\nits glyph.\n\n> **Recommended: put `ccStatusline` in `settings.local.json`, not `settings.json`.** `ccStatusline` is\n> a custom key that Claude Code's own settings schema doesn't recognize, so tools (including Claude\n> Code itself, when asked to edit your settings) may reject the write or drop the key from\n> `settings.json`. `settings.local.json` isn't validated against that schema, so it's the safe place\n> for this block — and it's also gitignored by default, which suits a personal display preference\n> better than a shared, version-controlled file anyway.\n\n```jsonc\n// ~/.claude/settings.local.json\n{\n  \"ccStatusline\": {\n    \"icons\": {\n      \"context\": \"◈\", // context-window usage\n      \"model\": \"◆\", // model + reasoning effort\n      \"directory\": \"⌂\", // current folder name\n      \"branch\": \"⎇\", // git branch\n      \"update\": \"⬆\", // pending update\n      \"fiveHour\": \"⏱\", // 5-hour rate-limit window\n      \"week\": \"▦\", // 7-day rate-limit window\n    },\n    \"progressBar\": {\n      \"filled\": \"█\", // used cells\n      \"empty\": \"░\", // remaining cells\n      \"width\": 10, // total cells\n    },\n    \"separator\": \" · \", // joins segments and windows\n  },\n}\n```\n\n## How it works\n\nClaude Code pipes a JSON payload to the configured command on stdin. `cc-statusline` parses it with\nnative `JSON.parse` (no `jq` needed), composes the two lines, and prints them — then, only when due,\nfires a throttled background update check that exits without blocking output.\n\n## Contributing\n\nWant to work on `cc-statusline` itself? See [CONTRIBUTING.md](./CONTRIBUTING.md) for setup, commands,\nand architecture notes.\n\n## License\n\n[Apache 2.0](./LICENSE)\n","readmeFilename":"README.md"}