feat: integrated editor, project templates, visual env vars, log search/download, multi-session terminal - #13
Conversation
…oad, multi-session terminal Co-authored-by: djpfs <43576725+djpfs@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
This PR delivers multiple developer-experience enhancements to the AppleDockerApp UI: a new integrated Compose/Dockerfile editor with project templates, improved environment-variable editing, searchable/downloadable logs, and multi-session container terminals backed by persistent AppState storage.
Changes:
- Added
ComposeEditorViewwith built-in project templates plus Open/Save support, and exposed it in the sidebar. - Reworked container environment variable editing into structured key/value rows with correct parsing of values containing
=. - Enhanced logs (container + compose) with search/filter UI and added “Download” actions; updated terminal to support multiple sessions per container.
Reviewed changes
Copilot reviewed 8 out of 8 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| Sources/AppleDockerApp/Views/ContainerTerminalView.swift | Implements multi-session terminal UI with tab bar and per-session panel. |
| Sources/AppleDockerApp/Views/ContainerTerminalSession.swift | Adds stable identity (objectID) and labeling for terminal sessions. |
| Sources/AppleDockerApp/Views/ContainerSettingsView.swift | Switches env vars to key/value entries and updates config serialization. |
| Sources/AppleDockerApp/Views/ContainerDetailView.swift | Adds log search/filter UI, highlighting, and download support for container logs. |
| Sources/AppleDockerApp/Views/ComposeView.swift | Adds compose log filtering UI and download support. |
| Sources/AppleDockerApp/Views/ComposeEditorView.swift | Introduces new integrated editor view + project templates sheet. |
| Sources/AppleDockerApp/AppState.swift | Updates terminal session storage to support multiple sessions per container. |
| Sources/AppleDockerApp/App.swift | Adds “Editor” sidebar item routing to ComposeEditorView. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| Button { | ||
| model.envVars.remove(at: index) | ||
| model.envVars.removeAll { $0.id == entry.id } | ||
| } label: { |
| let content = lines.joined(separator: "\n") | ||
| try? content.write(to: url, atomically: true, encoding: .utf8) |
| let content = state.composeLogLines.joined(separator: "\n") | ||
| try? content.write(to: url, atomically: true, encoding: .utf8) |
There was a problem hiding this comment.
@copilot Fix the code for all comments in this review comment.
When a review comment includes a suggested change, apply the suggestion exactly.
Do not make changes beyond what is described in the linked review comment.
Co-authored-by: djpfs <43576725+djpfs@users.noreply.github.com>
Adds five developer-experience improvements: an integrated file editor with project scaffolding templates, a visual env-var editor, searchable/filterable/downloadable logs, and a multi-session terminal per container.
Integrated Compose/Dockerfile Editor (
ComposeEditorView)TextEditorswitchable betweendocker-compose.ymlandDockerfileNSOpenPanel/NSSavePanel; file kind auto-detected on openProject Templates
Visual Environment Variable Management (
ContainerSettingsView)KEY=VALUEtext fields with separate Key / Value columnsSettingsModel.EnvEntrysplits on the first=only — preserves values that contain=Log Search, Filter & Download
AttributedStringmatch highlighting, "Errors only" toggle, line counter, and Download →NSSavePanelMulti-Session Terminal
[ContainerTerminalSession]inAppStateinstead of a single session+adds,×closes (last tab is protected)UUID objectID— avoidsForEachmis-renders when middle sessions are removed