Skip to content

feat: add @markarranz/opencode-focus-notify to known notification plugins#2127

Open
MarkArranz wants to merge 1 commit intocode-yeongyu:devfrom
MarkArranz:feat/add-opencode-focus-notify
Open

feat: add @markarranz/opencode-focus-notify to known notification plugins#2127
MarkArranz wants to merge 1 commit intocode-yeongyu:devfrom
MarkArranz:feat/add-opencode-focus-notify

Conversation

@MarkArranz
Copy link

@MarkArranz MarkArranz commented Feb 26, 2026

Summary

Adds @markarranz/opencode-focus-notify to the KNOWN_NOTIFICATION_PLUGINS detection list.

What is this plugin?

@markarranz/opencode-focus-notify is a terminal-native OpenCode notification plugin that uses OSC escape sequences instead of node-notifier:

  • kitty: OSC 99 via kitten notify — clicking a notification focuses the kitty window
  • WezTerm: OSC 777 native notifications
  • iTerm2: OSC 9 notifications
  • foot/VTE: OSC 777 notifications
  • Fallback: osascript (macOS) / notify-send (Linux)

Zero runtime dependencies.

npm: @markarranz/opencode-focus-notify
GitHub: https://github.com/MarkArranz/opencode-focus-notify

Changes

  • Added 3 detection entries to KNOWN_NOTIFICATION_PLUGINS:
    • "opencode-focus-notify" (bare name)
    • "@markarranz/opencode-focus-notify" (scoped)
    • "markarranz/opencode-focus-notify" (without @)
  • Added 4 test cases covering exact match, scoped package, scoped with version, and org format

Summary by cubic

Adds @markarranz/opencode-focus-notify to the known notification plugins so the external detector recognizes it. Covers bare, scoped, scoped-with-version, and org/package formats with tests for each.

Written for commit 82d97cd. Summary will update on new commits.

@github-actions
Copy link
Contributor

Thank you for your contribution! Before we can merge this PR, we need you to sign our Contributor License Agreement (CLA).

To sign the CLA, please comment on this PR with:

I have read the CLA Document and I hereby sign the CLA

This is a one-time requirement. Once signed, all your future contributions will be automatically accepted.


I have read the CLA Document and I hereby sign the CLA


You can retrigger this bot by commenting recheck in this Pull Request. Posted by the CLA Assistant Lite bot.

Copy link

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 2 files

Confidence score: 3/5

  • There is a concrete test/behavior mismatch: src/shared/external-plugin-detector.test.ts expects an unscoped org format but the implementation returns the full string, which can cause failing tests or incorrect expectations.
  • Risk is moderate because it’s a focused test assertion issue rather than widespread logic changes, but it could still block CI or mask real behavior.
  • Pay close attention to src/shared/external-plugin-detector.test.ts - strict assertion for plugin name format does not match current implementation.
Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="src/shared/external-plugin-detector.test.ts">

<violation number="1" location="src/shared/external-plugin-detector.test.ts:289">
P1: Incorrect strict assertion in test for unscoped org format. The test expects pluginName to be "opencode-focus-notify", but the implementation returns the full string "markarranz/opencode-focus-notify" from KNOWN_NOTIFICATION_PLUGINS. This will cause the test to fail. Should use .toContain() instead of .toBe() to match the pattern used in other org-format and scoped package tests.</violation>
</file>

Since this is your first cubic review, here's how it works:

  • cubic automatically reviews your code and comments on bugs and improvements
  • Teach cubic by replying to its comments. cubic learns from your replies and gets better over time
  • Add one-off context when rerunning by tagging @cubic-dev-ai with guidance or docs links (including llms.txt)
  • Ask questions if you need clarification on any suggestion

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.


// then
expect(result.detected).toBe(true)
expect(result.pluginName).toBe("opencode-focus-notify")
Copy link

@cubic-dev-ai cubic-dev-ai bot Feb 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1: Incorrect strict assertion in test for unscoped org format. The test expects pluginName to be "opencode-focus-notify", but the implementation returns the full string "markarranz/opencode-focus-notify" from KNOWN_NOTIFICATION_PLUGINS. This will cause the test to fail. Should use .toContain() instead of .toBe() to match the pattern used in other org-format and scoped package tests.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At src/shared/external-plugin-detector.test.ts, line 289:

<comment>Incorrect strict assertion in test for unscoped org format. The test expects pluginName to be "opencode-focus-notify", but the implementation returns the full string "markarranz/opencode-focus-notify" from KNOWN_NOTIFICATION_PLUGINS. This will cause the test to fail. Should use .toContain() instead of .toBe() to match the pattern used in other org-format and scoped package tests.</comment>

<file context>
@@ -271,6 +271,74 @@ describe("external-plugin-detector", () => {
+
+      // then
+      expect(result.detected).toBe(true)
+      expect(result.pluginName).toBe("opencode-focus-notify")
+    })
+
</file context>
Fix with Cubic

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant