Resolution obtenue avec les patchs de chemin du workspace (libcosmic-yoda,
cosmic-protocols, window_clipboard, cosmic-text). Pas de changement de code,
uniquement le verrou remis en coherence avec l'arbre local.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Selection changes, scrolling and hyperlink highlights all just flag the
terminal as dirty. Without asking for a redraw they would not show up
until something else happens to repaint the window. This becomes a
problem after iced PR below gets merged.
Depends on
- [x] https://github.com/pop-os/iced/pull/377
- [x] https://github.com/pop-os/libcosmic/pull/1382
- [x] https://github.com/pop-os/libcosmic/pull/1388
- [x] https://github.com/pop-os/cosmic-files/pull/1815
____
- [x] I have disclosed use of any AI generated code in my commit
messages.
- If you are using an LLM, and do not fully understand the changes it is
making to the code base, do not create a PR.
- In our experience, AI generated code often results in overly complex
code that lacks enough context for a proper fix or feature inclusion.
This results in considerably longer code reviews. Due to this, AI
authored or partially authored PRs may be closed without comment.
- [x] I understand these changes in full and will be able to respond to
review comments.
- [x] My change is accurately described in the commit message.
- [x] My contribution is tested and working as described.
- [x] I have read the [Developer Certificate of
Origin](https://developercertificate.org/) and certify my contribution
under its conditions.
Le renommage d'onglet visait le panneau actif au moment de la validation
et non celui ou le renommage avait ete ouvert. L'ouverture appelle
unfocus_all_terminals(), si bien que `pane_model.active()` pouvait
designer un autre panneau au moment du commit : en configuration
scindee, le nouveau titre atterrissait sur l'onglet d'un panneau voisin.
`rename_tab` memorise desormais le panneau : (Pane, Entity, String) au
lieu de (Entity, String). L'ouverture le capture via focused(), et
commit, annulation et remise a zero le retrouvent par
panes.get(pane) au lieu de active_mut(). Le focus est rendu au panneau
d'origine via set_focus(pane) plutot que par update_terminal_focus(),
qui le laissait au petit bonheur.
Reprend le stash de 2026-06-13, fait sur 39d3d01. Le seul conflit
portait sur dialog(), ou la branche a gagne depuis le dialogue de
chargement de disposition : les deux sont conserves.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
`cosmic-term` currently has an issue where borders appear to separate
some cells columnwise. This was caused due to the accumulation of
floating point error when using font sizes that can't be fully
represented in an f32. For example, a font size of 8.4x20 and a unique
color per cell is enough to reproduce this. Essentially, the glyph
background rectangles are being drawn slightly too narrow, causing the
terminal background to leak through. This patch rounds the rectangles in
such a way that we guarantee the drawing of that "border" pixel using
floor() and ceil().
- Serialize pane grid splits and per-tab state to RON
- Save/load layout via cosmic-files dialogs with confirmation
- SSH submenu from ~/.ssh/config Host entries (no wildcards)
- i18n en/fr for layout and SSH menu entries
Implements the first batch of COSMIC_TERMINAL_KONSOLE_PARITY.md:
Save output as text:
- New SaveOutput action in the Edit menu, terminal context menu and
keyboard shortcuts (Ctrl+Shift+S, Konsole parity, rebindable).
- Terminal::scrollback_text() extracts history plus visible screen via
alacritty bounds_to_string, trimming trailing empty lines.
- Save-file dialog through cosmic-files; the file is written in a
spawn_blocking task so large scrollbacks never stall the UI.
Search options:
- Case-sensitive and regex checkboxes in the find bar.
- App::find_pattern() escapes the pattern when regex mode is off and
prefixes (?i) when case-insensitive (same approach as Alacritty).
Per-tab monitors (activity / silence / process finished):
- Toggles in the View menu and terminal context menu, state stored in
Terminal (monitor_* fields).
- Activity alerts on PTY output (Wakeup) for non-active tabs; silence
alerts after 10 s without output (Konsole default); process-finished
compares the shell pgrp with the tty tpgid via /proc/<pid>/stat and
alerts when the foreground job exits.
- Silence and process checks run on a 1 s iced::time subscription that
is only active while at least one tab needs it.
- Tab bar shows an armed icon (view-reveal-symbolic) and per-kind alert
icons; activating the tab acknowledges the alert.
Profile CLI:
- --profile/-p <name-or-id> applies a profile to the first tab only,
unknown profiles exit(1) with the available list on stderr.
- --list-profiles prints "id<TAB>name" and exits.
- Config is now loaded before the daemonize fork so CLI output reaches
the launching terminal.
- --help now documents -e/--command, --no-daemon and the new flags
(-e already worked; audit confirmed everything after it becomes the
command and its arguments).
i18n: new en/fr strings (save-output, monitor-*, find-case-sensitive,
find-regex).
Validated with ./check_cosmic_local.sh terminal, cargo fmt, and a debug
build exercising the CLI flags and a 6 s live run. The shutdown panic
in iced_winit ("async fn resumed after completion") pre-exists and is
reproducible with the installed binary.
Leyoda 2026 – GPLv3