Skip to content

Commit ba59247

Browse files
feat(launcher): redesign profile editor UX and add advanced configuration (#94)
* refactor: rename BotBrowserConsole to BotBrowserLauncher * feat: add kernel management, proxy management, and setup scripts * fix: enable macOS native Edit menu for Cmd+C/V/X/A keyboard shortcuts * chore: upgrade Neutralino runtime to 6.4.0 * chore: remove Neutralino binaries from repo, download via neu update * fix: improve macOS clipboard support with JS fallback for Cmd+V paste * fix: expand macOS clipboard fallback to Cmd+C/X, auto-download Neutralino via postinstall * chore: upgrade Neutralino to 6.5.0 and simplify setup scripts * fix: fix PowerShell setup script ZIP download corruption * feat: enhance proxy workflow with IP check, quick change, and reusable input component * fix: correct checkbox color override and setup script stdin handling * feat: improve profile deletion with auto-stop, group WebRTC settings, prioritize custom exec path * feat: add port protection toggle, fix kernel auto-update cleanup and UI refresh * fix: detect kernel assets by file extension to support renamed Windows/Linux packages * fix: handle non-browser process exits, add crash detection, validate kernel executable paths * docs: add --bot-time-seed documentation, changelog 2026-03-03, value range and per-context cross-links * feat: add proxy save/check, improve table layout and kernel date display - Add "Save to proxy list" button in proxy input for reusing manually entered proxies - Add batch proxy connectivity check with IP/status display in proxy management - Sort proxy list by creation time (newest first) - Fix kernel date display: parse from asset filename, fix timezone offset bug - Simplify profile status column to icon-only (play/stop) with tooltips - Remove year from "Last Launch" date to prevent truncation - Widen window to 1080px, use fixed table layout to prevent horizontal scrollbar - Add column width constraints for profile and proxy tables * feat: redesign profile editor with left nav, advanced config modes, and new fields - Add left-side anchor navigation with scrollspy (IntersectionObserver) - Split Fingerprint into separate Noise and Rendering sections - Replace expansion panel with flat Advanced section layout - Add mode toggles for Executable (kernel/custom), Cookies and Bookmarks (file/input) - Add FPS dropdown (profile/real/custom number) instead of free-text input - Add Save IP button in proxy section for explicit IP saving - Add new fields: Time Seed, Proxy Bypass Regex, Cookies, Bookmarks, Custom Headers - Put username/password on same row in proxy input - Widen status column to prevent icon clipping --------- Co-authored-by: MSTU0 <106871516+mstudent00@users.noreply.github.com>
1 parent b5ba27d commit ba59247

19 files changed

Lines changed: 1120 additions & 502 deletions

launcher/neutralino.config.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"modes": {
2121
"window": {
2222
"title": "BotBrowser Launcher",
23-
"width": 1000,
23+
"width": 1080,
2424
"height": 800,
2525
"minWidth": 400,
2626
"minHeight": 200,

launcher/src/app/app.component.html

Lines changed: 26 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -225,36 +225,33 @@
225225
</ng-container>
226226

227227
<ng-container matColumnDef="status">
228-
<th mat-header-cell *matHeaderCellDef mat-sort-header>Status</th>
228+
<th mat-header-cell *matHeaderCellDef></th>
229229
<td mat-cell *matCellDef="let element">
230-
<div class="flex-container">
231-
<span class="content">{{
232-
browserLauncherService.getRunningStatusText(element)
233-
}}</span>
234-
@if (
235-
browserLauncherService.getRunningStatus(element) ==
236-
BrowserProfileStatus.Idle
237-
) {
238-
<button
239-
mat-icon-button
240-
app-stop-propagation
241-
(click)="runBrowserProfile(element)"
242-
>
243-
<mat-icon>play_arrow</mat-icon>
244-
</button>
245-
} @else if (
246-
browserLauncherService.getRunningStatus(element) ==
247-
BrowserProfileStatus.Running
248-
) {
249-
<button
250-
mat-icon-button
251-
app-stop-propagation
252-
(click)="stopBrowserProfile(element)"
253-
>
254-
<mat-icon>cancel</mat-icon>
255-
</button>
256-
}
257-
</div>
230+
@if (
231+
browserLauncherService.getRunningStatus(element) ==
232+
BrowserProfileStatus.Idle
233+
) {
234+
<button
235+
mat-icon-button
236+
app-stop-propagation
237+
(click)="runBrowserProfile(element)"
238+
matTooltip="Run"
239+
>
240+
<mat-icon>play_arrow</mat-icon>
241+
</button>
242+
} @else if (
243+
browserLauncherService.getRunningStatus(element) ==
244+
BrowserProfileStatus.Running
245+
) {
246+
<button
247+
mat-icon-button
248+
app-stop-propagation
249+
(click)="stopBrowserProfile(element)"
250+
matTooltip="Stop"
251+
>
252+
<mat-icon class="status-running">cancel</mat-icon>
253+
</button>
254+
}
258255
</td>
259256
</ng-container>
260257

launcher/src/app/app.component.scss

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,26 @@ mat-toolbar {
149149
@include shared.empty-state;
150150
}
151151

152+
.mat-column-select {
153+
width: 48px;
154+
max-width: 48px;
155+
}
156+
157+
.mat-column-status {
158+
width: 72px;
159+
max-width: 72px;
160+
overflow: visible !important;
161+
}
162+
163+
.mat-column-lastUsedAt {
164+
width: 130px;
165+
max-width: 130px;
166+
}
167+
168+
.status-running {
169+
color: #f44336;
170+
}
171+
152172
.profile-name-link {
153173
color: #1976d2;
154174
text-decoration: underline;

launcher/src/app/data/browser-profile.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,8 @@ export interface NoiseConfig {
119119
botConfigNoiseTextRects?: boolean;
120120
botNoiseSeed?: number;
121121
botTimeScale?: number;
122+
botFps?: string;
123+
botTimeSeed?: number;
122124
}
123125

124126
// Rendering & Media config
@@ -137,6 +139,14 @@ export interface ProxyConfig {
137139
proxyServer?: string;
138140
proxyIp?: string;
139141
botIpService?: string;
142+
proxyBypassRgx?: string;
143+
}
144+
145+
// Advanced config
146+
export interface AdvancedConfig {
147+
botCookies?: string;
148+
botBookmarks?: string;
149+
botCustomHeaders?: string;
140150
}
141151

142152
// Launch options (all CLI flags combined)
@@ -148,6 +158,7 @@ export interface LaunchOptions {
148158
noise?: NoiseConfig;
149159
renderingMedia?: RenderingMediaConfig;
150160
proxy?: ProxyConfig;
161+
advanced?: AdvancedConfig;
151162
}
152163

153164
export interface BrowserProfile {

launcher/src/app/data/proxy.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,5 @@ export interface Proxy {
1010
port: number;
1111
username?: string;
1212
password?: string;
13+
createdAt?: number;
1314
}

0 commit comments

Comments
 (0)