-
Notifications
You must be signed in to change notification settings - Fork 0
Workflows
This page documents common workflows, interaction patterns, and behavior matrices for Forge.
- Focus-Based Behavior Matrix
- Dashboard → Changes Workflow
- Merge Conflict Resolution Workflow
- Module Management Workflow
- Remote Operations Workflow
The app tracks two focus modes that determine which keybindings are active:
- Menu Focus — Top-bar menu is active (highlighted in yellow/bold)
- View Focus — Content area (current view) is active (default starting state)
| Context | Focus | Key | Behavior |
|---|---|---|---|
| Any | Menu | Tab |
Cycle menu items |
| Any | Menu | Up/Down |
Navigate menu |
| Any | Menu | Enter |
Switch to view, set focus=View |
| Dashboard | View | Tab |
Go to Changes, sync menu |
| Changes | View | Tab |
Go to History, sync menu |
| Changes | View | Space |
Toggle staging for selected file |
| Changes | View | Enter |
Commit staged files |
| Any | View | Esc |
Return focus to menu |
| Any | View | ? |
Toggle help overlay |
| Dashboard | View | Ctrl+F |
Toggle search mode |
Focus State Indication:
- Menu Focus: Top-bar menu is highlighted (yellow/bold)
- View Focus: Status bar shows "Focus: Menu" or "Focus: View"
-
Tab Behavior: Changes based on focus
- In Menu focus: cycles menu items
- In View focus: cycles between views (Dashboard → Changes → History → Branches → Merge → Board → Modules → Settings)
Menu Selection Sync:
- When tabbing in View focus, the menu selection index automatically syncs with the current view
- Pressing
Escin any view returns focus to the menu without changing views
This is the primary workflow for viewing and staging file changes.
1. User sees list of projects (Git-discovered)
2. Select project with Up/Down
3. Press Tab → Switch to Changes view
4. View shows:
- Left: File list from git status
- Right: Diff preview for selected file
5. Press Space to stage/unstage files
6. Type commit message
7. Press Enter to commit (only commits staged files)
-
Project Selection
- Dashboard displays all Git repositories discovered in the workspace
- Use
Up/Downarrow keys to navigate - Selected project is highlighted
-
Navigate to Changes
- Press
Tabto switch to Changes view - View focus automatically set to View mode
- Press
-
Review File Changes
- Left pane: List of changed files from
git status - Right pane: Diff preview for selected file
- Files marked with status: Modified (M), Added (A), Deleted (D), Untracked (?)
- Left pane: List of changed files from
-
Stage Files
- Navigate to desired file with
Up/Down - Press
Spaceto toggle staging - Staged files show with
[S]marker
- Navigate to desired file with
-
Commit Changes
- Type commit message in the commit message area
- Press
Enterto commit staged files - Commit only applies to staged files (Git default behavior)
-
Remote Operations (if implemented)
- Press
fto fetch from remote - Press
pto push to remote - Status messages display operation results
- Press
Visual workflow for resolving Git merge conflicts.
1. Git detects merge conflict
2. User navigates to Merge Visualizer (Tab through views)
3. View shows:
- Left pane: List of conflicted files
- Center pane: Local version diff
- Right pane: Incoming version diff
4. User resolves mentally, chooses which to accept
5. Press Left/Right to focus different panes
6. Press Enter to mark chosen pane as "accepted" (green highlight)
7. Accepted choices tracked in HashMap<FilePath, ResolutionChoice>
-
Conflict Detection
- Merge conflicts are detected automatically via
git status - Conflicted files appear with special marker
- Merge conflicts are detected automatically via
-
Navigate to Merge Visualizer
- Press
Tabrepeatedly to reach Merge Visualizer view - Or use menu navigation to select directly
- Press
-
Review Conflicts
- Left pane: List of all conflicted files
- Center pane: Local version (your changes)
- Right pane: Incoming version (their changes)
- Navigate conflicted files with
Up/Down
-
Choose Resolution
- Press
Leftto focus center pane (local version) - Press
Rightto focus right pane (incoming version) - Press
Enterto mark chosen version as accepted - Accepted pane is highlighted in green
- Press
-
Track Decisions
- Resolution choices are tracked in a HashMap
- Format:
HashMap<FilePath, ResolutionChoice> - Can review all decisions before finalizing
-
Finalize Resolution
- Once all conflicts are resolved, exit to Changes view
- Stage resolved files and commit as normal
Workflow for managing project modules and team developers.
1. Navigate to Modules view (Tab multiple times)
2. Left side: Modules list | Right side: Developers list
3. In Modules list:
- Press 'n' to create new module
- Press 'e' to edit selected module name
- Press 'd' to delete module
- Press 'a' to assign developer
4. In Developers list:
- Press 'n' to create new developer
- Press 'd' to delete developer
5. Data persisted to .forge/*.json on each change
-
Navigate to Modules View
- Press
Tabrepeatedly until Modules view is active - Or use menu to select Modules directly
- Press
-
Module Management (Left Pane)
-
Create New Module:
- Press
nto enter creation mode - Type module name
- Press
Enterto confirm
- Press
-
Edit Module:
- Navigate to module with
Up/Down - Press
eto enter edit mode - Modify name
- Press
Enterto save
- Navigate to module with
-
Delete Module:
- Navigate to module with
Up/Down - Press
dto delete (confirmation prompt may appear)
- Navigate to module with
-
Assign Developer:
- Navigate to module with
Up/Down - Press
ato assign developer from list - Select developer from popup
- Navigate to module with
-
Create New Module:
-
Developer Management (Right Pane)
- Press
TaborRightto switch to Developers pane -
Create New Developer:
- Press
nto enter creation mode - Type developer name
- Press
Enterto confirm
- Press
-
Delete Developer:
- Navigate to developer with
Up/Down - Press
dto delete - Unassigns developer from all modules
- Navigate to developer with
- Press
-
Data Persistence
- All changes are automatically persisted to
.forge/modules.jsonand.forge/developers.json - Files created in repository root if not present
- JSON format for easy manual editing if needed
- All changes are automatically persisted to
-
Progress Tracking
- Module progress is tracked separately in
.git/forge/progress.txt - Progress increments on commits associated with modules
- Progress caps at 100% (saturation math)
- Module progress is tracked separately in
Workflow for fetch and push operations with remote repositories.
Note: This feature was implemented on January 20, 2026. Key UX consideration: fetch (f) and push (p) shortcuts only trigger when NOT typing a commit message, allowing users to type characters like "fix bug" without losing the 'f' or 'p' characters.
1. User is in Dashboard or Changes view
2. Press 'f' to fetch from remote
- Status bar shows: "Fetching from origin..."
- On success: "✓ Fetched N objects from origin"
- On failure: "✗ Fetch failed: <error message>"
3. Press 'p' to push to remote
- Status bar shows: "Pushing to origin..."
- On success: "✓ Pushed to origin"
- On failure: "✗ Push failed: <error message>"
4. Operations execute in background with status feedback
-
Fetch from Remote
- Ensure you're in Dashboard or Changes view (not typing commit message)
- Press
fkey - Status message appears: "Fetching from origin..."
- On success: Git fetch completes, status shows objects fetched
- On failure: Error message displayed in status bar
-
Push to Remote
- Ensure you're in Dashboard or Changes view (not typing commit message)
- Ensure you have commits to push
- Press
pkey - Status message appears: "Pushing to origin..."
- On success: Commits pushed to remote
- On failure: Error message displayed (e.g., "permission denied", "non-fast-forward")
-
Commit Message Context
- When typing a commit message,
fandpkeys insert the characters normally - Fetch/push shortcuts are disabled during commit message entry
- This prevents accidental remote operations when typing messages like "fix bug" or "update packages"
- When typing a commit message,
-
Status Bar Feedback
- All remote operations provide immediate visual feedback
- Success messages: Green checkmark (✓)
- Failure messages: Red cross (✗)
- Clear, actionable error messages for troubleshooting
- Keyboard Shortcuts — Complete keybinding reference
- Features — All implemented features
- Architecture — System design and data flow
- Getting Started — Installation and first run