Frontend app shell — GTK4/RELM4 layout & bootstrap #13
Labels
No labels
area:config
area:contracts
area:engine
area:eventsourcing
area:frontend
area:git
area:ipc
area:persistence
area:provider
area:scaffold
area:terminal
type:user-story
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/peon#13
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
User story
As a user launching forge-agent, I want the application to start with a GTK4/libadwaita window showing the main layout (sidebar + content area with header bar), with the tokio backend running in a background thread and IPC channels connected, so that I see a functional shell ready for interaction.
Acceptance criteria
Bootstrap (
app/src/main.rs)tokio::runtime::Runtimein a separate threadIpcChannels(mpsc + broadcast)backend::start(command_rx, event_tx)on the tokio runtimeadw::Applicationwith app IDdev.forge-agent.appIpcClientto the frontendbuild_ui()functionLogging
tracing_subscriberinitialized with env filter and file output to~/.local/share/forge-agent/logs/RUST_LOGenv var)AppModel (RELM4 root component,
frontend/src/app.rs)AppModelstruct with:ipc: IpcClient,read_model: OrchestrationReadModel,active_view: ActiveViewAppMsgenum with variants:DomainEvent,TerminalOutput,GitStatusUpdated,SelectThread,SelectProject,SendMessage,SwitchViewActiveViewenum:Chat,Diff,SettingsAppEventfrom IPC and forwards asAppMsgDomainEvent: updates localread_modelviaproject()foldGTK4 layout
AdwApplicationWindowas the rootAdwOverlaySplitViewwith collapsible sidebarAdwNavigationPage→AdwToolbarViewwithAdwHeaderBar(new thread button) and placeholder content areaAdwNavigationView→AdwNavigationPagewithAdwToolbarView,AdwHeaderBar(thread title, git branch indicator, diff/terminal toggle buttons)gtk::Paned(vertical) with placeholder for chat view (top) and message input (bottom)Graceful shutdown
Tests
Out of scope
References
Dependencies
issue-7-engine