[{"data":1,"prerenderedAt":377},["ShallowReactive",2],{"navigation":3,"/docs/features/sessions":156,"/docs/features/sessions-surround":372},[4,23,83,103,118,133,141],{"title":5,"path":6,"stem":7,"children":8,"icon":22},"Getting Started","/docs/getting-started","docs/1.getting-started/1.index",[9,12,17],{"title":10,"path":6,"stem":7,"icon":11},"What is TaskView","i-lucide-house",{"title":13,"path":14,"stem":15,"icon":16},"Installation","/docs/getting-started/installation","docs/1.getting-started/2.installation","i-lucide-download",{"title":18,"path":19,"stem":20,"icon":21},"Quick Start","/docs/getting-started/usage","docs/1.getting-started/3.usage","i-lucide-rocket",false,{"title":24,"icon":22,"path":25,"stem":26,"children":27,"page":22},"Features","/docs/features","docs/2.features",[28,33,38,43,48,53,58,63,68,73,78],{"title":29,"path":30,"stem":31,"icon":32},"Projects and Lists","/docs/features/projects-and-lists","docs/2.features/1.projects-and-lists","i-lucide-folder",{"title":34,"path":35,"stem":36,"icon":37},"Organizations","/docs/features/organizations","docs/2.features/10.organizations","i-lucide-building-2",{"title":39,"path":40,"stem":41,"icon":42},"SSO (Single Sign-On)","/docs/features/sso","docs/2.features/11.sso","i-lucide-shield-check",{"title":44,"path":45,"stem":46,"icon":47},"Tasks","/docs/features/tasks","docs/2.features/2.tasks","i-lucide-check-square",{"title":49,"path":50,"stem":51,"icon":52},"Kanban Board","/docs/features/kanban","docs/2.features/3.kanban","i-lucide-columns-3",{"title":54,"path":55,"stem":56,"icon":57},"Dependency Graph","/docs/features/graph","docs/2.features/4.graph","i-lucide-git-branch",{"title":59,"path":60,"stem":61,"icon":62},"Dashboard","/docs/features/dashboard","docs/2.features/5.dashboard","i-lucide-layout-dashboard",{"title":64,"path":65,"stem":66,"icon":67},"Notifications","/docs/features/notifications","docs/2.features/6.notifications","i-lucide-bell",{"title":69,"path":70,"stem":71,"icon":72},"Webhooks","/docs/features/webhooks","docs/2.features/7.webhooks","i-lucide-webhook",{"title":74,"path":75,"stem":76,"icon":77},"API Tokens","/docs/features/api-tokens","docs/2.features/8.api-tokens","i-lucide-key-round",{"title":79,"path":80,"stem":81,"icon":82},"Sessions & Devices","/docs/features/sessions","docs/2.features/9.sessions","i-lucide-monitor-smartphone",{"title":84,"icon":22,"path":85,"stem":86,"children":87,"page":22},"Integrations","/docs/integrations","docs/3.integrations",[88,93,98],{"title":89,"path":90,"stem":91,"icon":92},"GitHub & GitLab Setup","/docs/integrations/setup","docs/3.integrations/1.setup","i-lucide-git-pull-request",{"title":94,"path":95,"stem":96,"icon":97},"MCP Server","/docs/integrations/mcp","docs/3.integrations/2.mcp","i-lucide-bot",{"title":99,"path":100,"stem":101,"icon":102},"Telegram & Slack Setup","/docs/integrations/messaging","docs/3.integrations/3.messaging","i-lucide-send",{"title":104,"icon":22,"path":105,"stem":106,"children":107,"page":22},"Configuration","/docs/configuration","docs/4.configuration",[108,113],{"title":109,"path":110,"stem":111,"icon":112},"Environment Variables","/docs/configuration/environment-variables","docs/4.configuration/1.environment-variables","i-lucide-settings",{"title":114,"path":115,"stem":116,"icon":117},"Authentication","/docs/configuration/authentication","docs/4.configuration/2.authentication","i-lucide-lock",{"title":119,"icon":22,"path":120,"stem":121,"children":122,"page":22},"Collaboration","/docs/collaboration","docs/5.collaboration",[123,128],{"title":124,"path":125,"stem":126,"icon":127},"Team Members","/docs/collaboration/members","docs/5.collaboration/1.members","i-lucide-users",{"title":129,"path":130,"stem":131,"icon":132},"Roles and Permissions","/docs/collaboration/roles-and-permissions","docs/5.collaboration/2.roles-and-permissions","i-lucide-shield",{"title":134,"path":135,"stem":136,"children":137,"icon":22},"FAQ","/docs/faq","docs/6.faq/1.index",[138],{"title":139,"path":135,"stem":136,"icon":140},"Frequently Asked Questions","i-lucide-circle-help",{"title":142,"icon":22,"path":143,"stem":144,"children":145,"page":22},"Guides","/docs/guides","docs/7.guides",[146,151],{"title":147,"path":148,"stem":149,"icon":150},"Deploy TaskView on a VPS with Nginx","/docs/guides/deploy-vps-nginx","docs/7.guides/1.deploy-vps-nginx","i-lucide-server",{"title":152,"path":153,"stem":154,"icon":155},"TaskView for Freelancers","/docs/guides/taskview-for-freelancers","docs/7.guides/2.taskview-for-freelancers","i-lucide-briefcase",{"id":157,"title":79,"body":158,"description":366,"extension":367,"meta":368,"navigation":369,"path":80,"seo":370,"stem":81,"__hash__":371},"docs/docs/2.features/9.sessions.md",{"type":159,"value":160,"toc":355},"minimark",[161,165,170,173,202,205,209,228,232,235,238,242,249,253,256,261,272,279,283,289,331,338,342,348,351],[162,163,164],"p",{},"TaskView tracks every login as a separate session. You can see all active sessions, identify which device each session belongs to, and close sessions remotely.",[166,167,169],"h2",{"id":168},"how-sessions-work","How sessions work",[162,171,172],{},"When you log in from any device (browser, mobile app), TaskView creates a session record with:",[174,175,176,184,190,196],"ul",{},[177,178,179,183],"li",{},[180,181,182],"strong",{},"Device name"," - automatically parsed from User-Agent (e.g. \"Chrome 120, macOS\", \"Safari 17, iPhone\")",[177,185,186,189],{},[180,187,188],{},"IP address"," - the IP used at login time",[177,191,192,195],{},[180,193,194],{},"Created at"," - when the session was created",[177,197,198,201],{},[180,199,200],{},"Last used"," - when the session was last active",[162,203,204],{},"The JWT token issued at login contains the session ID. On each request, TaskView verifies that the session still exists - if it's been revoked, the token is rejected.",[166,206,208],{"id":207},"viewing-sessions","Viewing sessions",[210,211,212,222,225],"ol",{},[177,213,214,215,218,219],{},"Go to ",[180,216,217],{},"Account"," → ",[180,220,221],{},"Sessions",[177,223,224],{},"See all active sessions with device name, IP, and timestamps",[177,226,227],{},"Your current session is marked",[166,229,231],{"id":230},"closing-a-session","Closing a session",[162,233,234],{},"Click the close button on any session to revoke it. The user on that device will be signed out on their next request.",[162,236,237],{},"You cannot close your current session from this page - use the regular logout instead.",[166,239,241],{"id":240},"closing-all-other-sessions","Closing all other sessions",[162,243,244,245,248],{},"Click ",[180,246,247],{},"\"Close all other sessions\""," to sign out of every device except the one you're currently using. Useful if you suspect unauthorized access.",[166,250,252],{"id":251},"api-reference","API reference",[162,254,255],{},"All endpoints require JWT authentication. API tokens cannot manage sessions.",[257,258,260],"h3",{"id":259},"list-sessions","List sessions",[262,263,268],"pre",{"className":264,"code":266,"language":267},[265],"language-text","GET /module/sessions\n","text",[269,270,266],"code",{"__ignoreMap":271},"",[162,273,274,275,278],{},"Returns all active sessions for the current user. Each session includes an ",[269,276,277],{},"isCurrent"," flag.",[257,280,282],{"id":281},"close-a-session","Close a session",[262,284,287],{"className":285,"code":286,"language":267},[265],"DELETE /module/sessions\n",[269,288,286],{"__ignoreMap":271},[262,290,294],{"className":291,"code":292,"language":293,"meta":271,"style":271},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"id\": 42\n}\n","json",[269,295,296,305,325],{"__ignoreMap":271},[297,298,301],"span",{"class":299,"line":300},"line",1,[297,302,304],{"class":303},"sMK4o","{\n",[297,306,308,311,315,318,321],{"class":299,"line":307},2,[297,309,310],{"class":303},"  \"",[297,312,314],{"class":313},"spNyl","id",[297,316,317],{"class":303},"\"",[297,319,320],{"class":303},":",[297,322,324],{"class":323},"sbssI"," 42\n",[297,326,328],{"class":299,"line":327},3,[297,329,330],{"class":303},"}\n",[162,332,333,334,337],{},"Returns ",[269,335,336],{},"400"," if you try to close the current session.",[257,339,341],{"id":340},"close-all-other-sessions","Close all other sessions",[262,343,346],{"className":344,"code":345,"language":267},[265],"DELETE /module/sessions/all\n",[269,347,345],{"__ignoreMap":271},[162,349,350],{},"Closes all sessions except the current one.",[352,353,354],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":271,"searchDepth":307,"depth":307,"links":356},[357,358,359,360,361],{"id":168,"depth":307,"text":169},{"id":207,"depth":307,"text":208},{"id":230,"depth":307,"text":231},{"id":240,"depth":307,"text":241},{"id":251,"depth":307,"text":252,"children":362},[363,364,365],{"id":259,"depth":327,"text":260},{"id":281,"depth":327,"text":282},{"id":340,"depth":327,"text":341},"Manage active sessions in TaskView. View logged-in devices, close individual sessions, or sign out of all devices at once.","md",{},{"icon":82},{"title":79,"description":366},"4bs-rB29k1fMIlRYAP1vCTEysSsYo6Fh4thTe3iJJow",[373,375],{"title":74,"path":75,"stem":76,"description":374,"icon":77,"children":-1},"Create API tokens for programmatic access to TaskView. Tokens support permission scoping, project-level restrictions, and optional expiration.",{"title":89,"path":90,"stem":91,"description":376,"icon":92,"children":-1},"Connect GitHub and GitLab repositories to TaskView. Import and sync issues as tasks with OAuth authorization, webhook-based real-time updates, and AES-256 encrypted token storage. Supports GitHub Enterprise and self-hosted GitLab.",1783289464129]