Skip to content

feat(ui): Add service aside panel#141

Merged
tab merged 8 commits into
masterfrom
feature/service-info-aside
Jun 5, 2026
Merged

feat(ui): Add service aside panel#141
tab merged 8 commits into
masterfrom
feature/service-info-aside

Conversation

@tab
Copy link
Copy Markdown
Owner

@tab tab commented Jun 2, 2026

  • Add Enter keybind to open a side panel with config, env, and health tabs
  • Switch focus between panels with \ keybind

Add Enter keybind to open a side panel with config, env, and health tabs
Switch focus between panels with \ keybind
@tab tab requested a review from Copilot June 2, 2026 20:06
@tab tab self-assigned this Jun 2, 2026
@sentry
Copy link
Copy Markdown

sentry Bot commented Jun 2, 2026

Codecov Report

❌ Patch coverage is 88.88889% with 96 lines in your changes missing coverage. Please review.
✅ Project coverage is 89.57%. Comparing base (10dbb7f) to head (d064c07).

Files with missing lines Patch % Lines
internal/app/ui/services/aside.go 89.51% 25 Missing and 12 partials ⚠️
internal/app/ui/components/layout.go 68.60% 23 Missing and 4 partials ⚠️
internal/app/ui/services/update.go 89.41% 8 Missing and 1 partial ⚠️
internal/app/dotenv/parse.go 88.46% 3 Missing and 3 partials ⚠️
internal/app/ui/services/model.go 45.45% 6 Missing ⚠️
internal/app/ui/services/view.go 95.41% 4 Missing and 2 partials ⚠️
internal/app/dotenv/dotenv.go 91.52% 3 Missing and 2 partials ⚠️
Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##           master     #141      +/-   ##
==========================================
+ Coverage   89.48%   89.57%   +0.09%     
==========================================
  Files          63       66       +3     
  Lines        5896     6658     +762     
==========================================
+ Hits         5276     5964     +688     
- Misses        487      536      +49     
- Partials      133      158      +25     
Files with missing lines Coverage Δ
internal/app/app.go 66.03% <100.00%> (ø)
internal/app/ui/components/theme.go 100.00% <100.00%> (ø)
internal/app/ui/services/helpers.go 100.00% <100.00%> (ø)
internal/app/ui/services/keys.go 100.00% <100.00%> (ø)
internal/config/config.go 100.00% <ø> (ø)
internal/app/dotenv/dotenv.go 91.52% <91.52%> (ø)
internal/app/dotenv/parse.go 88.46% <88.46%> (ø)
internal/app/ui/services/model.go 70.83% <45.45%> (-1.15%) ⬇️
internal/app/ui/services/view.go 96.91% <95.41%> (-1.23%) ⬇️
internal/app/ui/services/update.go 80.28% <89.41%> (+5.81%) ⬆️
... and 2 more
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new service “info aside” panel to the TUI (opened via enter) that displays per-service configuration, environment (.env) values, and health details, including focus switching between panes and tab navigation. This extends fuku’s interactive UI to surface more service metadata inline while also introducing a new (optional) config surface for env-file display and a new dotenv cache subscriber.

Changes:

  • Add a split-pane services UI with an aside panel (config/env/health), focus toggle, tab navigation, and rendering/layout optimizations.
  • Introduce a dotenv bus subscriber + loader to parse/merge .env* files for display (without exporting values to child processes).
  • Update configuration schema (services.*.env.files) and docs/examples to support the env tab.

Reviewed changes

