refactor: comprehensive consistency review — UI/UX, code quality, functional parity
Fix 19 issues across 3 priority tiers found during full-codebase review: CRITICAL: - Fix undefined --color-secondary CSS variable causing invisible UI elements - Fix Google Photos command templates using nonexistent asset.originalFileName - Fix scheduler template variable docs (tracker_name → schedule_name) - Add missing admin guard on notification template update endpoint HIGH: - Fix 5 hardcoded English strings missing i18n (MultiEntitySelect, actions, settings, TelegramBotTab, users) - Replace 17 raw <button> elements with shared <Button> component - Replace 5 raw error divs with shared <ErrorBanner> component - Refactor webhook handler duplication into shared _dispatch_webhook_event() - Add 30+ provider-specific fields to TrackingConfig TypeScript type - Add default TrackingConfig seeds for immich and google_photos - Add provider-specific command variable docs (Gitea, Planka, NUT, GP, Webhook) MEDIUM: - Replace hardcoded hex colors and Tailwind classes with CSS variable tokens - Remove dead code (unused imports, orphaned check_notification_tracker) - Fix Svelte 5 patterns ($state for _prevProviderId, remove unnecessary as any) - Fix inconsistent POST response shape (targets now returns full response) - Fix Google Photos template dead asset.year branches, clarify album_url docs
This commit is contained in:
@@ -105,7 +105,7 @@
|
||||
{/if}
|
||||
<button type="button" class="mes-trigger" onclick={openPalette}>
|
||||
<MdiIcon name="mdiPlus" size={14} />
|
||||
<span>{(values || []).length === 0 ? placeholder : `${(values || []).length} selected`}</span>
|
||||
<span>{(values || []).length === 0 ? placeholder : t('common.nSelected').replace('{0}', String((values || []).length))}</span>
|
||||
<span class="mes-trigger-arrow"><MdiIcon name="mdiChevronDown" size={14} /></span>
|
||||
</button>
|
||||
</div>
|
||||
@@ -120,7 +120,7 @@
|
||||
<input
|
||||
bind:this={inputEl}
|
||||
bind:value={query}
|
||||
placeholder="Search..."
|
||||
placeholder={t('common.search')}
|
||||
class="mes-input"
|
||||
type="text"
|
||||
autocomplete="off"
|
||||
|
||||
@@ -876,7 +876,10 @@
|
||||
"saveFailed": "Save failed",
|
||||
"loadFailed": "Failed to load data",
|
||||
"dismiss": "Dismiss",
|
||||
"systemSuffix": " (System)"
|
||||
"systemSuffix": " (System)",
|
||||
"search": "Search...",
|
||||
"nSelected": "{0} selected",
|
||||
"unknown": "Unknown"
|
||||
},
|
||||
"templateSlot": {
|
||||
"message_assets_added": "New assets added to album",
|
||||
|
||||
@@ -876,7 +876,10 @@
|
||||
"saveFailed": "Не удалось сохранить",
|
||||
"loadFailed": "Не удалось загрузить данные",
|
||||
"dismiss": "Закрыть",
|
||||
"systemSuffix": " (Системный)"
|
||||
"systemSuffix": " (Системный)",
|
||||
"search": "Поиск...",
|
||||
"nSelected": "{0} выбрано",
|
||||
"unknown": "Неизвестно"
|
||||
},
|
||||
"templateSlot": {
|
||||
"message_assets_added": "Новые файлы добавлены в альбом",
|
||||
|
||||
@@ -125,6 +125,45 @@ export interface TrackingConfig {
|
||||
track_sharing_changed: boolean;
|
||||
track_images: boolean;
|
||||
track_videos: boolean;
|
||||
// Gitea-specific
|
||||
track_push?: boolean;
|
||||
track_issue_opened?: boolean;
|
||||
track_issue_closed?: boolean;
|
||||
track_issue_commented?: boolean;
|
||||
track_pr_opened?: boolean;
|
||||
track_pr_closed?: boolean;
|
||||
track_pr_merged?: boolean;
|
||||
track_pr_commented?: boolean;
|
||||
track_release_published?: boolean;
|
||||
// Planka-specific
|
||||
track_card_created?: boolean;
|
||||
track_card_updated?: boolean;
|
||||
track_card_moved?: boolean;
|
||||
track_card_deleted?: boolean;
|
||||
track_card_commented?: boolean;
|
||||
track_comment_updated?: boolean;
|
||||
track_board_created?: boolean;
|
||||
track_board_updated?: boolean;
|
||||
track_board_deleted?: boolean;
|
||||
track_list_created?: boolean;
|
||||
track_list_updated?: boolean;
|
||||
track_list_deleted?: boolean;
|
||||
track_attachment_created?: boolean;
|
||||
track_card_label_added?: boolean;
|
||||
track_task_completed?: boolean;
|
||||
// Scheduler-specific
|
||||
track_scheduled_message?: boolean;
|
||||
// NUT-specific
|
||||
track_ups_online?: boolean;
|
||||
track_ups_on_battery?: boolean;
|
||||
track_ups_low_battery?: boolean;
|
||||
track_ups_battery_restored?: boolean;
|
||||
track_ups_comms_lost?: boolean;
|
||||
track_ups_comms_restored?: boolean;
|
||||
track_ups_replace_battery?: boolean;
|
||||
track_ups_overload?: boolean;
|
||||
// Webhook-specific
|
||||
track_webhook_received?: boolean;
|
||||
notify_favorites_only: boolean;
|
||||
include_tags: boolean;
|
||||
include_asset_details: boolean;
|
||||
|
||||
Reference in New Issue
Block a user