mirror of
https://github.com/dgtlmoon/changedetection.io.git
synced 2026-09-26 07:16:13 +00:00
Multi-language / Translations Support (#3696) - Complete internationalization system implemented - Support for 7 languages: Czech (cs), German (de), French (fr), Italian (it), Korean (ko), Chinese Simplified (zh), Chinese Traditional (zh_TW) - Language selector with localized flags and theming - Flash message translations - Multiple translation fixes and improvements across all languages - Language setting preserved across redirects Pluggable Content Fetchers (#3653) - New architecture for extensible content fetcher system - Allows custom fetcher implementations Image / Screenshot Comparison Processor (#3680) - New processor for visual change detection (disabled for this release) - Supporting CSS/JS infrastructure added UI Improvements Design & Layout - Auto-generated tag color schemes - Simplified login form styling - Removed hard-coded CSS, moved to SCSS variables - Tag UI cleanup and improvements - Automatic tab wrapper functionality - Menu refactoring for better organization - Cleanup of offset settings - Hide sticky tabs on narrow viewports - Improved responsive layout (#3702) User Experience - Modal alerts/confirmations on delete/clear operations (#3693, #3598, #3382) - Auto-add https:// to URLs in quickwatch form if not present - Better redirect handling on login (#3699) - 'Recheck all' now returns to correct group/tag (#3673) - Language set redirect keeps hash fragment - More friendly human-readable text throughout UI Performance & Reliability Scheduler & Processing - Soft delays instead of blocking time.sleep() calls (#3710) - More resilient handling of same UUID being processed (#3700) - Better Puppeteer timeout handling - Improved Puppeteer shutdown/cleanup (#3692) - Requests cleanup now properly async History & Rendering - Faster server-side "difference" rendering on History page (#3442) - Show ignored/triggered rows in history - API: Retry watch data if watch dict changed (more reliable) API Improvements - Watch get endpoint: retry mechanism for changed watch data - WatchHistoryDiff API endpoint includes extra format args (#3703) Testing Improvements - Replace time.sleep with wait_for_notification_endpoint_output (#3716) - Test for mode switching (#3701) - Test for #3720 added (#3725) - Extract-text difference test fixes - Improved dev workflow Bug Fixes - Notification error text output (#3672, #3669, #3280) - HTML validation fixes (#3704) - Template discovery path fixes - Notification debug log now uses system locale for dates/times - Puppeteer spelling mistake in log output - Recalculation on anchor change - Queue bubble update disabled temporarily Dependency Updates - beautifulsoup4 updated (#3724) - psutil 7.1.0 → 7.2.1 (#3723) - python-engineio ~=4.12.3 → ~=4.13.0 (#3707) - python-socketio ~=5.14.3 → ~=5.16.0 (#3706) - flask-socketio ~=5.5.1 → ~=5.6.0 (#3691) - brotli ~=1.1 → ~=1.2 (#3687) - lxml updated (#3590) - pytest ~=7.2 → ~=9.0 (#3676) - jsonschema ~=4.0 → ~=4.25 (#3618) - pluggy ~=1.5 → ~=1.6 (#3616) - cryptography 44.0.1 → 46.0.3 (security) (#3589) Documentation - README updated with viewport size setup information Development Infrastructure - Dev container only built on dev branch - Improved dev workflow tooling
186 lines
6.1 KiB
SCSS
186 lines
6.1 KiB
SCSS
/**
|
|
* CSS custom properties (aka variables).
|
|
*/
|
|
|
|
:root {
|
|
--color-white: #fff;
|
|
--color-grey-50: #111;
|
|
--color-grey-100: #262626;
|
|
--color-grey-200: #333;
|
|
--color-grey-300: #444;
|
|
--color-grey-325: #555;
|
|
--color-grey-350: #565d64;
|
|
--color-grey-400: #666;
|
|
--color-grey-500: #777;
|
|
--color-grey-600: #999;
|
|
--color-grey-700: #cbcbcb;
|
|
--color-grey-750: #ddd;
|
|
--color-grey-800: #e0e0e0;
|
|
--color-grey-850: #eee;
|
|
--color-grey-900: #f2f2f2;
|
|
--color-black: #000;
|
|
--color-dark-red: #a00;
|
|
--color-light-red: #dd0000;
|
|
|
|
--color-background-page: var(--color-grey-100);
|
|
--color-background-gradient-first: #5ad8f7;
|
|
--color-background-gradient-second: #2f50af;
|
|
--color-background-gradient-third: #9150bf;
|
|
--color-background: var(--color-white);
|
|
--color-text: var(--color-grey-200);
|
|
--color-link: #1b98f8;
|
|
--color-menu-accent: #ed5900;
|
|
--color-background-code: var(--color-grey-850);
|
|
--color-error: var(--color-dark-red);
|
|
--color-error-input: #ffebeb;
|
|
--color-error-list: var(--color-light-red);
|
|
--color-table-background: var(--color-background);
|
|
--color-table-stripe: var(--color-grey-900);
|
|
--color-text-tab: var(--color-white);
|
|
--color-background-tab: rgba(255, 255, 255, 0.2);
|
|
--color-background-tab-hover: rgba(255, 255, 255, 0.5);
|
|
--color-text-tab-active: #222;
|
|
--color-api-key: #0078e7;
|
|
|
|
--color-background-button-primary: #0078e7;
|
|
--color-background-button-green: #42dd53;
|
|
--color-background-button-red: #dd4242;
|
|
--color-background-button-success: rgb(28, 184, 65);
|
|
--color-background-button-error: rgb(202, 60, 60);
|
|
--color-text-button-error: var(--color-white);
|
|
--color-background-button-warning: rgb(202, 60, 60);
|
|
--color-text-button-warning: var(--color-white);
|
|
--color-background-button-secondary: rgb(66, 184, 221);
|
|
--color-background-button-cancel: rgb(200, 200, 200);
|
|
--color-text-button: var(--color-white);
|
|
--color-background-button-tag: rgb(99, 99, 99);
|
|
--color-background-snapshot-age: #dfdfdf;
|
|
--color-error-text-snapshot-age: var(--color-white);
|
|
--color-error-background-snapshot-age: #ff0000;
|
|
--color-background-button-tag-active: #9c9c9c;
|
|
|
|
--color-text-messages: var(--color-white);
|
|
--color-background-messages-message: rgba(255, 255, 255, .2);
|
|
--color-background-messages-error: rgba(255, 1, 1, .5);
|
|
--color-background-messages-notice: rgba(255, 255, 255, .5);
|
|
--color-border-notification: #ccc;
|
|
|
|
--color-background-checkbox-operations: rgba(0, 0, 0, 0.05);
|
|
--color-warning: #ff3300;
|
|
--color-border-warning: var(--color-warning);
|
|
--color-text-legend: var(--color-white);
|
|
|
|
--color-link-new-version: #e07171;
|
|
--color-last-checked: #bbb;
|
|
--color-text-footer: #444;
|
|
--color-border-watch-table-cell: #eee;
|
|
|
|
--color-text-watch-tag-list: rgba(231, 0, 105, 0.4);
|
|
--color-background-new-watch-form: rgba(0, 0, 0, 0.05);
|
|
--color-background-new-watch-input: var(--color-white);
|
|
--color-background-new-watch-input-transparent: rgba(255, 255, 255, 0.1);
|
|
--color-text-new-watch-input: var(--color-text);
|
|
|
|
--color-border-input: var(--color-grey-500);
|
|
--color-shadow-input: var(--color-grey-400);
|
|
--color-background-input: var(--color-white);
|
|
--color-text-input: var(--color-text);
|
|
--color-text-input-description: var(--color-grey-500);
|
|
--color-text-input-placeholder: var(--color-grey-600);
|
|
|
|
--color-background-table-thead: var(--color-grey-800);
|
|
--color-border-table-cell: var(--color-grey-700);
|
|
|
|
--color-text-menu-heading: var(--color-grey-350);
|
|
--color-text-menu-link: var(--color-grey-500);
|
|
--color-background-menu-link-hover: var(--color-grey-850);
|
|
--color-text-menu-link-hover: var(--color-grey-300);
|
|
|
|
--color-shadow-jump: var(--color-grey-500);
|
|
--color-icon-github: var(--color-black);
|
|
--color-icon-github-hover: var(--color-grey-300);
|
|
|
|
--color-watch-table-error: var(--color-dark-red);
|
|
--color-watch-table-row-text: var(--color-grey-100);
|
|
|
|
--highlight-trigger-text-bg-color: #1b98f8;
|
|
--highlight-ignored-text-bg-color: var(--color-grey-700);
|
|
--highlight-blocked-text-bg-color: rgb(202, 60, 60);
|
|
}
|
|
|
|
html[data-darkmode="true"] {
|
|
--color-link: #59bdfb;
|
|
--color-text: var(--color-white);
|
|
|
|
--color-background-gradient-first: #3f90a5;
|
|
--color-background-gradient-second: #1e316c;
|
|
--color-background-gradient-third: #4d2c64;
|
|
|
|
--color-background-new-watch-input: var(--color-grey-100);
|
|
--color-background-new-watch-input-transparent: var(--color-grey-100);
|
|
--color-text-new-watch-input: var(--color-text);
|
|
--color-background-table-thead: var(--color-grey-200);
|
|
--color-table-background: var(--color-grey-300);
|
|
--color-table-stripe: var(--color-grey-325);
|
|
--color-background: var(--color-grey-300);
|
|
--color-text-menu-heading: var(--color-grey-850);
|
|
--color-text-menu-link: var(--color-grey-800);
|
|
--color-border-table-cell: var(--color-grey-400);
|
|
--color-text-tab-active: var(--color-text);
|
|
|
|
--color-border-input: var(--color-grey-400);
|
|
--color-shadow-input: var(--color-grey-50);
|
|
--color-background-input: var(--color-grey-350);
|
|
--color-text-input-description: var(--color-grey-600);
|
|
--color-text-input-placeholder: var(--color-grey-600);
|
|
--color-text-watch-tag-list: rgba(250, 62, 146, 0.4);
|
|
--color-background-code: var(--color-grey-200);
|
|
|
|
--color-background-tab: rgba(0, 0, 0, 0.2);
|
|
--color-background-tab-hover: rgba(0, 0, 0, 0.5);
|
|
|
|
--color-background-snapshot-age: var(--color-grey-200);
|
|
--color-shadow-jump: var(--color-grey-200);
|
|
--color-icon-github: var(--color-white);
|
|
--color-icon-github-hover: var(--color-grey-700);
|
|
--color-watch-table-error: var(--color-light-red);
|
|
--color-watch-table-row-text: var(--color-grey-800);
|
|
|
|
|
|
.icon-spread {
|
|
filter: hue-rotate(-10deg) brightness(1.5);
|
|
}
|
|
|
|
.watch-table {
|
|
|
|
.title-col a[target="_blank"]::after,
|
|
.current-diff-url::after {
|
|
filter: invert(.5) hue-rotate(10deg) brightness(2);
|
|
}
|
|
|
|
.status-browsersteps {
|
|
filter: invert(.5) hue-rotate(10deg) brightness(1.5);
|
|
}
|
|
|
|
.watch-controls {
|
|
.state-off {
|
|
img {
|
|
opacity: 0.3;
|
|
}
|
|
}
|
|
.state-on {
|
|
img {
|
|
opacity: 1.0;
|
|
}
|
|
}
|
|
}
|
|
|
|
.unviewed {
|
|
color: #fff;
|
|
&.error {
|
|
color: var(--color-watch-table-error);
|
|
}
|
|
}
|
|
}
|
|
}
|