Commit graph

274 commits

Author SHA1 Message Date
Tim Abell
1f035a8d6d
Stop project panel from over-expanding on focus
Focus previously switched the box from Size to Weight: 2, giving the
panel ~2/7 of the side area regardless of how many rows it had. That
also ignored Gui.ExpandFocusedSidePanel — every other side panel only
expands on focus when accordion mode is on.

Route the project box through the same accordionBox helper as the
others. Stays fitted to content normally; expands on focus only when
the user opted in.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 12:22:13 +01:00
Tim Abell
fb6f7fd380
Size project panel to fit its rows when unfocused
Previously hard-coded to Size: 3 (one visible row) on the assumption
there was only ever one project. With profile pseudo-projects you can
have several rows, but they were hidden until you focused the panel.

Sizes to Len()+2 (rows plus borders), clamped to [3, 8] so the
single-project case is unchanged and a project with many profiles
can't squeeze out the other side panels.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 11:44:19 +01:00
Tim Abell
9545538106
Add docker-compose profile support
Implements the design captured in docs/adr/0001-docker-compose-profile-support.md
(jesseduffield/lazydocker#423). Profiles render as pseudo-projects in the
project panel; selecting one filters the services and containers panels to
the services that activate with that profile, and Up/Down/Restart on the
selection use docker compose --profile X invocations.

Key choices:

- Profile is a flag on Project (IsProfile bool), not a new type. Avoids a
  generic-type split across the SideListPanel and CommandObject.

- Reuse existing command templates (Up, Down, DownWithVolumes, Restart,
  AllLogs, DockerComposeConfig). NewCommandObject appends --profile X when
  a profile context is set, so no separate UpProfile/DownProfile/... family
  is needed. Adds a new Restart template (master had no project-level
  restart at all).

- Discovery via 'docker compose config --profiles' and
  'docker compose --profile X config --services', cached on DockerCommand
  for the session. Soft-fails on error (logs once, caches empty) so the UI
  degrades to "no profile rows" rather than popping an error.

- Per-profile service filtering uses the local project and the profile's
  service set (default services + profile-X services, per docker semantics).

- No new keybinding for project/profile restart in this PR; handler exists
  for follow-up discussion.

- New unit tests cover NewCommandObject --profile injection, GetProfiles
  caching, GetProfileServices caching, and the soft-fail path.

fixes: https://github.com/jesseduffield/lazydocker/issues/423

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 14:48:50 +01:00
Jesse Duffield
f5ff116af9 Use IsProjectScoped at remaining call sites + add test
Addresses Copilot review comments on PR #797:
- Containers panel title, initial focus selection, and the local-project
  inclusion in getDiscoveredProjects all switched from
  InDockerComposeProject to IsProjectScoped, so they stay consistent
  when -p is given outside a compose dir.
- Adds TestIsProjectScoped table test covering all four combinations.

InDockerComposeProject is still used at the call sites that genuinely
require a compose dir (renderDockerComposeConfig, GetServices).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 12:47:30 +10:00
Jesse Duffield
3974f6fec1 Support -p flag and DRY up code 2026-04-19 12:16:55 +10:00
Daniel Dibiasi
b17d474148
Fixed forced project view 2026-04-16 09:23:12 +02:00
copilot-swe-agent[bot]
e3c1c8630a Hide project/services panels when not in a docker-compose project
Co-authored-by: jesseduffield <8456633+jesseduffield@users.noreply.github.com>
2026-03-15 22:26:03 +00:00
Jesse Duffield
26ce871368 Improve projects support 2026-03-15 14:53:48 +11:00
Jesse Duffield
826f0293f1 Fix types 2025-11-14 21:20:28 +11:00
Jesse Duffield
1178381e00
Merge pull request #599 from A11Might/feat-show-panel-number
Show jump panel keybindings in panel titles
2024-12-22 21:37:21 +11:00
kohath
b8a3ca1550 Show jump panel keybindings in panel titles 2024-11-25 21:27:27 +08:00
Clément PÉAU
e2bc42f4bb Merge branch 'master' into feature/issue-522-add-number-like-lazygit 2024-09-02 22:35:05 +02:00
Clément PÉAU
86cce84955 Add navigation via numbers
A la lazygit, we can now navigate between panels using numbers
(1,2,3,4,5,6,7)

Add translation for number navigation

reformat

oops

fix translation case & generate docs

pluralize networks
2024-07-26 15:58:45 +02:00
Sebastiaan van Stijn
77a4de4819
go.mod: github.com/docker/docker, docker/cli v27.0.3
Update to v27.0, and remove uses of deprecated types.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-07-15 11:44:09 +02:00
Sebastiaan van Stijn
2d16389add
go.mod: github.com/docker/docker, docker/cli v26.1.4
Update to v26.1, and remove uses of deprecated types.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-07-15 11:37:10 +02:00
Sebastiaan van Stijn
0232610967
go.mod: github.com/docker/docker, docker/cli v25.0.5
Update to v25.0, and remove uses of deprecated types.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-07-15 11:25:11 +02:00
Jesse Duffield
cdf1d9ad11 Remove loader code for confirmation panel
It wasn't being used and if it were to be used, there would be a memory
leak
2024-05-26 14:04:25 +10:00
Jesse Duffield
968b09e6c4 Bump gocui 2024-05-26 14:00:53 +10:00
Jesse Duffield
2729aafe2c Default to rounded corners 2024-05-26 13:52:34 +10:00
Jesse Duffield
ce780b8f6d
Merge pull request #529 from scottmckendry/master
feat: add 'border' option in config
2024-05-26 13:50:55 +10:00
Jesse Duffield
630ea7d324 Fix issue where logs were buggy after returning from subprocess
Turns out that upon switching to a subprocess we were cancelling ALL
periodic tasks, which includes re-rendering the main view ever 30ms.
This completely broke our log rendering and meant that it only updated
when an event occurred
2024-05-26 13:02:54 +10:00
Jesse Duffield
8a0fcf99f4 Gracefully handle situation when container details have not yet loaded
This should be very rare but it does happen sometimes
2024-05-26 12:27:01 +10:00
Jesse Duffield
bca15cf6b1 Get container details immediately after getting containers
Previously we separately obtained container details every second,
meaning there was a second of not knowing whether a given container was
using a TTY or not, and that meant we were using the wrong streaming
method for logs, which led to a black screen.
2024-05-26 12:19:17 +10:00
Jesse Duffield
a6ade7e78d Close stream when done with it
We should have been doing this from the start. Potential cause of a
memory leak?
2024-05-26 11:34:05 +10:00
Scott McKendry
dbf2bced5e feat: support for different border styles 2024-05-07 07:11:10 +12:00
Jesse Duffield
2dda39dff0 Appease linter 2023-10-10 17:39:09 +11:00
Miguel Figueira Ferraz
50582db9b7
feat(i18n): 🌐 Portuguese translation (#479)
Co-authored-by: Jesse Duffield <jessedduffield@gmail.com>
2023-09-19 22:44:27 +10:00
Luka Markušić
937a6a9c93
Re-enable custom command template application (#470) 2023-08-03 20:38:53 +10:00
tiagovla
454eaee2cf
feat: add selectedLineBgColor theme customization (#420) 2023-07-21 18:31:27 +10:00
Martin Cross
dffe6970aa
Short status (#419)
Co-authored-by: Martin Cross <martinidc1992@gmail.com>
2023-07-21 18:22:18 +10:00
Rdkang
07f26c1e91
Allow setting default screenMode (#421) 2023-07-21 18:08:21 +10:00
Jesse Duffield
e5ca391291
287 Display hotkeys to detach from the container (#465)
Co-authored-by: glendsoza <glendsouza23@gmail.com>
2023-07-21 17:47:00 +10:00
Tony Soloveyv
2a9ed70896
Allow to render container stats and configs both in json and yaml (#444) 2023-05-21 14:06:56 +10:00
Tony-Sol
ce95ddea2a
Add networks panel 2023-03-06 01:25:23 +03:00
Gustavo Andrioli
d77b895319 Wrap custom commands on shell 2022-12-01 19:04:29 +11:00
Jesse Duffield
821cd81b72 allow configuring number of logs to tail 2022-11-23 20:58:35 +11:00
Jesse Duffield
b0cef73dc1 hide underscores on VSCode integrated terminal while they're glitchy 2022-11-15 19:44:26 +11:00
Jesse Duffield
3e2a3e608a update cheatsheet 2022-11-10 20:13:41 +11:00
Jesse Duffield
b7fea7a44d separate quit and close options 2022-11-10 19:45:32 +11:00
Jesse Duffield
d1ccf11502 small refactor 2022-11-10 19:42:02 +11:00
Jesse Duffield
b0241c79db use context instead of struct channel 2022-11-10 19:38:49 +11:00
Jesse Duffield
7f38cf2ab2 fix some things 2022-11-10 19:27:28 +11:00
Jesse Duffield
52040d1d99 better way of rendering to the main view 2022-11-10 19:14:12 +11:00
Jesse Duffield
5ffbeae3e8 preparing to refactor main render functions 2022-11-09 21:21:36 +11:00
Jesse Duffield
7324254414 better name: GetTableCells 2022-11-09 21:21:36 +11:00
Jesse Duffield
d6ad538426 refactor side list panel some more 2022-11-09 21:21:36 +11:00
Jesse Duffield
02a03ed18d move container stats stuff into presentation layer 2022-11-09 21:21:36 +11:00
Jesse Duffield
a87b698761 move things into presentation package 2022-11-09 21:21:36 +11:00
Jesse Duffield
fc592b5806 more refactoring of list panels 2022-11-09 21:21:36 +11:00
Jesse Duffield
5d498c796a move context stuff into its own struct 2022-11-09 21:21:36 +11:00