From f02deb55170c5038803edc1af34276048d37b038 Mon Sep 17 00:00:00 2001 From: "kiloconnect[bot]" <240665456+kiloconnect[bot]@users.noreply.github.com> Date: Wed, 17 Jun 2026 16:57:12 +0000 Subject: [PATCH 1/4] feat(vscode): add top-level announcement notification --- .../webview-ui/src/context/notifications.tsx | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/kilo-vscode/webview-ui/src/context/notifications.tsx b/packages/kilo-vscode/webview-ui/src/context/notifications.tsx index 8c722585e6a0..28b61656dd44 100644 --- a/packages/kilo-vscode/webview-ui/src/context/notifications.tsx +++ b/packages/kilo-vscode/webview-ui/src/context/notifications.tsx @@ -11,6 +11,18 @@ import { import { useVSCode } from "./vscode" import type { KilocodeNotification, ExtensionMessage } from "../types/messages" +// Static notifications always shown unconditionally (not fetched from API, not dismissable) +const STATIC_NOTIFICATIONS: KilocodeNotification[] = [ + { + id: "star-giveaway-june-2026", + title: "GitHub Star Giveaway", + message: "GitHub Star Giveaway: $500 to 2 people who star us by June 24th", + action: { actionText: "Star us on GitHub", actionURL: "https://github.com/Kilo-Org/kilocode/" }, + }, +] + +const STATIC_IDS = new Set(STATIC_NOTIFICATIONS.map((n) => n.id)) + interface NotificationsContextValue { notifications: Accessor filteredNotifications: Accessor @@ -53,10 +65,13 @@ export const NotificationsProvider: ParentComponent = (props) => { const filteredNotifications = createMemo(() => { const dismissed = dismissedIds() - return notifications().filter((n) => !dismissed.includes(n.id)) + const api = notifications().filter((n) => !dismissed.includes(n.id)) + return [...STATIC_NOTIFICATIONS, ...api] }) const dismiss = (id: string) => { + // Static notifications are always shown and cannot be dismissed + if (STATIC_IDS.has(id)) return setDismissedIds((prev) => (prev.includes(id) ? prev : [...prev, id])) vscode.postMessage({ type: "dismissNotification", notificationId: id }) } From 7cd018af3a324818dd30d39c1bbf81894b4c12f7 Mon Sep 17 00:00:00 2001 From: "kiloconnect[bot]" <240665456+kiloconnect[bot]@users.noreply.github.com> Date: Wed, 17 Jun 2026 17:37:44 +0000 Subject: [PATCH 2/4] fix(vscode): update star giveaway notification message and make dismissible --- .../webview-ui/src/context/notifications.tsx | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/packages/kilo-vscode/webview-ui/src/context/notifications.tsx b/packages/kilo-vscode/webview-ui/src/context/notifications.tsx index 28b61656dd44..eaf21849ad9b 100644 --- a/packages/kilo-vscode/webview-ui/src/context/notifications.tsx +++ b/packages/kilo-vscode/webview-ui/src/context/notifications.tsx @@ -11,18 +11,17 @@ import { import { useVSCode } from "./vscode" import type { KilocodeNotification, ExtensionMessage } from "../types/messages" -// Static notifications always shown unconditionally (not fetched from API, not dismissable) +// Static notifications always shown unconditionally (not fetched from API) const STATIC_NOTIFICATIONS: KilocodeNotification[] = [ { id: "star-giveaway-june-2026", title: "GitHub Star Giveaway", - message: "GitHub Star Giveaway: $500 to 2 people who star us by June 24th", - action: { actionText: "Star us on GitHub", actionURL: "https://github.com/Kilo-Org/kilocode/" }, + message: + "We're giving away $500 of AI Credits when we reach 25,000 stars on GitHub. Support us:", + action: { actionText: "github.com/Kilo-Org/kilocode", actionURL: "https://github.com/Kilo-Org/kilocode/" }, }, ] -const STATIC_IDS = new Set(STATIC_NOTIFICATIONS.map((n) => n.id)) - interface NotificationsContextValue { notifications: Accessor filteredNotifications: Accessor @@ -65,13 +64,11 @@ export const NotificationsProvider: ParentComponent = (props) => { const filteredNotifications = createMemo(() => { const dismissed = dismissedIds() - const api = notifications().filter((n) => !dismissed.includes(n.id)) - return [...STATIC_NOTIFICATIONS, ...api] + const all = [...STATIC_NOTIFICATIONS, ...notifications()] + return all.filter((n) => !dismissed.includes(n.id)) }) const dismiss = (id: string) => { - // Static notifications are always shown and cannot be dismissed - if (STATIC_IDS.has(id)) return setDismissedIds((prev) => (prev.includes(id) ? prev : [...prev, id])) vscode.postMessage({ type: "dismissNotification", notificationId: id }) } From 42617c0009a0a1a7ddf78ea35947670331321762 Mon Sep 17 00:00:00 2001 From: "kiloconnect[bot]" <240665456+kiloconnect[bot]@users.noreply.github.com> Date: Wed, 17 Jun 2026 21:50:16 +0000 Subject: [PATCH 3/4] chore: update source-links.md with notifications.tsx URLs --- packages/kilo-docs/source-links.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/kilo-docs/source-links.md b/packages/kilo-docs/source-links.md index 49c8e1c151aa..5a30e68d6ed9 100644 --- a/packages/kilo-docs/source-links.md +++ b/packages/kilo-docs/source-links.md @@ -81,6 +81,8 @@ - +- + - - From ba0f49ac452747afa461aa9babf73bbd3b296a1d Mon Sep 17 00:00:00 2001 From: "kiloconnect[bot]" <240665456+kiloconnect[bot]@users.noreply.github.com> Date: Wed, 17 Jun 2026 21:50:38 +0000 Subject: [PATCH 4/4] style: fix prettier formatting in notifications.tsx --- packages/kilo-vscode/webview-ui/src/context/notifications.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/kilo-vscode/webview-ui/src/context/notifications.tsx b/packages/kilo-vscode/webview-ui/src/context/notifications.tsx index eaf21849ad9b..67deb6f99c9d 100644 --- a/packages/kilo-vscode/webview-ui/src/context/notifications.tsx +++ b/packages/kilo-vscode/webview-ui/src/context/notifications.tsx @@ -16,8 +16,7 @@ const STATIC_NOTIFICATIONS: KilocodeNotification[] = [ { id: "star-giveaway-june-2026", title: "GitHub Star Giveaway", - message: - "We're giving away $500 of AI Credits when we reach 25,000 stars on GitHub. Support us:", + message: "We're giving away $500 of AI Credits when we reach 25,000 stars on GitHub. Support us:", action: { actionText: "github.com/Kilo-Org/kilocode", actionURL: "https://github.com/Kilo-Org/kilocode/" }, }, ]