{"_id":"@arnavpisces/sutra","_rev":"7-a5080ccb2d2bf1247158a54fe8ff68bd","name":"@arnavpisces/sutra","dist-tags":{"latest":"1.0.9"},"versions":{"1.0.0":{"name":"@arnavpisces/sutra","version":"1.0.0","keywords":["jira","confluence","atlassian","terminal","tui"],"author":{"name":"Arnav Kumar"},"license":"Apache-2.0","_id":"@arnavpisces/sutra@1.0.0","maintainers":[{"name":"arnavpisces","email":"arnavpisces@gmail.com"}],"homepage":"https://github.com/arnavpisces/sutra#readme","bugs":{"url":"https://github.com/arnavpisces/sutra/issues"},"bin":{"sutra":"dist/index.js"},"dist":{"shasum":"b0827420140e372525f44ee7ed183266d4350129","tarball":"https://registry.npmjs.org/@arnavpisces/sutra/-/sutra-1.0.0.tgz","fileCount":288,"integrity":"sha512-NuKEwDkzEwZvlJUyd3CBFSW39emCWvJ26QW24cZ8WDQDJZuovA34sOfbu48FTk78rX2A/m+DR7oplRQ9bWEMCQ==","signatures":[{"sig":"MEUCIC8ybk/Ke6sFkEbXm1dTZyceTnLlh8iIn/t1IA9yC2A9AiEAh6Zpt3INmsTJ1mkBv+SbFQ/7bozt5TI5HHVZgTCyCo4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":627976},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"be1c5c433d382c0c4c7312d12950394efcb64157","scripts":{"dev":"tsx src/index.tsx","test":"echo \"Error: no test specified\" && exit 1","build":"tsc","start":"node dist/index.js","prepack":"npm run build","check:pack":"npm pack --dry-run","prepublishOnly":"npm run build && npm run check:pack"},"_npmUser":{"name":"arnavpisces","email":"arnavpisces@gmail.com"},"repository":{"url":"git+https://github.com/arnavpisces/sutra.git","type":"git"},"_npmVersion":"10.8.2","description":"Terminal TUI for Jira tickets and Confluence docs","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ky":"^1.14.3","ink":"^5.2.1","zod":"^3.25.76","conf":"^13.1.0","chalk":"^4.1.2","fuse.js":"^7.1.0","turndown":"^7.2.2","commander":"^12.1.0","clipboardy":"^5.1.0","markdown-it":"^14.1.0","marklassian":"^1.1.0","better-sqlite3":"^11.5.0","ink-text-input":"^6.0.0","adf-to-markdown":"^1.0.1","ink-select-input":"^6.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.1.0","@types/react":"^19.2.10","@types/turndown":"^5.0.6","@types/markdown-it":"^14.1.2","@types/better-sqlite3":"^7.6.7"},"_npmOperationalInternal":{"tmp":"tmp/sutra_1.0.0_1771108914004_0.02302400661798254","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@arnavpisces/sutra","version":"1.0.1","keywords":["jira","confluence","atlassian","terminal","tui"],"author":{"name":"Arnav Kumar"},"license":"Apache-2.0","_id":"@arnavpisces/sutra@1.0.1","maintainers":[{"name":"arnavpisces","email":"arnavpisces@gmail.com"}],"homepage":"https://github.com/arnavpisces/sutra#readme","bugs":{"url":"https://github.com/arnavpisces/sutra/issues"},"bin":{"sutra":"dist/index.js"},"dist":{"shasum":"d422ee6b0bcbb5cdee764e63b9281731a469a271","tarball":"https://registry.npmjs.org/@arnavpisces/sutra/-/sutra-1.0.1.tgz","fileCount":288,"integrity":"sha512-hPeJXRNPuYt4V29HpIAZXLfnEflLTLqcqIr8ICIgrTDMaANjnxCdndHqPE8uvySD0ZYY82rm6GLm3MQjPmD78g==","signatures":[{"sig":"MEQCID9cIyoBP+JTGb9f0ua3sRerkizx8SphO/SITk/S0jpDAiAiX5ubuecRn9ezqjb/sfTLRY/vSba98n+Xf9VZZIeFog==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":641521},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"b120df552aaf91cee75c96ddd5e9c3f09a59ab8f","scripts":{"dev":"tsx src/index.tsx","test":"echo \"Error: no test specified\" && exit 1","build":"tsc","start":"node dist/index.js","prepack":"npm run build","check:pack":"npm pack --dry-run","prepublishOnly":"npm run build && npm run check:pack"},"_npmUser":{"name":"arnavpisces","email":"arnavpisces@gmail.com"},"repository":{"url":"git+https://github.com/arnavpisces/sutra.git","type":"git"},"_npmVersion":"10.8.2","description":"Terminal TUI for Jira tickets and Confluence docs","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ky":"^1.14.3","ink":"^5.2.1","zod":"^3.25.76","conf":"^13.1.0","chalk":"^4.1.2","fuse.js":"^7.1.0","turndown":"^7.2.2","commander":"^12.1.0","clipboardy":"^5.1.0","markdown-it":"^14.1.0","marklassian":"^1.1.0","better-sqlite3":"^11.5.0","ink-text-input":"^6.0.0","adf-to-markdown":"^1.0.1","ink-select-input":"^6.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.1.0","@types/react":"^19.2.10","@types/turndown":"^5.0.6","@types/markdown-it":"^14.1.2","@types/better-sqlite3":"^7.6.7"},"_npmOperationalInternal":{"tmp":"tmp/sutra_1.0.1_1771195270752_0.05759777821805301","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@arnavpisces/sutra","version":"1.0.2","keywords":["jira","confluence","atlassian","terminal","tui"],"author":{"name":"Arnav Kumar"},"license":"Apache-2.0","_id":"@arnavpisces/sutra@1.0.2","maintainers":[{"name":"arnavpisces","email":"arnavpisces@gmail.com"}],"homepage":"https://github.com/arnavpisces/sutra#readme","bugs":{"url":"https://github.com/arnavpisces/sutra/issues"},"bin":{"sutra":"dist/index.js"},"dist":{"shasum":"2d9d8b6b9489677b8401c95708e0ca19b93b5545","tarball":"https://registry.npmjs.org/@arnavpisces/sutra/-/sutra-1.0.2.tgz","fileCount":288,"integrity":"sha512-DXbkeYM7IQ9ZX52TrDm3tKVuX1ifmuqr2imckqBdsOFC4fMkyAeZAzCPNSOn7fP5LOdmZSCLh52wZUB2ezSujQ==","signatures":[{"sig":"MEYCIQDHFEEJOcVYNEoXkIhYRpKu5dKxmmVl+xafLnO+C3NlzAIhAPeiwq6ss8R0gVL6/T3qBElCcpjEEbj2Ofr6BEVRPmJP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":641521},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"cccdb15f88c39c67ebf92036d334260d3c63681b","scripts":{"dev":"tsx src/index.tsx","test":"echo \"Error: no test specified\" && exit 1","build":"tsc","start":"node dist/index.js","prepack":"npm run build","check:pack":"npm pack --dry-run","prepublishOnly":"npm run build && npm run check:pack"},"_npmUser":{"name":"arnavpisces","email":"arnavpisces@gmail.com"},"repository":{"url":"git+https://github.com/arnavpisces/sutra.git","type":"git"},"_npmVersion":"10.8.2","description":"Terminal TUI for Jira tickets and Confluence docs","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ky":"^1.14.3","ink":"^5.2.1","zod":"^3.25.76","conf":"^13.1.0","chalk":"^4.1.2","fuse.js":"^7.1.0","turndown":"^7.2.2","commander":"^12.1.0","clipboardy":"^5.1.0","markdown-it":"^14.1.0","marklassian":"^1.1.0","better-sqlite3":"^11.5.0","ink-text-input":"^6.0.0","adf-to-markdown":"^1.0.1","ink-select-input":"^6.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.1.0","@types/react":"^19.2.10","@types/turndown":"^5.0.6","@types/markdown-it":"^14.1.2","@types/better-sqlite3":"^7.6.7"},"_npmOperationalInternal":{"tmp":"tmp/sutra_1.0.2_1771262940159_0.28860059241122693","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@arnavpisces/sutra","version":"1.0.4","keywords":["jira","confluence","atlassian","terminal","tui"],"author":{"name":"Arnav Kumar"},"license":"Apache-2.0","_id":"@arnavpisces/sutra@1.0.4","maintainers":[{"name":"arnavpisces","email":"arnavpisces@gmail.com"}],"homepage":"https://github.com/arnavpisces/sutra#readme","bugs":{"url":"https://github.com/arnavpisces/sutra/issues"},"bin":{"sutra":"dist/index.js"},"dist":{"shasum":"f3b82956a77962b472a2fd9bcd118436d768d5c6","tarball":"https://registry.npmjs.org/@arnavpisces/sutra/-/sutra-1.0.4.tgz","fileCount":296,"integrity":"sha512-VG0p3ouZT/ulldyGSR7+nfi0+cL0zY3VeIy0AYI25N3mKaWatu2VrHJBES4Nt8May9XliN3YZbdDU7mNEJP7VQ==","signatures":[{"sig":"MEYCIQDlHAkM58Y9cjxd7o8QSU+5iprkkx99OSf9LR+3S0mhtgIhAKuXwEgV8S2ZcbFaerqWQHtHA5DW4WkFaQBOaCQXK+pl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":721722},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"52c888614a9024935fb579fc1372c58700b0e486","scripts":{"dev":"tsx src/index.tsx","test":"echo \"Error: no test specified\" && exit 1","build":"tsc","start":"node dist/index.js","prepack":"npm run build","check:pack":"npm pack --dry-run","prepublishOnly":"npm run build && npm run check:pack"},"_npmUser":{"name":"arnavpisces","email":"arnavpisces@gmail.com"},"repository":{"url":"git+https://github.com/arnavpisces/sutra.git","type":"git"},"_npmVersion":"10.8.2","description":"Terminal TUI for Jira tickets and Confluence docs","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ky":"^1.14.3","ink":"^5.2.1","zod":"^3.25.76","conf":"^13.1.0","chalk":"^4.1.2","fuse.js":"^7.1.0","turndown":"^7.2.2","commander":"^12.1.0","clipboardy":"^5.1.0","markdown-it":"^14.1.0","marklassian":"^1.1.0","better-sqlite3":"^11.5.0","ink-text-input":"^6.0.0","adf-to-markdown":"^1.0.1","ink-select-input":"^6.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.1.0","@types/react":"^19.2.10","@types/turndown":"^5.0.6","@types/markdown-it":"^14.1.2","@types/better-sqlite3":"^7.6.7"},"_npmOperationalInternal":{"tmp":"tmp/sutra_1.0.4_1771705467548_0.4654064542665566","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@arnavpisces/sutra","version":"1.0.6","keywords":["jira","confluence","atlassian","terminal","tui"],"author":{"name":"Arnav Kumar"},"license":"Apache-2.0","_id":"@arnavpisces/sutra@1.0.6","maintainers":[{"name":"arnavpisces","email":"arnavpisces@gmail.com"}],"homepage":"https://github.com/arnavpisces/sutra#readme","bugs":{"url":"https://github.com/arnavpisces/sutra/issues"},"bin":{"sutra":"dist/index.js"},"dist":{"shasum":"dd133a6c4baebf2badaa1712e977d3b17d9c62c0","tarball":"https://registry.npmjs.org/@arnavpisces/sutra/-/sutra-1.0.6.tgz","fileCount":296,"integrity":"sha512-cgbMyyCa/jxR1KFCpUfbgwywU7fOEGd4wyeU5GPQ5dMAg6HureggMQBAIMwW7cHYsBRRP0mr5Png8ZZRBeIVIQ==","signatures":[{"sig":"MEQCIH73X9qBZH3Gr8xbBv4wzoD8SULK1J0nRQ38xIPjppP/AiAvH9SNDQmLYLpuK9xosofZyfccPEY6akxlWjSP5vYx1g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":721722},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"883d5ef78c8b721424d33af776af31f0fbf4c225","scripts":{"dev":"tsx src/index.tsx","test":"echo \"Error: no test specified\" && exit 1","build":"tsc","start":"node dist/index.js","prepack":"npm run build","check:pack":"npm pack --dry-run","prepublishOnly":"npm run build && npm run check:pack"},"_npmUser":{"name":"arnavpisces","email":"arnavpisces@gmail.com"},"repository":{"url":"git+https://github.com/arnavpisces/sutra.git","type":"git"},"_npmVersion":"10.8.2","description":"Terminal TUI for Jira tickets and Confluence docs","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ky":"^1.14.3","ink":"^5.2.1","zod":"^3.25.76","conf":"^13.1.0","chalk":"^4.1.2","fuse.js":"^7.1.0","turndown":"^7.2.2","commander":"^12.1.0","clipboardy":"^5.1.0","markdown-it":"^14.1.0","marklassian":"^1.1.0","better-sqlite3":"^11.5.0","ink-text-input":"^6.0.0","adf-to-markdown":"^1.0.1","ink-select-input":"^6.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.1.0","@types/react":"^19.2.10","@types/turndown":"^5.0.6","@types/markdown-it":"^14.1.2","@types/better-sqlite3":"^7.6.7"},"_npmOperationalInternal":{"tmp":"tmp/sutra_1.0.6_1771706256488_0.06467770627906289","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@arnavpisces/sutra","version":"1.0.7","keywords":["jira","confluence","atlassian","terminal","tui"],"author":{"name":"Arnav Kumar"},"license":"Apache-2.0","_id":"@arnavpisces/sutra@1.0.7","maintainers":[{"name":"arnavpisces","email":"arnavpisces@gmail.com"}],"homepage":"https://github.com/arnavpisces/sutra#readme","bugs":{"url":"https://github.com/arnavpisces/sutra/issues"},"bin":{"sutra":"dist/index.js"},"dist":{"shasum":"a4e2c1d49b48289d61bd2b07c1048fe47dd65fac","tarball":"https://registry.npmjs.org/@arnavpisces/sutra/-/sutra-1.0.7.tgz","fileCount":296,"integrity":"sha512-u+YV0G5VZJ0PgNDkaY+OY03vjgIaSTdYHNOnF7i/7NpaXLOa4JOYw1FYjIRAUqOBIP3eoEEnPK1v4sgYqbcWpg==","signatures":[{"sig":"MEQCIHT4A2mG4mp/xGz7fexfzX+V5Ndm//EZc7adlWW9shd0AiA9iBt+hT42tl8+Z7DQJXPtG8Km47LqWuRF2OXkMJW8vA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":721722},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"e95d306c5881efb7be144712bc4c20ce7079b9f8","scripts":{"dev":"tsx src/index.tsx","test":"echo \"Error: no test specified\" && exit 1","build":"tsc","start":"node dist/index.js","prepack":"npm run build","check:pack":"npm pack --dry-run","prepublishOnly":"npm run build && npm run check:pack"},"_npmUser":{"name":"arnavpisces","email":"arnavpisces@gmail.com"},"repository":{"url":"git+https://github.com/arnavpisces/sutra.git","type":"git"},"_npmVersion":"10.8.2","description":"Terminal TUI for Jira tickets and Confluence docs","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ky":"^1.14.3","ink":"^5.2.1","zod":"^3.25.76","conf":"^13.1.0","chalk":"^4.1.2","fuse.js":"^7.1.0","turndown":"^7.2.2","commander":"^12.1.0","clipboardy":"^5.1.0","markdown-it":"^14.1.0","marklassian":"^1.1.0","better-sqlite3":"^11.5.0","ink-text-input":"^6.0.0","adf-to-markdown":"^1.0.1","ink-select-input":"^6.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^25.1.0","@types/react":"^19.2.10","@types/turndown":"^5.0.6","@types/markdown-it":"^14.1.2","@types/better-sqlite3":"^7.6.7"},"_npmOperationalInternal":{"tmp":"tmp/sutra_1.0.7_1771709390706_0.5702046178311528","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@arnavpisces/sutra","version":"1.0.9","description":"Terminal TUI for Jira tickets and Confluence docs","type":"module","main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/arnavpisces/sutra.git"},"bugs":{"url":"https://github.com/arnavpisces/sutra/issues"},"homepage":"https://github.com/arnavpisces/sutra#readme","engines":{"node":">=20"},"publishConfig":{"access":"public"},"bin":{"sutra":"dist/index.js"},"scripts":{"dev":"tsx src/index.tsx","build":"tsc","prestart":"npm run build","start":"node dist/index.js","prepack":"npm run build","check:pack":"npm pack --dry-run","prepublishOnly":"npm run build && npm run check:pack","test":"echo \"Error: no test specified\" && exit 1"},"keywords":["jira","confluence","atlassian","terminal","tui"],"author":{"name":"Arnav Kumar"},"license":"Apache-2.0","dependencies":{"adf-to-markdown":"^1.0.1","better-sqlite3":"^11.5.0","chalk":"^4.1.2","clipboardy":"^5.1.0","commander":"^12.1.0","conf":"^13.1.0","fuse.js":"^7.1.0","ink":"^5.2.1","ink-select-input":"^6.2.0","ink-text-input":"^6.0.0","ky":"^1.14.3","markdown-it":"^14.1.0","marklassian":"^1.1.0","turndown":"^7.2.2","zod":"^3.25.76"},"devDependencies":{"@types/better-sqlite3":"^7.6.7","@types/markdown-it":"^14.1.2","@types/node":"^25.1.0","@types/react":"^19.2.10","@types/turndown":"^5.0.6","tsx":"^4.21.0","typescript":"^5.9.3"},"_id":"@arnavpisces/sutra@1.0.9","gitHead":"75c984f7749a4b3c9e300bf0f499d8bc429a31cd","types":"./dist/index.d.ts","_nodeVersion":"20.20.1","_npmVersion":"10.8.2","dist":{"integrity":"sha512-iO5J7ATC8FNusq1zS5B/nWEyZ/4iYejlPpIVCC6NpvpSLy40v2AFVMcSwyBcwUInPUzE8lDYMK3Yc4JifNN2Aw==","shasum":"8c584d20bac28c20e516449a120721f575cb5c3a","tarball":"https://registry.npmjs.org/@arnavpisces/sutra/-/sutra-1.0.9.tgz","fileCount":304,"unpackedSize":878586,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDojS/VBlV5fwZdj7Fz++w5xMSKMk9OWT6bLxvpKloX4QIgbmeSHXBV5xB87ff2dax24a70EGQMbFGIbV5ux5i0LuA="}]},"_npmUser":{"name":"arnavpisces","email":"arnavpisces@gmail.com"},"directories":{},"maintainers":[{"name":"arnavpisces","email":"arnavpisces@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sutra_1.0.9_1774214453771_0.858616304935832"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-14T22:41:53.855Z","modified":"2026-03-22T21:20:54.100Z","1.0.0":"2026-02-14T22:41:54.279Z","1.0.1":"2026-02-15T22:41:10.973Z","1.0.2":"2026-02-16T17:29:00.307Z","1.0.4":"2026-02-21T20:24:27.800Z","1.0.6":"2026-02-21T20:37:36.651Z","1.0.7":"2026-02-21T21:29:50.908Z","1.0.9":"2026-03-22T21:20:53.988Z"},"bugs":{"url":"https://github.com/arnavpisces/sutra/issues"},"author":{"name":"Arnav Kumar"},"license":"Apache-2.0","homepage":"https://github.com/arnavpisces/sutra#readme","keywords":["jira","confluence","atlassian","terminal","tui"],"repository":{"type":"git","url":"git+https://github.com/arnavpisces/sutra.git"},"description":"Terminal TUI for Jira tickets and Confluence docs","maintainers":[{"name":"arnavpisces","email":"arnavpisces@gmail.com"}],"readme":"# sutra\n\nKeyboard-first terminal TUI for Jira tickets and Confluence docs.  \nSearch, browse, edit, comment, and manage attachments without leaving the terminal.  \nBuilt for day-to-day engineering workflows where speed matters.\n\n[![npm version](https://img.shields.io/npm/v/@arnavpisces/sutra)](https://www.npmjs.com/package/@arnavpisces/sutra)\n[![license](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](./LICENSE)\n\n## Why This Exists\n\n- Jira + Confluence in one fast terminal workflow.\n- Better keyboard ergonomics than constantly context-switching to browser tabs.\n- Local-first state: cache, bookmarks, recents, and config stay on your machine.\n\n## Requirements\n\n- Node.js `20+`\n- Atlassian Cloud site + API token\n\n## Product Walkthrough\n\n### 1) Browse tickets and inspect ticket sections\n![Browse Jira tickets](https://raw.githubusercontent.com/arnavpisces/sutra/main/docs/media/gifs/jira-browse.gif)\n\n### 2) Add a ticket comment from detail view\n![Add Jira comment](https://raw.githubusercontent.com/arnavpisces/sutra/main/docs/media/gifs/jira-add-comment.gif)\n\n### 3) Run JQL search (`currentUser()` example)\n![JQL search](https://raw.githubusercontent.com/arnavpisces/sutra/main/docs/media/gifs/jira-jql-search.gif)\n\n### 4) Search, view and edit Confluence doc\n![Search, view and edit Confluence doc](https://raw.githubusercontent.com/arnavpisces/sutra/main/docs/media/gifs/confluence-search.gif)\n\n## Features\n\n### Jira\n- Browse tickets with pagination.\n- Search with fuzzy query, quick filters, and JQL.\n- View/edit ticket details, comments, status, and attachments.\n\n### Confluence\n- Browse recent pages and browse by space.\n- Search pages with CQL-backed queries.\n- View markdown/mdcat rendering, edit pages, labels, comments, and attachments.\n\n### Shared\n- Bookmarks + recent history.\n- External editor integration (`$EDITOR`, Cursor/VS Code fallback).\n- Persistent local cache via SQLite.\n- Open in browser + copy URL shortcuts.\n\n## Install\n\n```bash\nnpm install -g @arnavpisces/sutra\nsutra setup\nsutra\n```\n\nSetup asks for:\n- site username (for example `acme-team`)\n- email\n- Atlassian API token (hidden input)\n\nSutra derives Jira/Confluence base URLs and validates credentials before entering control panels.\n\n## Key Shortcuts\n\n- `Tab`: switch Jira/Confluence\n- `/`: search in browse and page views\n- `Esc`: back to previous screen\n- `Ctrl+E`: open external editor (editable views)\n- `Ctrl+O`: open in browser\n- `Ctrl+Y`: copy URL\n- `Ctrl+B`: bookmark\n\n## Contributing\n\n- Issues: https://github.com/arnavpisces/sutra/issues\n- Pull requests: https://github.com/arnavpisces/sutra/pulls\n- Guidelines: [`CONTRIBUTING.md`](./CONTRIBUTING.md)\n- Code of conduct: [`CODE_OF_CONDUCT.md`](./CODE_OF_CONDUCT.md)\n- Security: [`SECURITY.md`](./SECURITY.md)\n\n## License\n\nApache-2.0, © 2026 Arnav Kumar.\n\nNot affiliated with Atlassian.\n","readmeFilename":"README.md"}