diff --git a/README.md b/README.md
index f1abf84be..3e4192d13 100644
--- a/README.md
+++ b/README.md
@@ -27,12 +27,14 @@
-
+
+
+
## Requirements
-OpenCode Manager requires **OpenCode 2.x at 2.0.15 or newer** (bundled 2.0.15). OpenCode 1.x and 3.x are not supported. If you are upgrading from OpenCode 1.x, see the [v1 → v2 migration guide](https://opencode.ai/v2/docs/migrate-v1). On first start, OpenCode 2 migrates V1 session history in the background, so older sessions can be missing or incomplete until it finishes; progress is reported by OpenCode at `GET /api/experimental/migration/v1`.
+OpenCode Manager requires **OpenCode 2.x at 2.0.15 or newer** (bundled 2.0.15); OpenCode 1.x is not supported. Upgrading from 1.x? See the [v1 → v2 migration guide](https://opencode.ai/v2/docs/migrate-v1). OpenCode 2 migrates V1 session history in the background on first start, so older sessions can be incomplete until it finishes; progress is reported at `GET /api/experimental/migration/v1`.
## Quick Start
diff --git a/docs/features/chat.md b/docs/features/chat.md
index 8c85ea8e1..a044f1a78 100644
--- a/docs/features/chat.md
+++ b/docs/features/chat.md
@@ -2,15 +2,6 @@
Real-time chat interface for interacting with AI agents.
-## Starting a Session
-
-1. Select a repository from the sidebar
-2. Click **New Session** or type `/new`
-3. Type your message in the input field
-4. Press **Enter** to send
-
-Each session maintains its own conversation history and context.
-
## Real-time Streaming
Messages stream in real-time using Server-Sent Events (SSE):
@@ -23,26 +14,11 @@ Messages stream in real-time using Server-Sent Events (SSE):
## Model Selection
-Click the **model name** in the chat prompt area to open the quick model switcher. From there you can:
-
-- Switch to a favorite or recently used model without leaving the chat
-- Toggle favorites (star icon next to the active model)
-- Pick a model variant (highlighted in orange when available)
-- Open **All Models…** to browse the full model list
-
-Each agent retains its own model selection — switching agents restores the model last used with that agent. See [AI Configuration](ai-config.md#model-selection) for the full reference.
+Click the **model name** in the chat prompt area to open the quick model switcher, where you can switch models, mark favorites, and pick variants without leaving the chat. Each agent keeps its own model selection. See [AI Configuration](ai-config.md#model-selection) for the full reference.
## Slash Commands
-Type `/` to see available commands:
-
-### Built-in Commands
-
-| Command | Description |
-|---------|-------------|
-| `/help` | Show available commands |
-| `/new` | Start a new session |
-| `/compact` | Compact session context |
+Type `/` to see available commands. Built-in commands are covered in the [Quick Start](../getting-started/quickstart.md#useful-commands).
### Custom Commands
@@ -65,14 +41,7 @@ Use with `/review` in chat.
## File Mentions
-Reference files in your prompts with `@`:
-
-1. Type `@` in the chat input
-2. Start typing a filename
-3. Select from the autocomplete dropdown
-4. The file reference is inserted
-
-When you send the message, the AI has access to that file's contents.
+Reference files and folders in prompts with `@`. Type `@`, start typing a name, and select from the autocomplete dropdown; the AI then has access to that file's contents.
### Multiple Files
@@ -160,13 +129,7 @@ Find sessions by content:
### Pinning Sessions
-Pin important sessions to the top of your session list:
-
-1. Open the session actions menu (three dots on the session card)
-2. Select **Pin to top**
-3. The session moves to a **Pinned** section above the **Recent** section
-
-Pinned sessions stay at the top regardless of age or activity. Unpin anytime from the same menu. See [Session Pinning](session-pins.md) for details.
+Pin important sessions to the top of the list. See [Session Pinning](session-pins.md) for details.
### Deleting Sessions
@@ -209,8 +172,6 @@ Use `/new` to start a new session when:
| Shortcut | Action |
|----------|--------|
-| `Enter` | Send message |
-| `Shift+Enter` | New line in message |
| `↑` | Edit last message |
| `/` | Open command menu |
| `@` | Open file mention menu |
diff --git a/docs/features/server-health.md b/docs/features/server-health.md
index bfa3b0384..4f09c15da 100644
--- a/docs/features/server-health.md
+++ b/docs/features/server-health.md
@@ -18,7 +18,7 @@ OpenCode Manager runs a supervised OpenCode server process to handle agent sessi
The panel also displays:
-- **OpenCode version** — The installed version of the OpenCode server (e.g., `v2.0.15`). OpenCode Manager requires OpenCode 2.x at 2.0.15 or newer; a 1.x, 3.x, or older 2.x binary fails to start.
+- **OpenCode version** — The installed version of the OpenCode server (e.g., `v2.0.15`). OpenCode Manager requires OpenCode 2.x at 2.0.15 or newer; a 1.x or older 2.x binary fails to start.
- **Manager version** — The current OpenCode Manager version (e.g., `v0.14.5`)
## Health Monitoring
diff --git a/docs/images/ai-config-providers.png b/docs/images/ai-config-providers.png
index 8d4cfab49..b82d459c1 100644
Binary files a/docs/images/ai-config-providers.png and b/docs/images/ai-config-providers.png differ
diff --git a/docs/images/assistant-page.png b/docs/images/assistant-page.png
index 474f15fe5..5025eccd4 100644
Binary files a/docs/images/assistant-page.png and b/docs/images/assistant-page.png differ
diff --git a/docs/images/chat-conversation.png b/docs/images/chat-conversation.png
index 452ad9016..bf7bf1143 100644
Binary files a/docs/images/chat-conversation.png and b/docs/images/chat-conversation.png differ
diff --git a/docs/images/chat-session-list.png b/docs/images/chat-session-list.png
index fc91829cf..41d4fb057 100644
Binary files a/docs/images/chat-session-list.png and b/docs/images/chat-session-list.png differ
diff --git a/docs/images/file-browser.png b/docs/images/file-browser.png
index d44a6ce40..6f60488be 100644
Binary files a/docs/images/file-browser.png and b/docs/images/file-browser.png differ
diff --git a/docs/images/git/git-branch.png b/docs/images/git/git-branch.png
index 522220c11..d2d93d773 100644
Binary files a/docs/images/git/git-branch.png and b/docs/images/git/git-branch.png differ
diff --git a/docs/images/git/git-changes.png b/docs/images/git/git-changes.png
index 2089ad8ea..6398621ef 100644
Binary files a/docs/images/git/git-changes.png and b/docs/images/git/git-changes.png differ
diff --git a/docs/images/git/git-commits.png b/docs/images/git/git-commits.png
index 524046122..e8ca3779b 100644
Binary files a/docs/images/git/git-commits.png and b/docs/images/git/git-commits.png differ
diff --git a/docs/images/git/git-diffview.png b/docs/images/git/git-diffview.png
index 5edb6deab..abcf35eee 100644
Binary files a/docs/images/git/git-diffview.png and b/docs/images/git/git-diffview.png differ
diff --git a/docs/images/mcp-servers-list.png b/docs/images/mcp-servers-list.png
index 5fadba361..20678731e 100644
Binary files a/docs/images/mcp-servers-list.png and b/docs/images/mcp-servers-list.png differ
diff --git a/docs/images/mobile-repo-session-sheet.webp b/docs/images/mobile-repo-session-sheet.webp
new file mode 100644
index 000000000..6b489431d
Binary files /dev/null and b/docs/images/mobile-repo-session-sheet.webp differ
diff --git a/docs/images/mobile-sessions.png b/docs/images/mobile-sessions.png
index 96da2655c..d39039dca 100644
Binary files a/docs/images/mobile-sessions.png and b/docs/images/mobile-sessions.png differ
diff --git a/docs/images/notifications-settings.png b/docs/images/notifications-settings.png
index 6a9fc1832..67f24b72e 100644
Binary files a/docs/images/notifications-settings.png and b/docs/images/notifications-settings.png differ
diff --git a/docs/images/ocmgr-main.webp b/docs/images/ocmgr-main.webp
index 843efda28..72e07b2bf 100644
Binary files a/docs/images/ocmgr-main.webp and b/docs/images/ocmgr-main.webp differ
diff --git a/docs/images/ocmgr-mobile.webp b/docs/images/ocmgr-mobile.webp
index 64f729e3e..a7c1cc0c9 100644
Binary files a/docs/images/ocmgr-mobile.webp and b/docs/images/ocmgr-mobile.webp differ
diff --git a/docs/images/preview-chat-page.png b/docs/images/preview-chat-page.png
index 0634dedad..9d78a5177 100644
Binary files a/docs/images/preview-chat-page.png and b/docs/images/preview-chat-page.png differ
diff --git a/docs/images/preview-files-page.png b/docs/images/preview-files-page.png
index 247921544..3d334cb57 100644
Binary files a/docs/images/preview-files-page.png and b/docs/images/preview-files-page.png differ
diff --git a/docs/images/preview-mcp-page.png b/docs/images/preview-mcp-page.png
index adeb1b3a4..8130de5ca 100644
Binary files a/docs/images/preview-mcp-page.png and b/docs/images/preview-mcp-page.png differ
diff --git a/docs/images/preview-notifications-page.png b/docs/images/preview-notifications-page.png
index 4b382a128..32cf2a50b 100644
Binary files a/docs/images/preview-notifications-page.png and b/docs/images/preview-notifications-page.png differ
diff --git a/docs/images/preview-tts-page.png b/docs/images/preview-tts-page.png
index bfe3a81ec..c12e30d28 100644
Binary files a/docs/images/preview-tts-page.png and b/docs/images/preview-tts-page.png differ
diff --git a/docs/images/schedule-permissions.png b/docs/images/schedule-permissions.png
index 8a5ab3623..09dea1b4a 100644
Binary files a/docs/images/schedule-permissions.png and b/docs/images/schedule-permissions.png differ
diff --git a/docs/images/schedule-skills-tab.png b/docs/images/schedule-skills-tab.png
index 3eba1534e..5adefb3b3 100644
Binary files a/docs/images/schedule-skills-tab.png and b/docs/images/schedule-skills-tab.png differ
diff --git a/docs/images/schedules/01-repo-detail-entry.png b/docs/images/schedules/01-repo-detail-entry.png
index 4f2cca2ca..342c72cb4 100644
Binary files a/docs/images/schedules/01-repo-detail-entry.png and b/docs/images/schedules/01-repo-detail-entry.png differ
diff --git a/docs/images/schedules/02-schedules-shell.png b/docs/images/schedules/02-schedules-shell.png
index 8fc37cfac..8eb8929cc 100644
Binary files a/docs/images/schedules/02-schedules-shell.png and b/docs/images/schedules/02-schedules-shell.png differ
diff --git a/docs/images/schedules/03-run-history-preview.png b/docs/images/schedules/03-run-history-preview.png
index 35ca5a0f3..cf3e56686 100644
Binary files a/docs/images/schedules/03-run-history-preview.png and b/docs/images/schedules/03-run-history-preview.png differ
diff --git a/docs/images/schedules/04-run-history-markdown.png b/docs/images/schedules/04-run-history-markdown.png
index cbb8f79f0..8a2b4111f 100644
Binary files a/docs/images/schedules/04-run-history-markdown.png and b/docs/images/schedules/04-run-history-markdown.png differ
diff --git a/docs/images/schedules/05-schedules-expanded-details.png b/docs/images/schedules/05-schedules-expanded-details.png
index d84f6d25b..537af3b45 100644
Binary files a/docs/images/schedules/05-schedules-expanded-details.png and b/docs/images/schedules/05-schedules-expanded-details.png differ
diff --git a/docs/images/schedules/06-modal-general.png b/docs/images/schedules/06-modal-general.png
index c0565b32f..386584bdd 100644
Binary files a/docs/images/schedules/06-modal-general.png and b/docs/images/schedules/06-modal-general.png differ
diff --git a/docs/images/schedules/07-modal-timing.png b/docs/images/schedules/07-modal-timing.png
index 2abed1ce7..4bd681e59 100644
Binary files a/docs/images/schedules/07-modal-timing.png and b/docs/images/schedules/07-modal-timing.png differ
diff --git a/docs/images/schedules/08-modal-prompt.png b/docs/images/schedules/08-modal-prompt.png
index 29a417775..3a3c3f5ec 100644
Binary files a/docs/images/schedules/08-modal-prompt.png and b/docs/images/schedules/08-modal-prompt.png differ
diff --git a/docs/images/schedules/09-schedule-creation.png b/docs/images/schedules/09-schedule-creation.png
index 8f6aef3a0..e8741d33c 100644
Binary files a/docs/images/schedules/09-schedule-creation.png and b/docs/images/schedules/09-schedule-creation.png differ
diff --git a/docs/images/schedules/10-timing-options.png b/docs/images/schedules/10-timing-options.png
index 56605d363..091c36b30 100644
Binary files a/docs/images/schedules/10-timing-options.png and b/docs/images/schedules/10-timing-options.png differ
diff --git a/docs/images/schedules/11-run-history-view.png b/docs/images/schedules/11-run-history-view.png
index 41cb70e41..294a2dc9f 100644
Binary files a/docs/images/schedules/11-run-history-view.png and b/docs/images/schedules/11-run-history-view.png differ
diff --git a/docs/images/server-health-status.png b/docs/images/server-health-status.png
index 8e926ad20..662ba7e78 100644
Binary files a/docs/images/server-health-status.png and b/docs/images/server-health-status.png differ
diff --git a/docs/images/session-discovery/01-folder-discovery-dialog.png b/docs/images/session-discovery/01-folder-discovery-dialog.png
index 0866cd499..03ec6b799 100644
Binary files a/docs/images/session-discovery/01-folder-discovery-dialog.png and b/docs/images/session-discovery/01-folder-discovery-dialog.png differ
diff --git a/docs/images/session-discovery/02-discovered-repositories.png b/docs/images/session-discovery/02-discovered-repositories.png
index 51e346a09..733d0867b 100644
Binary files a/docs/images/session-discovery/02-discovered-repositories.png and b/docs/images/session-discovery/02-discovered-repositories.png differ
diff --git a/docs/images/session-discovery/03-imported-opencode-sessions.png b/docs/images/session-discovery/03-imported-opencode-sessions.png
index e1f9e3bf8..42384d874 100644
Binary files a/docs/images/session-discovery/03-imported-opencode-sessions.png and b/docs/images/session-discovery/03-imported-opencode-sessions.png differ
diff --git a/docs/images/session-pin-dropdown.png b/docs/images/session-pin-dropdown.png
index e45b0ab7f..20431fa6f 100644
Binary files a/docs/images/session-pin-dropdown.png and b/docs/images/session-pin-dropdown.png differ
diff --git a/docs/images/session-pins-list.png b/docs/images/session-pins-list.png
index da64b8c8d..f1259096d 100644
Binary files a/docs/images/session-pins-list.png and b/docs/images/session-pins-list.png differ
diff --git a/docs/images/skills-manager.png b/docs/images/skills-manager.png
index a3ec715b1..46f0e6a37 100644
Binary files a/docs/images/skills-manager.png and b/docs/images/skills-manager.png differ
diff --git a/docs/images/stt-settings.png b/docs/images/stt-settings.png
index 3a290f1d5..624f3ea1f 100644
Binary files a/docs/images/stt-settings.png and b/docs/images/stt-settings.png differ
diff --git a/docs/images/tts-settings.png b/docs/images/tts-settings.png
index 9fe43147f..9317cd52a 100644
Binary files a/docs/images/tts-settings.png and b/docs/images/tts-settings.png differ
diff --git a/docs/index.md b/docs/index.md
index 8e29a68bf..136f7ad7a 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -9,11 +9,12 @@ Mobile-first web interface for [OpenCode](https://opencode.ai) AI agents. Manage
-
+
+
!!! warning "Requires OpenCode 2"
- OpenCode Manager requires **OpenCode 2.x at 2.0.15 or newer** (bundled 2.0.15). OpenCode 1.x and 3.x are not supported. If you are upgrading from OpenCode 1.x, see the [v1 → v2 migration guide](https://opencode.ai/v2/docs/migrate-v1).
+ OpenCode Manager requires **OpenCode 2.x at 2.0.15 or newer** (bundled 2.0.15); OpenCode 1.x is not supported. Upgrading from 1.x? See the [v1 → v2 migration guide](https://opencode.ai/v2/docs/migrate-v1).
## Quick Start
diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css
index 9584f19b6..807a81544 100644
--- a/docs/stylesheets/extra.css
+++ b/docs/stylesheets/extra.css
@@ -138,6 +138,11 @@
box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.3);
}
+.md-typeset img.phone,
+.md-typeset img.hero-mobile {
+ border: 1px solid rgba(255, 255, 255, 0.4);
+}
+
.md-typeset img.phone {
max-width: 300px;
}
@@ -154,6 +159,7 @@
}
.md-typeset img.hero-mobile {
+ max-width: calc(50% - 16px);
margin-left: 12px;
}
diff --git a/frontend/src/components/navigation/DesktopSidebar.test.tsx b/frontend/src/components/navigation/DesktopSidebar.test.tsx
index f3ce925f7..70c0ba713 100644
--- a/frontend/src/components/navigation/DesktopSidebar.test.tsx
+++ b/frontend/src/components/navigation/DesktopSidebar.test.tsx
@@ -104,7 +104,7 @@ describe('DesktopSidebar', () => {
expect(container.firstChild).toBeNull()
})
- it('renders primary CTA for root path', () => {
+ it('hides the New Repo CTA for root path and renders Assistant', () => {
vi.spyOn(useDesktopModule, 'useDesktop').mockReturnValue(true)
vi.spyOn(useSidebarCollapsedModule, 'useSidebarCollapsed').mockReturnValue([false, vi.fn()])
vi.spyOn(useAuthModule, 'useAuth').mockReturnValue({
@@ -115,7 +115,7 @@ describe('DesktopSidebar', () => {
render(, { wrapper: createWrapper(['/']) })
- expect(screen.getByText('New Repo')).toBeInTheDocument()
+ expect(screen.queryByText('New Repo')).toBeNull()
expect(screen.getByText('Assistant')).toBeInTheDocument()
})
@@ -174,14 +174,14 @@ describe('DesktopSidebar', () => {
logout: vi.fn(),
} as any)
- render(, { wrapper: createWrapper(['/']) })
+ render(, { wrapper: createWrapper(['/schedules']) })
- fireEvent.click(screen.getByText('New Repo'))
+ fireEvent.click(screen.getByText('New Schedule'))
expect(dispatchEventSpy).toHaveBeenCalledWith(
expect.objectContaining({
type: 'oc:sidebar:action',
- detail: { action: 'new-repo' },
+ detail: { action: 'new-schedule' },
})
)
})
diff --git a/frontend/src/components/navigation/DesktopSidebar.tsx b/frontend/src/components/navigation/DesktopSidebar.tsx
index e5cf7e77d..1a3bf3e82 100644
--- a/frontend/src/components/navigation/DesktopSidebar.tsx
+++ b/frontend/src/components/navigation/DesktopSidebar.tsx
@@ -39,6 +39,7 @@ export function DesktopSidebar() {
}
const { primary, items } = buildNavModel(location.pathname)
+ const desktopPrimary = primary.filter((item) => item.key !== 'new-repo')
const handlePrimaryClick = (item: NavPrimaryCta) => {
if (item.to) {
@@ -84,9 +85,9 @@ export function DesktopSidebar() {
return (
<>
- {primary.length > 0 && (
+ {desktopPrimary.length > 0 && (
- {primary.map((item: NavPrimaryCta) => (
+ {desktopPrimary.map((item: NavPrimaryCta) => (