Add enhanced history management and favicons

Introduces clear and refresh buttons for browsing history, enables favicon display for history, bookmarks, and recent sites, and improves history storage with IPC support and localStorage fallback. Also updates styles for action buttons and favicons, and adds gamepad navigation for browser history.
This commit is contained in:
2025-12-28 10:47:04 +13:00
parent 8a2b7ee5e9
commit 37345b267b
3 changed files with 292 additions and 18 deletions
+89 -2
View File
@@ -413,6 +413,51 @@ body.mouse-active {
color: var(--bp-text-muted);
}
/* Section action buttons */
.section-actions {
display: flex;
gap: var(--bp-spacing-md);
margin-bottom: var(--bp-spacing-lg);
}
.action-btn {
display: flex;
align-items: center;
gap: var(--bp-spacing-sm);
padding: var(--bp-spacing-sm) var(--bp-spacing-md);
background: var(--bp-surface);
border: 2px solid var(--bp-border);
border-radius: var(--bp-radius-md);
color: var(--bp-text-muted);
font-size: 0.9rem;
font-weight: 500;
cursor: pointer;
transition: all var(--bp-transition-fast);
}
.action-btn:hover {
background: var(--bp-surface-hover);
color: var(--bp-text);
border-color: var(--bp-text-dim);
}
.action-btn:focus {
outline: none;
border-color: var(--bp-primary);
box-shadow: var(--bp-focus-ring);
color: var(--bp-text);
}
.action-btn .material-symbols-outlined {
font-size: 20px;
}
.action-btn.danger:hover,
.action-btn.danger:focus {
border-color: var(--bp-danger);
color: var(--bp-danger);
}
.subsection-title {
font-size: 1.1rem;
font-weight: 600;
@@ -569,7 +614,8 @@ body.mouse-active {
overflow: hidden;
}
.tile-icon img {
.tile-icon img,
.tile-favicon {
width: 40px;
height: 40px;
object-fit: contain;
@@ -580,6 +626,11 @@ body.mouse-active {
color: var(--bp-accent);
}
/* Bookmark tile specific styles */
.bookmark-tile .tile-icon {
background: linear-gradient(135deg, var(--bp-surface-active) 0%, var(--bp-surface-hover) 100%);
}
.tile-title {
font-size: 1rem;
font-weight: 600;
@@ -677,6 +728,9 @@ body.mouse-active {
border-radius: var(--bp-radius-sm);
margin-bottom: var(--bp-spacing-sm);
overflow: hidden;
display: flex;
align-items: center;
justify-content: center;
}
.scroll-card-preview img {
@@ -685,6 +739,17 @@ body.mouse-active {
object-fit: cover;
}
.scroll-card-favicon {
width: 64px;
height: 64px;
object-fit: contain;
}
.scroll-card-icon {
width: 100%;
height: 100%;
}
.scroll-card-title {
font-size: 1rem;
font-weight: 600;
@@ -737,14 +802,26 @@ body.mouse-active {
align-items: center;
justify-content: center;
overflow: hidden;
flex-shrink: 0;
}
.list-item-icon img {
.list-item-icon img,
.list-item-favicon {
width: 32px;
height: 32px;
object-fit: contain;
}
.list-item-icon .material-symbols-outlined {
font-size: 24px;
color: var(--bp-text-muted);
}
/* History item specific styles */
.history-item:hover .list-item-icon {
background: var(--bp-surface-active);
}
.list-item-content {
flex: 1;
min-width: 0;
@@ -780,6 +857,10 @@ body.mouse-active {
color: var(--bp-text-dim);
}
.empty-state.compact {
padding: var(--bp-spacing-lg);
}
.empty-state .material-symbols-outlined {
font-size: 64px;
margin-bottom: var(--bp-spacing-md);
@@ -790,6 +871,12 @@ body.mouse-active {
font-size: 1.1rem;
}
.empty-state .empty-hint {
font-size: 0.9rem;
margin-top: var(--bp-spacing-xs);
opacity: 0.7;
}
/* NeBot section */
.nebot-launch {
display: flex;