feat(rpc): add validated desktop Pi RPC command palette
This commit is contained in:
+247
-5
@@ -448,8 +448,18 @@ select:focus-visible {
|
||||
}
|
||||
.message.assistant {
|
||||
margin-right: 12px;
|
||||
border-color: #505050;
|
||||
background: #353535;
|
||||
border-color: #496983;
|
||||
background: #253544;
|
||||
}
|
||||
.message.tool,
|
||||
.message.toolResult {
|
||||
margin-right: 12px;
|
||||
border-color: #2d8372;
|
||||
background: #193936;
|
||||
}
|
||||
.message.error {
|
||||
border-color: #bf6570;
|
||||
background: #44282d;
|
||||
}
|
||||
.message strong {
|
||||
display: block;
|
||||
@@ -461,6 +471,16 @@ select:focus-visible {
|
||||
.message.user strong {
|
||||
color: #ffc170;
|
||||
}
|
||||
.message.assistant strong {
|
||||
color: #b9d9ff;
|
||||
}
|
||||
.message.tool strong,
|
||||
.message.toolResult strong {
|
||||
color: #a9f2df;
|
||||
}
|
||||
.message.error strong {
|
||||
color: #ffd7db;
|
||||
}
|
||||
.message pre {
|
||||
margin: 0;
|
||||
white-space: pre-wrap;
|
||||
@@ -469,6 +489,30 @@ select:focus-visible {
|
||||
font-size: 13px;
|
||||
line-height: 1.32;
|
||||
}
|
||||
.tool-result summary {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
cursor: pointer;
|
||||
list-style: none;
|
||||
color: #a9f2df;
|
||||
font-size: 10px;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
.tool-result summary::-webkit-details-marker {
|
||||
display: none;
|
||||
}
|
||||
.tool-result summary::after {
|
||||
content: "▾";
|
||||
font-size: 14px;
|
||||
}
|
||||
.tool-result[open] summary::after {
|
||||
content: "▴";
|
||||
}
|
||||
.tool-result[open] summary {
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
.pending-message {
|
||||
border-style: dashed;
|
||||
}
|
||||
@@ -529,6 +573,34 @@ select:focus-visible {
|
||||
align-items: center;
|
||||
font-size: 10px;
|
||||
}
|
||||
.pi-controls select {
|
||||
min-width: 0;
|
||||
appearance: none;
|
||||
color-scheme: dark;
|
||||
padding: 5px 25px 5px 6px;
|
||||
border: 1px solid #70522f;
|
||||
border-radius: 4px;
|
||||
background: #2c2a27
|
||||
url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='m1 1 5 5 5-5' fill='none' stroke='%23f0a347' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'/%3E%3C/svg%3E")
|
||||
no-repeat right 7px center;
|
||||
color: #f2ece4;
|
||||
}
|
||||
.pi-controls select:hover {
|
||||
border-color: #d88735;
|
||||
background-color: #383129;
|
||||
}
|
||||
.pi-controls select:focus {
|
||||
border-color: #f0a347;
|
||||
box-shadow: 0 0 0 2px rgba(240, 163, 71, 0.22);
|
||||
}
|
||||
.pi-controls select option {
|
||||
background: #2c2a27;
|
||||
color: #f2ece4;
|
||||
}
|
||||
.pi-controls select option:checked {
|
||||
background: #4b3420;
|
||||
color: #fff2df;
|
||||
}
|
||||
.composer-progress {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@@ -582,12 +654,94 @@ select:focus-visible {
|
||||
display: flex;
|
||||
gap: 7px;
|
||||
}
|
||||
.default-worktree-control {
|
||||
display: grid;
|
||||
gap: 4px;
|
||||
margin: 8px 0;
|
||||
color: #ddd8d0;
|
||||
font-size: 11px;
|
||||
font-weight: 700;
|
||||
}
|
||||
.default-worktree-control select {
|
||||
min-width: 0;
|
||||
appearance: none;
|
||||
color-scheme: dark;
|
||||
padding: 5px 28px 5px 7px;
|
||||
border: 1px solid #70522f;
|
||||
border-radius: 4px;
|
||||
background: #2c2a27
|
||||
url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='m1 1 5 5 5-5' fill='none' stroke='%23f0a347' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'/%3E%3C/svg%3E")
|
||||
no-repeat right 8px center;
|
||||
color: #f2ece4;
|
||||
}
|
||||
.default-worktree-control select:hover {
|
||||
border-color: #d88735;
|
||||
background-color: #383129;
|
||||
}
|
||||
.default-worktree-control select:focus {
|
||||
border-color: #f0a347;
|
||||
box-shadow: 0 0 0 2px rgba(240, 163, 71, 0.22);
|
||||
}
|
||||
.default-worktree-control option {
|
||||
background: #2c2a27;
|
||||
color: #f2ece4;
|
||||
}
|
||||
.default-worktree-control option:checked {
|
||||
background: #4b3420;
|
||||
color: #fff2df;
|
||||
}
|
||||
.default-worktree-control small {
|
||||
color: #b9afa4;
|
||||
font-weight: 400;
|
||||
}
|
||||
.extension-widget {
|
||||
padding: 5px 8px;
|
||||
border-left: 3px solid #f0a347;
|
||||
background: #302a24;
|
||||
font-size: 12px;
|
||||
}
|
||||
.startup-blocker {
|
||||
position: absolute;
|
||||
z-index: 20;
|
||||
inset: 0;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
padding: 20px;
|
||||
background: rgba(20, 18, 16, 0.82);
|
||||
backdrop-filter: blur(3px);
|
||||
outline: 0;
|
||||
}
|
||||
.startup-blocker-card {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
width: min(380px, 90vw);
|
||||
padding: 16px;
|
||||
border: 1px solid #f0a347;
|
||||
border-radius: 8px;
|
||||
background: #33271d;
|
||||
box-shadow: 0 12px 36px rgba(0, 0, 0, 0.45);
|
||||
color: #ffd9aa;
|
||||
}
|
||||
.startup-blocker-card > div {
|
||||
display: grid;
|
||||
gap: 3px;
|
||||
}
|
||||
.startup-blocker-card strong {
|
||||
color: #fff2df;
|
||||
font-size: 14px;
|
||||
}
|
||||
.startup-blocker-card p {
|
||||
margin: 0;
|
||||
font-weight: 700;
|
||||
}
|
||||
.startup-blocker-card small {
|
||||
color: #d8b892;
|
||||
}
|
||||
.startup-bars {
|
||||
flex: 0 0 auto;
|
||||
transform: scale(1.35);
|
||||
}
|
||||
.modal-backdrop,
|
||||
.extension-backdrop {
|
||||
position: absolute;
|
||||
@@ -611,6 +765,9 @@ select:focus-visible {
|
||||
border-radius: 10px;
|
||||
background: #2d2e31;
|
||||
}
|
||||
.session-picker {
|
||||
overflow: hidden;
|
||||
}
|
||||
.picker-heading {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
@@ -619,20 +776,105 @@ select:focus-visible {
|
||||
.extension h2 {
|
||||
margin: 0;
|
||||
}
|
||||
.session-search input {
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
padding: 8px 10px;
|
||||
border: 1px solid #5f6570;
|
||||
border-radius: 6px;
|
||||
background: #202125;
|
||||
color: #f1f3f4;
|
||||
}
|
||||
.session-result-count {
|
||||
margin: 0;
|
||||
color: #8d97a6;
|
||||
font-size: 0.85rem;
|
||||
}
|
||||
.session-list {
|
||||
display: grid;
|
||||
gap: 5px;
|
||||
gap: 6px;
|
||||
max-height: min(44vh, 430px);
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
overflow-y: auto;
|
||||
list-style: none;
|
||||
}
|
||||
.session-list button {
|
||||
.session-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
width: 100%;
|
||||
gap: 12px;
|
||||
padding: 10px;
|
||||
border: 1px solid #474b54;
|
||||
border-radius: 7px;
|
||||
background: #25262a;
|
||||
text-align: left;
|
||||
}
|
||||
.session-list small {
|
||||
.session-row:hover {
|
||||
border-color: #b76f26;
|
||||
background: #303136;
|
||||
}
|
||||
.session-row-content {
|
||||
display: grid;
|
||||
min-width: 0;
|
||||
gap: 3px;
|
||||
}
|
||||
.session-preview,
|
||||
.session-metadata {
|
||||
overflow: hidden;
|
||||
color: #a7afbc;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.session-metadata {
|
||||
display: flex;
|
||||
gap: 8px;
|
||||
color: #8d97a6;
|
||||
}
|
||||
.session-open {
|
||||
flex: 0 0 auto;
|
||||
padding: 2px 6px;
|
||||
border-radius: 999px;
|
||||
background: #234a33;
|
||||
color: #a5e3bc;
|
||||
font-size: 0.75rem;
|
||||
font-weight: 700;
|
||||
}
|
||||
.extension-eyebrow,
|
||||
.extension-request-label,
|
||||
.extension-request-action,
|
||||
.extension-request-details {
|
||||
margin: 0;
|
||||
}
|
||||
.extension-eyebrow,
|
||||
.extension-request-label {
|
||||
color: #b9afa4;
|
||||
font-size: 0.75rem;
|
||||
font-weight: 800;
|
||||
letter-spacing: 0.08em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
.extension-request {
|
||||
display: grid;
|
||||
gap: 6px;
|
||||
padding: 12px;
|
||||
border-left: 3px solid #f0a347;
|
||||
border-radius: 4px;
|
||||
background: #25262a;
|
||||
}
|
||||
.extension-request-action {
|
||||
color: #fff3df;
|
||||
font-size: 1.05rem;
|
||||
font-weight: 750;
|
||||
}
|
||||
.extension-request-details {
|
||||
white-space: pre-wrap;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
.extension-options {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 7px;
|
||||
}
|
||||
.extension textarea {
|
||||
|
||||
Reference in New Issue
Block a user