pub struct RepoTab {Show 56 fields
pub repo_path: Option<PathBuf>,
pub repo_info: Option<RepoInfo>,
pub branches: Vec<BranchInfo>,
pub current_branch: Option<String>,
pub commits: Vec<CommitInfo>,
pub selected_commit: Option<usize>,
pub anchor_commit_index: Option<usize>,
pub selected_commits: Vec<usize>,
pub graph_rows: Vec<GraphRow>,
pub unstaged_changes: Vec<DiffInfo>,
pub staged_changes: Vec<DiffInfo>,
pub commit_files: Vec<DiffFileEntry>,
pub selected_commit_oid: Option<String>,
pub selected_file_index: Option<usize>,
pub is_loading_file_diff: bool,
pub anchor_file_index: Option<usize>,
pub selected_commit_file_indices: Vec<usize>,
pub multi_file_diffs: Vec<DiffInfo>,
pub commit_range_diffs: Vec<DiffInfo>,
pub selected_diff: Option<DiffInfo>,
pub commit_message: String,
pub stashes: Vec<StashEntry>,
pub remotes: Vec<RemoteInfo>,
pub show_commit_detail: bool,
pub new_branch_name: String,
pub show_branch_create: bool,
pub local_branches_expanded: bool,
pub remote_branches_expanded: bool,
pub stash_message: String,
pub selected_unstaged: HashSet<String>,
pub selected_staged: HashSet<String>,
pub pending_discard: Option<String>,
pub status_message: Option<String>,
pub error_message: Option<String>,
pub is_loading: bool,
pub context_menu_pos: (f32, f32),
pub context_menu: Option<ContextMenu>,
pub rename_branch_target: Option<String>,
pub rename_branch_input: String,
pub create_tag_target_oid: Option<String>,
pub create_tag_annotated: bool,
pub create_tag_name: String,
pub create_tag_message: String,
pub create_branch_at_oid: Option<String>,
pub commit_scroll_offset: f32,
pub diff_scroll_offset: f32,
pub commit_display: Vec<(String, String, String)>,
pub has_more_commits: bool,
pub is_loading_more_commits: bool,
pub file_history_path: Option<String>,
pub file_history_commits: Vec<CommitInfo>,
pub file_history_scroll: f32,
pub blame_path: Option<String>,
pub blame_lines: Vec<BlameLine>,
pub blame_scroll: f32,
pub pending_delete_file: Option<String>,
}Expand description
Per-repository state — one instance per open tab.
Fields§
§repo_path: Option<PathBuf>Path to the currently opened repository (workdir root).
repo_info: Option<RepoInfo>High-level information about the opened repository.
branches: Vec<BranchInfo>All branches (local + remote) in the repository.
current_branch: Option<String>Name of the currently checked-out branch.
commits: Vec<CommitInfo>Commit log (newest first).
selected_commit: Option<usize>Index into commits of the currently selected commit.
anchor_commit_index: Option<usize>Anchor commit index for range selection — set on a plain click.
selected_commits: Vec<usize>Ordered (ascending) list of commit indices in the current range selection.
graph_rows: Vec<GraphRow>Per-commit graph layout rows for branch visualisation.
unstaged_changes: Vec<DiffInfo>Unstaged (working-directory) changes.
staged_changes: Vec<DiffInfo>Staged (index) changes.
commit_files: Vec<DiffFileEntry>Lightweight file list for the currently selected commit (path + status only).
selected_commit_oid: Option<String>OID of the currently selected commit (needed for on-demand file diff loading).
selected_file_index: Option<usize>Index of the selected file in commit_files.
is_loading_file_diff: boolTrue while a single-file diff is being loaded.
anchor_file_index: Option<usize>Anchor index for range selection — set on a regular click, kept fixed while the user extends the selection with Shift+Click.
selected_commit_file_indices: Vec<usize>Ordered list of file indices currently multi-selected in the commit file list (Shift+Click). Always stored in ascending index order (lowest index first).
multi_file_diffs: Vec<DiffInfo>Diffs for all multi-selected files (populated when 2+ files are selected).
commit_range_diffs: Vec<DiffInfo>Combined diff for all commits in the current range selection (populated when
selected_commits.len() > 1). Shown in the diff panel instead of single-commit diff.
selected_diff: Option<DiffInfo>The diff currently displayed in the diff viewer panel.
commit_message: StringText in the commit-message input.
stashes: Vec<StashEntry>All stash entries.
remotes: Vec<RemoteInfo>Configured remotes.
show_commit_detail: boolWhether the commit detail pane is visible.
new_branch_name: StringText in the “new branch name” input.
show_branch_create: boolWhether the inline branch-creation UI is visible.
local_branches_expanded: boolWhether the Local branches section is expanded.
remote_branches_expanded: boolWhether the Remote branches section is expanded.
stash_message: StringText in the “stash message” input.
selected_unstaged: HashSet<String>Set of selected unstaged file paths (for multi-select with Shift+Click).
selected_staged: HashSet<String>Set of selected staged file paths (for multi-select with Shift+Click).
pending_discard: Option<String>File path pending discard confirmation (None = no pending discard).
status_message: Option<String>Transient status-bar message (e.g. “Branch created”).
error_message: Option<String>Error message shown in a banner / toast.
is_loading: boolTrue while an async operation is in flight.
Cursor position captured at the moment the context menu was opened. Used to anchor the menu so it doesn’t follow the mouse after appearing.
Currently open context menu, if any.
rename_branch_target: Option<String>Name of the branch currently being renamed (None = not renaming).
rename_branch_input: StringThe new name being typed in the rename input.
create_tag_target_oid: Option<String>When Some(oid), the tag-creation inline form is visible, targeting that OID.
create_tag_annotated: boolTrue when creating an annotated tag; false for a lightweight tag.
create_tag_name: StringThe tag name the user is typing.
create_tag_message: StringThe annotated tag message the user is typing (only used when create_tag_annotated is true).
create_branch_at_oid: Option<String>When Some(oid), the inline “create branch at this commit” form is visible.
commit_scroll_offset: f32Current scroll offset of the commit log in pixels.
Tracked via on_scroll so virtual scrolling can render only the
visible window of rows.
diff_scroll_offset: f32Current scroll offset of the diff viewer in pixels.
commit_display: Vec<(String, String, String)>Pre-computed display strings for each commit:
(truncated_summary, relative_time, truncated_author).
Computed once when commits load to avoid per-frame string allocations.
has_more_commits: boolWhether there are potentially more commits to load beyond those already shown.
is_loading_more_commits: boolGuard: true while a background load-more task is in flight (prevents duplicates).
file_history_path: Option<String>When Some(path), the file-history overlay is shown for that repo-relative path.
file_history_commits: Vec<CommitInfo>Commits loaded for the file-history overlay (newest first).
file_history_scroll: f32Scroll offset of the file-history list in pixels.
blame_path: Option<String>When Some(path), the blame overlay is shown for that repo-relative path.
blame_lines: Vec<BlameLine>Blame lines loaded for the blame overlay.
blame_scroll: f32Scroll offset of the blame view in pixels.
pending_delete_file: Option<String>When Some(path), a delete-confirmation banner is shown for that file.
Implementations§
Source§impl RepoTab
impl RepoTab
Sourcepub fn display_name(&self) -> &str
pub fn display_name(&self) -> &str
Display name for the tab (last path component, or “New Tab”).
Sourcepub fn apply_payload(&mut self, payload: RepoPayload, path: PathBuf)
pub fn apply_payload(&mut self, payload: RepoPayload, path: PathBuf)
Apply a full repo payload to this tab, resetting transient UI state.
The currently selected commit (if any) is re-pinned by OID after the new commit list arrives, so background auto-refreshes (git-watcher or staging changes) never clear the user’s selection.
Auto Trait Implementations§
impl Freeze for RepoTab
impl RefUnwindSafe for RepoTab
impl Send for RepoTab
impl Sync for RepoTab
impl Unpin for RepoTab
impl UnsafeUnpin for RepoTab
impl UnwindSafe for RepoTab
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<State, Message> IntoBoot<State, Message> for State
impl<State, Message> IntoBoot<State, Message> for State
Source§fn into_boot(self) -> (State, Task<Message>)
fn into_boot(self) -> (State, Task<Message>)
Application.Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more