diff --git a/.github/workflows/manual-publish-antigravity.yml b/.github/workflows/manual-publish-antigravity.yml index 79a753c..a305658 100644 --- a/.github/workflows/manual-publish-antigravity.yml +++ b/.github/workflows/manual-publish-antigravity.yml @@ -14,7 +14,7 @@ permissions: id-token: write jobs: - publish: + publish-antigravity: runs-on: ubuntu-latest permissions: id-token: write @@ -35,9 +35,6 @@ jobs: - name: Install ovsx run: npm install ovsx - - name: Build Antigravity - run: npm run compile:antigravity - - name: Pack Antigravity run: npm run package:ovsx diff --git a/.github/workflows/manual-publish-vscode.yml b/.github/workflows/manual-publish-vscode.yml index 69ccf05..406706b 100644 --- a/.github/workflows/manual-publish-vscode.yml +++ b/.github/workflows/manual-publish-vscode.yml @@ -14,7 +14,7 @@ permissions: id-token: write jobs: - publish: + publish-vscode: runs-on: ubuntu-latest permissions: id-token: write @@ -35,12 +35,6 @@ jobs: - name: Install vsce and ovsx run: npm install -g @vscode/vsce ovsx - - name: Build for Vscode - run: npm run compile:vscode - - - name: Pack for Vscode - run: npm run package:vsce - - name: Pack for Vscode run: npm run package:vsce diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index b878d5e..41ebb8a 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -47,9 +47,6 @@ jobs: - name: Install vsce and ovsx run: npm install -g @vscode/vsce ovsx - - name: Build for Vscode - run: npm run compile:vscode - - name: Pack for Vscode run: npm run package:vsce @@ -61,9 +58,6 @@ jobs: - name: Clear build artifacts run: rm -rf dist/* - - name: Build Antigravity - run: npm run compile:antigravity - - name: Pack Antigravity run: npm run package:ovsx @@ -96,3 +90,10 @@ jobs: [Provenance attestations](${{ steps.attestation.outputs.attestation-url }}) env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Build addon typedefs package + run: npm run build:addon-typedefs + + - name: Publish addon typedefs to npm + working-directory: ./dist-addon-api + run: npm publish --provenance --access public diff --git a/.gitignore b/.gitignore index 36f5e1f..acee541 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,6 @@ node_modules dist/** **/*.vsix .seamless-agent/ -.hintrc \ No newline at end of file +dist-addon-api/** +TODO +.hintrc diff --git a/.hintrc b/.hintrc new file mode 100644 index 0000000..53b8f54 --- /dev/null +++ b/.hintrc @@ -0,0 +1,15 @@ +{ + "extends": [ + "development" + ], + "hints": { + "compat-api/css": [ + "default", + { + "ignore": [ + "min-height: auto" + ] + } + ] + } +} \ No newline at end of file diff --git a/.vscodeignore b/.vscodeignore index c4f2425..a83ef64 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -17,6 +17,14 @@ vsc-extension-quickstart.md **/*.map **/*.ts +# Addon typedefs package output +dist-addon-api/** + +# Typedef build inputs +typings/** +tsconfig.addon-typedefs.json +build-addon-typedefs.js + # All node_modules (bundled with esbuild) node_modules/** diff --git a/media/main.css b/media/main.css index 8b9ab00..3ceff1a 100644 --- a/media/main.css +++ b/media/main.css @@ -917,6 +917,28 @@ button:disabled { white-space: nowrap; } +/* Custom tabs container for addons */ +.custom-tabs-container { + display: contents; +} + +/* Custom tab content pane */ +.custom-tab-pane { + display: none; + padding: 8px 0; +} + +.custom-tab-pane.active { + display: block; +} + +.custom-tab-pane .custom-tab-loading { + color: var(--vscode-descriptionForeground); + font-style: italic; + padding: 16px; + text-align: center; +} + #home-view .section { flex-shrink: 0; } @@ -1567,4 +1589,273 @@ button:disabled { height: 2px; border-radius: 2px; background-color: var(--vscode-panelTitle-activeBorder) !important; +} + +/* ================================ + Settings Tab Styles + ================================ */ +.settings-container { + padding: 8px 0; +} + +.settings-header { + margin-bottom: 16px; +} + +.settings-header h3 { + font-size: 14px; + font-weight: 600; + margin: 0 0 4px 0; + color: var(--vscode-foreground); +} + +.settings-description { + font-size: 12px; + color: var(--vscode-descriptionForeground); + margin: 0; +} + +.settings-section { + margin-bottom: 12px; + border: 1px solid var(--vscode-panel-border); + border-radius: 4px; + overflow: hidden; +} + +/* Settings Link Section (for VS Code Settings) - styled like a section header */ +.settings-link-section { + margin-bottom: 12px; + border: 1px solid var(--vscode-panel-border); + border-radius: 4px; + overflow: hidden; +} + +.settings-link-btn { + width: 100%; + display: flex; + align-items: center; + gap: 8px; + padding: 8px 12px; + background-color: var(--vscode-sideBarSectionHeader-background); + border: none; + cursor: pointer; + text-align: left; + color: var(--vscode-foreground); + font-family: inherit; + -webkit-user-select: none; + user-select: none; +} + +.settings-link-btn:hover { + background-color: var(--vscode-list-hoverBackground); +} + +.settings-link-btn:focus { + outline: 1px solid var(--vscode-focusBorder); + outline-offset: -1px; +} + +.settings-link-btn .codicon:first-child { + font-size: 12px; +} + +.settings-link-text { + font-size: 13px; + font-weight: 600; + flex: 1; +} + +.settings-link-btn .codicon:last-child { + font-size: 10px; + color: var(--vscode-descriptionForeground); +} + +.settings-section-header { + display: flex; + align-items: center; + gap: 8px; + padding: 8px 12px; + background-color: var(--vscode-sideBarSectionHeader-background); + cursor: pointer; + -webkit-user-select: none; + user-select: none; +} + +.settings-section-header:hover { + background-color: var(--vscode-list-hoverBackground); +} + +.settings-section-header h4 { + font-size: 13px; + font-weight: 600; + margin: 0; + flex: 1; +} + +.settings-section-header .codicon { + font-size: 12px; + transition: transform 0.2s ease; +} + +.settings-section.collapsed .settings-section-header .codicon { + transform: rotate(-90deg); +} + +.settings-section-content { + padding: 12px; + border-top: 1px solid var(--vscode-panel-border); +} + +.settings-section.collapsed .settings-section-content { + display: none; +} + +/* Settings Items */ +.setting-item { + display: flex; + flex-direction: column; + gap: 4px; + margin-bottom: 12px; +} + +.setting-item:last-child { + margin-bottom: 0; +} + +.setting-item-row { + display: flex; + align-items: center; + gap: 8px; +} + +.setting-label { + font-size: 13px; + font-weight: 500; + color: var(--vscode-foreground); +} + +.setting-description { + font-size: 12px; + color: var(--vscode-descriptionForeground); + margin: 0; +} + +/* Checkbox setting */ +.setting-checkbox { + display: flex; + align-items: center; + gap: 8px; +} + +.setting-checkbox input[type="checkbox"] { + width: 18px; + height: 18px; + accent-color: var(--vscode-checkbox-background); +} + +/* Text/Number input setting */ +.setting-input { + width: 100%; + padding: 6px 8px; + font-size: 13px; + font-family: var(--vscode-font-family); + color: var(--vscode-input-foreground); + background-color: var(--vscode-input-background); + border: 1px solid var(--vscode-input-border); + border-radius: 2px; + outline: none; +} + +.setting-input:focus { + border-color: var(--vscode-focusBorder); +} + +/* Select setting */ +.setting-select { + width: 100%; + padding: 6px 8px; + font-size: 13px; + font-family: var(--vscode-font-family); + color: var(--vscode-dropdown-foreground); + background-color: var(--vscode-dropdown-background); + border: 1px solid var(--vscode-dropdown-border); + border-radius: 2px; + outline: none; + cursor: pointer; +} + +.setting-select:focus { + border-color: var(--vscode-focusBorder); +} + +/* Addon Info Card */ +.addon-card { + display: flex; + flex-direction: column; + gap: 4px; + padding: 8px 12px; + margin-bottom: 8px; + background-color: var(--vscode-editor-background); + border: 1px solid var(--vscode-panel-border); + border-radius: 4px; +} + +.addon-card:last-child { + margin-bottom: 0; +} + +.addon-card-header { + display: flex; + align-items: center; + gap: 8px; +} + +.addon-card-name { + font-size: 13px; + font-weight: 600; + color: var(--vscode-foreground); +} + +.addon-card-version { + font-size: 11px; + color: var(--vscode-badge-foreground); + background-color: var(--vscode-badge-background); + padding: 1px 6px; + border-radius: 10px; +} + +.addon-card-description { + font-size: 12px; + color: var(--vscode-descriptionForeground); + margin: 0; +} + +.addon-card-meta { + font-size: 11px; + color: var(--vscode-descriptionForeground); + display: flex; + gap: 12px; +} + +.addon-card-meta span { + display: flex; + align-items: center; + gap: 4px; +} + +/* Active/Inactive badge */ +.addon-status { + font-size: 11px; + padding: 1px 6px; + border-radius: 10px; +} + +.addon-status.active { + background-color: var(--vscode-testing-iconPassed); + color: var(--vscode-editor-background); +} + +.addon-status.inactive { + background-color: var(--vscode-testing-iconSkipped); + color: var(--vscode-editor-background); } \ No newline at end of file diff --git a/media/webview.html b/media/webview.html index af80ca7..959d8a3 100644 --- a/media/webview.html +++ b/media/webview.html @@ -65,6 +65,19 @@
data-badge-for="history" > + + +