diff --git a/claude_code_log/renderer.py b/claude_code_log/renderer.py index 2052ca97..e4c0de9f 100644 --- a/claude_code_log/renderer.py +++ b/claude_code_log/renderer.py @@ -1290,8 +1290,7 @@ def format_tool_result_content( data_url = f"data:{media_type};base64,{data}" image_html_parts.append( f'Tool result image' + f'class="tool-result-image" />' ) raw_content = "\n".join(content_parts) has_images = len(image_html_parts) > 0 @@ -1469,7 +1468,7 @@ def format_image_content(image: ImageContent) -> str: # Create a data URL from the base64 image data data_url = f"data:{image.source.media_type};base64,{image.source.data}" - return f'Uploaded image' + return f'Uploaded image' def _is_compacted_session_summary(text: str) -> bool: diff --git a/claude_code_log/templates/components/filter_styles.css b/claude_code_log/templates/components/filter_styles.css index 570f107c..01efe3a1 100644 --- a/claude_code_log/templates/components/filter_styles.css +++ b/claude_code_log/templates/components/filter_styles.css @@ -1,12 +1,12 @@ /* Filter toolbar and controls */ .filter-toolbar { - background-color: #f8f9fa66; + background-color: var(--neutral-dimmed); border-radius: 8px; padding: 12px 16px; margin-bottom: 16px; box-shadow: -7px -7px 10px #eeeeee44, 7px 7px 10px #00000011; - border-left: #ffffff66 1px solid; - border-top: #ffffff66 1px solid; + border-left: var(--white-dimmed) 1px solid; + border-top: var(--white-dimmed) 1px solid; border-bottom: #00000017 1px solid; border-right: #00000017 1px solid; display: none; @@ -35,14 +35,14 @@ .toolbar-header h3 { margin: 0; font-size: 1em; - color: #495057; + color: var(--text-secondary); font-weight: 600; } .close-toolbar-btn { background: none; border: none; - color: #666; + color: var(--text-muted); cursor: pointer; font-size: 20px; padding: 5px; @@ -58,8 +58,8 @@ } .close-toolbar-btn:hover { - background-color: #ffffff66; - color: #333; + background-color: var(--white-dimmed); + color: var(--text-primary); } .filter-section { @@ -83,7 +83,7 @@ border: 1px solid #dee2e6; border-radius: 20px; background-color: transparent; - color: #495057; + color: var(--text-secondary); font-size: 0.85em; font-weight: 500; cursor: pointer; @@ -104,12 +104,12 @@ } .filter-toggle.active:hover { - background-color: #ffffff66; + background-color: var(--white-dimmed); } /* Color-coded filter buttons */ .filter-toggle[data-type="user"] { - border-color: #ff9800; + border-color: var(--user-color); border-width: 2px; } @@ -124,12 +124,12 @@ } .filter-toggle[data-type="assistant"] { - border-color: #9c27b0; + border-color: var(--assistant-color); border-width: 2px; } .filter-toggle[data-type="thinking"] { - border-color: #9c27b066; + border-color: var(--assistant-dimmed); border-width: 2px; } @@ -142,7 +142,7 @@ padding: 4px 8px; border: 1px solid #dee2e6; border-radius: 4px; - background-color: #ffffff66; + background-color: var(--white-dimmed); color: #6c757d; font-size: 0.75em; cursor: pointer; diff --git a/claude_code_log/templates/components/global_styles.css b/claude_code_log/templates/components/global_styles.css index b9961ed3..393b870c 100644 --- a/claude_code_log/templates/components/global_styles.css +++ b/claude_code_log/templates/components/global_styles.css @@ -86,7 +86,7 @@ body { margin: 0 auto; padding: 10px; background: linear-gradient(90deg, #f3d6d2, #f1dcce, #f0e4ca, #eeecc7, #e3ecc3, #d5eac0, #c6e8bd, #b9e6bc, #b6e3c5, #b3e1cf); - color: #333; + color: var(--text-primary); } h1 { @@ -118,6 +118,12 @@ pre { line-height: 1.5; } +/* Summary stats layout (used in index.html) */ +.summary-stats-flex { + display: flex; + gap: 3em; +} + /* Common card styling */ .card-base { background-color: #ffffff66; @@ -166,7 +172,7 @@ pre { /* Timestamps */ .timestamp { font-size: 0.85em; - color: #666; + color: var(--text-muted); font-weight: normal; } @@ -174,8 +180,8 @@ pre { .floating-btn { position: fixed; right: 20px; - background-color: #e8f4fd66; - color: #666; + background-color: var(--session-bg-dimmed); + color: var(--text-muted); border: none; border-radius: 50%; width: 50px; @@ -198,7 +204,7 @@ pre { } .floating-btn:visited { - color: #666; + color: var(--text-muted); } /* Floating buttons positioning */ diff --git a/claude_code_log/templates/components/message_styles.css b/claude_code_log/templates/components/message_styles.css index 7cbd3a2e..dec81577 100644 --- a/claude_code_log/templates/components/message_styles.css +++ b/claude_code_log/templates/components/message_styles.css @@ -159,7 +159,7 @@ } .fold-bar[data-border-color="session-header"] .fold-bar-section { - border-bottom-color: #2196f3; + border-bottom-color: var(--system-warning-color); } /* Sidechain (sub-assistant) fold-bar styling */ @@ -255,7 +255,7 @@ .pair-duration { font-size: 80%; - color: #666; + color: var(--text-muted); font-style: italic; } @@ -297,7 +297,7 @@ /* Message type styling */ .user { - border-left-color: #ff9800; + border-left-color: var(--user-color); } /* Steering user messages (out-of-band input while agent is working) */ @@ -313,7 +313,7 @@ } .assistant { - border-left-color: #9c27b0; + border-left-color: var(--assistant-color); } /* Dimmed assistant when paired with thinking */ @@ -358,7 +358,7 @@ line-height: 1.4; white-space: pre-wrap; word-wrap: break-word; - color: #333; + color: var(--text-primary); overflow-x: auto; } @@ -374,11 +374,11 @@ /* Bash command styling */ .bash-input { background-color: #1e1e1e08; - border-left-color: #4caf50; + border-left-color: var(--tool-use-color); } .bash-prompt { - color: #4caf50; + color: var(--tool-use-color); font-weight: bold; font-size: 1.1em; margin-right: 8px; @@ -388,7 +388,7 @@ font-family: var(--font-monospace); font-size: 0.95em; color: #2c3e50; - background-color: #f8f9fa; + background-color: var(--bg-neutral); padding: 2px 6px; border-radius: 3px; } @@ -410,7 +410,7 @@ line-height: 1.4; white-space: pre-wrap; word-wrap: break-word; - color: #333; + color: var(--text-primary); overflow-x: auto; } @@ -430,7 +430,7 @@ } .bash-empty { - color: #999; + color: var(--text-muted); font-style: italic; } @@ -459,7 +459,7 @@ } .tool_use { - border-left-color: #4caf50; + border-left-color: var(--tool-use-color); } .tool_result { @@ -499,7 +499,7 @@ /* Full purple when thinking is paired (as pair_first) */ .thinking.paired-message.pair_first { - border-left-color: #9c27b0; + border-left-color: var(--assistant-color); } .image { @@ -525,10 +525,16 @@ font-size: 1.2em; } +.session-subtitle { + font-size: 0.9em; + color: var(--text-muted); + margin-top: 4px; +} + /* IDE notification styling */ .ide-notification { background-color: var(--ide-notification-dimmed); - border-left: #9c27b0 2px solid; + border-left: var(--assistant-color) 2px solid; padding: 8px 12px; margin: 8px 0; border-radius: 4px; @@ -548,13 +554,13 @@ } .ide-selection-collapsible summary:hover { - color: #333; + color: var(--text-primary); } .ide-selection-content { margin-top: 8px; padding: 8px; - background-color: #f8f9fa; + background-color: var(--bg-neutral); border-radius: 3px; border: 1px solid #dee2e6; font-family: var(--font-monospace); @@ -633,7 +639,7 @@ pre > code { .tool-param-structured { margin: 0; - background-color: #f8f9fa; + background-color: var(--bg-neutral); padding: 4px; border-radius: 3px; } @@ -648,7 +654,7 @@ pre > code { } .tool-param-collapsible summary:hover { - color: #333; + color: var(--text-primary); } .tool-param-collapsible[open] > summary { @@ -661,7 +667,7 @@ pre > code { } .tool-params-empty { - color: #999; + color: var(--text-muted); font-style: italic; } @@ -841,4 +847,14 @@ details summary { .ansi-bold { font-weight: bold; } .ansi-dim { opacity: 0.7; } .ansi-italic { font-style: italic; } -.ansi-underline { text-decoration: underline; } \ No newline at end of file +.ansi-underline { text-decoration: underline; } + +/* Image styling */ +.tool-result-image, +.uploaded-image { + max-width: 100%; + height: auto; + border: 1px solid var(--border-light); + border-radius: 4px; + margin: 10px 0; +} \ No newline at end of file diff --git a/claude_code_log/templates/components/project_card_styles.css b/claude_code_log/templates/components/project_card_styles.css index 21fde152..ebae9931 100644 --- a/claude_code_log/templates/components/project_card_styles.css +++ b/claude_code_log/templates/components/project_card_styles.css @@ -30,15 +30,20 @@ .project-name a { text-decoration: none; - color: #2196f3; + color: var(--system-warning-color); } .project-name a:hover { text-decoration: underline; } +.transcript-link-hint { + font-size: 0.6em; + color: var(--text-muted); +} + .project-stats { - color: #666; + color: var(--text-muted); font-size: 0.9em; display: flex; gap: 20px; @@ -79,11 +84,11 @@ .summary-stat .number { font-size: 1.5em; font-weight: 600; - color: #2196f3; + color: var(--system-warning-color); } .summary-stat .label { - color: #666; + color: var(--text-muted); font-size: 0.9em; } @@ -94,14 +99,14 @@ .project-sessions details summary { cursor: pointer; - color: #666; + color: var(--text-muted); font-size: 1.1em; font-weight: 600; padding: 8px 0; } .project-sessions details summary:hover { - color: #2196f3; + color: var(--system-warning-color); } .project-sessions details[open] summary { diff --git a/claude_code_log/templates/components/search_styles.css b/claude_code_log/templates/components/search_styles.css index 83fe6540..d73e7aed 100644 --- a/claude_code_log/templates/components/search_styles.css +++ b/claude_code_log/templates/components/search_styles.css @@ -10,7 +10,7 @@ right: 45px; top: 50%; transform: translateY(-50%); - color: #999; + color: var(--text-muted); font-size: 0.75em; pointer-events: none; transition: opacity 0.2s; @@ -45,7 +45,7 @@ background: #ffffff88; border: 1px solid #dee2e6; border-radius: 20px; - color: #495057; + color: var(--text-secondary); font-size: 0.85em; font-family: inherit; transition: all 0.2s; @@ -53,13 +53,13 @@ .search-input:focus { outline: none; - border-color: #2196f3; + border-color: var(--system-warning-color); background: #ffffff99; box-shadow: 0 0 0 2px rgba(33, 150, 243, 0.2); } .search-input::placeholder { - color: #666; + color: var(--text-muted); } .search-clear { @@ -67,7 +67,7 @@ right: 15px; background: none; border: none; - color: #666; + color: var(--text-muted); cursor: pointer; font-size: 18px; padding: 5px; @@ -77,8 +77,8 @@ } .search-clear:hover { - color: #333; - background: #ffffff66; + color: var(--text-primary); + background: var(--white-dimmed); } .search-clear.visible { @@ -89,7 +89,7 @@ .search-results-info { margin-top: 8px; font-size: 12px; - color: #666; + color: var(--text-muted); display: none; } @@ -117,11 +117,11 @@ align-items: center; gap: 4px; cursor: pointer; - color: #666; + color: var(--text-muted); } .search-option-inline:hover { - color: #333; + color: var(--text-primary); } .search-option-inline input[type="checkbox"] { @@ -133,7 +133,7 @@ background: #ffffff88; border: 1px solid #dee2e6; border-radius: 4px; - color: #333; + color: var(--text-primary); padding: 4px 8px; cursor: pointer; font-size: 12px; @@ -142,7 +142,7 @@ .search-nav-btn:hover:not(:disabled) { background: #ffffff99; - border-color: #2196f3; + border-color: var(--system-warning-color); transform: translateY(-1px); } @@ -176,7 +176,7 @@ display: flex; align-items: center; gap: 5px; - color: #666; + color: var(--text-muted); transition: color 0.2s; } @@ -191,18 +191,18 @@ } .search-option:hover { - color: #333; + color: var(--text-primary); } /* Index Page Search Results */ .search-results-panel { margin: 20px 0; padding: 20px; - background-color: #ffffff66; + background-color: var(--white-dimmed); border-radius: 8px; box-shadow: -7px -7px 10px #eeeeee44, 7px 7px 10px #00000011; - border-left: #ffffff66 1px solid; - border-top: #ffffff66 1px solid; + border-left: var(--white-dimmed) 1px solid; + border-top: var(--white-dimmed) 1px solid; border-bottom: #00000017 1px solid; border-right: #00000017 1px solid; display: none; @@ -230,7 +230,7 @@ .search-close-btn { background: none; border: none; - color: #666; + color: var(--text-muted); cursor: pointer; font-size: 20px; padding: 5px; @@ -239,8 +239,8 @@ } .search-close-btn:hover { - color: #333; - background: #ffffff66; + color: var(--text-primary); + background: var(--white-dimmed); } .search-result-group { @@ -259,7 +259,7 @@ .search-result-count { background: #ffffff88; - color: #666; + color: var(--text-muted); padding: 2px 8px; border-radius: 12px; font-size: 11px; @@ -295,14 +295,14 @@ .search-result-session { font-size: 12px; - color: #666; + color: var(--text-muted); margin-bottom: 5px; font-weight: 500; } .search-result-excerpt { font-size: 13px; - color: #495057; + color: var(--text-secondary); line-height: 1.4; } @@ -317,7 +317,7 @@ .search-result-meta { margin-top: 8px; font-size: 11px; - color: #666; + color: var(--text-muted); display: flex; gap: 15px; padding-top: 5px; @@ -330,7 +330,7 @@ .search-no-results { text-align: center; padding: 30px; - color: #666; + color: var(--text-muted); font-size: 14px; background-color: #ffffff44; border-radius: 6px; @@ -341,7 +341,7 @@ .search-loading { text-align: center; padding: 20px; - color: #666; + color: var(--text-muted); background-color: #ffffff44; border-radius: 6px; } diff --git a/claude_code_log/templates/components/session_nav.html b/claude_code_log/templates/components/session_nav.html index 4d970081..99568db2 100644 --- a/claude_code_log/templates/components/session_nav.html +++ b/claude_code_log/templates/components/session_nav.html @@ -4,10 +4,10 @@