Conversation
This method allows applications to reset the terminal scroll position to the bottom, which is useful after clearing the terminal screen. Fixes scrolling issues after clear command.
This method allows clearing the terminal scrollback history, which is useful after clear command to reset terminal size and scroll position.
Fixes mouse wheel scrolling in ncurses-based applications (opencode, tmux, less, vim) that use alternate screen mode. Changes: - Fix terminal mode priority: MOUSE_MODE now takes precedence over ALTERNATE_SCROLL - Separate keyboard/mouse event handling: keyboard requires focus, mouse only requires pointer over widget - Rewrite process_mouse_wheel() to send correct SGR mouse wheel reports when MOUSE_MODE is active - Simplify backend::scroll() to only handle viewport scrolling - Invert scroll direction to match standard behavior This matches alacrity's scroll handling priority order and allows applications with mouse support to receive proper mouse wheel events instead of arrow key sequences.
…h in tabs example - Allow passing shell arguments via BackendSettings.args API - Tabs example now uses SHELL env var with fallback to bash - Automatically adds --login argument for bash shells - Fix scroll behavior when display_offset is not zero
- Store JoinHandle for threads to prevent them from being detached - Add Drop implementation that kills child process with SIGKILL - Add libc dependency for kill system call - This fixes orphaned opencode processes when closing tabs
Add Event::Cut handling to properly send ^X (0x18) to terminal when Ctrl+X is pressed without text selection. This fixes the issue where Ctrl+X was intercepted by egui and never reached the terminal.
Replace the broken ^V hotfix with proper bracketed paste implementation: - Detect when terminal is in BRACKETED_PASTE mode - Wrap pasted text with \e[200~ and \e[201~ markers - Filter escape sequences that could terminate paste early - In normal mode, replace newlines with carriage returns This fixes the issue where pasting multi-line text would insert it character-by-character instead of as a block.
Previously, selectable_content() only appended characters without adding newlines between rows, causing multi-line selections to copy as a single line. Now adds '\n' when transitioning to a new line in the terminal grid.
| # egui_term fork gives you: | ||
|
|
||
| # egui_term | ||
| ## Bug Fixes |
There was a problem hiding this comment.
Looks like AI Slop that was not double checked by human
There was a problem hiding this comment.
@Harzu
I am using this fixes every hour for about a week. Yes, I am not rust developer, I use LLM to create Rust Code.
But saying this is AI slop... Hm... Okay, but it works for me very well.
Never mind then.
There was a problem hiding this comment.
Your AI Agent is override README.md file, so I made a conclusion that you don't recheck this, so I made the second conclusion that this is AI Slop
There was a problem hiding this comment.
@Harzu , oh, this is MY WISH to override readme.md file. This is not for PR, this is just highlight of what I've found and fixed and what my fork does. This is readme for my fork.
There was a problem hiding this comment.
@Harzu I am not asking to merge this code, I am asking to view and may be you can find some good things and fixes for the main repository.
There was a problem hiding this comment.
https://github.com/OrelSokolov/yaaa I use your repo here, thank you!
| @@ -7,14 +8,20 @@ pub struct BackendSettings { | |||
| pub shell: String, | |||
| pub args: Vec<String>, | |||
| pub working_directory: Option<PathBuf>, | |||
| pub env: HashMap<String, String>, | |||
| } | |||
|
|
|||
| impl Default for BackendSettings { | |||
| fn default() -> Self { | |||
| let mut env = HashMap::new(); | |||
| env.insert("TERM".to_string(), "xterm-256color".to_string()); | |||
| env.insert("COLORTERM".to_string(), "truecolor".to_string()); | |||
|
|
|||
| Self { | |||
| shell: DEFAULT_SHELL.to_string(), | |||
| args: vec![], | |||
| working_directory: None, | |||
| env, | |||
| } | |||
| } | |||
| } | |||
There was a problem hiding this comment.
Yeah, I know AI can be pretty straight forward and hardcode something stupid. This is just highlight of bugs I found while using your repository.
May be you know how to fix this better, this is just "check this out, please".
There was a problem hiding this comment.
I got it now thanks, if think about it as an issue highlights rather than of code contribution, it might make sense, could you please create an issues and link this PR?
There was a problem hiding this comment.
do you suggest to make separate Pull requests for each issue?
There was a problem hiding this comment.
If you split it to small different issues with MRs (for examples). I'll really appreciate. You can also create several issues and link this big MR to each of them, I think the second variant is better
- Add SearchState to track search query, matches, and current match - Add search panel with text input, Search Up/Down buttons - Add orange highlight for search matches - Support CTRL+F to toggle search panel - Support F3/Shift+F3 and Enter/Shift+Enter for navigation - Support Escape to close search - Auto-scroll to found matches
- Use self.has_focus instead of layout.has_focus() for keyboard events - Only handle search-related keys (Escape, F3, Ctrl+Enter, Ctrl+F) when search is active - Let TextEdit receive regular text input when search panel is open
- Terminal surrenders focus when search panel is active - Search input requests focus via ctx.memory_mut like settings window - Added id to TextEdit for focus tracking
- Removed search panel UI - should be implemented in consumer app - Keep SearchState and backend search methods - Keep search highlight rendering (orange color) - Consumer app can build its own UI using search_set_query, search_next, search_prev, scroll_to_point
Actually this is AI ( not human ) fixes for some common terminal features, but you can take a few ones if you like.