Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 14 additions & 16 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -264,22 +264,20 @@ key_refused`; against an older backend the previous behaviour stands.
the install dialog offers the browser sign-in right in the app.
([#331](https://github.com/quickbeard/codev-code/pull/331),
[#335](https://github.com/quickbeard/codev-code/pull/335))
- **Skill Hub works behind a corporate proxy** — browsing and installing from
the desktop app used to go straight to the network, ignoring the system
proxy and PAC settings that the app's own sign-in already honored, so on a
proxied network the Skill Hub page showed "Couldn't reach the Skill Hub"
while sign-in worked. Hub traffic, including the silent session refresh
behind it, now goes through the same proxy-aware network stack, and the app
waits for the proxy configuration to finish loading before the first hub
request instead of counting that wait against the request's own timeout.
- **Installing into a project on another machine is refused, not misplaced**
— when the app is connected to a WSL distro, a sandbox, or a remote server,
the install dialog no longer offers "This project": the app installs onto
the computer it runs on, so that folder is not here, and the previous
behavior created a stray folder on the wrong disk (or failed with an
unhelpful error). The dialog says which server you are connected to and
points at `codev skill pull` on that machine; the desktop side also checks
that a project folder really exists before it downloads anything.
- **The Skill Hub now goes through the server** — browsing and installing
skills from the app used to happen inside the desktop app itself, which is
why only the desktop app had a Skill Hub, why installing into a project on
a WSL distro, sandbox, or remote server had to be refused (the files would
have landed on the wrong disk), and why the page needed its own
corporate-proxy handling. The app now asks the server it is connected to,
which downloads the skill and installs it where the agent actually runs:
"This project" works for every project that server knows, the web app has
the Skill Hub too, and a newly installed skill is visible to the model
straight away. Hub traffic takes the same network path as the server's
model-gateway traffic — the system trust store and `HTTPS_PROXY`-style
proxy settings apply; a proxy configured only through the operating
system's settings or a PAC file is not picked up, which is the one place
the previous desktop-side approach was stronger.

### Language

Expand Down
12 changes: 6 additions & 6 deletions DIVERGENCES.md

Large diffs are not rendered by default.

1 change: 0 additions & 1 deletion bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion packages/app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
"./wsl/types": "./src/wsl/types.ts",
"./sandbox/types": "./src/sandbox/types.ts",
"./gateway/types": "./src/gateway/types.ts",
"./skillhub/types": "./src/skillhub/types.ts",
"./i18n/*": "./src/i18n/*.ts",
"./vite": "./vite.js",
"./index.css": "./src/index.css"
Expand Down
29 changes: 12 additions & 17 deletions packages/app/src/components/skill-hub-nav.tsx
Original file line number Diff line number Diff line change
@@ -1,32 +1,27 @@
import { Icon } from "@opencode-ai/ui/v2/icon"
import { useLocation, useNavigate } from "@solidjs/router"
import { Show } from "solid-js"
import { useLanguage } from "@/context/language"
import { usePlatform } from "@/context/platform"
import { HOME_PROJECT_NAV_LABEL, HOME_PROJECT_NAV_ROW } from "@/pages/home"

// Fork-only: the sidebar's Skill Hub entry, rendered directly above Settings
// (see app-sidebar.tsx). Hidden entirely when the platform has no skillhub
// bridge (the web build), matching the page's desktop-only fallback.
// (see app-sidebar.tsx). The pages behind it talk to the connected server, so
// the entry is there in the web app and the desktop app alike.
export function SkillHubNav() {
const language = useLanguage()
const platform = usePlatform()
const location = useLocation()
const navigate = useNavigate()
const active = () => location.pathname === "/skills" || location.pathname.startsWith("/skills/")

return (
<Show when={platform.skillhub}>
<button
type="button"
data-component="skill-hub-nav"
data-selected={active() ? "" : undefined}
class={`${HOME_PROJECT_NAV_ROW} text-v2-text-text-faint [&>[data-slot=icon-svg]]:text-v2-icon-icon-muted`}
onClick={() => navigate("/skills")}
>
<Icon name="grid-plus" size="small" />
<span class={HOME_PROJECT_NAV_LABEL}>{language.t("sidebar.skillhub")}</span>
</button>
</Show>
<button
type="button"
data-component="skill-hub-nav"
data-selected={active() ? "" : undefined}
class={`${HOME_PROJECT_NAV_ROW} text-v2-text-text-faint [&>[data-slot=icon-svg]]:text-v2-icon-icon-muted`}
onClick={() => navigate("/skills")}
>
<Icon name="grid-plus" size="small" />
<span class={HOME_PROJECT_NAV_LABEL}>{language.t("sidebar.skillhub")}</span>
</button>
)
}
4 changes: 0 additions & 4 deletions packages/app/src/context/platform.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import { ServerConnection } from "./server"
import type { WslServersPlatform } from "../wsl/types"
import type { SandboxesPlatform } from "../sandbox/types"
import type { GatewaySsoPlatform } from "../gateway/types"
import type { SkillHubPlatform } from "../skillhub/types"
import type { UpdaterPlatform } from "../updater"
import type { DraftStore } from "@/utils/draft-store"
import type { ServerProtocol } from "@/utils/server-protocol"
Expand Down Expand Up @@ -111,9 +110,6 @@ type PlatformBase = {
/** Gateway SSO login for the configure gate (Electron only) */
gatewaySso?: GatewaySsoPlatform

/** SkillHub registry browsing and installs (Electron only) */
skillhub?: SkillHubPlatform

/** Get the preferred display backend (desktop only) */
getDisplayBackend?(): Promise<DisplayBackend | null> | DisplayBackend | null

Expand Down
6 changes: 0 additions & 6 deletions packages/app/src/i18n/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1080,8 +1080,6 @@ export const dict = {
"skillhub.install.scope.label": "Install to",
"skillhub.install.scope.project": "This project",
"skillhub.install.scope.global": "Global (all projects)",
"skillhub.install.scope.remote":
"You are connected to {{server}}. The app installs skills on this computer, so a project install is unavailable and a global install will not be seen there. Run `codev skill pull` on that machine instead.",
"skillhub.install.agents.label": "For which agents?",
"skillhub.install.agents.locked": "Always included",
"skillhub.install.overwrite.title": "Already installed",
Expand All @@ -1095,7 +1093,6 @@ export const dict = {
"skillhub.install.signin": "Sign in",
"skillhub.install.signin.waiting": "Finish signing in in your browser…",
"skillhub.install.error.failed": "The Skill Hub could not deliver this skill.",
"skillhub.install.error.missingDirectory": "That project folder is not on this computer.",
"skillhub.install.success.title": "Installed {{name}}",
"skillhub.install.done": "Done",
"skillhub.tabs.skills": "Skills",
Expand Down Expand Up @@ -1132,9 +1129,6 @@ export const dict = {
"skillstack.error.notFound": "That stack is gone, or has no public skills.",
"skillstack.error.expired": "That download expired before it was installed. Try again.",
"skillstack.error.unknown": "The Skill Hub could not deliver this stack.",
"skillhub.desktopOnly.title": "Skill Hub is available in the desktop app",
"skillhub.desktopOnly.description":
"Browse and install skills from the CoDev desktop app, or use `codev skill` in the terminal.",
"sidebar.help": "Help",
"sidebar.pinned": "Pinned",
"sidebar.recents": "Recents",
Expand Down
6 changes: 0 additions & 6 deletions packages/app/src/i18n/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1074,8 +1074,6 @@ export const dict = {
"skillhub.install.scope.label": "Instalar en",
"skillhub.install.scope.project": "Este proyecto",
"skillhub.install.scope.global": "Global (todos los proyectos)",
"skillhub.install.scope.remote":
"Estás conectado a {{server}}. La aplicación instala las habilidades en este equipo, así que la instalación en el proyecto no está disponible y una instalación global no se verá allí. Ejecuta `codev skill pull` en esa máquina.",
"skillhub.install.agents.label": "¿Para qué agentes?",
"skillhub.install.agents.locked": "Siempre incluido",
"skillhub.install.overwrite.title": "Ya instalado",
Expand All @@ -1089,7 +1087,6 @@ export const dict = {
"skillhub.install.signin": "Iniciar sesión",
"skillhub.install.signin.waiting": "Termina de iniciar sesión en tu navegador…",
"skillhub.install.error.failed": "El Skill Hub no pudo entregar esta habilidad.",
"skillhub.install.error.missingDirectory": "Esa carpeta de proyecto no está en este equipo.",
"skillhub.install.success.title": "{{name}} instalado",
"skillhub.install.done": "Hecho",
"skillhub.tabs.skills": "Habilidades",
Expand Down Expand Up @@ -1126,9 +1123,6 @@ export const dict = {
"skillstack.error.notFound": "Ese stack ya no existe o no tiene habilidades públicas.",
"skillstack.error.expired": "Esa descarga caducó antes de instalarse. Inténtalo de nuevo.",
"skillstack.error.unknown": "El Skill Hub no pudo entregar este stack.",
"skillhub.desktopOnly.title": "Skill Hub está disponible en la aplicación de escritorio",
"skillhub.desktopOnly.description":
"Explora e instala skills desde la aplicación de escritorio de CoDev, o usa `codev skill` en la terminal.",
"sidebar.help": "Ayuda",
"sidebar.pinned": "Fijadas",
"sidebar.recents": "Recientes",
Expand Down
6 changes: 0 additions & 6 deletions packages/app/src/i18n/vi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1037,8 +1037,6 @@ export const dict = {
"skillhub.install.scope.label": "Cài vào",
"skillhub.install.scope.project": "Dự án này",
"skillhub.install.scope.global": "Toàn cục (mọi dự án)",
"skillhub.install.scope.remote":
"Bạn đang kết nối tới {{server}}. Ứng dụng cài kỹ năng lên máy tính này, nên không thể cài vào dự án và cài toàn cục sẽ không hiện ở đó. Hãy chạy `codev skill pull` trên máy đó.",
"skillhub.install.agents.label": "Cho những agent nào?",
"skillhub.install.agents.locked": "Luôn được bao gồm",
"skillhub.install.overwrite.title": "Đã được cài đặt",
Expand All @@ -1052,7 +1050,6 @@ export const dict = {
"skillhub.install.signin": "Đăng nhập",
"skillhub.install.signin.waiting": "Hoàn tất đăng nhập trong trình duyệt…",
"skillhub.install.error.failed": "Skill Hub không thể tải kỹ năng này về.",
"skillhub.install.error.missingDirectory": "Thư mục dự án đó không có trên máy tính này.",
"skillhub.install.success.title": "Đã cài đặt {{name}}",
"skillhub.install.done": "Xong",
"skillhub.tabs.skills": "Kỹ năng",
Expand Down Expand Up @@ -1089,9 +1086,6 @@ export const dict = {
"skillstack.error.notFound": "Stack này không còn tồn tại hoặc không có kỹ năng công khai.",
"skillstack.error.expired": "Bản tải này đã hết hạn trước khi được cài. Hãy thử lại.",
"skillstack.error.unknown": "Skill Hub không thể tải stack này về.",
"skillhub.desktopOnly.title": "Skill Hub có sẵn trong ứng dụng desktop",
"skillhub.desktopOnly.description":
"Duyệt và cài skill từ ứng dụng desktop CoDev, hoặc dùng `codev skill` trong terminal.",
"sidebar.help": "Trợ giúp",
"sidebar.pinned": "Đã ghim",
"sidebar.recents": "Gần đây",
Expand Down
Loading
Loading