Skip to content

Commit ea25033

Browse files
dev-altclaude
andcommitted
Fix GitHub authentication issues and improve repository addition
Authentication & UI Fixes: - ✅ Remove "Load My Repos" button that required GitHub authentication - ✅ Add informative note about public repository support only - ✅ Clean up unused authentication methods and error handling Repository Addition Improvements: - ✅ Fix repository selection after adding GitHub repo - ✅ Improve success messages with repository count confirmation - ✅ Better repository matching logic for auto-selection - ✅ Enhanced validation messages during GitHub repo addition - ✅ Trigger proper selection events after adding repository User Experience Enhancements: - ✅ Clear messaging about public repository limitations - ✅ More informative success/error dialogs - ✅ Better repository validation feedback - ✅ Streamlined interface without authentication complexity The GitHub repository addition should now work reliably for public repositories without authentication errors or missing repositories in the list. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 0c510c3 commit ea25033

1 file changed

Lines changed: 17 additions & 60 deletions

File tree

src/gui.py

Lines changed: 17 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -158,11 +158,16 @@ def create_repository_panel(self):
158158
command=self.add_local_repository, style='Action.TButton').pack(side='left', padx=5)
159159
ttk.Button(button_frame, text="🐙 Add GitHub Repo",
160160
command=self.add_github_repository, style='Action.TButton').pack(side='left', padx=5)
161-
ttk.Button(button_frame, text="📚 Load My Repos",
162-
command=self.load_user_repositories, style='Action.TButton').pack(side='left', padx=5)
163161
ttk.Button(button_frame, text="🗑️ Remove",
164162
command=self.remove_repository, style='Action.TButton').pack(side='left', padx=5)
165163

164+
# Info note
165+
info_frame = ttk.Frame(list_frame)
166+
info_label = ttk.Label(info_frame, text="ℹ️ Add public GitHub repositories or local folders for analysis",
167+
font=('Segoe UI', 8), foreground='#666666')
168+
info_label.pack(side='left')
169+
info_frame.pack(pady=(0, 5), fill='x')
170+
166171
# Repository list
167172
self.repo_tree = ttk.Treeview(list_frame, columns=('type', 'status'), show='tree headings', height=12)
168173
self.repo_tree.heading('#0', text='Repository', anchor='w')
@@ -402,72 +407,24 @@ def add_github_repository(self):
402407
self.update_repository_list()
403408

404409
# Show success feedback
405-
messagebox.showinfo("Repository Added",
406-
f"Successfully added GitHub repository:\n{repo_name}\n\nYou can now select it and click 'Analyze Repository' to get detailed analysis.")
410+
total_repos = len(self.repositories)
411+
messagebox.showinfo("Repository Added Successfully",
412+
f"✅ Added GitHub repository:\n{repo_name}\n\nTotal repositories: {total_repos}\nSelect it in the list and click 'Analyze Repository' for detailed analysis.")
407413

408414
# Select the newly added repository
409415
for item in self.repo_tree.get_children():
410-
if self.repo_tree.item(item)['text'].endswith(repo_name.split('/')[-1]):
416+
item_text = self.repo_tree.item(item)['text']
417+
# Look for the full repo name or just the repo part
418+
if repo_name in item_text or repo_name.split('/')[-1] in item_text:
411419
self.repo_tree.selection_set(item)
412420
self.repo_tree.see(item)
413-
self.on_repository_select(None) # Update info panel
421+
# Trigger selection event
422+
event = type('Event', (), {'widget': self.repo_tree})()
423+
self.on_repository_select(event)
414424
break
415425

416426
self.logger.info(f"Added GitHub repository: {repo_name}", "GUI")
417427

418-
def load_user_repositories(self):
419-
"""Load all repositories from the authenticated user."""
420-
if self.github_client is None:
421-
messagebox.showerror("GitHub Unavailable",
422-
"GitHub client not available. Please ensure PyGithub is installed.")
423-
return
424-
425-
# Show loading dialog
426-
loading_dialog = LoadingDialog(self.root, "Loading your GitHub repositories...")
427-
428-
def load_repos_thread():
429-
try:
430-
# Get user's repositories
431-
user = self.github_client.get_user()
432-
repos = list(user.get_repos(type='owner', sort='updated'))
433-
434-
# Add repositories to the list
435-
for repo in repos:
436-
repo_item = RepositoryItem(
437-
name=f"{repo.owner.login}/{repo.name}",
438-
path="",
439-
url=repo.html_url,
440-
repo_type="github"
441-
)
442-
# Check if repo already exists
443-
if not any(r.url == repo.html_url for r in self.repositories):
444-
self.repositories.append(repo_item)
445-
446-
# Update UI on main thread
447-
self.root.after(0, lambda: self._finish_load_repos(loading_dialog, len(repos)))
448-
449-
except Exception as e:
450-
error_msg = str(e) # Capture the error message
451-
self.root.after(0, lambda: self._handle_load_repos_error(loading_dialog, error_msg))
452-
453-
# Start loading in background thread
454-
threading.Thread(target=load_repos_thread, daemon=True).start()
455-
456-
def _finish_load_repos(self, loading_dialog, repo_count):
457-
"""Finish loading user repositories."""
458-
loading_dialog.close()
459-
self.update_repository_list()
460-
messagebox.showinfo("Repositories Loaded",
461-
f"Successfully loaded {repo_count} repositories from your GitHub account!")
462-
self.logger.info(f"Loaded {repo_count} user repositories from GitHub", "GUI")
463-
464-
def _handle_load_repos_error(self, loading_dialog, error_msg):
465-
"""Handle error during repository loading."""
466-
loading_dialog.close()
467-
messagebox.showerror("Loading Failed",
468-
f"Failed to load repositories from GitHub:\n{error_msg}")
469-
self.logger.error(f"Failed to load user repositories: {error_msg}", "GUI")
470-
471428
def remove_repository(self):
472429
"""Remove selected repository."""
473430
selection = self.repo_tree.selection()
@@ -1194,7 +1151,7 @@ def on_add(self):
11941151
test_repo = self.github_client.get_repo(repo_name)
11951152
# If we get here, repo exists
11961153
messagebox.showinfo("Repository Found",
1197-
f"✅ Repository found: {test_repo.full_name}\n{test_repo.description or 'No description'}")
1154+
f"✅ Repository found: {test_repo.full_name}\n{test_repo.description or 'No description'}\n\nAdding to repository list...")
11981155
except Exception as e:
11991156
if "404" in str(e):
12001157
messagebox.showerror("Repository Not Found",

0 commit comments

Comments
 (0)