feat: move projects to sidebar rail and speed up session switching (#506)

* feat: move projects from header tabs to left sidebar rail

* refactor: remove variant from git generation session context

* feat: implemented drandrop action for navrails

* refactor: improve sidebar drag-and-drop smoothness and remove floating overlay

* fix: prevent mobile nav rail touch from closing drawer and opening menu

* fix: hide header tabs on desktop

* fix: prevent session flicker when switching projects

* style: soften chat panel divider borders

* style: improve icon contrast across core navigation

* fix: stabilize session selection during project switching

* style: unify sidebar surfaces and transparent section layers

* style: remove UI shadows and keep only scroll shadow

* perf: speed up project switching with cached session loading

* perf: speed up Git changes view and background refresh

* perf: make session switching lighter and less aggressive

* perf: optimized sessions list loading while project switching

* perf: smooth chat rendering and reduce interaction spikes

* fix: restore reliable load older messages visibility
This commit is contained in:
Bohdan Triapitsyn
2026-02-25 14:32:23 +02:00
committed by GitHub
parent 4c69bccf56
commit 10851bd7ac
51 changed files with 1995 additions and 1399 deletions
+57
View File
@@ -1040,6 +1040,63 @@ textarea[data-terminal-hidden-input="true"]::placeholder {
animation: attention-diamond-pulse 2.3s ease-in-out infinite;
}
@keyframes navrail-dot-wave {
0%, 100% {
transform: scale(0.72);
opacity: 0.52;
}
50% {
transform: scale(1);
opacity: 1;
}
}
.animate-navrail-dot-wave {
animation: navrail-dot-wave 1.2s ease-in-out infinite;
}
@keyframes border-glow-pulse {
0%, 100% {
border-color: var(--interactive-border);
outline-color: transparent;
}
12.5% {
border-color: color-mix(in srgb, var(--primary) 22%, var(--interactive-border));
outline-color: color-mix(in srgb, var(--primary) 8%, transparent);
}
25% {
border-color: color-mix(in srgb, var(--primary) 40%, var(--interactive-border));
outline-color: color-mix(in srgb, var(--primary) 16%, transparent);
}
37.5% {
border-color: color-mix(in srgb, var(--primary) 62%, var(--interactive-border));
outline-color: color-mix(in srgb, var(--primary) 26%, transparent);
}
50% {
border-color: color-mix(in srgb, var(--primary) 78%, var(--interactive-border));
outline-color: color-mix(in srgb, var(--primary) 34%, transparent);
}
62.5% {
border-color: color-mix(in srgb, var(--primary) 62%, var(--interactive-border));
outline-color: color-mix(in srgb, var(--primary) 26%, transparent);
}
75% {
border-color: color-mix(in srgb, var(--primary) 40%, var(--interactive-border));
outline-color: color-mix(in srgb, var(--primary) 16%, transparent);
}
87.5% {
border-color: color-mix(in srgb, var(--primary) 22%, var(--interactive-border));
outline-color: color-mix(in srgb, var(--primary) 8%, transparent);
}
}
.animate-border-glow-pulse {
outline: 1px solid transparent;
outline-offset: 1px;
will-change: border-color, outline-color;
animation: border-glow-pulse 3.8s linear infinite;
}
@keyframes marquee-scroll {
0% { transform: translateX(0); }
100% { transform: translateX(-100%); }