fix: minor updated color palette for some components; updated default region/track names for stem separation.

This commit is contained in:
Xiaohan-Tian
2026-04-20 15:33:02 -07:00
parent 1e4fdfc8c5
commit a71de0c789
7 changed files with 47 additions and 38 deletions
+1 -1
View File
@@ -149,7 +149,7 @@
} }
.chatbox-input:focus { .chatbox-input:focus {
border-color: #6a6a6a; border-color: #5a9fd4;
background-color: #4a4a4a; background-color: #4a4a4a;
} }
+14 -9
View File
@@ -59,7 +59,7 @@
.kgone-tab.active { .kgone-tab.active {
color: #e0e0e0; color: #e0e0e0;
border-bottom-color: #7a9cff; border-bottom-color: #5a9fd4;
} }
/* Scrollable body */ /* Scrollable body */
@@ -102,7 +102,7 @@
.kgone-input:focus, .kgone-input:focus,
.kgone-textarea:focus, .kgone-textarea:focus,
.kgone-select:focus { .kgone-select:focus {
border-color: #5a6aaa; border-color: #5a9fd4;
} }
.kgone-textarea { .kgone-textarea {
@@ -277,7 +277,7 @@
} }
.kgone-player-play-btn:hover { .kgone-player-play-btn:hover {
color: #7a9cff; color: #5a9fd4;
} }
.kgone-player-progress-track { .kgone-player-progress-track {
@@ -296,7 +296,7 @@
.kgone-player-progress-fill { .kgone-player-progress-fill {
height: 100%; height: 100%;
background-color: #7a9cff; background-color: #5a9fd4;
border-radius: 2px; border-radius: 2px;
pointer-events: none; pointer-events: none;
transition: width 0.1s linear; transition: width 0.1s linear;
@@ -336,7 +336,7 @@
} }
.kgone-player-download-btn:hover { .kgone-player-download-btn:hover {
color: #7a9cff; color: #5a9fd4;
} }
/* ── Generation state feedback ─────────────────────────────────────────────── */ /* ── Generation state feedback ─────────────────────────────────────────────── */
@@ -364,8 +364,13 @@
} }
@keyframes kgone-spin { @keyframes kgone-spin {
from { transform: rotate(0deg); } from {
to { transform: rotate(360deg); } transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
} }
/* Stem players (Separator tab) */ /* Stem players (Separator tab) */
@@ -390,7 +395,7 @@
.kgone-checkbox-row input[type="checkbox"] { .kgone-checkbox-row input[type="checkbox"] {
width: 14px; width: 14px;
height: 14px; height: 14px;
accent-color: #7a9cff; accent-color: #5a9fd4;
cursor: pointer; cursor: pointer;
} }
@@ -399,4 +404,4 @@
font-size: 11px; font-size: 11px;
cursor: pointer; cursor: pointer;
user-select: none; user-select: none;
} }
+4 -1
View File
@@ -826,6 +826,7 @@ const SeparatorTab: React.FC = () => {
const taskIdRef = useRef<string>(''); const taskIdRef = useRef<string>('');
const originalRegionRef = useRef<{ const originalRegionRef = useRef<{
regionName: string; regionName: string;
trackName: string;
startFromBeat: number; startFromBeat: number;
trackIndex: number; trackIndex: number;
} | null>(null); } | null>(null);
@@ -866,6 +867,7 @@ const SeparatorTab: React.FC = () => {
// Capture snapshot before anything changes — selection may shift during generation // Capture snapshot before anything changes — selection may shift during generation
originalRegionRef.current = { originalRegionRef.current = {
regionName: selectedAudioRegion.region.getName(), regionName: selectedAudioRegion.region.getName(),
trackName: selectedAudioRegion.trackName,
startFromBeat: selectedAudioRegion.region.getStartFromBeat(), startFromBeat: selectedAudioRegion.region.getStartFromBeat(),
trackIndex: selectedAudioRegion.trackIndex, trackIndex: selectedAudioRegion.trackIndex,
}; };
@@ -1043,7 +1045,8 @@ const SeparatorTab: React.FC = () => {
await KGAudioFileStorage.storeAudioFile(projectName, fileId, audioFile); await KGAudioFileStorage.storeAudioFile(projectName, fileId, audioFile);
return { return {
trackName: `${snap.regionName} (${stem.name})`, trackName: `${snap.trackName} - ${stem.name}`,
regionName: `${snap.regionName} - ${stem.name}`,
audioFileId: fileId, audioFileId: fileId,
audioFileName: fileName, audioFileName: fileName,
audioDurationSeconds: toneBuffer.duration, audioDurationSeconds: toneBuffer.duration,
@@ -203,17 +203,17 @@ const GeneralSettings: React.FC = () => {
<div className="settings-section-header"> <div className="settings-section-header">
<h3>General</h3> <h3>General</h3>
</div> </div>
<div className="settings-section-content"> <div className="settings-section-content">
<div className="settings-group"> <div className="settings-group">
<h4>LLM Provider</h4> <h4>LLM Provider</h4>
<div className="settings-item"> <div className="settings-item">
<label className="settings-label"> <label className="settings-label">
LLM Provider LLM Provider
</label> </label>
<select <select
className="settings-select" className="settings-select"
value={llmProvider} value={llmProvider}
onChange={(e) => handleLlmProviderChange(e.target.value)} onChange={(e) => handleLlmProviderChange(e.target.value)}
> >
@@ -245,13 +245,13 @@ const GeneralSettings: React.FC = () => {
<div className="settings-group"> <div className="settings-group">
<h4>OpenAI</h4> <h4>OpenAI</h4>
<div className="settings-item"> <div className="settings-item">
<label className="settings-label"> <label className="settings-label">
Key Key
</label> </label>
<input <input
type="password" type="password"
className="settings-input" className="settings-input"
placeholder="Enter your OpenAI API key" placeholder="Enter your OpenAI API key"
value={openaiKey} value={openaiKey}
@@ -265,7 +265,7 @@ const GeneralSettings: React.FC = () => {
: 'For security, keys are not persisted on non-local hosts and are kept in-memory for this session.'} : 'For security, keys are not persisted on non-local hosts and are kept in-memory for this session.'}
</div> </div>
</div> </div>
<div className="settings-item"> <div className="settings-item">
<label className="settings-label"> <label className="settings-label">
Model Model
@@ -365,13 +365,13 @@ const GeneralSettings: React.FC = () => {
<div className="settings-group"> <div className="settings-group">
<h4>Anthropic Claude (via OpenRouter)</h4> <h4>Anthropic Claude (via OpenRouter)</h4>
<div className="settings-item"> <div className="settings-item">
<label className="settings-label"> <label className="settings-label">
Key Key
</label> </label>
<input <input
type="password" type="password"
className="settings-input" className="settings-input"
placeholder="Enter your Claude API key" placeholder="Enter your Claude API key"
value={claudeOpenRouterKey} value={claudeOpenRouterKey}
@@ -390,8 +390,8 @@ const GeneralSettings: React.FC = () => {
<label className="settings-label"> <label className="settings-label">
Base URL Base URL
</label> </label>
<input <input
type="text" type="text"
className="settings-input" className="settings-input"
placeholder="e.g. https://openrouter.ai/api/v1" placeholder="e.g. https://openrouter.ai/api/v1"
value={claudeOpenRouterBaseUrl} value={claudeOpenRouterBaseUrl}
@@ -401,7 +401,7 @@ const GeneralSettings: React.FC = () => {
This is the base URL for the OpenRouter API. Please do not change this unless you know what you are doing. This is the base URL for the OpenRouter API. Please do not change this unless you know what you are doing.
</div> </div>
</div> </div>
<div className="settings-item"> <div className="settings-item">
<label className="settings-label"> <label className="settings-label">
Model Model
@@ -423,13 +423,13 @@ const GeneralSettings: React.FC = () => {
<div className="settings-group"> <div className="settings-group">
<h4>OpenAI Compatible Server</h4> <h4>OpenAI Compatible Server</h4>
<div className="settings-item"> <div className="settings-item">
<label className="settings-label"> <label className="settings-label">
Key Key
</label> </label>
<input <input
type="password" type="password"
className="settings-input" className="settings-input"
placeholder="Enter your API key" placeholder="Enter your API key"
value={compatibleKey} value={compatibleKey}
@@ -443,26 +443,26 @@ const GeneralSettings: React.FC = () => {
: 'For security, keys are not persisted on non-local hosts and are kept in-memory for this session.'} : 'For security, keys are not persisted on non-local hosts and are kept in-memory for this session.'}
</div> </div>
</div> </div>
<div className="settings-item"> <div className="settings-item">
<label className="settings-label"> <label className="settings-label">
Base URL Base URL
</label> </label>
<input <input
type="text" type="text"
className="settings-input" className="settings-input"
placeholder="e.g. https://openrouter.ai/api/v1" placeholder="e.g. https://openrouter.ai/api/v1"
value={compatibleBaseUrl} value={compatibleBaseUrl}
onChange={(e) => handleCompatibleBaseUrlChange(e.target.value)} onChange={(e) => handleCompatibleBaseUrlChange(e.target.value)}
/> />
</div> </div>
<div className="settings-item"> <div className="settings-item">
<label className="settings-label"> <label className="settings-label">
Model Model
</label> </label>
<input <input
type="text" type="text"
className="settings-input" className="settings-input"
placeholder="e.g. qwen3:30b" placeholder="e.g. qwen3:30b"
value={compatibleModel} value={compatibleModel}
@@ -500,7 +500,7 @@ const GeneralSettings: React.FC = () => {
e.preventDefault(); e.preventDefault();
handleSoundfontBaseUrlChange('https://cdn.jsdelivr.net/npm/soundfont-for-samplers/FluidR3_GM/'); handleSoundfontBaseUrlChange('https://cdn.jsdelivr.net/npm/soundfont-for-samplers/FluidR3_GM/');
}} }}
style={{ color: '#646cff', textDecoration: 'underline', cursor: 'pointer' }} style={{ color: '#5a9fd4', textDecoration: 'underline', cursor: 'pointer' }}
> >
Restore default Restore default
</a> </a>
+1 -1
View File
@@ -548,7 +548,7 @@ const RegionItem: React.FC<RegionItemProps> = ({
data-is-dragging={isDragging} data-is-dragging={isDragging}
> >
<div className="region-header"> <div className="region-header">
{audioRegion ? audioRegion.getAudioFileName() : name} {name}
</div> </div>
<div className={`region-content${audioRegion ? ' audio-region-content' : ''}`} ref={regionContentRef}> <div className={`region-content${audioRegion ? ' audio-region-content' : ''}`} ref={regionContentRef}>
{!audioRegion && ( {!audioRegion && (
@@ -12,6 +12,7 @@ import { KGAudioInterface } from '../../audio-interface/KGAudioInterface';
*/ */
export interface StemImportEntry { export interface StemImportEntry {
trackName: string; trackName: string;
regionName: string;
audioFileId: string; audioFileId: string;
audioFileName: string; audioFileName: string;
audioDurationSeconds: number; audioDurationSeconds: number;
@@ -128,7 +129,7 @@ export class ImportStemsCommand extends KGCommand {
regionId, regionId,
trackId.toString(), trackId.toString(),
track.getTrackIndex(), track.getTrackIndex(),
stem.audioFileName, stem.regionName,
this.insertBeat, this.insertBeat,
durationInBeats, durationInBeats,
stem.audioFileId, stem.audioFileId,
+1 -1
View File
@@ -27,7 +27,7 @@
align-items: center; align-items: center;
justify-content: center; justify-content: center;
z-index: 1005; z-index: 1005;
margin-left: -50px; margin-left: -120px;
} }
/* Tool buttons (used by Toolbar and PianoRollToolbar) */ /* Tool buttons (used by Toolbar and PianoRollToolbar) */