summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/components/release-notes-handler.tsx
diff options
context:
space:
mode:
authorDavid Hill <[email protected]>2025-12-21 16:45:49 +0000
committeradamelmore <[email protected]>2026-01-26 15:35:09 -0600
commita77df3c17482fce94a19554283bdba6f03135f67 (patch)
tree23993b7dce6df37eb92349b9e86040a0b60e3a8b /packages/app/src/components/release-notes-handler.tsx
parent9d1cf98192fdcfb9a76044c0cb9818565198a769 (diff)
downloadopencode-a77df3c17482fce94a19554283bdba6f03135f67.tar.gz
opencode-a77df3c17482fce94a19554283bdba6f03135f67.zip
wip: new release modal
- highlight key updates or new features - needs some transition love - all copy including text and video placeholder
Diffstat (limited to 'packages/app/src/components/release-notes-handler.tsx')
-rw-r--r--packages/app/src/components/release-notes-handler.tsx31
1 files changed, 31 insertions, 0 deletions
diff --git a/packages/app/src/components/release-notes-handler.tsx b/packages/app/src/components/release-notes-handler.tsx
new file mode 100644
index 000000000..45237b577
--- /dev/null
+++ b/packages/app/src/components/release-notes-handler.tsx
@@ -0,0 +1,31 @@
+import { onMount } from "solid-js"
+import { useDialog } from "@opencode-ai/ui/context/dialog"
+import { DialogReleaseNotes } from "./dialog-release-notes"
+import { shouldShowReleaseNotes, markReleaseNotesSeen } from "@/lib/release-notes"
+
+/**
+ * Component that handles showing release notes modal on app startup.
+ * Shows the modal if:
+ * - DEV_ALWAYS_SHOW_RELEASE_NOTES is true in lib/release-notes.ts
+ * - OR the user hasn't seen the current version's release notes yet
+ *
+ * To disable the dev mode behavior, set DEV_ALWAYS_SHOW_RELEASE_NOTES to false
+ * in packages/app/src/lib/release-notes.ts
+ */
+export function ReleaseNotesHandler() {
+ const dialog = useDialog()
+
+ onMount(() => {
+ // Small delay to ensure app is fully loaded before showing modal
+ setTimeout(() => {
+ if (shouldShowReleaseNotes()) {
+ dialog.show(
+ () => <DialogReleaseNotes />,
+ () => markReleaseNotesSeen(),
+ )
+ }
+ }, 500)
+ })
+
+ return null
+}