diff --git a/.changeset/README.md b/.changeset/README.md new file mode 100644 index 00000000000..fa4dbbf5508 --- /dev/null +++ b/.changeset/README.md @@ -0,0 +1,25 @@ +# Changesets + +This directory contains changeset files used to track changes for the next release. + +## Adding a changeset + +When making a user-facing change, run: + +```sh +bunx changeset add +``` + +Or manually create a file `.changeset/.md`: + +```md +--- +"kilo-code": minor +--- + +Short description of the change for the changelog. +``` + +Use `patch` for bug fixes, `minor` for new features, `major` for breaking changes. + +Changeset files are consumed at release time when the `publish.yml` workflow runs, generating changelog entries for the GitHub release notes. diff --git a/.changeset/config.json b/.changeset/config.json new file mode 100644 index 00000000000..70db0d90519 --- /dev/null +++ b/.changeset/config.json @@ -0,0 +1,11 @@ +{ + "$schema": "https://unpkg.com/@changesets/config@3.0.4/schema.json", + "changelog": ["../script/changelog-github.cjs", { "repo": "Kilo-Org/kilocode" }], + "commit": false, + "fixed": [["kilo-code", "@kilocode/cli"]], + "linked": [], + "access": "restricted", + "baseBranch": "main", + "updateInternalDependencies": "patch", + "ignore": [] +} diff --git a/.changeset/fix-provider-auth-invalidation.md b/.changeset/fix-provider-auth-invalidation.md new file mode 100644 index 00000000000..179d57d8a54 --- /dev/null +++ b/.changeset/fix-provider-auth-invalidation.md @@ -0,0 +1,6 @@ +--- +"@kilocode/cli": patch +"kilo-code": patch +--- + +Fixed default model falling back to the free model after login or org switch by invalidating cached provider state when auth changes. diff --git a/.changeset/gateway-models-feature-header.md b/.changeset/gateway-models-feature-header.md new file mode 100644 index 00000000000..4021e29ea48 --- /dev/null +++ b/.changeset/gateway-models-feature-header.md @@ -0,0 +1,5 @@ +--- +"@kilocode/kilo-gateway": patch +--- + +Include the feature header when requesting the models list from Kilo Gateway diff --git a/.changeset/git-stats-polling.md b/.changeset/git-stats-polling.md new file mode 100644 index 00000000000..a3e7e0d02dd --- /dev/null +++ b/.changeset/git-stats-polling.md @@ -0,0 +1,5 @@ +--- +"kilo-code": patch +--- + +Reduce git process load via visibility-aware polling and resolution caching in GitStatsPoller diff --git a/.changeset/opencode-1310.md b/.changeset/opencode-1310.md new file mode 100644 index 00000000000..7a5700a9b0a --- /dev/null +++ b/.changeset/opencode-1310.md @@ -0,0 +1,10 @@ +--- +"kilo-code": patch +"@kilocode/cli": patch +--- + +Merged upstream opencode changes from v1.3.10: + +- Subagent tool calls stay clickable while pending +- Improved storage migration reliability +- Better muted text contrast in Catppuccin themes diff --git a/.changeset/opencode-136.md b/.changeset/opencode-136.md new file mode 100644 index 00000000000..0a2b865d090 --- /dev/null +++ b/.changeset/opencode-136.md @@ -0,0 +1,9 @@ +--- +"kilo-code": patch +"@kilocode/cli": patch +--- + +Merged upstream opencode changes from v1.3.6: + +- Fixed token usage double-counting for Anthropic and Amazon Bedrock providers +- Fixed variant dialog search filtering diff --git a/.changeset/opencode-137.md b/.changeset/opencode-137.md new file mode 100644 index 00000000000..69ba99cfeb9 --- /dev/null +++ b/.changeset/opencode-137.md @@ -0,0 +1,10 @@ +--- +"kilo-code": patch +"@kilocode/cli": patch +--- + +Merged upstream opencode changes from v1.3.7: + +- Added first-class PowerShell support on Windows +- Plugin installs now preserve JSONC comments in configuration files +- Improved variant modal behavior to be less intrusive diff --git a/.changeset/subsession-costs.md b/.changeset/subsession-costs.md new file mode 100644 index 00000000000..3383a098108 --- /dev/null +++ b/.changeset/subsession-costs.md @@ -0,0 +1,5 @@ +--- +"kilo-code": patch +--- + +Make subsession costs in TaskHeader tooltip more readable with many subsessions diff --git a/.changeset/terminal-context-mention.md b/.changeset/terminal-context-mention.md new file mode 100644 index 00000000000..3228399c01e --- /dev/null +++ b/.changeset/terminal-context-mention.md @@ -0,0 +1,5 @@ +--- +"kilo-code": minor +--- + +Add @terminal context mention support to the chat input. Type @terminal to include your active VS Code terminal output as context, with output safety limits (500 lines / 50K chars) and truncation. Works in both the sidebar chat and Agent Manager. diff --git a/.github/workflows/close-issues.yml b/.github/workflows/close-issues.yml new file mode 100644 index 00000000000..04b6ae7ac80 --- /dev/null +++ b/.github/workflows/close-issues.yml @@ -0,0 +1,24 @@ +name: close-issues + +on: + schedule: + - cron: "0 2 * * *" # Daily at 2:00 AM + workflow_dispatch: + +jobs: + close: + runs-on: ubuntu-latest + permissions: + contents: read + issues: write + steps: + - uses: actions/checkout@v4 + + - uses: oven-sh/setup-bun@v2 + with: + bun-version: latest + + - name: Close stale issues + env: + GITHUB_TOKEN: ${{ github.token }} + run: bun script/github/close-issues.ts diff --git a/.github/workflows/nix-hashes.yml b/.github/workflows/nix-hashes.yml index 68525ac53e7..cfa4ee633a3 100644 --- a/.github/workflows/nix-hashes.yml +++ b/.github/workflows/nix-hashes.yml @@ -17,6 +17,10 @@ on: - "patches/**" - ".github/workflows/nix-hashes.yml" +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: # Native runners required: bun install cross-compilation flags (--os/--cpu) # do not produce byte-identical node_modules as native installs. diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 9fc57f520d9..156ba3c5431 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -46,9 +46,14 @@ jobs: - uses: ./.github/actions/setup-bun + # kilocode_change start - install deps for changeset changelog generation + - name: Install dependencies + run: bun install + - name: Install Kilo if: inputs.bump || inputs.version run: bun i -g @kilocode/cli + # kilocode_change end - id: version run: | diff --git a/.github/workflows/stale-issues.yml b/.github/workflows/stale-issues.yml deleted file mode 100644 index 51c649d823c..00000000000 --- a/.github/workflows/stale-issues.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: stale-issues - -on: - schedule: - - cron: "30 1 * * *" # Daily at 1:30 AM - workflow_dispatch: - -env: - DAYS_BEFORE_ISSUE_CLOSE: 90 - DAYS_BEFORE_PR_CLOSE: 30 - -jobs: - stale: - if: github.repository == 'Kilo-Org/kilocode' - runs-on: blacksmith-4vcpu-ubuntu-2404 - permissions: - issues: write - pull-requests: write - steps: - - uses: actions/stale@v10 - with: - days-before-issue-stale: ${{ env.DAYS_BEFORE_ISSUE_CLOSE }} - days-before-pr-stale: ${{ env.DAYS_BEFORE_PR_CLOSE }} - days-before-issue-close: 0 - days-before-pr-close: 0 - close-issue-message: | - Closing this one out since it's been inactive for a while — not because it's a bad issue, just that older items tend to lose context over time and we'd rather start fresh if this is still a problem. - - Please feel free to reopen (or open a new issue) if you're still running into this. We're happy to take another look! 🙏 - close-pr-message: | - Closing this one out since it's been inactive for a while — not because it's a bad PR, just that older items tend to lose context over time and we'd rather start fresh if this is still relevant. - - Please feel free to reopen (or open a new PR) if you're still working on this. We're happy to take another look! 🙏 - operations-per-run: 200 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d8bd6436cf2..edf85eb5598 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -15,6 +15,7 @@ concurrency: permissions: contents: read + checks: write jobs: unit: @@ -42,11 +43,42 @@ jobs: - name: Configure git identity run: | - git config --global user.email "bot@opencode.ai" - git config --global user.name "opencode" + git config --global user.email "kilo-maintainer[bot]@users.noreply.github.com" + git config --global user.name "kilo-maintainer[bot]" + + - name: Cache Turbo + uses: actions/cache@v4 + with: + path: node_modules/.cache/turbo + key: turbo-${{ runner.os }}-${{ hashFiles('turbo.json', '**/package.json') }}-${{ github.sha }} + restore-keys: | + turbo-${{ runner.os }}-${{ hashFiles('turbo.json', '**/package.json') }}- + turbo-${{ runner.os }}- - name: Run unit tests - run: bun turbo test + run: bun turbo test:ci + env: + KILO_EXPERIMENTAL_DISABLE_FILEWATCHER: ${{ runner.os == 'Windows' && 'true' || 'false' }} + + - name: Publish unit reports + if: always() + uses: mikepenz/action-junit-report@v6 + with: + report_paths: packages/*/.artifacts/unit/junit.xml + check_name: "unit results (${{ matrix.settings.name }})" + detailed_summary: true + include_time_in_summary: true + fail_on_failure: false + + - name: Upload unit artifacts + if: always() + uses: actions/upload-artifact@v4 + with: + name: unit-${{ matrix.settings.name }}-${{ github.run_attempt }} + include-hidden-files: true + if-no-files-found: ignore + retention-days: 7 + path: packages/*/.artifacts/unit/junit.xml e2e: # kilocode_change - disabled: packages/app is not actively maintained @@ -107,17 +139,20 @@ jobs: KILO_ORG_ID: ${{ secrets.KILO_ORG_ID }} KILO_DISABLE_SHARE: "true" KILO_DISABLE_SESSION_INGEST: "true" + KILO_E2E_REQUIRE_PAID: "true" # kilocode_change end + PLAYWRIGHT_JUNIT_OUTPUT: e2e/junit-${{ matrix.settings.name }}.xml timeout-minutes: 30 - name: Upload Playwright artifacts - if: failure() + if: always() uses: actions/upload-artifact@v4 with: name: playwright-${{ matrix.settings.name }}-${{ github.run_attempt }} if-no-files-found: ignore retention-days: 7 path: | + packages/app/e2e/junit-*.xml packages/app/e2e/test-results packages/app/e2e/playwright-report diff --git a/.gitignore b/.gitignore index f080d30177d..95a44149d17 100644 --- a/.gitignore +++ b/.gitignore @@ -36,6 +36,7 @@ target # Local dev files opencode-dev +UPCOMING_CHANGELOG.md logs/ *.bun-build @@ -45,3 +46,7 @@ tsconfig.tsbuildinfo # Kilo .kilo/plans/*upstream-merge-report-*.md + +# Test Artifacts +packages/app/.artifacts/ +packages/opencode/.artifacts/ \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml index f9fe116bbd6..86dbccdc02e 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -4,12 +4,24 @@