Skip to content
Open
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
5 changes: 5 additions & 0 deletions .changeset/nine-moments-rule.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"kilo-code": minor
---

Add a button to view the latest release notes to the extension
Empty file added .kilocode/rules/reactRules.md
Empty file.
60 changes: 60 additions & 0 deletions apps/storybook/stories/ReleaseNotesModal.stories.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
// kilocode_change - new file: Storybook story for Release Notes Modal component
import type { Meta, StoryObj } from "@storybook/react-vite"
import { ReleaseNotesModal } from "@/components/release-notes/ReleaseNotesModal"
import { sampleReleaseNotes } from "./sampleReleaseNotes"

const meta = {
title: "Components/ReleaseNotesModal",
component: ReleaseNotesModal,
argTypes: {
isOpen: {
control: { type: "boolean" },
},
loading: {
control: { type: "boolean" },
},
currentVersion: {
control: { type: "text" },
},
},
parameters: {
disableChromaticDualThemeSnapshot: true,
},
args: {
isOpen: true,
currentVersion: "4.106.0",
releases: sampleReleaseNotes,
loading: false,
onClose: () => console.log("Modal closed"),
onMarkAsViewed: (version: string) => console.log("Version marked as viewed:", version),
},
} satisfies Meta<typeof ReleaseNotesModal>

export default meta
type Story = StoryObj<typeof meta>

export const Default: Story = {
args: {
releases: sampleReleaseNotes,
},
}

export const SingleRelease: Story = {
args: {
releases: [sampleReleaseNotes[0]],
},
}

export const Loading: Story = {
args: {
releases: [],
loading: true,
},
}

export const EmptyReleases: Story = {
args: {
releases: [],
loading: false,
},
}
51 changes: 51 additions & 0 deletions apps/storybook/stories/ShowReleaseNotesButton.stories.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
// kilocode_change - new file: Storybook story for Show Release Notes Button Inner component
import type { Meta, StoryObj } from "@storybook/react-vite"
import { fn } from "storybook/test"
import { ShowReleaseNotesButtonInner } from "@/components/release-notes/ShowReleaseNotesButtonInner"
import { Bell } from "lucide-react"

const meta = {
title: "Components/ShowReleaseNotesButton",
component: ShowReleaseNotesButtonInner,
parameters: {
layout: "centered",
},
decorators: [
(Story) => (
<div className="p-4">
<Story />
</div>
),
],
argTypes: {
buttonText: {
control: { type: "text" },
},
showBadge: {
control: { type: "boolean" },
},
className: {
control: { type: "text" },
},
},
args: {
onClick: fn(),
},
} satisfies Meta<typeof ShowReleaseNotesButtonInner>

export default meta
type Story = StoryObj<typeof meta>

export const Default: Story = {
args: {
buttonText: "View Release Notes",
showBadge: false,
},
}

export const WithBadge: Story = {
args: {
buttonText: "View Release Notes",
showBadge: true,
},
}
39 changes: 39 additions & 0 deletions apps/storybook/stories/sampleReleaseNotes.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
// kilocode_change - new file: Sample release notes data for Storybook testing
import { ReleaseNote } from "@roo-code/types"

export const sampleReleaseNotes: ReleaseNote[] = [
{
version: "4.106.0",
changes: [
{
description: "Preliminary support for native tool calling (a.k.a native function calling) was added",
prNumber: 2833,
commitHash: "0b8ef46",
author: "mcowger",
},
{
description: "CMD-I now invokes the agent so you can give it more complex prompts",
prNumber: 3050,
commitHash: "357d438",
author: "markijbema",
},
],
},
{
version: "4.105.0",
changes: [
{
description: "Improve the edit chat area to allow context and file drag and drop when editing messages",
prNumber: 3005,
commitHash: "b87ae9c",
author: "kevinvandijk",
},
{
description: "A warning is now shown when the webview memory usage crosses 90% of the limit",
prNumber: 3046,
commitHash: "1bd934f",
author: "chrarnoldus",
},
],
},
]
1 change: 1 addition & 0 deletions packages/types/src/global-settings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,7 @@ export const globalSettingsSchema = z.object({
customSupportPrompts: customSupportPromptsSchema.optional(),
enhancementApiConfigId: z.string().optional(),
dismissedNotificationIds: z.string().array().optional(), // kilocode_change
lastViewedReleaseVersion: z.string().optional(), // kilocode_change
commitMessageApiConfigId: z.string().optional(), // kilocode_change
terminalCommandApiConfigId: z.string().optional(), // kilocode_change
ghostServiceSettings: ghostServiceSettingsSchema, // kilocode_change
Expand Down
1 change: 1 addition & 0 deletions packages/types/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ export * from "./type-fu.js"
export * from "./vscode.js"
export * from "./kilocode/kilocode.js"
export * from "./kilocode/native-function-calling.js"
export * from "./release-notes.js" // kilocode_change
export * from "./usage-tracker.js" // kilocode_change

export * from "./providers/index.js"
17 changes: 17 additions & 0 deletions packages/types/src/release-notes.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
// kilocode_change - new file
export interface ReleaseItem {
description: string
prNumber?: number
commitHash?: string
author?: string
}

export interface ReleaseNote {
version: string
changes: ReleaseItem[]
}

export interface ReleaseData {
currentVersion: string
releases: ReleaseNote[]
}
24 changes: 21 additions & 3 deletions pnpm-lock.yaml

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

1 change: 1 addition & 0 deletions src/shared/ExtensionMessage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -360,6 +360,7 @@ export type ExtensionState = Pick<
| "commitMessageApiConfigId" // kilocode_change
| "terminalCommandApiConfigId" // kilocode_change
| "dismissedNotificationIds" // kilocode_change
| "lastViewedReleaseVersion" // kilocode_change
| "ghostServiceSettings" // kilocode_change
| "autoPurgeEnabled" // kilocode_change
| "autoPurgeDefaultRetentionDays" // kilocode_change
Expand Down
3 changes: 3 additions & 0 deletions webview-ui/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@
# production
/build

# kilocode_change - Generated release notes JSON (but keep .d.ts files)
/src/generated/**/*.json

# misc
.DS_Store
.env.local
Expand Down
6 changes: 4 additions & 2 deletions webview-ui/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@
"@roo-code/types": "workspace:^",
"@tailwindcss/vite": "^4.0.0",
"@tanstack/react-query": "^5.68.0",
"@types/qrcode": "^1.5.5",
"@types/seedrandom": "^3.0.8",
"@use-gesture/react": "^10.3.1",
"@types/qrcode": "^1.5.5",
"@vscode/codicons": "^0.0.36",
"@vscode/webview-ui-toolkit": "^1.4.0",
"axios": "^1.12.0",
Expand Down Expand Up @@ -80,7 +80,6 @@
"tailwind-merge": "^3.0.0",
"tailwindcss": "^4.0.0",
"tailwindcss-animate": "^1.0.7",
"unist-util-visit": "^5.0.0",
"use-sound": "^5.0.0",
"vscode-material-icons": "^0.1.1",
"vscrui": "^0.2.2",
Expand Down Expand Up @@ -111,9 +110,12 @@
"jest-environment-jsdom": "^29.7.0",
"jest-simple-dot-reporter": "^1.0.5",
"jsdom": "^26.0.0",
"remark": "^15.0.1",
"remark-parse": "^11.0.0",
"storybook": "^8.4.7",
"ts-jest": "^29.2.5",
"typescript": "5.8.3",
"unist-util-visit": "^5.0.0",
"vite": "6.3.6",
"vitest": "^3.2.3"
}
Expand Down
Loading