Improve Git History navigation and commit details

Add a detached Git Commit History tab with a traditional table layout, persistent column widths, commit focusing, and a splitter-based commit details pane.
Register the git-show-history command and expose “Show in Git History” from commit details and history context menus. Add History and Git Commit tab icons, localized titles, appropriate tooltips, and ref-aware
tab naming.
Share the commit-details layout and behavior between standalone commit tabs and detached History views. Move view creation, widget binding, state management, controls, and asynchronous changed-file loading into
CommitDetailsState.
Display complete commit metadata and messages, GitHub links, copyable commit SHAs, colored changed-file statistics, and multi-file diffs with global expand/collapse and unified/split controls.
Improve detached-history lifecycle behavior, selection and focus handling, stale-request protection, tooltip formatting, and column recalculation. Restore “Load older commits” by preserving pagination-node
semantics while asynchronous loading is in progress.
Fix expandable History rows so merge subjects and metadata render correctly without regressing generic UITreeView cells. Add recursive commit lookup for focusing nested history entries.
Add deferred tooltip-created notifications and configure History tooltips only after their widgets exist.
Preserve tokenizer-applied UITextView color ranges during layout recalculation when custom styling is enabled, preventing changed-file statistics from losing their colors after splitter resizing.
Add the required Codicons and translations, expose UIWidget pseudo-class queries, reuse cached tree-expander drawable sources, and use SmallVector for nested stylesheet property resolution.
This commit is contained in:
Martín Lucas Golini
2026-08-29 02:15:26 -03:00
parent ef962fc61f
commit 61d9d3c7bc
15 changed files with 551 additions and 204 deletions
+6
View File
@@ -1264,6 +1264,12 @@ Für sichtbare Änderung ecode neu starten.</string>
<string name="git_history_load_older">Ältere Commits laden</string>
<string name="git_history_empty">Noch keine Commits</string>
<string name="git_history_no_additional_commits">Keine weiteren Commits</string>
<string name="git_show_in_history">Im Git-Verlauf anzeigen</string>
<string name="git_commit_history_title">Git-Commit-Verlauf – %s</string>
<string name="git_commit_sha">Commit-SHA</string>
<string name="git_copy_commit_sha">Commit-SHA kopieren&#10;%s</string>
<string name="git_switch_to_split_diff">Zur geteilten Diff-Ansicht wechseln</string>
<string name="git_switch_to_unified_diff">Zur vereinheitlichten Diff-Ansicht wechseln</string>
<string name="git_history_error">Git-Verlauf konnte nicht geladen werden</string>
<string name="git_history_retry">Wiederholen</string>
<string name="git_local_branch">Lokal</string>
+6
View File
@@ -1249,6 +1249,12 @@ Restart ecode to see the changes.</string>
<string name="git_history_load_older">Load older commits</string>
<string name="git_history_empty">No commits yet</string>
<string name="git_history_no_additional_commits">No additional commits</string>
<string name="git_show_in_history">Show in Git History</string>
<string name="git_commit_history_title">Git Commit History - %s</string>
<string name="git_commit_sha">Commit SHA</string>
<string name="git_copy_commit_sha">Copy Commit SHA&#10;%s</string>
<string name="git_switch_to_split_diff">Switch to split diff view</string>
<string name="git_switch_to_unified_diff">Switch to unified diff view</string>
<string name="git_history_error">Could not load Git history</string>
<string name="git_history_retry">Retry</string>
<string name="git_local_branch">Local</string>
+6
View File
@@ -1248,6 +1248,12 @@ Redémarrer ecode pour voir les changements.</string>
<string name="git_history_load_older">Charger les commits précédents</string>
<string name="git_history_empty">Aucun commit pour le moment</string>
<string name="git_history_no_additional_commits">Aucun commit supplémentaire</string>
<string name="git_show_in_history">Afficher dans l’historique Git</string>
<string name="git_commit_history_title">Historique des commits Git – %s</string>
<string name="git_commit_sha">SHA du commit</string>
<string name="git_copy_commit_sha">Copier le SHA du commit&#10;%s</string>
<string name="git_switch_to_split_diff">Passer à la vue des différences séparée</string>
<string name="git_switch_to_unified_diff">Passer à la vue des différences unifiée</string>
<string name="git_history_error">Impossible de charger l’historique Git</string>
<string name="git_history_retry">Réessayer</string>
<string name="git_local_branch">Locale</string>
+6
View File
@@ -1053,6 +1053,12 @@ file in the directory tree.</string>
<string name="git_history_load_older">加载更早的提交</string>
<string name="git_history_empty">尚无提交</string>
<string name="git_history_no_additional_commits">没有其他提交</string>
<string name="git_show_in_history">在 Git 历史记录中显示</string>
<string name="git_commit_history_title">Git 提交历史记录 - %s</string>
<string name="git_commit_sha">提交 SHA</string>
<string name="git_copy_commit_sha">复制提交 SHA&#10;%s</string>
<string name="git_switch_to_split_diff">切换到拆分差异视图</string>
<string name="git_switch_to_unified_diff">切换到统一差异视图</string>
<string name="git_history_error">无法加载 Git 历史记录</string>
<string name="git_history_retry">重试</string>
<string name="git_local_branch">本地</string>