chore: add pi cache dirs to .gitignore and mobile terminal styles
This commit is contained in:
@@ -49,3 +49,10 @@ apps/web/dist/
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
Thumbs.db
|
Thumbs.db
|
||||||
/.stoneforge/.worktrees/
|
/.stoneforge/.worktrees/
|
||||||
|
|
||||||
|
# Pi / agent cache
|
||||||
|
.pi/
|
||||||
|
.atl/
|
||||||
|
.sisyphus/
|
||||||
|
.pi-lens/
|
||||||
|
|
||||||
|
|||||||
@@ -190,10 +190,16 @@ export const TerminalPage: React.FC = () => {
|
|||||||
|
|
||||||
if (isMobile) {
|
if (isMobile) {
|
||||||
return (
|
return (
|
||||||
<section className={`terminal-page mobile ${isFullscreen ? "fullscreen" : ""}`}>
|
<section
|
||||||
|
className={`terminal-page mobile ${isFullscreen ? "fullscreen" : ""}`}
|
||||||
|
>
|
||||||
{!isFullscreen && (
|
{!isFullscreen && (
|
||||||
<div className="terminal-page-header mobile-header">
|
<div className="terminal-page-header mobile-header">
|
||||||
<button className="secondary-button" onClick={() => navigate(-1)} type="button">
|
<button
|
||||||
|
className="secondary-button"
|
||||||
|
onClick={() => navigate(-1)}
|
||||||
|
type="button"
|
||||||
|
>
|
||||||
Back
|
Back
|
||||||
</button>
|
</button>
|
||||||
<h1>Terminal</h1>
|
<h1>Terminal</h1>
|
||||||
@@ -245,9 +251,7 @@ export const TerminalPage: React.FC = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<section
|
<section className={`terminal-page ${isFullscreen ? "fullscreen" : ""}`}>
|
||||||
className={`terminal-page ${isFullscreen ? "fullscreen" : ""}`}
|
|
||||||
>
|
|
||||||
{!isFullscreen && (
|
{!isFullscreen && (
|
||||||
<div className="terminal-page-header">
|
<div className="terminal-page-header">
|
||||||
<button
|
<button
|
||||||
@@ -278,16 +282,13 @@ export const TerminalPage: React.FC = () => {
|
|||||||
isMobile={false}
|
isMobile={false}
|
||||||
/>
|
/>
|
||||||
<div className="terminal-page-content">
|
<div className="terminal-page-content">
|
||||||
{error && (
|
{error && <div className="terminal-error-banner">{error}</div>}
|
||||||
<div className="terminal-error-banner">{error}</div>
|
|
||||||
)}
|
|
||||||
{sessions.map((session) => (
|
{sessions.map((session) => (
|
||||||
<div
|
<div
|
||||||
key={session.id}
|
key={session.id}
|
||||||
className={`terminal-instance ${session.id === activeSessionId ? "active" : ""}`}
|
className={`terminal-instance ${session.id === activeSessionId ? "active" : ""}`}
|
||||||
style={{
|
style={{
|
||||||
display:
|
display: session.id === activeSessionId ? "flex" : "none",
|
||||||
session.id === activeSessionId ? "flex" : "none",
|
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<TerminalComponent
|
<TerminalComponent
|
||||||
|
|||||||
+77
-50
@@ -1239,10 +1239,18 @@ a {
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-item.modified .file-status { color: #f59e0b; }
|
.file-item.modified .file-status {
|
||||||
.file-item.added .file-status { color: #10b981; }
|
color: #f59e0b;
|
||||||
.file-item.deleted .file-status { color: #ef4444; }
|
}
|
||||||
.file-item.untracked .file-status { color: #6b7280; }
|
.file-item.added .file-status {
|
||||||
|
color: #10b981;
|
||||||
|
}
|
||||||
|
.file-item.deleted .file-status {
|
||||||
|
color: #ef4444;
|
||||||
|
}
|
||||||
|
.file-item.untracked .file-status {
|
||||||
|
color: #6b7280;
|
||||||
|
}
|
||||||
|
|
||||||
.commit-form {
|
.commit-form {
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -1733,7 +1741,7 @@ a {
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
font-family: 'Fira Code', 'Monaco', 'Courier New', monospace;
|
font-family: "Fira Code", "Monaco", "Courier New", monospace;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
}
|
}
|
||||||
@@ -1774,7 +1782,7 @@ a {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.editor-textarea {
|
.editor-textarea {
|
||||||
font-family: 'Fira Code', 'Monaco', 'Courier New', monospace;
|
font-family: "Fira Code", "Monaco", "Courier New", monospace;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
min-height: 100%;
|
min-height: 100%;
|
||||||
@@ -1890,7 +1898,7 @@ a {
|
|||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
max-height: 300px;
|
max-height: 300px;
|
||||||
font-family: 'Fira Code', 'Monaco', 'Courier New', monospace;
|
font-family: "Fira Code", "Monaco", "Courier New", monospace;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1954,7 +1962,7 @@ code[class*="language-"],
|
|||||||
pre[class*="language-"] {
|
pre[class*="language-"] {
|
||||||
color: var(--ink);
|
color: var(--ink);
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
font-family: 'Fira Code', 'Monaco', 'Courier New', monospace;
|
font-family: "Fira Code", "Monaco", "Courier New", monospace;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
white-space: pre;
|
white-space: pre;
|
||||||
@@ -2711,7 +2719,10 @@ a.nav-item,
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
font-size: 0.8125rem;
|
font-size: 0.8125rem;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
transition: background 0.15s, color 0.15s, border-color 0.15s;
|
transition:
|
||||||
|
background 0.15s,
|
||||||
|
color 0.15s,
|
||||||
|
border-color 0.15s;
|
||||||
user-select: none;
|
user-select: none;
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
}
|
}
|
||||||
@@ -2781,7 +2792,9 @@ a.nav-item,
|
|||||||
line-height: 1;
|
line-height: 1;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
transition: opacity 0.15s, background 0.15s;
|
transition:
|
||||||
|
opacity 0.15s,
|
||||||
|
background 0.15s;
|
||||||
}
|
}
|
||||||
|
|
||||||
.terminal-session-tab:hover .terminal-session-tab-close {
|
.terminal-session-tab:hover .terminal-session-tab-close {
|
||||||
@@ -3379,7 +3392,12 @@ a.nav-item,
|
|||||||
padding: var(--space-2) var(--space-3);
|
padding: var(--space-2) var(--space-3);
|
||||||
background: #2d2d2d;
|
background: #2d2d2d;
|
||||||
border-bottom: 1px solid #3e3e3e;
|
border-bottom: 1px solid #3e3e3e;
|
||||||
transition: transform 0.3s ease, opacity 0.3s ease, height 0.3s ease, padding 0.3s ease, margin 0.3s ease;
|
transition:
|
||||||
|
transform 0.3s ease,
|
||||||
|
opacity 0.3s ease,
|
||||||
|
height 0.3s ease,
|
||||||
|
padding 0.3s ease,
|
||||||
|
margin 0.3s ease;
|
||||||
z-index: 100;
|
z-index: 100;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
@@ -3519,7 +3537,9 @@ a.nav-item,
|
|||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
-webkit-overflow-scrolling: touch;
|
-webkit-overflow-scrolling: touch;
|
||||||
scrollbar-width: none;
|
scrollbar-width: none;
|
||||||
transition: transform 0.3s ease, opacity 0.3s ease;
|
transition:
|
||||||
|
transform 0.3s ease,
|
||||||
|
opacity 0.3s ease;
|
||||||
z-index: 100;
|
z-index: 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3554,7 +3574,9 @@ a.nav-item,
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
transition: background 0.15s ease, transform 0.1s ease;
|
transition:
|
||||||
|
background 0.15s ease,
|
||||||
|
transform 0.1s ease;
|
||||||
user-select: none;
|
user-select: none;
|
||||||
-webkit-user-select: none;
|
-webkit-user-select: none;
|
||||||
touch-action: manipulation;
|
touch-action: manipulation;
|
||||||
@@ -3762,7 +3784,8 @@ a.nav-item,
|
|||||||
}
|
}
|
||||||
|
|
||||||
@keyframes pulse {
|
@keyframes pulse {
|
||||||
0%, 100% {
|
0%,
|
||||||
|
100% {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
50% {
|
50% {
|
||||||
@@ -4007,32 +4030,31 @@ a.nav-item,
|
|||||||
padding-bottom: calc(1.25rem + 64px);
|
padding-bottom: calc(1.25rem + 64px);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Ensure minimum touch targets on mobile */
|
||||||
/* Ensure minimum touch targets on mobile */
|
button,
|
||||||
button,
|
a,
|
||||||
a,
|
input,
|
||||||
input,
|
select,
|
||||||
select,
|
textarea,
|
||||||
textarea,
|
[role="button"] {
|
||||||
[role="button"] {
|
|
||||||
min-height: 44px;
|
min-height: 44px;
|
||||||
min-width: 44px;
|
min-width: 44px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Active states for touch feedback */
|
/* Active states for touch feedback */
|
||||||
button:active,
|
button:active,
|
||||||
a:active,
|
a:active,
|
||||||
[role="button"]:active {
|
[role="button"]:active {
|
||||||
opacity: 0.8;
|
opacity: 0.8;
|
||||||
transform: scale(0.98);
|
transform: scale(0.98);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Remove transform on buttons that shouldn't scale */
|
/* Remove transform on buttons that shouldn't scale */
|
||||||
.mobile-nav-item:active,
|
.mobile-nav-item:active,
|
||||||
.mobile-action-sheet-button:active,
|
.mobile-action-sheet-button:active,
|
||||||
.mobile-action-sheet-cancel:active {
|
.mobile-action-sheet-cancel:active {
|
||||||
transform: none;
|
transform: none;
|
||||||
}
|
}
|
||||||
@media (max-width: 767px) {
|
@media (max-width: 767px) {
|
||||||
.dialog-actions {
|
.dialog-actions {
|
||||||
flex-direction: column-reverse;
|
flex-direction: column-reverse;
|
||||||
@@ -4045,17 +4067,16 @@ a.nav-item,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.workspace-main {
|
||||||
.workspace-main {
|
|
||||||
padding: var(--space-2);
|
padding: var(--space-2);
|
||||||
}
|
}
|
||||||
|
|
||||||
.tree-entry {
|
.tree-entry {
|
||||||
padding: 0.5rem;
|
padding: 0.5rem;
|
||||||
min-height: 44px;
|
min-height: 44px;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
@media (max-width: 767px) {
|
@media (max-width: 767px) {
|
||||||
.modal-content {
|
.modal-content {
|
||||||
min-width: auto;
|
min-width: auto;
|
||||||
@@ -4110,29 +4131,28 @@ a.nav-item,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.session-card-actions.mobile {
|
||||||
.session-card-actions.mobile {
|
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: var(--space-2);
|
gap: var(--space-2);
|
||||||
padding-top: var(--space-3);
|
padding-top: var(--space-3);
|
||||||
border-top: 1px solid var(--color-border);
|
border-top: 1px solid var(--color-border);
|
||||||
}
|
}
|
||||||
|
|
||||||
.session-card-actions.mobile .mobile-primary {
|
.session-card-actions.mobile .mobile-primary {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
min-height: 44px;
|
min-height: 44px;
|
||||||
padding: var(--space-2) var(--space-3);
|
padding: var(--space-2) var(--space-3);
|
||||||
}
|
}
|
||||||
|
|
||||||
.session-card-actions.mobile .mobile-more {
|
.session-card-actions.mobile .mobile-more {
|
||||||
min-width: 44px;
|
min-width: 44px;
|
||||||
min-height: 44px;
|
min-height: 44px;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
padding: var(--space-2);
|
padding: var(--space-2);
|
||||||
}
|
}
|
||||||
@media (max-width: 767px) {
|
@media (max-width: 767px) {
|
||||||
.create-session-form .form-row {
|
.create-session-form .form-row {
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
@@ -4245,13 +4265,21 @@ a.nav-item,
|
|||||||
}
|
}
|
||||||
|
|
||||||
@keyframes fadeIn {
|
@keyframes fadeIn {
|
||||||
from { opacity: 0; }
|
from {
|
||||||
to { opacity: 1; }
|
opacity: 0;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes slideUp {
|
@keyframes slideUp {
|
||||||
from { transform: translateY(100%); }
|
from {
|
||||||
to { transform: translateY(0); }
|
transform: translateY(100%);
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
transform: translateY(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Git Mount Editor Styles */
|
/* Git Mount Editor Styles */
|
||||||
@@ -4403,4 +4431,3 @@ a.nav-item,
|
|||||||
gap: 0.5rem;
|
gap: 0.5rem;
|
||||||
margin-top: 0.25rem;
|
margin-top: 0.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user