Remove library auto-start and shoot button
Template tests / tests (push) Successful in 1m40s

This commit is contained in:
2026-06-13 14:40:57 -05:00
parent f0611a50b5
commit c7038a151a
4 changed files with 5 additions and 19 deletions
+1 -1
View File
@@ -51,7 +51,7 @@ The core workflow:
active window, and region capture (the app hides itself during the shot), active window, and region capture (the app hides itself during the shot),
plus continuous capture sessions that grab a step on every click where the plus continuous capture sessions that grab a step on every click where the
OS allows it, or on a 3/5/10 s auto-interval everywhere else (the REC bar OS allows it, or on a 3/5/10 s auto-interval everywhere else (the REC bar
shows the live count with Shoot/Auto/Pause/Finish controls). Delay, global shows the live count with Auto/Pause/Finish controls). Delay, global
hotkeys, click markers, clipboard paste, and PNG/JPEG/GIF import included. hotkeys, click markers, clipboard paste, and PNG/JPEG/GIF import included.
The full keyboard shortcut list lives under **More ▾ → Keyboard The full keyboard shortcut list lives under **More ▾ → Keyboard
shortcuts** in the editor. shortcuts** in the editor.
-1
View File
@@ -494,7 +494,6 @@ function setupIpc() {
else if (action === 'resume') capture.togglePause(false); else if (action === 'resume') capture.togglePause(false);
else if (action === 'finish') capture.finishSession(); else if (action === 'finish') capture.finishSession();
else if (action === 'interval') capture.setInterval(intervalSec); else if (action === 'interval') capture.setInterval(intervalSec);
else if (action === 'shoot') await capture.sessionCapture('manual');
const state = capture.state(); const state = capture.state();
sendToRenderer('capture:state', state); sendToRenderer('capture:state', state);
return state; return state;
+1 -14
View File
@@ -269,12 +269,6 @@ class StepForgeApp {
: s.intervalSec > 0 ? `every ${s.intervalSec}s` : s.intervalSec > 0 ? `every ${s.intervalSec}s`
: 'hotkey only'; : 'hotkey only';
const shootBtn = el('button', {
type: 'button',
title: 'Capture a step now (the app hides itself for the shot)',
onClick: () => send({ action: 'shoot' }),
}, 'Shoot');
// Cycle interval auto-capture: off -> 3s -> 5s -> 10s -> off. // Cycle interval auto-capture: off -> 3s -> 5s -> 10s -> off.
const nextInterval = { 0: 3, 3: 5, 5: 10, 10: 0 }[s.intervalSec ?? 0] ?? 3; const nextInterval = { 0: 3, 3: 5, 5: 10, 10: 0 }[s.intervalSec ?? 0] ?? 3;
const autoBtn = el('button', { const autoBtn = el('button', {
@@ -302,7 +296,6 @@ class StepForgeApp {
this.captureStatus.append( this.captureStatus.append(
el('span', { title: `Capture session — ${trigger}` }, `REC ${s.count || 0} · ${trigger}`), el('span', { title: `Capture session — ${trigger}` }, `REC ${s.count || 0} · ${trigger}`),
shootBtn,
autoBtn, autoBtn,
pauseBtn, pauseBtn,
finishBtn, finishBtn,
@@ -768,8 +761,7 @@ class StepForgeApp {
await this.refreshLibrary(); await this.refreshLibrary();
} }
async createGuide({ armCapture = undefined } = {}) { async createGuide() {
const shouldArmCapture = armCapture ?? this.state.view === 'library';
const title = await dialogs.promptText({ const title = await dialogs.promptText({
title: 'New Guide', title: 'New Guide',
label: 'Title', label: 'Title',
@@ -780,11 +772,6 @@ class StepForgeApp {
const guide = await api.library.create({ title: title.trim() || 'Untitled guide' }); const guide = await api.library.create({ title: title.trim() || 'Untitled guide' });
await this.refreshLibrary(); await this.refreshLibrary();
await this.openGuide(guide.guideId); await this.openGuide(guide.guideId);
if (!shouldArmCapture) return;
await this.armCaptureSession(guide.guideId, {
actionLabel: 'Start recording',
headline: 'StepForge will hide after you start recording.',
});
} }
async createFolder() { async createFolder() {
+3 -3
View File
@@ -102,8 +102,8 @@ Initial release.
the platform supports it (xinput on X11, PowerShell on Windows), with the platform supports it (xinput on X11, PowerShell on Windows), with
interval auto-capture (3/5/10 s) as the always-works fallback when interval auto-capture (3/5/10 s) as the always-works fallback when
click detection or global hotkeys are unavailable (e.g. WSLg/Wayland). click detection or global hotkeys are unavailable (e.g. WSLg/Wayland).
The REC bar shows the live count and trigger, with Shoot / Auto / The REC bar shows the live count and trigger, with Auto / Pause /
Pause / Finish controls. Finish controls.
- Recording sessions tuck the window away once and control everything - Recording sessions tuck the window away once and control everything
from a red tray icon (capture now / pause / open / finish) instead of from a red tray icon (capture now / pause / open / finish) instead of
hiding the window for every shot — the app stays reachable hiding the window for every shot — the app stays reachable
@@ -161,7 +161,7 @@ Initial release.
session now starts paused and the window only tucks away once the user session now starts paused and the window only tucks away once the user
presses "Start recording" in the capture bar, so the app doesn't vanish presses "Start recording" in the capture bar, so the app doesn't vanish
out from under you. out from under you.
- The capture status bar (REC count / Shoot / Auto / Pause / Finish) is - The capture status bar (REC count / Auto / Pause / Finish) is
now shown only in the editor view; it no longer appears over the now shown only in the editor view; it no longer appears over the
library when a session is still running in the background. library when a session is still running in the background.
- Click-triggered captures now grab the cursor position at the instant of - Click-triggered captures now grab the cursor position at the instant of