-
-
Notifications
You must be signed in to change notification settings - Fork 14
v3.0.0 #86
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
smastrom
wants to merge
68
commits into
main
Choose a base branch
from
dev
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
v3.0.0 #86
Changes from all commits
Commits
Show all changes
68 commits
Select commit
Hold shift + click to select a range
bdd9d94
Pkg - Upgrade monorepo stack (tsdown, Nuxt 4, Astro 5, oxfmt)
smastrom 08223e1
Notification - Tip accent and progress corners (#76, #78)
smastrom 666706e
Pkg - Expand README with Astro, headless example, docs pointer
smastrom 329dbee
Pkg - Gitignore local docs directory
smastrom 0dc3a88
Playground - Simplify Vite minify option
smastrom 0fe6cfc
Core, Notivue - Notify API with push alias
smastrom f0efb71
Notification - NotificationSwipe as primary name
smastrom 73b9950
Demo, Astro - Improve captions and dynamic notification labels
smastrom 7b07f80
README - Expand quick start (headless, options, swipe)
smastrom 52e5e8f
GitHub - Update FUNDING donation links
smastrom a2ff613
Astro - Add playground-astro, retire astro-playground
smastrom a7c302f
Core, Astro - Align PushAstroEvent with NotifyOptions
smastrom 7812ce9
Demo - Refresh README quick start and examples
smastrom ac38a43
Playground - Use notify; isolate push alias in headless demo
smastrom 68529a9
Core, Notifications, Astro, Nuxt - Introduce notify.loading and loadi…
smastrom daee681
Tests - Align Cypress and Vitest with notify.loading and config
smastrom c45b0af
Playground, Playground Astro - Update demos for notify.loading
smastrom fa8bdc9
Pkg - Add docs package to workspace, scripts, and gitignore
smastrom 9bc22f7
Notifications - Remove tabindex=-1 from close button
smastrom 18008ed
Core, Astro, Playground - Deprecate isTopAlign, useNotify/usePush; fi…
smastrom db86441
Core - Fix notification options merge order: global before per-type
smastrom 054e39b
Core - Update JSDoc links to new docs structure; add .claude/ to giti…
smastrom 0f251cf
Core - Move shared notification defaults into global config
smastrom 99ca9cb
Core - Revert NotificationSwipe back to NotivueSwipe
smastrom 1d57781
Core - Remove default focus outline from notification containers; upd…
smastrom 9b51bd8
Core - Add pause-on-focus to Notivue stream; drop containersTabIndex …
smastrom 2d89518
Core - Refactor NotivueKeyboard: drop provide/inject, manage tabindex…
smastrom e5b6ceb
Playground, Tests - Update consumers for new NotivueKeyboard API
smastrom 97d3c77
Core - Exclude tabindex="-1" elements from focusable candidates selector
smastrom 3d9e720
Tests - Update keyboard tests for new API; add pause-on-focus tests
smastrom fec0190
Docs - Streamline README features; add key exports table
smastrom 6667da4
Docs - Move key exports table below examples; add useNotifications
smastrom 36650e2
Core - Improve consumer-facing types; skip per-item callbacks on clea…
smastrom aae1163
Playground - Use Nuxt 4 idioms; clean up config
smastrom 37c25a4
Playground - Display package version next to logo
smastrom 03b236e
Core, Docs - Default renderAnnouncement to false; add isCandidate exa…
smastrom e3499a4
Add Claude Code GitHub Workflow (#82)
smastrom f22fb69
Remove automatic Claude Code Review workflow
smastrom 913f140
Add CodeRabbit configuration
smastrom 26f247e
CodeRabbit - Prevent PR title/description edits
smastrom 45ad045
Remove claude-code-review.yml and add workflow permissions
smastrom 2bc2cf4
CodeRabbit - Reorganize config; enable incremental reviews
smastrom 63dacbc
Remove Claude Code GitHub workflow
smastrom 520f9e2
NotivueKeyboard - Fix focusable element tabindex selector
smastrom 4b45487
NotivueKeyboard - Return -1 from deprecated useNotivueKeyboard shim
smastrom ece0515
Pkg - Declare vue as peer dependency
smastrom 5d38714
Docs - Add agent workflow guidance
smastrom ba94767
Astro - Generate declarations for subpath export
smastrom edb96ae
Notifications - Remove blank line before box-shadow
smastrom 185f57c
Pkg - Drop stale KEYBOARD_FINDINGS from gitignore
smastrom 40eb4b1
Core - Align warning ARIA defaults with error severity
smastrom 939f264
CodeRabbit - Skip minor nits in reviews
smastrom 86086c0
Docs - Refresh README intro and features list
smastrom b82ce86
Pkg - Add oxlint and two-pass format pipeline
smastrom dc87833
Apply oxfmt and oxlint formatting
smastrom 33c984e
Core, Tests - Align notification option priority
smastrom 35ebe69
Docs - Update agent workflow and funding metadata
smastrom 4e9c170
Tests - Rename integration branch v3 to dev
smastrom fab223f
Core, Tests - Replace motion config with CSS variables (#85)
smastrom 030a5da
Core, NotivueKeyboard, Tests - Address CodeRabbit review on v3 PR
smastrom 4718230
Tests - Forward isCandidate prop in keyboard test harness
smastrom c3fecba
Notivue - Move notification gap from padding to margin
smastrom 5a9f420
Core, Notivue, NotivueKeyboard, Playground, Tests - List item gap, fo…
smastrom 40abb90
Tests, Notivue, NotivueKeyboard - Fix CI after list item a11y move
smastrom 892ebb7
Notivue, Playground, Agents - Align placement with position config only
smastrom e5bf4a1
Agents - Update PR description before push
smastrom ee88095
Core, Notivue, NotivueKeyboard - Rename stream data attributes and al…
smastrom d2ad176
Playground - Remove center on mobile demo toggle
smastrom File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,118 @@ | ||
| # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json | ||
|
|
||
| language: en-US | ||
| tone_instructions: >- | ||
| Be direct and concise. Use imperative mood. Skip filler | ||
| and marketing language. Assume the reader is a competent | ||
| developer. State facts, not opinions. | ||
|
|
||
| reviews: | ||
| profile: chill | ||
| instructions: >- | ||
| Do not report minor severity issues or formatting nits (markdown structure, | ||
| heading levels, trailing punctuation, blank lines in blockquotes). Focus on | ||
| critical and major issues that affect correctness, security, or public API | ||
| behavior. | ||
| sequence_diagrams: true | ||
| poem: false | ||
| auto_review: | ||
| enabled: true | ||
| drafts: false | ||
| auto_incremental_review: true | ||
| auto_pause_after_reviewed_commits: 0 | ||
| ignore_title_keywords: | ||
| - 'WIP' | ||
| - 'DO NOT MERGE' | ||
| base_branches: | ||
| - main | ||
| - dev | ||
|
|
||
| # Never edit PR title or description. Reviews go in comments only. | ||
| high_level_summary: false | ||
| high_level_summary_placeholder: '' | ||
| auto_title_placeholder: '' | ||
| collapse_walkthrough: true | ||
|
|
||
| path_filters: | ||
| - '!pnpm-lock.yaml' | ||
| - '!**/*.snap' | ||
| - '!docs/public/**' | ||
| - '!playground/**' | ||
| - '!playground-astro/**' | ||
|
|
||
| path_instructions: | ||
| - path: 'packages/notivue/core/**' | ||
| instructions: | | ||
| This is the core notification engine. Pay close attention to: | ||
| - Reactivity correctness (Vue 3 reactive/ref usage) | ||
| - Type safety (strict TypeScript) | ||
| - Public API surface: any change here affects all consumers | ||
| - Backwards compatibility of exported types and functions | ||
| - path: 'packages/notivue/Notivue/**' | ||
| instructions: | | ||
| Main wrapper component with aria-live region for accessibility. | ||
| Ensure ARIA attributes and live region behavior are correct. | ||
| - path: 'packages/notivue/Notifications/**' | ||
| instructions: | | ||
| Pre-built notification components and themes. | ||
| Check CSS variable usage, theme consistency, and icon accessibility. | ||
| - path: 'packages/notivue/nuxt/**' | ||
| instructions: | | ||
| Nuxt module integration. Verify module hooks, auto-imports, | ||
| and compatibility with Nuxt 4 conventions. | ||
| - path: 'packages/notivue/astro/**' | ||
| instructions: | | ||
| Astro integration. Ensure SSR/island compatibility | ||
| and correct lifecycle handling. | ||
| - path: 'tests/**' | ||
| instructions: | | ||
| Test suite using Vitest (unit) and Cypress (component). | ||
| Includes accessibility testing via cypress-axe. | ||
| Ensure tests are deterministic and cover edge cases. | ||
| - path: 'docs/**' | ||
| instructions: | | ||
| VitePress documentation. Check code examples for accuracy, | ||
| correct imports, and consistency with the actual API. | ||
|
|
||
| tools: | ||
| eslint: | ||
| enabled: false | ||
| biome: | ||
| enabled: false | ||
| markdownlint: | ||
| enabled: false | ||
| actionlint: | ||
| enabled: true | ||
| gitleaks: | ||
| enabled: true | ||
|
|
||
| finishing_touches: | ||
| docstrings: | ||
| enabled: false | ||
| unit_tests: | ||
| enabled: false | ||
| simplify: | ||
| enabled: false | ||
|
|
||
| chat: | ||
| auto_reply: true | ||
| allow_non_org_members: false | ||
|
|
||
| code_generation: | ||
| unit_tests: | ||
| path_instructions: | ||
| - path: 'tests/**' | ||
| instructions: | | ||
| This project uses Cypress component tests as the primary | ||
| test suite, not unit tests. Include cypress-axe accessibility | ||
| checks where relevant. Use cypress-real-events for user | ||
| interaction testing. A small Vitest suite exists in | ||
| tests/config/ for configuration logic only. | ||
|
|
||
| knowledge_base: | ||
| learnings: | ||
| scope: local | ||
| web_search: | ||
| enabled: true | ||
| code_guidelines: | ||
| enabled: true |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| !docs/ | ||
| !.claude/ | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,2 +1 @@ | ||
| polar: smastrom | ||
| buy_me_a_coffee: smastrom |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,21 @@ | ||
| { | ||
| "$schema": "./node_modules/oxfmt/configuration_schema.json", | ||
| "printWidth": 100, | ||
| "semi": false, | ||
| "singleQuote": true, | ||
| "tabWidth": 3, | ||
| "trailingComma": "es5", | ||
| "useTabs": false, | ||
| "ignorePatterns": [".vscode/**", "node_modules/**", "dist/**", "target/**"], | ||
| "sortPackageJson": { | ||
| "sortScripts": true | ||
| }, | ||
| "overrides": [ | ||
| { | ||
| "files": ["*.md"], | ||
| "options": { | ||
| "tabWidth": 2 | ||
| } | ||
| } | ||
| ] | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,93 @@ | ||
| { | ||
| "$schema": "./node_modules/oxlint/configuration_schema.json", | ||
| "plugins": ["typescript", "unicorn", "oxc"], | ||
| "jsPlugins": ["./oxlint-plugins.mjs"], | ||
| "categories": { | ||
| "correctness": "off", | ||
| "perf": "off", | ||
| "restriction": "off", | ||
| "suspicious": "off", | ||
| "pedantic": "off", | ||
| "style": "off", | ||
| "nursery": "off" | ||
| }, | ||
| "rules": { | ||
| "stylistic/sort-imports": [ | ||
| "error", | ||
| { | ||
| "internalPattern": ["^@/.+"], | ||
| "newlinesBetween": 1, | ||
| "customGroups": [ | ||
| { "groupName": "vue-files", "elementNamePattern": "\\.vue$" }, | ||
| { "groupName": "constants", "elementNamePattern": "/constants(/|$)" } | ||
| ], | ||
| "groups": [ | ||
| "vue-files", | ||
| "type", | ||
| "builtin", | ||
| "external", | ||
| "internal", | ||
| "constants", | ||
| ["parent", "sibling", "index"], | ||
| "side-effect", | ||
| "style", | ||
| "unknown" | ||
| ] | ||
| } | ||
| ], | ||
| "stylistic/padding-line-between-statements": [ | ||
| "error", | ||
| { "blankLine": "always", "prev": "import", "next": "*" }, | ||
| { "blankLine": "any", "prev": "import", "next": "import" }, | ||
| { | ||
| "blankLine": "always", | ||
| "prev": ["block-like", "if", "for", "while", "do", "switch", "try"], | ||
| "next": "*" | ||
| }, | ||
| { | ||
| "blankLine": "always", | ||
| "prev": "*", | ||
| "next": ["block-like", "if", "for", "while", "do", "switch", "try"] | ||
| }, | ||
| { | ||
| "blankLine": "any", | ||
| "prev": ["block-like", "if", "for", "while", "do", "switch", "try"], | ||
| "next": ["block-like", "if", "for", "while", "do", "switch", "try"] | ||
| }, | ||
| { "blankLine": "always", "prev": "expression", "next": ["const", "let"] }, | ||
| { "blankLine": "always", "prev": ["const", "let"], "next": "expression" }, | ||
| { "blankLine": "always", "prev": "const", "next": "let" }, | ||
| { "blankLine": "always", "prev": "let", "next": "const" }, | ||
| { | ||
| "blankLine": "always", | ||
| "prev": [ | ||
| { "selector": "ExpressionStatement[expression.type='AssignmentExpression']" }, | ||
| { "selector": "ExpressionStatement[expression.type='UpdateExpression']" } | ||
| ], | ||
| "next": [ | ||
| { "selector": "ExpressionStatement[expression.type='CallExpression']" }, | ||
| { "selector": "ExpressionStatement[expression.type='AwaitExpression']" } | ||
| ] | ||
| }, | ||
| { | ||
| "blankLine": "always", | ||
| "prev": [ | ||
| { "selector": "ExpressionStatement[expression.type='CallExpression']" }, | ||
| { "selector": "ExpressionStatement[expression.type='AwaitExpression']" } | ||
| ], | ||
| "next": [ | ||
| { "selector": "ExpressionStatement[expression.type='AssignmentExpression']" }, | ||
| { "selector": "ExpressionStatement[expression.type='UpdateExpression']" } | ||
| ] | ||
| }, | ||
| { | ||
| "blankLine": "always", | ||
| "prev": "*", | ||
| "next": ["return", "throw", "break", "continue"] | ||
| } | ||
| ] | ||
| }, | ||
| "env": { | ||
| "builtin": true | ||
| } | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,63 @@ | ||
| # Agents | ||
|
|
||
| ## Project | ||
|
|
||
| Notivue is a public OSS Vue 3 toast notification library. Treat `packages/notivue` as the product, with Nuxt and Astro integrations, playgrounds for manual checks, docs for the public contract, and `tests` as the regression suite. | ||
|
|
||
| - Keep changes small and library-grade. Prefer existing APIs, file layout, and naming over new patterns. | ||
| - Protect public exports, types, CSS entrypoints, accessibility behavior, SSR compatibility, and backwards compatibility unless the user explicitly asks for a breaking change. | ||
| - For behavior changes, update or add focused tests near the affected area. Cypress component tests are the main suite; Vitest is used for config logic. | ||
| - Never run development servers unless the user explicitly requests them. | ||
| - Use `pnpm` and the repo scripts: `pnpm build`, `pnpm test`, `pnpm test:unit`, `pnpm format:check`, `pnpm dev`, `pnpm dev:astro`. | ||
|
|
||
| ## Notivue stream layout | ||
|
|
||
| - Notification rows use `width: max-content` on `<li data-notivue-list-item>` so keyboard focus rings hug the toast. Stream focus and `aria-label` belong on the `<li>`; `[data-notivue-item]` is not focusable. | ||
| - Horizontal alignment follows `position` (`*-left`, `*-center`, `*-right`). Responsive changes use `config.update` / `updateConfig`, not CSS alignment overrides. | ||
| - `--nv-gap` is block-end margin on list items. Stacking uses `getListItemStackHeight` in `packages/notivue/core/utils.ts`. | ||
| - `NotivueKeyboard` `isCandidate` receives the `<li>` (`[data-notivue-list-item]`), same element as stream focus. | ||
|
|
||
| ## Workflow | ||
|
|
||
| - **GitHub (PR review):** CodeRabbit comments on pull requests. Triage each thread: fix when valid, dismiss with a short reason when not. Resolve threads after replying. | ||
| - **Local (implementation):** Cursor Agent makes changes, commits, and pushes on request. When answering CodeRabbit on GitHub, post replies on the review thread and note they were written by the agent (see below). | ||
| - Do not create commits or push to remotes unless the user explicitly requests it in the current conversation. | ||
| - After implementing changes, stop and let the user review the diff before committing or pushing. Do not commit proactively at the end of a task unless they asked for it in that message. | ||
| - **Before pushing:** If the branch has an open PR, run `gh pr view` and update the PR title and body when new commits change scope, behavior, dependencies, or the test plan. Do not push with an outdated description. | ||
|
|
||
| ## Writing | ||
|
|
||
| - Do not use em-dashes. Use a hyphen, a comma, a colon, or separate sentences instead. | ||
|
|
||
| ## Git | ||
|
|
||
| Match the style on `main`. Do **not** use Conventional Commits (`feat:`, `fix:`, `chore:`, etc.). | ||
|
|
||
| **Titles** | ||
|
|
||
| - Scoped: `{Area} - {Description}`. Capitalize the part after `-`. | ||
| - Areas: `Core`, `Notivue`, `Notification`, `Notifications`, `Pkg`, `Demo`, `Playground`, `Astro`, `Tests`, `Docs`, `CodeRabbit`, … | ||
| - Examples: `Core - Rename useRepositioning to useSizes`, `NotivueKeyboard - Fix focusable element tabindex selector` | ||
| - Multi-scope: `Core, Astro - Cleanup` | ||
| - Releases: `2.4.5 (#63)` (include PR number for version bumps) | ||
| - Small / misc: short imperative is fine (e.g. `Remove Claude Code GitHub workflow`) | ||
|
|
||
| **Body (optional)** | ||
|
|
||
| - Bullet lines: `* {Area} - …` | ||
|
|
||
| **Agent commits** | ||
|
|
||
| - Append co-author trailer: | ||
|
|
||
| ```text | ||
| Co-authored-by: Cursor <cursoragent@cursor.com> | ||
| ``` | ||
|
|
||
| **GitHub review replies** | ||
|
|
||
| - When replying to CodeRabbit (or any PR comment) on the user's behalf, end with: | ||
|
|
||
| ```text | ||
| Added by Cursor Agent | ||
| ``` |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Negation-only patterns are likely ineffective here.
!docs/and!.claude/only re-include paths after an ignore match. With no preceding ignore rule, this likely does not exclude anything.Suggested fix
📝 Committable suggestion
🤖 Prompt for AI Agents