Copilot reviewed 33 out of 34 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
README.md Documents the new aside panel and keybindings (needs alignment with actual bindings/behavior).
internal/config/config.go Extends service config schema with env.files for dotenv display.
internal/app/ui/wire/module.go Wires the dotenv loader into the UI model via FX.
internal/app/ui/wire/module_test.go Updates UI wiring tests to provide a dotenv mock.
internal/app/ui/services/view.go Renders split panels and adds caching/conditional UI elements for aside mode.
internal/app/ui/services/view_test.go Adds coverage for split widths, aside visibility rules, and panel sizing behavior.
internal/app/ui/services/update.go Adds key handling for opening/closing aside, tab switching, and focus toggling.
internal/app/ui/services/update_test.go Adds extensive tests for aside open/close, focus/scroll routing, and resize behavior.
internal/app/ui/services/model.go Stores config + dotenv loader and adds aside state, viewports, and render caches.
internal/app/ui/services/keys.go Adds bindings for opening/closing aside, tab switching, and focus toggle; adds aside-specific help keymap.
internal/app/ui/services/keys_test.go Validates the new keybindings and aside help keymap behavior.
internal/app/ui/services/helpers.go Adds panel width computation, compact layout mode, and viewport recomputation for split view.
internal/app/ui/services/aside.go Implements aside rendering (tabs, cards, truncation, scroll indicator) including env/health tabs.
internal/app/ui/services/aside_test.go Adds coverage for aside content rendering, truncation, tab cycling, and env display.
internal/app/ui/components/theme.go Adds placeholder color/style used by aside empty states.
internal/app/ui/components/styles.go Adds muted border style and shared content top margin style.
internal/app/ui/components/layout.go Refactors panel rendering to line-based output, adds border text fitting, compact layout, and metric column support.
internal/app/ui/components/layout_test.go Updates/extends tests for new layout APIs and border truncation/fitting.
internal/app/ui/components/constants.go Adds aside sizing constants and compact status width constant.
internal/app/module.go Registers the dotenv FX module.
internal/app/dotenv/parse.go Adds .env parsing + merge logic (needs security hardening).
internal/app/dotenv/parse_test.go Tests dotenv parsing and merge ordering/override behavior.
internal/app/dotenv/module.go Adds FX module and lifecycle hook to run the loader.
internal/app/dotenv/dotenv.go Implements dotenv loader as a bus subscriber caching merged env entries per service ID.
internal/app/dotenv/dotenv_test.go Tests loader caching, reload behavior, and event handling.
internal/app/dotenv/dotenv_mock.go Adds generated gomock for the dotenv Loader interface.
go.mod Promotes github.com/charmbracelet/x/ansi to a direct dependency for ANSI-aware truncation.
fuku.yaml Updates sample config with env.files anchor for the env tab display.
examples/bookstore/auth/.env.test.local Adds example env file contents for the bookstore auth service.
examples/bookstore/auth/.env.test Adds example env file contents for the bookstore auth service.
examples/bookstore/auth/.env.development.local Adds example env file contents for the bookstore auth service.
examples/bookstore/auth/.env.development Adds example env file contents for the bookstore auth service.
examples/bookstore/auth/.env Adds example env file contents for the bookstore auth service.
CLAUDE.md Updates internal project notes to mention the aside panel and service ID conventions.
Files not reviewed (1)
  • internal/app/dotenv/dotenv_mock.go: Language not supported

Comment thread README.md Outdated
Comment thread README.md Outdated
Comment thread internal/config/config.go
Comment thread internal/app/ui/services/update.go
Comment thread internal/app/ui/services/update.go
Comment thread internal/app/ui/services/helpers.go
Comment thread internal/app/dotenv/parse.go
Comment thread internal/app/dotenv/parse.go Outdated
Comment thread examples/bookstore/auth/.env
tab added 2 commits June 2, 2026 23:35
- Update documentation to specify that fuku loads its own environment files for process configuration
- Clarify that per-service env files are only for display in the TUI info aside
- Mention the override mechanism with env.files in configuration
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 40 out of 41 changed files in this pull request and generated 7 comments.

Files not reviewed (1)
  • internal/app/dotenv/dotenv_mock.go: Language not supported

Comment thread README.md Outdated
Comment thread docs/src/pages/features/tui.astro
Comment thread docs/src/components/Screenshot.astro
Comment thread docs/src/components/demos/TuiDemo.astro
Comment thread examples/bookstore/auth/.env
Comment thread examples/bookstore/auth/.env.development.local
Comment thread examples/bookstore/auth/.env.test.local
Wrap long .env values (URLs, JWTs, connection strings) to make them visible
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 40 out of 41 changed files in this pull request and generated 11 comments.

Files not reviewed (1)
  • internal/app/dotenv/dotenv_mock.go: Language not supported

Comment thread README.md Outdated
Comment thread docs/src/pages/features/tui.astro Outdated
Comment thread internal/app/dotenv/parse.go Outdated
Comment thread internal/app/ui/services/aside.go
Comment thread examples/bookstore/auth/.env
Comment thread examples/bookstore/auth/.env.development
Comment thread examples/bookstore/auth/.env.development.local
Comment thread examples/bookstore/auth/.env.development.local
Comment thread examples/bookstore/auth/.env.test
Comment thread examples/bookstore/auth/.env.test.local
@tab tab merged commit a63b869 into master Jun 5, 2026
10 checks passed
@tab tab deleted the feature/service-info-aside branch June 5, 2026 20:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants