diff --git a/Auto-Image.js b/Auto-Image.js
index 449bcad..cbbc75d 100644
--- a/Auto-Image.js
+++ b/Auto-Image.js
@@ -487,6 +487,18 @@
pixels: 'Pixels',
charges: 'Charges',
batchSize: 'Batch Size',
+ cooldownSettings: 'Cooldown Settings',
+ waitCharges: 'Wait for Charges',
+ settings: 'Settings',
+ showStats: 'Show Statistics',
+ compactMode: 'Compact Mode',
+ minimize: 'Minimize',
+ tokenCapturedSuccess: 'Token captured successfully',
+ turnstileInstructions: 'Complete the verification',
+ hideTurnstileBtn: 'Hide',
+ notificationsNotSupported: 'Notifications not supported',
+ chargesReadyMessage: 'Charges are ready',
+ chargesReadyNotification: 'WPlace AutoBot',
initMessage: "Click 'Upload Image' to begin",
},
};
@@ -3471,13 +3483,12 @@
@@ -3780,14 +3791,13 @@
@@ -4362,7 +4372,6 @@
const closeStatsBtn = statsContainer.querySelector('#closeStatsBtn');
const refreshChargesBtn = statsContainer.querySelector('#refreshChargesBtn');
const cooldownSlider = container.querySelector('#cooldownSlider');
- const cooldownSliderValue = container.querySelector('#cooldownSliderValue');
const cooldownInput = container.querySelector('#cooldownInput');
const cooldownDecrease = container.querySelector('#cooldownDecrease');
const cooldownIncrease = container.querySelector('#cooldownIncrease');
@@ -4737,21 +4746,20 @@
// Speed controls - both slider and input
const speedSlider = settingsContainer.querySelector('#speedSlider');
- const speedSliderValue = settingsContainer.querySelector('#speedSliderValue');
const speedInput = settingsContainer.querySelector('#speedInput');
const speedDecrease = settingsContainer.querySelector('#speedDecrease');
const speedIncrease = settingsContainer.querySelector('#speedIncrease');
const speedValue = settingsContainer.querySelector('#speedValue');
- if (speedSlider && speedSliderValue && speedInput && speedValue && speedDecrease && speedIncrease) {
+ if (speedSlider && speedInput && speedValue && speedDecrease && speedIncrease) {
const updateSpeed = (newValue) => {
const speed = Math.max(CONFIG.PAINTING_SPEED.MIN, Math.min(CONFIG.PAINTING_SPEED.MAX, parseInt(newValue)));
state.paintingSpeed = speed;
- // Update both controls without duplication
+ // Update both controls (value shows in input, label shows unit only)
speedSlider.value = speed;
speedInput.value = speed;
- speedSliderValue.textContent = `${speed}`;
+ speedValue.textContent = `pixels`;
saveBotSettings();
};
@@ -6709,15 +6717,15 @@
setTimeout(checkSavedProgress, 1000);
- if (cooldownSlider && cooldownSliderValue && cooldownInput && cooldownValue && cooldownDecrease && cooldownIncrease) {
+ if (cooldownSlider && cooldownInput && cooldownValue && cooldownDecrease && cooldownIncrease) {
const updateCooldown = (newValue) => {
const threshold = Math.max(1, Math.min(state.maxCharges || 999, parseInt(newValue)));
state.cooldownChargeThreshold = threshold;
- // Update both controls
+ // Update both controls (value shows in input, label shows unit only)
cooldownSlider.value = threshold;
cooldownInput.value = threshold;
- cooldownSliderValue.textContent = threshold;
+ cooldownValue.textContent = `${Utils.t('charges')}`;
saveBotSettings();
NotificationManager.resetEdgeTracking(); // prevent spurious notify after threshold change
@@ -7629,12 +7637,10 @@
const speedSlider = document.getElementById('speedSlider');
const speedInput = document.getElementById('speedInput');
- const speedSliderValue = document.getElementById('speedSliderValue');
+ const speedValue = document.getElementById('speedValue');
if (speedSlider) speedSlider.value = state.paintingSpeed;
if (speedInput) speedInput.value = state.paintingSpeed;
- if (speedSliderValue) speedSliderValue.textContent = `${state.paintingSpeed} (batch size)`;
- const speedValue = document.getElementById('speedValue');
- if (speedValue) speedValue.textContent = Utils.t('batchSize');
+ if (speedValue) speedValue.textContent = `pixels`;
const enableSpeedToggle = document.getElementById('enableSpeedToggle');
if (enableSpeedToggle) enableSpeedToggle.checked = CONFIG.PAINTING_SPEED_ENABLED;
@@ -7667,12 +7673,10 @@
const cooldownSlider = document.getElementById('cooldownSlider');
const cooldownInput = document.getElementById('cooldownInput');
- const cooldownSliderValue = document.getElementById('cooldownSliderValue');
+ const cooldownValue = document.getElementById('cooldownValue');
if (cooldownSlider) cooldownSlider.value = state.cooldownChargeThreshold;
if (cooldownInput) cooldownInput.value = state.cooldownChargeThreshold;
- if (cooldownSliderValue) cooldownSliderValue.textContent = state.cooldownChargeThreshold;
- const cooldownValue = document.getElementById('cooldownValue');
- if (cooldownValue) cooldownValue.textContent = Utils.t('charges');
+ if (cooldownValue) cooldownValue.textContent = `${Utils.t('charges')}`;
const overlayOpacitySlider = document.getElementById('overlayOpacitySlider');
if (overlayOpacitySlider) overlayOpacitySlider.value = state.overlayOpacity;
diff --git a/themes/classic-light.css b/themes/classic-light.css
index 301f931..b8079fc 100644
--- a/themes/classic-light.css
+++ b/themes/classic-light.css
@@ -566,6 +566,19 @@
font-size: 13px;
}
+/* Cooldown control styling for classic light theme */
+.wplace-theme-classic-light .wplace-cooldown-control {
+ margin: 12px 0;
+}
+
+.wplace-theme-classic-light .wplace-cooldown-control label {
+ color: var(--wplace-highlight);
+ font-weight: 500;
+ font-size: 13px;
+ margin-bottom: 8px;
+ display: block;
+}
+
/* Color swatches with light styling */
.wplace-theme-classic-light .wplace-color-swatch {
border: 1px solid rgb(0 0 0 / 20%) !important;
diff --git a/themes/classic.css b/themes/classic.css
index 4d9129f..857ce6e 100644
--- a/themes/classic.css
+++ b/themes/classic.css
@@ -700,6 +700,21 @@
font-size: 13px;
}
+/* Cooldown control styling for classic theme */
+:root .wplace-cooldown-control,
+.wplace-theme-classic .wplace-cooldown-control {
+ margin: 12px 0;
+}
+
+:root .wplace-cooldown-control label,
+.wplace-theme-classic .wplace-cooldown-control label {
+ color: var(--wplace-highlight);
+ font-weight: 500;
+ font-size: 13px;
+ margin-bottom: 8px;
+ display: block;
+}
+
/* Resize dialog styling for classic theme */
:root .resize-container,
.wplace-theme-classic .resize-container {
diff --git a/themes/neon.css b/themes/neon.css
index 0a1b9b9..91f3164 100644
--- a/themes/neon.css
+++ b/themes/neon.css
@@ -492,6 +492,22 @@
text-transform: uppercase;
}
+/* Cooldown control styling for neon theme */
+.wplace-theme-neon .wplace-cooldown-control {
+ margin: 8px 0;
+}
+
+.wplace-theme-neon .wplace-cooldown-control label {
+ color: var(--wplace-text) !important;
+ font-weight: 500;
+ font-size: 11px;
+ text-shadow: 0 0 8px var(--wplace-text) !important;
+ font-family: var(--wplace-font) !important;
+ text-transform: uppercase;
+ margin-bottom: 6px;
+ display: block;
+}
+
/* Resize dialog styling for neon theme */
.wplace-theme-neon .resize-container {
background: #1a1a2e !important;