@cjhyy/code-shell-web 0.9.26 → 0.9.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ .environment-trigger{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.environment-dialog{width:min(560px,calc(100vw - 24px));max-height:calc(100dvh - 32px);box-sizing:border-box;overflow:auto;border:1px solid var(--border, #777);border-radius:16px;padding:20px;background:var(--bg, #151719);color:var(--text, #f5f5f5)}.environment-dialog::backdrop{background:#0008}.environment-dialog header{display:flex;align-items:center;justify-content:space-between;gap:12px}.environment-dialog h2{margin:0;font-size:20px}.environment-dialog p{line-height:1.6}.environment-location,.environment-list small{overflow-wrap:anywhere}.environment-list{padding:0;list-style:none;display:grid;gap:12px}.environment-list li{display:flex;align-items:center;gap:8px;padding-block:10px;border-bottom:1px solid var(--border, #777)}.environment-list li>div{flex:1;min-width:0}.environment-list small{display:block;margin-top:4px;opacity:.7}.environment-dialog form{display:grid;gap:12px;margin-top:20px}.environment-dialog label{display:grid;gap:6px}.environment-dialog input{box-sizing:border-box;width:100%;min-height:44px;padding:10px;border:1px solid var(--border, #777);border-radius:8px;background:transparent;color:inherit;font-size:16px}.environment-dialog button{min-height:44px}.environment-hint{font-size:12px;opacity:.7}@media(max-width:420px){.environment-list li{flex-wrap:wrap}.environment-list li>div{flex-basis:100%}}.hub-skills{max-width:1060px;width:100%;margin:0 auto;padding:36px 40px 64px;color:var(--text);box-sizing:border-box}.skills-heading,.skills-heading>div:last-child,.skills-actions,.skills-filter,.skills-card-heading,.skills-workspace-panel>header{display:flex;align-items:center;gap:10px}.skills-heading{justify-content:space-between;gap:20px;margin-bottom:28px}.skills-heading h1{font-size:26px;letter-spacing:-.7px;margin:6px 0 8px}.skills-heading p,.skills-eyebrow,.skills-count,.skills-source,.skills-progress{color:var(--muted);font-size:13px}.skills-heading p{margin:0;line-height:1.6}.skills-eyebrow{font-size:11px;letter-spacing:.06em}.skills-actions{flex-wrap:wrap}.skills-filter{margin:24px 0 12px}.skills-filter>label{flex:1}.hub-skills input:not([type=radio]),.hub-skills select,.hub-skills textarea{box-sizing:border-box;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:10px 12px;font:inherit;min-width:0}.hub-skills input:not([type=radio]),.hub-skills textarea{width:100%}.hub-skills input:focus,.hub-skills textarea:focus,.hub-skills select:focus{outline:2px solid var(--accent);outline-offset:2px}.hub-skills input:read-only,.hub-skills textarea:read-only{background:var(--panel)}.hub-skills label>span:first-child{display:block;font-size:12px;font-weight:600;margin-bottom:8px}.skills-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.skills-card{border:1px solid var(--border);border-radius:12px;background:var(--panel);padding:18px;min-width:0;display:flex;flex-direction:column}.skills-card-heading{justify-content:space-between;align-items:flex-start}.skills-card h2{font-size:15px;margin:0 0 10px;overflow-wrap:anywhere}.skills-card .config-badge{margin:0 5px 4px 0}.skills-card>p{font-size:13px;line-height:1.65;overflow-wrap:anywhere}.skills-card footer{margin-top:auto;padding-top:12px;gap:4px}.skills-remove{margin-left:auto}.skills-danger{background:var(--danger);border-color:var(--danger);color:#fff}.skills-source{font-family:ui-monospace,monospace;font-size:11px!important}.skills-empty{padding:48px 20px;text-align:center;border:1px dashed var(--border);border-radius:12px}.skills-empty h2{font-size:18px}.skills-empty p{font-size:14px;color:var(--muted)}.skills-workspace-panel{margin:20px 0 28px;padding:24px;border:1px solid var(--border);border-radius:14px;background:var(--panel)}.skills-workspace-panel>header{justify-content:space-between;margin-bottom:20px}.skills-workspace-panel h2{font-size:18px;margin:0;overflow-wrap:anywhere}.skills-workspace-panel h2:focus{outline:none}.skills-workspace-panel fieldset{padding:0;border:0;min-width:0;margin:0}.skills-workspace-panel label{display:block;margin:0 0 18px}.skills-workspace-panel textarea{font:12px/1.7 ui-monospace,SFMono-Regular,Menlo,monospace;resize:vertical;min-height:160px;tab-size:2}.skills-workspace-panel small{display:block;color:var(--muted);font-size:11px;line-height:1.6;margin-top:6px}.skills-editor .skills-actions{justify-content:space-between}.skills-editor .config-help{max-width:70%}.skills-unsaved{display:inline!important;margin-left:10px;color:var(--accent)!important}.skills-field-error{color:var(--danger);font-size:12px}.skills-source-choices{max-height:350px;overflow:auto;margin:12px 0 20px}.skills-source-choices label{display:flex;align-items:flex-start;gap:12px;padding:14px;border:1px solid var(--border);border-radius:8px;cursor:pointer;margin-bottom:8px}.skills-source-choices input{margin-top:4px;accent-color:var(--accent)}.skills-source-choices strong{font-size:14px}.skills-source-choices small{overflow-wrap:anywhere}.skills-import-preview a{color:var(--accent);overflow-wrap:anywhere}.skills-update-preview>p,.skills-remove-confirm>p{font-size:13px;line-height:1.75}.skills-update-preview details{margin:16px 0}.skills-update-preview ul{list-style:none;padding:0;max-height:220px;overflow:auto}.skills-update-preview li{font-size:12px;display:flex;justify-content:space-between;gap:12px;padding:5px 0}.skills-update-preview li code{overflow-wrap:anywhere}.skills-update-preview li span{white-space:nowrap;color:var(--muted)}.skills-directories{margin-top:28px;font-size:12px;color:var(--muted);line-height:1.8}.skills-directories summary{cursor:pointer;color:var(--text)}.skills-directories code{overflow-wrap:anywhere}.skills-progress{padding:0 2px}.hub-skills button:disabled{opacity:.5;cursor:not-allowed}.hub-skills .config-switch{flex-shrink:0}.hub-skills .config-help{font-size:12px;color:var(--muted);line-height:1.6}@media(max-width:1000px){.skills-heading{align-items:flex-start;flex-direction:column}.skills-list{grid-template-columns:1fr}}@media(max-width:600px){.hub-skills{padding:24px 16px 44px}.skills-heading{gap:16px}.skills-heading h1{font-size:24px}.skills-heading .skills-actions{width:100%}.skills-heading .skills-actions button{flex:1}.skills-filter{flex-wrap:wrap}.skills-filter>label{flex-basis:100%}.skills-filter select{flex:1}.skills-workspace-panel{padding:16px}.skills-editor .config-help{max-width:100%}.skills-editor .skills-actions{align-items:flex-start;flex-direction:column}.skills-card{padding:16px}.skills-card footer{flex-wrap:wrap}.skills-update-preview li{flex-direction:column;gap:2px}}.hub-mcp{min-width:0}.hub-mcp-toolbar{margin-top:0;flex-wrap:wrap}.hub-mcp-toolbar-actions{display:flex;gap:6px}.hub-mcp-list{display:flex;flex-direction:column;gap:12px}.hub-mcp-card{padding:18px 20px}.hub-mcp-card-head{display:flex;align-items:center;gap:12px}.hub-mcp-endpoint{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin:17px 0 10px 44px;font-size:11px}.hub-mcp-endpoint code{overflow-wrap:anywhere;color:var(--text)}.hub-mcp-endpoint>span{color:var(--muted);font-size:10px}.hub-mcp-metadata{display:flex;align-items:center;flex-wrap:wrap;gap:10px;color:var(--muted);font-size:10px;margin-left:44px}.hub-mcp-card-actions{display:flex;align-items:center;flex-wrap:wrap;gap:5px;margin:16px 0 0 44px}.hub-mcp .hub-mcp-remove{color:var(--danger, #c5443c)}.hub-mcp-delete{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;padding:12px;margin-top:15px;background:var(--panel);border-radius:8px;font-size:11px}.hub-mcp-delete>div{display:flex;gap:6px}.hub-mcp-editor-card{padding:20px;margin-bottom:16px}.hub-mcp-editor-card>h2{margin:0 0 18px}.hub-mcp-editor{margin-top:20px}.hub-mcp-editor-card .hub-mcp-editor{margin-top:0}.hub-mcp textarea{display:block;width:100%;min-width:0;padding:9px 10px;border:1px solid var(--border);border-radius:7px;background:var(--surface, var(--bg));color:var(--text);font-family:inherit;font-size:12px;line-height:1.6;resize:vertical}.hub-mcp textarea:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.hub-mcp textarea::placeholder{color:var(--muted);opacity:.75}.hub-mcp textarea:disabled{opacity:.55}.hub-mcp .hub-mcp-check{display:flex;flex-direction:row;align-items:flex-start;gap:8px;font-size:11px;margin:15px 0}.hub-mcp .hub-mcp-check input{width:14px;min-width:14px;height:14px;min-height:14px;margin:2px 0 0;padding:0;accent-color:var(--accent)}.hub-mcp-check span{flex:1}.hub-mcp-reuse{padding:12px;border:1px solid var(--border);border-radius:8px;background:var(--panel)}.hub-mcp-keys{margin:20px 0}.hub-mcp-key-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.hub-mcp-key-heading h3{margin:0;font-size:12px}.hub-mcp-key-row{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr) auto;gap:7px;align-items:center;margin-top:7px}.hub-mcp-key-row label{display:block;min-width:0}.hub-mcp-key-removed label{opacity:.5}.hub-mcp-key-removed label:first-child input{text-decoration:line-through}.hub-mcp-advanced{border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding:13px 0;margin:19px 0}.hub-mcp-advanced>summary{cursor:pointer;font-size:12px;color:var(--muted)}.hub-mcp-advanced[open]>summary{margin-bottom:16px}.hub-mcp-probing{margin:16px 0 0;font-size:11px;color:var(--muted)}.hub-mcp-probe-result{margin-top:17px;padding:13px 15px;border-radius:8px;border:1px solid var(--border);background:var(--panel);font-size:11px}.hub-mcp-probe-summary{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.hub-mcp-probe-summary strong{font-weight:500}.hub-mcp-probe-summary>span{color:var(--muted);font-size:10px}.hub-mcp-probe-result>p{margin:7px 0 0;color:var(--muted)}.hub-mcp-probe-ok .hub-mcp-probe-summary strong{color:var(--accent)}.hub-mcp-probe-error .hub-mcp-probe-summary strong{color:var(--danger, #c5443c)}.hub-mcp-probe-result details{margin-top:12px}.hub-mcp-probe-result summary{cursor:pointer}.hub-mcp-probe-result ul{list-style:none;padding:0;margin:10px 0 0;max-height:300px;overflow-y:auto}.hub-mcp-probe-result li{padding:10px 0;border-top:1px solid var(--border)}.hub-mcp-probe-result li>div{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.hub-mcp-probe-result li p{color:var(--muted);margin:5px 0 0;white-space:pre-wrap;overflow-wrap:anywhere}.hub-mcp-explanation{margin-top:24px;line-height:1.8}.hub-mcp-removed{margin-top:20px;color:var(--muted);font-size:11px}.hub-mcp-removed summary{cursor:pointer}.hub-mcp-removed-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0}@media(max-width:700px){.hub-mcp-card,.hub-mcp-editor-card{padding:16px}.hub-mcp-endpoint,.hub-mcp-metadata,.hub-mcp-card-actions{margin-left:0}.hub-mcp-toolbar .config-search{width:100%}.hub-mcp-toolbar-actions{margin-left:auto}.hub-mcp-key-row{grid-template-columns:minmax(0,1fr) auto;padding-bottom:8px}.hub-mcp-key-row label:first-child{grid-column:1/-1}.hub-mcp-probe-summary{flex-wrap:wrap;gap:4px}.hub-mcp .config-form-actions{flex-wrap:wrap}}.hub-settings{flex:1;min-height:0;overflow-y:auto;width:min(920px,100%);margin:0 auto;padding:40px 42px 56px;color:var(--text);font-size:13px;line-height:1.55;overflow-wrap:anywhere}.hub-settings *{box-sizing:border-box}.hub-settings-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:28px}.hub-settings-eyebrow{display:block;color:var(--muted);font-size:11px;margin-bottom:6px;letter-spacing:.04em}.hub-settings h1{margin:0;font-size:26px;font-weight:600;letter-spacing:-.035em}.hub-settings-heading p{margin:7px 0 0;color:var(--muted)}.hub-settings h2{font-size:14px;font-weight:600}.hub-settings h3{font-size:13px;font-weight:600;margin:0 0 16px}:is(.hub-settings,.hub-skills) .config-button{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;gap:5px;border:1px solid var(--border);border-radius:7px;padding:7px 11px;min-height:33px;background:var(--surface, var(--bg));color:var(--text);font:inherit;font-size:12px;line-height:1.3;cursor:pointer;white-space:nowrap}:is(.hub-settings,.hub-skills) .config-button:hover{background:var(--hover, var(--panel))}:is(.hub-settings,.hub-skills) .config-button-quiet{background:transparent;border-color:transparent;color:var(--muted)}:is(.hub-settings,.hub-skills) .config-button-primary{background:var(--accent);color:var(--accent-text, white);border-color:var(--accent)}:is(.hub-settings,.hub-skills) .config-button-primary:hover{filter:brightness(.94);background:var(--accent)}.hub-settings button:disabled{opacity:.45;cursor:default}:is(.hub-settings,.hub-skills) button:focus-visible,:is(.hub-settings,.hub-skills) summary:focus-visible,:is(.hub-settings,.hub-skills) input:focus-visible,:is(.hub-settings,.hub-skills) select:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.config-card{border:1px solid var(--border);border-radius:12px;background:var(--surface, var(--bg))}.config-workspace-card{display:flex;align-items:flex-start;gap:14px;padding:20px;border-radius:12px;background:var(--panel)}.config-workspace-card>div{min-width:0;flex:1}.config-workspace-card strong{display:block;font-weight:500}.config-workspace-card code{display:block;margin:6px 0;font-size:11px;word-break:break-all}.config-workspace-card p{margin:0;color:var(--muted);font-size:12px}.config-workspace-icon,.config-row-icon,.config-model-icon,.config-skill-icon{display:grid;place-items:center;flex-shrink:0;width:32px;height:32px;border-radius:8px;background:var(--panel);color:var(--muted);font-size:20px}.config-workspace-icon{background:var(--surface, var(--bg))}:is(.hub-settings,.hub-skills) .config-badge{display:inline-flex;align-items:center;flex-shrink:0;padding:2px 7px;min-height:21px;border:1px solid var(--border);border-radius:5px;color:var(--muted);font-size:10px;font-weight:400;white-space:nowrap}:is(.hub-settings,.hub-skills) .config-badge-accent{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 25%,transparent);background:color-mix(in srgb,var(--accent) 6%,transparent)}.config-section-title{margin:28px 0 12px}.config-overview-list{overflow:hidden}.hub-settings .config-overview-row{display:flex;align-items:center;gap:13px;padding:17px 20px;width:100%;background:transparent;text-align:left;border:none;border-radius:0;color:inherit;font:inherit}.hub-settings button.config-overview-row{cursor:pointer}.hub-settings button.config-overview-row:hover{background:var(--hover, var(--panel))}.config-overview-row+.config-overview-row{border-top:1px solid var(--border)}.config-row-copy{display:flex;flex:1;min-width:0;flex-direction:column;gap:3px}.config-row-copy strong{font-weight:500}.config-row-copy>span{color:var(--muted);font-size:11px}.config-chevron{font-size:21px;color:var(--muted)}.config-explanation{margin-top:28px}.config-explanation h2{margin:0 0 8px}.config-explanation p{color:var(--muted);font-size:12px;margin:8px 0;line-height:1.8}.config-scope-note{border-top:1px solid var(--border);padding-top:18px;margin:32px 0 0;color:var(--muted);font-size:11px}.config-message{padding:10px 13px;border:1px solid var(--border);border-radius:8px;margin:0 0 18px;font-size:12px}.config-error{color:var(--danger, #c5443c);background:color-mix(in srgb,var(--danger, #c5443c) 6%,transparent);border-color:color-mix(in srgb,var(--danger, #c5443c) 22%,transparent)}.config-success{color:var(--accent);background:color-mix(in srgb,var(--accent) 5%,transparent)}.config-loading,.config-help{color:var(--muted);font-size:11px}.config-section-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:26px 0 12px}.config-section-heading h2{margin:0}.config-count{font-size:11px;font-weight:400;color:var(--muted);margin-left:5px}.config-defaults{padding:20px}.hub-settings fieldset{margin:0;padding:0;border:0;min-width:0}.hub-settings legend{padding:0;margin:0 0 15px;font-weight:500;font-size:13px}.config-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.config-form-grid label{display:flex;flex-direction:column;align-items:stretch;gap:7px;min-width:0;font-size:11px}.hub-settings input,.hub-settings select{display:block;width:100%;min-width:0;min-height:35px;padding:8px 10px;border:1px solid var(--border);border-radius:7px;background:var(--surface, var(--bg));color:var(--text);font:inherit;font-size:12px}.hub-settings input::placeholder{color:var(--muted);opacity:.75}.hub-settings input[readonly]{color:var(--muted);background:var(--panel)}.hub-settings input:disabled,.hub-settings select:disabled{opacity:.6}.config-form-grid small{color:var(--muted);font-size:10px}.config-full-width{grid-column:1 / -1}.config-form-footer{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:14px}.config-form-footer p{margin:0}.config-form-actions{display:flex;justify-content:flex-end;gap:6px;margin-top:20px}.config-connection-list{display:flex;flex-direction:column;gap:12px}.config-connection-card,.config-editor-card{padding:18px 20px}.config-editor-card{margin-bottom:12px}.config-connection-head{display:flex;align-items:center;gap:11px}.config-connection-facts{margin:18px 0 0 43px;font-size:11px}.config-connection-facts>div{display:grid;grid-template-columns:75px minmax(0,1fr);gap:12px;margin-top:7px}.config-connection-facts dt{color:var(--muted)}.config-connection-facts dd{margin:0;overflow-wrap:anywhere}.config-connection-editor{margin-top:18px}.config-field-meta{color:var(--muted);margin-left:5px;font-size:10px}.config-empty{padding:34px 24px;border:1px dashed var(--border);border-radius:12px;text-align:center}.config-empty>span{color:var(--muted);font-size:27px}.config-empty h3{margin:9px 0 6px}.config-empty p{max-width:440px;margin:0 auto;color:var(--muted);font-size:12px}.config-skills-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}.config-search{position:relative;display:block;width:min(360px,100%)}.config-search>span{position:absolute;top:5px;left:10px;font-size:21px;color:var(--muted)}.hub-settings .config-search input{padding-left:33px}.config-skills-toolbar>.config-help{white-space:nowrap}.config-skill-list{overflow:hidden}.config-skill+.config-skill{border-top:1px solid var(--border)}.config-skill-row{display:flex;align-items:flex-start;gap:12px;padding:18px 20px}.config-skill-copy{flex:1;min-width:0}.config-skill-copy>strong{display:block;font-size:12px;font-weight:500}.config-skill-copy>p{margin:4px 0 9px;color:var(--muted);font-size:11px;line-height:1.6}.config-skill-meta{display:flex;align-items:center;gap:12px}.hub-settings .config-text-button{background:none;border:0;padding:0;color:var(--muted);font:inherit;font-size:10px;cursor:pointer}.hub-settings .config-text-button:hover{color:var(--text)}:is(.hub-settings,.hub-skills) .config-switch{flex-shrink:0;width:29px;height:17px;min-height:0;border:none;border-radius:999px;padding:2px;background:var(--border);margin-top:4px;cursor:pointer}:is(.hub-settings,.hub-skills) .config-switch>span{display:block;height:13px;width:13px;border-radius:50%;background:#fff;transform:translate(0);box-shadow:0 1px 2px #0002;transition:transform .12s ease}:is(.hub-settings,.hub-skills) .config-switch[aria-checked=true]{background:var(--accent)}:is(.hub-settings,.hub-skills) .config-switch[aria-checked=true]>span{transform:translate(12px)}.config-skill-detail{margin:0 20px 18px 64px;padding:14px 16px;background:var(--panel);border-radius:8px}.config-skill-detail pre{margin:0;max-height:430px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;font:11px/1.8 ui-monospace,SFMono-Regular,Menlo,monospace}.config-skill-detail>p{color:var(--muted);font-size:11px;margin:0}.config-detail-error{display:flex;align-items:center;justify-content:space-between;gap:10px;color:var(--danger, #c5443c);font-size:11px}.config-directories{margin-top:24px;font-size:11px;color:var(--muted)}.config-directories summary{cursor:pointer;width:fit-content}.config-directories p{margin:12px 0 8px}.config-directories ul{padding-left:16px;margin:0}.config-directories li{margin-top:6px}.config-directories code{font-size:10px;word-break:break-all}.config-mcp-row{display:flex;align-items:center;gap:12px;padding:17px 20px}.config-mcp-row+.config-mcp-row{border-top:1px solid var(--border)}.config-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:700px){.hub-settings{padding:24px 20px 40px}.hub-settings-heading{gap:12px;margin-bottom:24px}.hub-settings h1{font-size:23px}.config-workspace-card{flex-wrap:wrap;padding:17px}.config-workspace-card>.config-badge{margin-left:46px}.config-form-grid{grid-template-columns:minmax(0,1fr)}.config-form-footer{align-items:flex-start;flex-direction:column;gap:12px}.config-defaults,.config-connection-card,.config-editor-card{padding:17px}.config-connection-facts{margin-left:0}.config-connection-facts>div{grid-template-columns:65px minmax(0,1fr);gap:8px}.config-skill-row{padding:16px;gap:10px}.config-skill-icon{display:none}.config-skill-detail{margin:0 16px 16px;padding:12px}.config-skills-toolbar{flex-wrap:wrap;gap:9px}.config-search{width:100%}.config-section-heading{gap:8px}.config-mcp-row{padding:16px}}@media(prefers-reduced-motion:reduce){:is(.hub-settings,.hub-skills) .config-switch>span{transition:none}}.config-model-actions{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin:16px 18px 0}.config-remove-connection{margin-left:auto}.config-probe-result{display:flex;flex-direction:column;gap:4px;margin:12px 18px 0;padding:10px 12px;border:1px solid var(--border);border-radius:8px;color:var(--muted);background:var(--panel)}.config-probe-result.is-success{color:var(--success)}.config-probe-result small{font-size:11px;color:var(--muted)}.config-remove-confirm{margin:16px 18px 0;padding:16px;border:1px solid var(--border);border-radius:8px;background:var(--panel)}.config-remove-confirm h3{margin-bottom:8px}.config-remove-confirm p{font-size:12px;line-height:1.6}.config-remove-confirm label{display:block;margin:14px 0}.config-remove-confirm label>span{display:block;margin-bottom:7px;font-size:12px}.hub-settings .config-button-danger{background:var(--danger);border-color:var(--danger);color:#fff}.hub-settings .config-button-danger:hover{background:var(--danger);filter:brightness(.94)}.config-connection-editor .config-remove-confirm{margin:14px 0}@media(max-width:600px){.config-model-actions .config-help{flex-basis:100%;order:3}.config-model-actions,.config-probe-result,.config-remove-confirm{margin-left:14px;margin-right:14px}}.hub-library{height:100%;overflow:auto;padding:30px clamp(18px,4vw,52px) 44px}.library-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:24px}.library-heading h1{margin:0 0 8px;font-size:24px;font-weight:650;letter-spacing:-.5px}.library-heading p,.library-hint{margin:0;color:var(--muted);line-height:1.7;font-size:13px}.library-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:34px;padding:7px 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font-size:13px;text-decoration:none;cursor:pointer;white-space:nowrap}.library-button:hover{background:var(--hover)}.library-button.primary{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}.library-button.danger{color:var(--danger)}.library-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.library-error{background:color-mix(in srgb,var(--danger) 8%,var(--surface));border:1px solid color-mix(in srgb,var(--danger) 28%,var(--border));padding:12px 14px;border-radius:9px;margin:12px 0;overflow-wrap:anywhere}.library-empty{padding:32px 18px;text-align:center;color:var(--muted);line-height:1.8}.library-search input,.hub-library select,.library-title-input{width:100%;min-height:38px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);padding:8px 11px}.file-breadcrumbs{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:16px 0;color:var(--muted);font-size:13px}.file-breadcrumbs button{border:none;background:none;color:inherit;padding:4px;max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.file-breadcrumbs button:hover{color:var(--text);text-decoration:underline}.file-columns{display:grid;grid-template-columns:minmax(0,1fr);gap:20px;align-items:start}.file-columns.has-preview{grid-template-columns:minmax(230px,1fr) minmax(0,1.7fr)}.file-directory{border:1px solid var(--border);background:var(--surface);border-radius:12px;overflow:hidden}.file-directory .library-search{display:block;padding:12px;border-bottom:1px solid var(--subtle)}.file-directory .library-hint{padding:14px}.file-entry{display:flex;align-items:center;gap:10px;width:100%;min-height:48px;text-align:left;border:none;border-bottom:1px solid var(--subtle);background:transparent;color:var(--text);padding:10px 14px;cursor:pointer}.file-entry:last-child{border-bottom:none}.file-entry:hover,.file-entry.selected{background:var(--hover)}.file-glyph{font-size:24px;line-height:1;color:var(--muted)}.file-entry-name{min-width:0;flex:1;overflow-wrap:anywhere;font-size:13px}.file-entry-size{color:var(--muted);font-size:11px;white-space:nowrap}.file-preview{min-width:0;overflow:hidden;border:1px solid var(--border);border-radius:12px;background:var(--surface)}.file-preview header{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:14px;border-bottom:1px solid var(--subtle);flex-wrap:wrap}.file-preview header strong{display:block;font-size:13px;overflow-wrap:anywhere}.file-preview header span{display:block;font-size:11px;color:var(--muted);margin-top:4px}.file-preview pre{max-height:65vh;overflow:auto;margin:0;padding:18px;font:12px/1.8 ui-monospace,SFMono-Regular,Menlo,monospace;white-space:pre;tab-size:2}.file-preview>img{display:block;max-width:100%;max-height:65vh;object-fit:contain;margin:auto;padding:16px}.file-preview .library-hint{padding:12px 18px;border-top:1px solid var(--subtle)}.session-toolbar{display:flex;gap:12px;margin:20px 0}.session-toolbar .library-search{flex:1}.session-toolbar select{width:auto;min-width:110px}.session-history-list{border:1px solid var(--border);background:var(--surface);border-radius:12px;overflow:visible}.session-history-row{display:flex;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px solid var(--subtle);padding:17px 18px}.session-history-row:last-child{border-bottom:none}.session-history-info{flex:1;min-width:0}.session-history-title{border:none;padding:0;background:none;color:var(--text);text-align:left;font-weight:550;cursor:pointer;overflow-wrap:anywhere}.session-history-info p{color:var(--muted);font-size:12px;margin:6px 0 0;line-height:1.6;overflow-wrap:anywhere}.session-history-meta{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px;color:var(--muted);font-size:11px}.session-history-editor{width:100%;display:flex;flex-direction:column;gap:14px;padding:18px;margin-bottom:18px;border:1px solid var(--border);border-radius:12px;background:var(--surface);overflow-wrap:anywhere}.session-history-editor h2{margin:0 0 6px;font-size:16px}.session-history-editor label>span{display:block;margin-bottom:7px;font-size:13px}.session-history-editor .library-error{margin:0}.session-title-review{margin:0;color:var(--muted);font-size:13px;line-height:1.7}.session-title-review strong{color:var(--text)}.session-history-editor .library-error:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.session-load-more{display:flex;justify-content:center;padding:20px}.session-export{position:relative}.session-export summary{list-style:none}.session-export summary::-webkit-details-marker{display:none}.session-export>div{position:absolute;right:0;z-index:2;min-width:160px;padding:5px;margin-top:5px;border:1px solid var(--border);border-radius:9px;background:var(--surface);box-shadow:var(--shadow)}.session-export a{display:block;color:var(--text);text-decoration:none;font-size:12px;white-space:nowrap;padding:10px;border-radius:5px}.session-export a:hover{background:var(--hover)}.navigation-prompt{max-width:min(440px,calc(100vw - 32px));border:1px solid var(--border);border-radius:14px;background:var(--surface);color:var(--text);padding:24px;box-shadow:var(--shadow)}.navigation-prompt::backdrop{background:#0006}.navigation-prompt h2{font-size:18px;margin:0 0 12px}.navigation-prompt p{color:var(--muted);font-size:13px;line-height:1.8;margin:0 0 20px}.attachment-open{color:inherit;cursor:pointer}.attachment-open:hover{background:var(--hover)}@media(max-width:1000px){.file-columns.has-preview{grid-template-columns:minmax(0,1fr)}.file-columns.has-preview .file-directory{max-height:250px;overflow:auto}}@media(max-width:600px){.hub-library{padding:22px 16px 32px}.library-heading{align-items:flex-start}.library-heading h1{font-size:22px}.session-history-row{align-items:flex-start;flex-direction:column;gap:12px}.session-history-row .library-actions{width:100%}.file-preview .library-actions{gap:6px}}.hub-links{max-width:1120px;margin:0 auto;padding:32px;overflow-wrap:anywhere}.hub-links h1{margin:0 0 8px;font-size:26px}.hub-links h2{font-size:18px;margin:24px 0 16px}.hub-links h3{font-size:15px}.hub-links p{line-height:1.6}.links-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.links-heading p,.links-muted,.links-host,.links-provider p,.links-connection p,.hub-links small{color:var(--muted)}.links-host{padding-bottom:16px;border-bottom:1px solid var(--border)}.links-heading input{max-width:240px;min-width:0}.hub-links input{display:block;box-sizing:border-box;width:100%;margin-top:8px;padding:10px 12px;background:var(--bg);border:1px solid var(--border);border-radius:8px;color:inherit;font:inherit}.hub-links button{border:1px solid var(--border);border-radius:7px;padding:7px 12px;background:var(--panel);color:inherit;cursor:pointer}.hub-links button:disabled{opacity:.5;cursor:default}.hub-links a{color:var(--accent)}.links-providers{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px}.links-provider,.links-connection,.links-editor{border:1px solid var(--border);border-radius:12px;padding:20px;background:var(--panel)}.links-provider{display:flex;flex-direction:column;align-items:flex-start}.links-provider p{margin-top:0;flex:1}.links-provider button{margin-top:16px}.links-brand{font-weight:700;font-size:19px;min-width:38px;min-height:38px;display:grid;place-items:center;border-radius:9px;background:var(--bg)}.links-connections{display:grid;gap:12px}.links-connection{display:flex;justify-content:space-between;gap:16px}.links-connection p{margin:6px 0}.links-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.links-state{font-size:12px;display:inline-block;padding:3px 8px;border-radius:5px;margin:4px 10px 4px 0;background:var(--bg)}.links-state.ready,.links-notice{color:var(--success)}.links-editor-backdrop{position:fixed;inset:0;z-index:999;background:#00000073}.links-editor{position:fixed;z-index:1000;left:50%;top:50%;transform:translate(-50%,-50%);width:min(540px,calc(100vw - 48px));max-height:calc(100dvh - 64px);box-sizing:border-box;overflow-y:auto;padding:28px;box-shadow:0 24px 80px #0000003d}.links-editor h2{margin-top:0}.links-editor label{display:block;margin:16px 0}.links-auth-option{padding:16px 0;border-top:1px solid var(--border);margin-top:20px}.links-auth-option details{margin-top:14px}.hub-links details li{padding:4px 0;line-height:1.6}.hub-links summary{cursor:pointer}.links-device-code{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:16px;margin-top:16px}.links-device-code>strong{font-size:26px;letter-spacing:4px;-webkit-user-select:all;user-select:all}.links-confirm,.links-conflict{border:1px solid var(--border);padding:16px;border-radius:9px;margin:16px 0;background:var(--bg)}.links-confirm button+button{margin-left:8px}.links-authorization{margin-top:20px;padding-top:16px;border-top:1px solid var(--border)}.links-authorization>.links-actions{margin:20px 0 12px}.link-authorization-step{margin:20px 0}.link-authorization-actions,.links-methods{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}.link-authorization-code{display:block;padding:18px;border:1px solid var(--border);border-radius:10px;background:var(--bg);text-align:center;font-size:28px;letter-spacing:4px;-webkit-user-select:all;user-select:all}.link-authorization-expires,.links-other-methods{color:var(--muted);font-size:12px}.link-authorization-error{color:var(--danger, #d04c4c)}.link-authorization-qr{text-align:center}.link-authorization-qr img{display:block;margin:16px auto;border-radius:12px;background:#fff}.link-authorization-fields>button,.link-authorization-consent>button{width:100%;padding:11px 16px;margin-top:12px;background:var(--accent);color:#fff}.link-authorization-consent label{display:flex;align-items:flex-start;gap:8px;flex-wrap:wrap}.link-authorization-consent input[type=checkbox]{width:auto;margin:3px 0 0}.link-authorization-consent small{display:block;flex-basis:100%;margin-left:24px}.link-authorization-consent fieldset{margin:16px 0;border:1px solid var(--border);border-radius:8px}@media(max-width:640px){.hub-links{padding:20px 16px}.links-connection{flex-direction:column}.links-heading{align-items:flex-start}.links-heading input{max-width:160px}.links-editor{padding:16px}.links-providers{grid-template-columns:1fr}}.links-heading>button{flex-shrink:0;white-space:nowrap}.hub-panels{flex:1;min-height:0;width:100%;overflow-y:auto;max-width:1120px;margin:0 auto;padding:32px;overflow-wrap:anywhere}.hub-panels h1{margin:0 0 8px;font-size:26px}.hub-panels h2{margin:0;font-size:18px}.hub-panels h3{margin:0;font-size:15px}.hub-panels p{line-height:1.6}.panels-muted,.hub-panels small,.panels-card>p,.panels-heading p{color:var(--muted)}.panels-heading,.panels-card-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.panels-heading{margin-bottom:20px}.panels-heading p{margin:8px 0 0}.panels-section{margin-top:28px}.panels-card,.panels-import,.panels-review,.panels-empty{border:1px solid var(--border);border-radius:12px;background:var(--panel);padding:20px}.panels-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.panels-card{display:flex;flex-direction:column;min-width:0}.panels-card>p{margin:10px 0}.panels-card .panels-actions{margin-top:auto;padding-top:18px}.panels-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.hub-panels button{border:1px solid var(--border);border-radius:7px;padding:8px 12px;color:inherit;background:var(--panel);font:inherit;cursor:pointer}.hub-panels button:disabled{opacity:.5;cursor:default}.hub-panels button.panels-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text, white)}.hub-panels button.panels-danger{color:var(--danger)}.hub-panels input:not([type=checkbox]){box-sizing:border-box;display:block;width:100%;min-width:0;margin-top:7px;padding:10px 12px;border:1px solid var(--border);border-radius:8px;color:inherit;background:var(--bg);font:inherit}.panels-heading input{max-width:240px}.hub-panels label{display:block}.panels-import form>label{margin:20px 0 14px}.panels-import details{margin:16px 0}.hub-panels summary{cursor:pointer}.panels-source-fields{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding-top:16px}.panels-candidates{margin-top:24px}.panels-candidates>h3{margin-bottom:14px}.panels-batch-start{margin:16px 0}.panels-badges{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:10px 0}.panels-badge{display:inline-block;border:1px solid var(--border);border-radius:5px;padding:3px 7px;font-size:12px;background:var(--bg)}.panels-badge-ready,.panels-notice{color:var(--success)}.panels-warning,.panels-confirm{padding:14px 16px;border:1px solid var(--border);border-radius:8px;background:var(--bg);line-height:1.6;margin:16px 0}.panels-warning p,.panels-confirm p{margin:0 0 8px}.panels-warning ul{margin:6px 0 0;padding-left:22px}.panels-review{margin:24px 0}.panels-review section{margin:22px 0}.panels-review dl,.panels-card dl{display:grid;grid-template-columns:auto minmax(0,1fr);gap:7px 14px;font-size:13px}.panels-review dt,.panels-card dt{color:var(--muted)}.panels-review dd,.panels-card dd{margin:0}.panels-review .panels-permission{display:flex;flex-direction:column;gap:4px;padding:9px 0;border-bottom:1px solid var(--border)}.panels-review footer{border-top:1px solid var(--border);padding-top:20px}.panels-check{margin-bottom:16px}.panels-check input{margin-right:8px}.panels-empty p{margin:8px 0 0}@media(max-width:640px){.hub-panels{padding:20px 16px}.panels-heading{flex-wrap:wrap}.panels-heading input{max-width:none}.panels-grid,.panels-source-fields{grid-template-columns:1fr}.panels-card,.panels-import,.panels-review,.panels-empty{padding:16px}}.panel-host{display:flex;flex-direction:column;flex:1;min-height:0;overflow:auto;padding:16px 20px 20px;gap:12px}.panel-host-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-shrink:0}.panel-host-heading h1{margin:0;font-size:18px}.panel-host-heading p{margin:5px 0 0;color:var(--muted);font-size:12px}.panel-host button,.panel-host-actions a{border:1px solid var(--border);border-radius:7px;padding:8px 12px;color:inherit;background:var(--panel);cursor:pointer;text-decoration:none;font:inherit}.panel-host button.panel-host-primary,.panel-host-actions a{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.panel-host-limitations,.panel-host-notice,.panel-host-error{border:1px solid var(--border);border-radius:8px;padding:10px 14px;margin:0;background:var(--panel);font-size:13px;line-height:1.5;max-height:160px;overflow:auto;flex-shrink:0}.panel-host-limitations summary{cursor:pointer;font-weight:600}.panel-host-limitations p,.panel-host-limitations ul,.panel-host-error p{margin:6px 0}.panel-host-limitations ul{padding-left:20px}.panel-host-directory p{margin:0 0 8px;overflow-wrap:anywhere}.panel-host-directory a{display:inline-block;padding:7px 12px;border-radius:7px;background:var(--accent);color:var(--accent-text);font-weight:600;text-decoration:none}.panel-host-loading{color:var(--muted)}.panel-host-frame{display:block;border:1px solid var(--border);border-radius:10px;background:var(--surface);width:100%;min-height:280px;flex:1}.panel-host-frame[inert]{pointer-events:none;opacity:.5}.panel-host-confirm{border:2px solid var(--accent);border-radius:10px;background:var(--surface);box-shadow:var(--shadow);padding:18px;flex-shrink:0}.panel-host-confirm h2{margin:0 0 12px;font-size:16px}.panel-host-confirm pre,.panel-host-url{max-height:240px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;font:inherit;line-height:1.6;background:var(--bg);padding:12px;border-radius:7px}.panel-host-actions{display:flex;gap:8px}@media(max-width:640px){.panel-host{padding:12px 10px}.panel-host-frame{min-height:380px}.panel-host-confirm pre{max-height:160px}}.panel-host-preview{border:1px solid var(--border);border-radius:8px;padding:12px;background:var(--panel);flex-shrink:0}.panel-host-preview header{display:flex;align-items:center;justify-content:space-between;gap:12px}.panel-host-preview h2{font-size:15px;overflow-wrap:anywhere;min-width:0}.panel-host-preview button{flex-shrink:0}.panel-host-preview video,.panel-host-preview audio,.panel-host-preview img{display:block;width:100%;max-height:50vh;object-fit:contain;margin-bottom:12px}.panel-host-preview a{display:inline-block;padding:10px 12px;background:var(--accent);color:var(--accent-text);border-radius:7px;text-decoration:none}.message-content{min-width:0;max-width:100%;white-space:normal;line-height:1.8;overflow-wrap:anywhere}.message-content>:first-child{margin-top:0}.message-content>:last-child{margin-bottom:0}.message-content p{margin:10px 0}.message-content h1,.message-content h2,.message-content h3,.message-content h4{margin:20px 0 8px;font-weight:600;line-height:1.5;letter-spacing:-.025em}.message-content h1{font-size:23px}.message-content h2{font-size:19px}.message-content h3{font-size:16px}.message-content h4{font-size:14px}.message-content ul,.message-content ol{margin:10px 0;padding-left:24px}.message-content li{margin:4px 0}.message-content li>p{margin:4px 0}.message-content .contains-task-list{list-style:none;padding-left:4px}.message-content .task-list-item>input{margin-right:8px;accent-color:var(--accent)}.message-content blockquote{margin:14px 0;padding:2px 16px;border-left:3px solid var(--border);color:var(--muted)}.message-content a{color:var(--accent);text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--accent) 35%,transparent);text-underline-offset:3px}.message-content a:hover{text-decoration-color:currentColor}.message-content hr{margin:20px 0;border:0;border-top:1px solid var(--border)}.message-content code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.88em}.message-content :not(pre)>code{background:var(--panel);padding:2px 5px;border-radius:5px}.message-code-block{margin:14px 0;border:1px solid var(--border);border-radius:10px;overflow:hidden;background:var(--surface)}.message-code-heading{display:flex;justify-content:space-between;align-items:center;padding:7px 12px;border-bottom:1px solid var(--subtle);color:var(--muted);background:var(--panel);font-size:11px}.message-code-block pre{margin:0;padding:14px;overflow-x:auto;line-height:1.7;white-space:pre;tab-size:2}.message-code-block pre code{font-size:12px}.message-copy{color:var(--muted);background:transparent;border:0;border-radius:5px;padding:3px 6px;font-size:10px;cursor:pointer;white-space:nowrap}.message-copy:hover{background:var(--hover);color:var(--text)}.message-actions{display:flex;margin-top:8px}.message-actions .message-copy{padding-left:0}.message-reasoning{color:var(--muted);margin-bottom:14px;font-size:12px}.message-reasoning summary{cursor:pointer;padding:3px 0}.message-reasoning pre{margin:8px 0 0;white-space:pre-wrap;font:inherit;line-height:1.8;max-height:320px;overflow:auto;padding:10px 14px;border-left:2px solid var(--border)}.message-streaming{white-space:pre-wrap}.message-table-scroll{max-width:100%;overflow-x:auto;margin:14px 0;border:1px solid var(--border);border-radius:8px}.message-table-scroll table{border-collapse:collapse;width:max-content;min-width:100%;font-size:12px}.message-table-scroll th,.message-table-scroll td{padding:8px 12px;border-right:1px solid var(--subtle);border-bottom:1px solid var(--subtle);vertical-align:top}.message-table-scroll th{text-align:left;background:var(--panel);font-weight:550}.message-table-scroll tr:last-child td{border-bottom:0}.message-table-scroll th:last-child,.message-table-scroll td:last-child{border-right:0}.message-image-reference{display:inline-flex;align-items:center;gap:8px;max-width:100%;border:1px solid var(--border);border-radius:8px;padding:7px 10px;background:var(--panel);color:var(--accent);font-family:inherit;font-size:12px}button.message-image-reference{cursor:pointer}button.message-image-reference:hover{background:var(--hover)}.message-image-reference span{color:var(--muted);font-size:10px}.message-file-reference{background:var(--panel);border-radius:4px;padding:1px 4px}.message-file-reference .message-copy{display:inline;margin-left:4px}.message-tool-card{border:1px solid var(--subtle);border-radius:10px;background:var(--surface);white-space:normal;overflow:hidden}.message-tool-card>summary{display:flex;align-items:center;gap:8px;cursor:pointer;list-style:none;min-width:0;padding:10px 12px;font-size:11px}.message-tool-card>summary::-webkit-details-marker{display:none}.message-tool-card>summary:after{content:"›";color:var(--muted);margin-left:3px;font-size:16px}.message-tool-card[open]>summary:after{transform:rotate(90deg)}.message-tool-indicator{display:grid;place-items:center;flex:0 0 17px;width:17px;height:17px;border:1px solid var(--border);border-radius:50%;font-size:10px;color:var(--muted)}.message-tool-name{color:var(--text);font-weight:550;flex-shrink:0}.message-tool-summary{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted)}.message-tool-status{margin-left:auto;color:var(--muted);white-space:nowrap;font-size:10px}.message-tool-error .message-tool-status,.message-tool-error .message-tool-indicator{color:var(--danger)}.message-tool-section{padding:0 12px 12px;color:var(--muted)}.message-tool-section strong{font-size:10px;font-weight:550}.message-tool-section pre{max-height:320px;overflow:auto;padding:10px;margin:6px 0 0;border-radius:6px;background:var(--panel);white-space:pre-wrap;overflow-wrap:anywhere;font:11px/1.7 ui-monospace,SFMono-Regular,Menlo,monospace}.message-tool-result-heading{display:flex;align-items:center;justify-content:space-between}@media(max-width:760px){.message-content h1{font-size:20px}.message-content h2{font-size:17px}.message-tool-summary{max-width:34vw}.message-code-block pre{padding:12px}}.message-file-open{border:0;padding:0;color:var(--accent);background:transparent;font:inherit;cursor:pointer;text-decoration:underline;text-underline-offset:3px}:root{color-scheme:light;--bg: hsl(240 20% 99%);--surface: hsl(0 0% 100%);--panel: hsl(240 6% 95.5%);--text: hsl(240 10% 3.9%);--muted: hsl(240 4% 43%);--accent: hsl(19 63% 39%);--accent-text: hsl(0 0% 98%);--border: hsl(240 5% 78% / 65%);--hover: hsl(240 6% 92.5%);--subtle: hsl(240 5% 78% / 35%);--danger: hsl(0 72% 50%);--warning: hsl(38 92% 38%);--success: hsl(145 63% 32%);--shadow: 0 8px 28px hsl(240 10% 3.9% / 3.5%), 0 1px 3px hsl(240 10% 3.9% / 4%)}@media(prefers-color-scheme:dark){:root{color-scheme:dark;--bg: hsl(240 9% 5.5%);--surface: hsl(240 7% 8.5%);--panel: hsl(240 4% 11%);--text: hsl(0 0% 98%);--muted: hsl(240 5% 67%);--accent: hsl(22 70% 55%);--accent-text: hsl(22 30% 8%);--border: hsl(240 4% 19%);--hover: hsl(240 4% 17%);--subtle: hsl(240 4% 19% / 65%);--danger: hsl(0 84% 65%);--warning: hsl(42 92% 62%);--success: hsl(142 64% 48%);--shadow: 0 8px 28px #0002, 0 1px 3px #0003}}*{box-sizing:border-box}[hidden]{display:none!important}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--bg);color:var(--text);font-size:14px;-webkit-font-smoothing:antialiased}button,input,textarea,select{font:inherit}button{-webkit-tap-highlight-color:transparent}button:disabled{opacity:.45;cursor:default}button:focus-visible,input:focus-visible,textarea:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:3px}button svg{flex-shrink:0}.shell{display:flex;height:100dvh;overflow:hidden}.rail{width:248px;flex:0 0 248px;min-height:0;display:flex;flex-direction:column;border-right:1px solid var(--subtle);background:var(--panel)}.rail-head{display:flex;align-items:center;gap:8px;height:64px;padding:14px 16px;flex-shrink:0}.rail-head strong{font-size:15px;letter-spacing:-.4px;font-weight:650}.brand-mark,.welcome-mark{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);background:var(--surface);border-radius:8px;width:28px;height:28px;color:var(--accent);flex-shrink:0}.hub-badge{color:var(--muted);font-size:10px;line-height:18px;padding-inline:5px;border:1px solid var(--border);border-radius:5px}button.icon-button{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;flex-shrink:0;padding:0;border:0;border-radius:7px;color:var(--muted);background:transparent;cursor:pointer}button.icon-button:hover:not(:disabled){background:var(--hover);color:var(--text)}.rail-head .sidebar-close{margin-left:auto;width:26px}.workbench-nav{display:flex;flex-direction:column;gap:3px;padding:0 12px 18px}.nav-button{display:flex;align-items:center;gap:10px;min-height:36px;padding:8px 10px;text-align:left;color:var(--muted);background:transparent;border:0;border-radius:8px;cursor:pointer;font-size:13px}.nav-button:hover,.nav-button.active{background:var(--hover);color:var(--text)}.nav-button.active{font-weight:550}.nav-button.new-chat-button{margin-bottom:10px;color:var(--text);background:var(--surface);border:1px solid var(--border);box-shadow:0 1px 2px #00000004}.nav-button.new-chat-button:hover{border-color:var(--muted)}.rail-section-label{color:var(--muted);font-size:11px;font-weight:550;margin:0 22px 8px}.workspace-button{display:flex;align-items:center;gap:9px;margin:0 12px;padding:9px 10px;color:var(--text);border:0;background:transparent;border-radius:8px;min-width:0;text-align:left;font-size:12px}button.workspace-button{cursor:pointer}button.workspace-button:hover{background:var(--hover)}.workspace-button>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.workspace-button>svg{width:16px;color:var(--muted);flex-shrink:0}.workspace-button>svg:last-child{width:12px}.history-label{display:flex;justify-content:space-between;margin-top:24px}.sessions{flex:1;min-height:0;overflow-y:auto;list-style:none;margin:0;padding:0 12px 16px}.sessions .empty{padding:12px 10px;color:var(--muted);font-size:12px;line-height:1.7}.session{width:100%;display:flex;flex-direction:column;gap:5px;margin:2px 0;text-align:left;color:var(--text);background:transparent;border:0;border-radius:8px;padding:10px;cursor:pointer}.session:hover,.session.active{background:var(--hover)}.session-title{font-size:12px;line-height:1.5;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.session-meta{font-size:10px;color:var(--muted)}.rail-footer{padding:10px 12px 12px;border-top:1px solid var(--subtle)}.host-label{display:flex;gap:7px;align-items:center;color:var(--muted);font-size:10px;padding:2px 10px 8px}.dot{display:inline-block;flex:0 0 6px;width:6px;height:6px;border-radius:50%;background:var(--muted)}.dot.open{background:var(--success)}.dot.connecting{background:var(--warning)}.dot.closed{background:var(--danger)}.account-button{display:flex;width:100%;align-items:center;gap:10px;color:var(--text);background:transparent;border:0;border-radius:8px;text-align:left;padding:8px 10px;cursor:pointer}.account-button:hover{background:var(--hover)}.account-avatar{width:28px;height:28px;display:grid;place-items:center;border-radius:50%;background:var(--surface);border:1px solid var(--border);font-size:11px;flex-shrink:0}.account-copy{display:flex;min-width:0;flex:1;flex-direction:column;gap:3px}.account-copy strong{font-size:12px;font-weight:550;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.account-copy>span{color:var(--muted);font-size:10px}.account-button>svg{width:12px;color:var(--muted)}.workbench-main{display:flex;flex:1;flex-direction:column;min-width:0;min-height:0}.workbench-topbar{flex-shrink:0;display:flex;height:54px;align-items:center;gap:10px;padding:0 20px;border-bottom:1px solid var(--subtle)}.topbar-context{display:flex;flex:1;min-width:0;flex-direction:column;gap:2px}.topbar-project{font-size:12px;font-weight:500;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.topbar-title{color:var(--muted);font-size:11px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.connection-pill{display:inline-flex;align-items:center;gap:6px;font-size:10px;color:var(--muted);margin-left:auto;white-space:nowrap}.sidebar-backdrop{display:none}.chat{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0}.banner{padding:8px 20px;font-size:12px;color:var(--warning);background:color-mix(in srgb,var(--warning) 7%,transparent);border-bottom:1px solid var(--subtle);flex-shrink:0;line-height:1.6}.banner.goal{align-self:stretch;border:1px solid var(--border);border-radius:8px}.banner .ghost{margin-left:8px;padding:2px 8px}.messages{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:28px 24px 16px}.transcript{max-width:736px;width:100%;display:flex;flex-direction:column;gap:18px;margin:0 auto}.chat-empty .messages{display:flex;padding-top:32px}.chat-empty .transcript{justify-content:center}.empty-chat{text-align:center;padding:24px 0 32px}.welcome-mark{width:44px;height:44px;border-radius:13px;margin-bottom:22px;box-shadow:var(--shadow)}.welcome-mark svg{width:25px;height:25px}.empty-chat h1{font-size:clamp(24px,2.5vw,32px);margin:0 0 12px;letter-spacing:-.8px;font-weight:550}.empty-chat p{color:var(--muted);font-size:13px;line-height:1.7;margin:0 0 20px}.welcome-workspace{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:11px;max-width:100%;overflow-wrap:anywhere}.welcome-workspace svg{width:14px;flex-shrink:0}.msg{max-width:100%;font-size:14px;line-height:1.8;white-space:pre-wrap;overflow-wrap:anywhere}.msg.user{align-self:flex-end;max-width:88%;padding:10px 16px;background:var(--panel);border-radius:16px}.msg.assistant{align-self:stretch;padding:3px 0}.msg.tool{align-self:stretch;color:var(--muted);font-size:12px;padding:2px 0}.msg.tool .tool-result{max-height:280px;margin:8px 0 0;overflow:auto;padding:12px;font-family:ui-monospace,monospace;white-space:pre-wrap;background:var(--panel);border:1px solid var(--subtle);border-radius:8px}.msg.tool details>summary{cursor:pointer}.msg.tool-error{color:var(--danger)}.msg.info{align-self:stretch;color:var(--muted);font-size:12px}.msg.error{align-self:stretch;background:color-mix(in srgb,var(--danger) 8%,transparent);border-radius:8px;padding:10px 14px;color:var(--danger)}.cursor{animation:blink 1s step-start infinite;color:var(--accent)}@keyframes blink{50%{opacity:0}}.composer-wrap{flex-shrink:0;width:100%;max-width:784px;padding:12px 24px 20px;margin:0 auto}.chat-empty .composer-wrap{margin-bottom:clamp(36px,13vh,180px)}.composer{padding:12px;border:1px solid var(--border);border-radius:18px;background:var(--surface);box-shadow:var(--shadow);transition:border-color .15s ease,box-shadow .15s ease}.composer:focus-within{border-color:color-mix(in srgb,var(--accent) 55%,var(--border));box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 7%,transparent),var(--shadow)}.composer textarea{display:block;width:100%;resize:none;min-height:64px;max-height:180px;overflow-y:auto;color:var(--text);background:transparent;border:0;border-radius:0;padding:6px 8px 10px;line-height:1.65;font-size:14px}.composer textarea:focus{outline:none}.composer textarea::placeholder{color:var(--muted)}.composer-toolbar{display:flex;align-items:center;gap:6px;padding:2px 1px 0;min-width:0}.model-button{display:flex;align-items:center;gap:5px;min-width:0;max-width:50%;padding:7px;border:0;border-radius:7px;background:transparent;color:var(--muted);font-size:11px;cursor:pointer}.model-button:hover{background:var(--panel);color:var(--text)}.model-button span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.model-button svg{width:10px;transform:rotate(90deg)}.composer-run-status{font-size:11px;color:var(--muted);margin-left:auto;white-space:nowrap}button.send,button.stop{border:0;border-radius:8px;padding:9px 16px;font-size:13px;font-weight:550;cursor:pointer}button.send{background:var(--accent);color:var(--accent-text)}button.stop{color:var(--danger);background:color-mix(in srgb,var(--danger) 10%,var(--surface))}button.composer-submit{display:grid;place-items:center;flex:0 0 32px;width:32px;height:32px;border-radius:50%;padding:0;margin-left:4px}.composer-submit.send{background:var(--text);color:var(--bg)}.composer-submit.stop{color:var(--text);background:var(--panel);border:1px solid var(--border)}.composer-caption{display:flex;justify-content:space-between;gap:12px;color:var(--muted);font-size:10px;padding:10px 6px 0}.attachments{display:flex;flex-wrap:wrap;gap:6px;color:var(--muted);font-size:12px;padding:0 6px 8px}.attachment{display:inline-flex;align-items:center;gap:5px;max-width:100%;overflow-wrap:anywhere;padding:4px 7px;background:var(--panel);border:1px solid var(--border);border-radius:6px;font-size:11px;margin-top:4px}.msg .attachment{display:flex}.attachment svg{width:13px;flex-shrink:0}.attachment button.ghost{padding:0 4px;border:0}.approval{align-self:stretch;border:1px solid color-mix(in srgb,var(--warning) 60%,var(--border));background:color-mix(in srgb,var(--warning) 5%,var(--surface));border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:10px}.approval-title{font-size:13px;font-weight:600}.approval-title em{color:var(--muted);font-style:normal;font-weight:400}.approval-desc{font-size:13px;color:var(--muted)}.approval-summary{font-size:13px;overflow-wrap:anywhere}.approval-raw>summary{color:var(--muted);cursor:pointer;font-size:12px}.approval-args{margin:8px 0 0;font-size:12px;background:var(--panel);border-radius:8px;padding:10px;overflow-x:auto;max-height:180px}.approval-answer{background:var(--surface);border:1px solid var(--border);border-radius:8px;color:var(--text);padding:10px;min-height:64px}.approval-actions{display:flex;gap:8px}.approval-actions button{min-height:36px}button.ghost{background:transparent;border:1px solid var(--border);color:var(--text);border-radius:8px;padding:6px 10px;cursor:pointer}button.ghost:hover:not(:disabled){background:var(--hover)}.auth-page{min-height:100%;display:grid;place-items:center;padding:24px}.auth-card{width:100%;max-width:420px;padding:28px;border:1px solid var(--border);border-radius:18px;background:var(--surface);box-shadow:var(--shadow)}.auth-brand{font-size:21px;font-weight:650;margin-bottom:28px}.auth-brand span{font-size:12px;font-weight:500;color:var(--accent);border:1px solid var(--border);border-radius:5px;padding:2px 5px;vertical-align:middle}.auth-card h1{font-size:20px;margin:0}.auth-card p,.muted{color:var(--muted);font-size:13px;line-height:1.6}.auth-card form{display:flex;flex-direction:column;gap:14px}.auth-card label{display:flex;flex-direction:column;gap:7px;font-size:13px}.auth-card label span,.auth-card small{color:var(--muted);font-size:12px}.auth-card input{width:100%;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:11px}.auth-card .send{min-height:42px}.form-error{color:var(--danger)!important;overflow-wrap:anywhere}.devices-dialog{color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:22px;width:min(560px,calc(100% - 32px));max-height:calc(100% - 32px)}.devices-dialog::backdrop{background:#0006}.dialog-head{display:flex;justify-content:space-between;align-items:center;gap:16px}.dialog-head h2{font-size:18px;margin:0}.device-list{margin:20px 0;padding:0;list-style:none}.device-list li{display:flex;align-items:center;gap:12px;padding:14px 0;border-top:1px solid var(--border)}.device-list li div{flex:1;min-width:0;overflow-wrap:anywhere}.device-list strong{font-size:13px}.device-list span{display:block;margin-top:5px;font-size:11px;color:var(--muted)}.device-list button{flex-shrink:0;font-size:12px}.devices-dialog>.stop{padding:10px 14px}@media(max-width:760px){.rail{position:fixed;inset:0 auto 0 0;z-index:30;width:min(280px,calc(100vw - 48px));box-shadow:10px 0 40px #0002}.sidebar-backdrop{display:block;position:fixed;inset:0;background:#0005;z-index:29}.rail-head{padding-top:max(14px,env(safe-area-inset-top))}.rail-footer{padding-bottom:max(12px,env(safe-area-inset-bottom))}.workbench-topbar{padding:0 12px;gap:8px;height:50px}.messages{padding:24px 18px 12px}.transcript{gap:16px}.msg{font-size:14px}.msg.user{max-width:92%}.composer-wrap{padding:10px 12px max(12px,env(safe-area-inset-bottom))}.chat-empty .composer-wrap{margin-bottom:clamp(18px,10vh,80px)}.empty-chat{padding:20px 12px}.empty-chat p{font-size:12px}.composer{padding:10px;border-radius:16px}.composer textarea{font-size:16px}.composer-caption{justify-content:center;font-size:9px}.composer-caption>span:last-child{display:none}.composer-run-status{font-size:10px}.model-button{max-width:47%;font-size:10px}.banner{padding:8px 14px}}@media(max-height:640px){.chat-empty .composer-wrap{margin-bottom:0}.empty-chat{padding:12px 0}.welcome-mark{margin-bottom:12px}}@media(prefers-reduced-motion:reduce){.cursor{animation:none}.composer{transition:none}}#app{height:100%}.desktop-sidebar-controls{display:grid;gap:10px;padding:8px 12px 12px;border-bottom:1px solid var(--border)}.desktop-project-picker,.desktop-approval-scope label,.desktop-chat-controls label{display:grid;gap:5px;font-size:12px;color:var(--muted)}.desktop-project-picker select,.desktop-approval-scope select,.desktop-chat-controls select{min-width:0;min-height:34px;max-width:100%;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text);padding:4px 8px}.desktop-sidebar-actions{display:flex;flex-wrap:wrap;gap:6px}.desktop-root-picker,.desktop-cli-sessions{min-width:0;max-height:38dvh;overflow:auto}.desktop-root-picker summary,.desktop-cli-sessions summary{cursor:pointer;padding:6px 0;font-size:12px;color:var(--muted)}.desktop-cli-sessions .session,.desktop-root-picker .session{width:100%;margin-top:5px}.desktop-chat-controls{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:8px 0 16px;font-size:12px}.desktop-room-label{min-width:0;overflow-wrap:anywhere}.desktop-mode-options,.desktop-ask-options{display:grid;gap:8px;margin:12px 0}.desktop-mode-options .library-button{display:grid;gap:5px;text-align:left;white-space:normal}.desktop-mode-options span{font-size:12px;font-weight:400;color:var(--muted)}.desktop-approval-scope{display:flex;flex-wrap:wrap;gap:10px;margin:12px 0}.desktop-ask-options .library-button{white-space:normal;text-align:left}.session-unread{color:var(--accent)}.goal{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.goal>span{flex:1;min-width:0}.desktop-connection{min-height:100dvh;display:grid;place-items:center;padding:24px;background:var(--bg);color:var(--text)}.desktop-connection-card{width:min(400px,100%);padding:26px;border:1px solid var(--border);border-radius:18px;background:var(--surface)}.desktop-connection-card h1{margin:0 0 12px;font-size:22px}.desktop-connection-card p{line-height:1.7;color:var(--muted)}.desktop-cli-path{margin:4px 0 10px;color:var(--muted);font-size:11px;overflow-wrap:anywhere}.projects-page{max-width:1120px;min-height:100dvh;margin:auto;padding:48px 28px;color:var(--text, #e5e7eb)}.projects-header{margin-bottom:32px}.projects-header h1{margin:24px 0 10px;font-size:28px;letter-spacing:-.04em}.projects-header p,.project-date,.project-empty{color:var(--muted, #9ca3af);line-height:1.6}.project-create{display:flex;align-items:end;gap:12px;max-width:600px;margin:24px 0 32px}.project-create label{display:grid;flex:1;gap:8px;font-size:13px}.project-create input{width:100%;padding:11px 12px;border:1px solid var(--border, #303541);border-radius:8px;background:var(--surface, #171b24);color:inherit}.projects-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:16px}.project-card{padding:22px;border:1px solid var(--border, #303541);border-radius:14px;background:var(--surface, #171b24)}.project-card-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.project-card h2{font-size:17px;margin:0;overflow-wrap:anywhere}.project-status{flex-shrink:0;padding:4px 8px;border-radius:20px;color:var(--muted, #9ca3af);background:#ffffff08;font-size:12px}.project-status.running{color:var(--success, #70d4b3);background:#4fc69d12}.project-status.error{color:var(--danger, #fb9d9d)}.project-date{font-size:12px;margin:12px 0 22px}.project-stop-confirm{position:fixed;z-index:100;top:50%;left:50%;transform:translate(-50%,-50%);margin:0;color:inherit;max-width:480px;width:calc(100% - 40px);padding:28px;background:var(--surface, #171b24);border:1px solid var(--border, #303541);border-radius:16px;box-shadow:var(--shadow)}.project-stop-confirm::backdrop{background:#0009}.project-stop-confirm h2{margin-top:0;font-size:19px}.project-stop-confirm p{line-height:1.7}.project-connection-note{position:fixed;z-index:90;top:0;left:50%;transform:translate(-50%);max-width:min(700px,90vw);padding:8px 14px;background:#453919;color:#ffe6a0;border-radius:0 0 8px 8px;font-size:12px}@media(max-width:600px){.projects-page{padding:28px 18px}.project-create{align-items:stretch;flex-direction:column}}
@@ -7,8 +7,8 @@
7
7
  <link rel="manifest" href="/manifest.webmanifest" />
8
8
  <link rel="icon" type="image/svg+xml" href="/icon.svg" />
9
9
  <title>CodeShell Hub</title>
10
- <script type="module" crossorigin src="/assets/index-C9YhaFPF.js"></script>
11
- <link rel="stylesheet" crossorigin href="/assets/index-Dtx33DyF.css">
10
+ <script type="module" crossorigin src="/assets/index-Do7zJ7tU.js"></script>
11
+ <link rel="stylesheet" crossorigin href="/assets/index-EIfqZrcz.css">
12
12
  </head>
13
13
  <body>
14
14
  <div id="root"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cjhyy/code-shell-web",
3
- "version": "0.9.26",
3
+ "version": "0.9.28",
4
4
  "description": "CodeShell web client logic layer — remote-app state (chatReducer + server-event fold), reconnecting WebSocket hook, pairing/device-credential/risk helpers, and the mobile i18n namespace. Browser-only (no Electron, no Node); seed of the standalone browser client.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -24,14 +24,16 @@
24
24
  "clean": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true});require('node:fs').rmSync('dist-app',{recursive:true,force:true})\""
25
25
  },
26
26
  "dependencies": {
27
- "@cjhyy/code-shell-core": "0.9.26",
28
- "@cjhyy/code-shell-link": "0.9.26"
27
+ "@cjhyy/code-shell-core": "0.9.28",
28
+ "@cjhyy/code-shell-link": "0.9.28",
29
+ "@types/react": "^19.2.14",
30
+ "qrcode": "1.5.4"
29
31
  },
30
32
  "peerDependencies": {
31
33
  "react": "19.2.6"
32
34
  },
33
35
  "devDependencies": {
34
- "@types/react": "^19.2.14",
36
+ "@types/qrcode": "1.5.6",
35
37
  "@types/react-dom": "^19.2.0",
36
38
  "@vitejs/plugin-react": "^5.0.0",
37
39
  "react": "19.2.6",