mirror of
https://github.com/jlengrand/Maestro.git
synced 2026-03-10 08:31:19 +00:00
## CHANGES
- Added “View Git Log” action right inside GitStatusWidget tooltip 🧭 - Wired MainPanel to open Git Log directly from the widget 🪟 - Expanded GitStatusWidget API with optional `onViewLog` callback 🧩 - Improved test coverage for Git log tooltip interactions and rendering 🧪 - Cleaned repo by removing auto-generated CLAUDE.md memory context files 🧹 - Enhanced release notes frontmatter with a new newspaper icon 🗞️
This commit is contained in:
@@ -1,11 +0,0 @@
|
||||
<claude-mem-context>
|
||||
# Recent Activity
|
||||
|
||||
<!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
|
||||
|
||||
### Jan 11, 2026
|
||||
|
||||
| ID | Time | T | Title | Read |
|
||||
|----|------|---|-------|------|
|
||||
| #413 | 5:34 AM | 🔵 | History Documentation Content Loaded for Verification | ~412 |
|
||||
</claude-mem-context>
|
||||
@@ -1,6 +1,7 @@
|
||||
---
|
||||
title: Release Notes
|
||||
description: Version history and changelog for Maestro releases
|
||||
icon: newspaper
|
||||
---
|
||||
|
||||
# Release Notes
|
||||
|
||||
@@ -115,12 +115,14 @@ const mockTheme: Theme = {
|
||||
|
||||
describe('GitStatusWidget', () => {
|
||||
const mockOnViewDiff = vi.fn();
|
||||
const mockOnViewLog = vi.fn();
|
||||
|
||||
const defaultProps = {
|
||||
sessionId: 'test-session-id',
|
||||
isGitRepo: true,
|
||||
theme: mockTheme,
|
||||
onViewDiff: mockOnViewDiff,
|
||||
onViewLog: mockOnViewLog,
|
||||
};
|
||||
|
||||
beforeEach(() => {
|
||||
@@ -307,6 +309,29 @@ describe('GitStatusWidget', () => {
|
||||
fireEvent.click(viewDiffButton);
|
||||
expect(mockOnViewDiff).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('should call onViewLog when "View Git Log" link is clicked in tooltip', () => {
|
||||
mockGetStatus.mockReturnValue(createGitStatusData());
|
||||
render(<GitStatusWidget {...defaultProps} />);
|
||||
|
||||
const container = screen.getByRole('button').parentElement!;
|
||||
fireEvent.mouseEnter(container);
|
||||
|
||||
const viewLogButton = screen.getByText('View Git Log');
|
||||
fireEvent.click(viewLogButton);
|
||||
expect(mockOnViewLog).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('should not render "View Git Log" button when onViewLog is not provided', () => {
|
||||
mockGetStatus.mockReturnValue(createGitStatusData());
|
||||
const { onViewLog: _, ...propsWithoutLog } = defaultProps;
|
||||
render(<GitStatusWidget {...propsWithoutLog} />);
|
||||
|
||||
const container = screen.getByRole('button').parentElement!;
|
||||
fireEvent.mouseEnter(container);
|
||||
|
||||
expect(screen.queryByText('View Git Log')).not.toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
|
||||
describe('Tooltip Behavior', () => {
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
<claude-mem-context>
|
||||
# Recent Activity
|
||||
|
||||
<!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
|
||||
|
||||
### Jan 11, 2026
|
||||
|
||||
| ID | Time | T | Title | Read |
|
||||
|----|------|---|-------|------|
|
||||
| #421 | 5:35 AM | 🔵 | History Manager Implementation Details Verified | ~454 |
|
||||
</claude-mem-context>
|
||||
@@ -1,15 +0,0 @@
|
||||
<claude-mem-context>
|
||||
# Recent Activity
|
||||
|
||||
<!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
|
||||
|
||||
### Jan 11, 2026
|
||||
|
||||
| ID | Time | T | Title | Read |
|
||||
|----|------|---|-------|------|
|
||||
| #444 | 5:37 AM | 🔵 | History Detail Modal Implementation Verified | ~517 |
|
||||
| #443 | " | 🔵 | History Help Modal Content Verified | ~418 |
|
||||
| #441 | " | 🔵 | Activity Graph Time Range Options Verified | ~292 |
|
||||
| #437 | 5:36 AM | 🔵 | History Default Setting UI Label Verified | ~314 |
|
||||
| #426 | " | 🔵 | History Panel UI Implementation Verified | ~529 |
|
||||
</claude-mem-context>
|
||||
@@ -1,5 +1,5 @@
|
||||
import { useState, useRef, useEffect, memo } from 'react';
|
||||
import { GitBranch, Plus, Minus, FileEdit, FileDiff } from 'lucide-react';
|
||||
import { GitBranch, Plus, Minus, FileEdit, FileDiff, History } from 'lucide-react';
|
||||
import type { Theme } from '../types';
|
||||
import { useGitFileStatus, useGitDetail, type GitFileChange } from '../contexts/GitStatusContext';
|
||||
|
||||
@@ -10,6 +10,7 @@ interface GitStatusWidgetProps {
|
||||
isGitRepo: boolean;
|
||||
theme: Theme;
|
||||
onViewDiff: () => void;
|
||||
onViewLog?: () => void;
|
||||
/** Use compact mode - just show file count without breakdown */
|
||||
compact?: boolean;
|
||||
}
|
||||
@@ -31,6 +32,7 @@ export const GitStatusWidget = memo(function GitStatusWidget({
|
||||
isGitRepo,
|
||||
theme,
|
||||
onViewDiff,
|
||||
onViewLog,
|
||||
compact = false,
|
||||
}: GitStatusWidgetProps) {
|
||||
// Tooltip hover state with timeout for smooth UX
|
||||
@@ -228,6 +230,19 @@ export const GitStatusWidget = memo(function GitStatusWidget({
|
||||
<FileDiff className="w-3.5 h-3.5" style={{ color: theme.colors.textDim }} />
|
||||
View Full Diff
|
||||
</button>
|
||||
{onViewLog && (
|
||||
<button
|
||||
onClick={onViewLog}
|
||||
className="flex items-center justify-center gap-2 text-xs p-2 border-t w-full hover:bg-white/10 transition-colors cursor-pointer"
|
||||
style={{
|
||||
color: theme.colors.textDim,
|
||||
borderColor: theme.colors.border,
|
||||
}}
|
||||
>
|
||||
<History className="w-3.5 h-3.5" style={{ color: theme.colors.textDim }} />
|
||||
View Git Log
|
||||
</button>
|
||||
)}
|
||||
</div>
|
||||
</>
|
||||
)}
|
||||
|
||||
@@ -1077,6 +1077,7 @@ export const MainPanel = React.memo(
|
||||
isGitRepo={activeSession.isGitRepo}
|
||||
theme={theme}
|
||||
onViewDiff={handleViewGitDiff}
|
||||
onViewLog={() => setGitLogOpen?.(true)}
|
||||
compact={useCompactGitWidget}
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
<claude-mem-context>
|
||||
# Recent Activity
|
||||
|
||||
<!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
|
||||
|
||||
### Jan 11, 2026
|
||||
|
||||
| ID | Time | T | Title | Read |
|
||||
|----|------|---|-------|------|
|
||||
| #433 | 5:36 AM | 🔵 | History Default Setting Verified in Settings Hook | ~323 |
|
||||
</claude-mem-context>
|
||||
@@ -1,11 +0,0 @@
|
||||
<claude-mem-context>
|
||||
# Recent Activity
|
||||
|
||||
<!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
|
||||
|
||||
### Jan 11, 2026
|
||||
|
||||
| ID | Time | T | Title | Read |
|
||||
|----|------|---|-------|------|
|
||||
| #442 | 5:37 AM | 🔵 | Achievement Action Extension Verified in Renderer Types | ~311 |
|
||||
</claude-mem-context>
|
||||
@@ -1,12 +0,0 @@
|
||||
<claude-mem-context>
|
||||
# Recent Activity
|
||||
|
||||
<!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
|
||||
|
||||
### Jan 11, 2026
|
||||
|
||||
| ID | Time | T | Title | Read |
|
||||
|----|------|---|-------|------|
|
||||
| #428 | 5:36 AM | 🔵 | HistoryEntry Interface Fields Verified | ~378 |
|
||||
| #419 | 5:35 AM | 🔵 | History Constants and Types Verified in Shared Module | ~384 |
|
||||
</claude-mem-context>
|
||||
Reference in New Issue
Block a user