-
Notifications
You must be signed in to change notification settings - Fork 1
feat(docs): complete docs site with docs-kit, dark mode, and full pages #3
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
Changes from all commits
e6ceb73
dca416e
859b4d4
fd4aa0c
fa685de
40279f1
128cf95
83f0120
6934093
45f4a1d
baf33cc
5426352
c9da9c6
1be6a77
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,170 @@ | ||
| language: en-US | ||
| tone_instructions: Be concise and technical. Focus on critical issues first (bugs, security, accessibility), then suggestions. Prioritize actionable feedback over observations. | ||
| early_access: false | ||
| enable_free_tier: true | ||
| reviews: | ||
| profile: assertive | ||
| request_changes_workflow: false | ||
| # Disable GitHub PR comments - we use Claude Code locally for reviews | ||
| high_level_summary: false | ||
| high_level_summary_placeholder: '@coderabbitai summary' | ||
| high_level_summary_in_walkthrough: false | ||
| # Disable auto-title - we craft conventional commits manually | ||
| auto_title_placeholder: '@coderabbitai' | ||
| auto_title_instructions: '' | ||
| # Disable status checks - we use trunk locally | ||
| review_status: false | ||
| commit_status: false | ||
| fail_commit_status: false | ||
| collapse_walkthrough: true | ||
| changed_files_summary: false | ||
| sequence_diagrams: false | ||
| assess_linked_issues: false | ||
| related_issues: false | ||
| related_prs: false | ||
| suggested_labels: false | ||
| auto_apply_labels: false | ||
| suggested_reviewers: false | ||
| auto_assign_reviewers: false | ||
| poem: false | ||
| labeling_instructions: | ||
| - label: bug | ||
| instructions: Apply to any code that fixes incorrect behavior or errors | ||
| - label: enhancement | ||
| instructions: Apply to new features or improvements to existing features | ||
| - label: docs | ||
| instructions: Apply to documentation updates or improvements | ||
| - label: test | ||
| instructions: Apply to test additions or improvements | ||
| - label: refactor | ||
| instructions: Apply to code restructuring without behavior changes | ||
| - label: performance | ||
| instructions: Apply to performance improvements or optimizations | ||
| - label: security | ||
| instructions: Apply to security fixes or improvements | ||
| - label: animation | ||
| instructions: Apply to changes to animation logic or Motion integration | ||
| - label: accessibility | ||
| instructions: Apply to accessibility improvements (a11y, keyboard, screen readers) | ||
| - label: breaking-change | ||
| instructions: Apply to changes that break backward compatibility | ||
| path_filters: [] | ||
| path_instructions: | ||
| - path: src/lib/utils/**/*.ts | ||
| instructions: Ensure all exported functions use arrow function syntax (const fn = () => {}). All functions must have comprehensive JSDoc comments with @param, @returns, and @example tags. Verify type safety and check for potential ReDoS vulnerabilities in regex patterns. | ||
| - path: src/lib/**/*.svelte | ||
| instructions: Review Svelte 5 runes usage ($state, $derived, $effect). Ensure proper cleanup in $effect blocks. Check for memory leaks and performance issues. Verify SSR compatibility. | ||
| - path: '**/*.spec.ts' | ||
| instructions: Ensure tests are comprehensive with good coverage of edge cases, error paths, and accessibility. Tests should be well-named and describe the expected behavior clearly. | ||
| - path: docs/**/* | ||
| instructions: Verify examples are correct, runnable, and match current API. Check for broken links and ensure code examples follow project conventions. | ||
| - path: tests/**/*.ts | ||
| instructions: Ensure e2e tests are reliable, avoid flakiness, and test real user scenarios. Verify proper waits and assertions. | ||
| - path: docs/e2e/**/*.ts | ||
| instructions: Ensure e2e tests are reliable, avoid flakiness, and test real user scenarios. Verify proper waits and assertions. | ||
| abort_on_close: true | ||
| disable_cache: false | ||
| auto_review: | ||
| enabled: true | ||
| auto_incremental_review: true | ||
| ignore_title_keywords: [] | ||
| labels: [] | ||
| drafts: false | ||
| base_branches: [] | ||
| finishing_touches: | ||
| docstrings: | ||
| enabled: false | ||
| unit_tests: | ||
| enabled: false | ||
| tools: | ||
| ast-grep: | ||
| rule_dirs: [] | ||
| util_dirs: [] | ||
| essential_rules: true | ||
| packages: [] | ||
| shellcheck: | ||
| enabled: false # Not needed for TS/Svelte project | ||
| ruff: | ||
| enabled: false # Python linter - not needed | ||
| markdownlint: | ||
| enabled: true | ||
| github-checks: | ||
| enabled: true | ||
| timeout_ms: 90000 | ||
| languagetool: | ||
| enabled: false | ||
| biome: | ||
| enabled: true # Good for TypeScript/JavaScript | ||
| hadolint: | ||
| enabled: false # Docker linter - not needed | ||
| swiftlint: | ||
| enabled: false # Swift linter - not needed | ||
| phpstan: | ||
| enabled: false # PHP linter - not needed | ||
| level: default | ||
| golangci-lint: | ||
| enabled: false # Go linter - not needed | ||
| yamllint: | ||
| enabled: true | ||
| gitleaks: | ||
| enabled: true # Security - keep enabled | ||
| checkov: | ||
| enabled: false # Infrastructure security - not needed | ||
| detekt: | ||
| enabled: false # Kotlin linter - not needed | ||
| eslint: | ||
| enabled: true # Essential for TypeScript/JavaScript | ||
| rubocop: | ||
| enabled: false # Ruby linter - not needed | ||
| buf: | ||
| enabled: false # Protobuf linter - not needed | ||
| regal: | ||
| enabled: false # Rego linter - not needed | ||
| actionlint: | ||
| enabled: true # Useful for GitHub Actions | ||
| pmd: | ||
| enabled: false # Java linter - not needed | ||
| cppcheck: | ||
| enabled: false # C/C++ linter - not needed | ||
| semgrep: | ||
| enabled: true # Security patterns - useful | ||
| circleci: | ||
| enabled: false # Not using CircleCI | ||
| sqlfluff: | ||
| enabled: false # SQL linter - not needed | ||
| prismaLint: | ||
| enabled: false # Prisma ORM - not needed | ||
| oxc: | ||
| enabled: true # Fast JavaScript/TypeScript linter | ||
| shopifyThemeCheck: | ||
| enabled: false # Shopify themes - not needed | ||
| chat: | ||
| # Disable auto-reply - we interact via Claude Code, not GitHub comments | ||
| auto_reply: false | ||
| integrations: | ||
| jira: | ||
| usage: disabled | ||
| linear: | ||
| usage: disabled | ||
| knowledge_base: | ||
| opt_out: false | ||
| web_search: | ||
| enabled: false | ||
| learnings: | ||
| scope: local | ||
| issues: | ||
| scope: local | ||
| jira: | ||
| usage: disabled | ||
| project_keys: [] | ||
| linear: | ||
| usage: disabled | ||
| team_keys: [] | ||
| pull_requests: | ||
| scope: local | ||
| # Code generation disabled - we write docs and tests via Claude Code | ||
| code_generation: | ||
| docstrings: | ||
| enabled: false | ||
| unit_tests: | ||
| enabled: false | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| # Ignore files for PNPM, NPM and YARN | ||
| pnpm-lock.yaml | ||
| package-lock.json | ||
| yarn.lock | ||
|
|
||
| # Generated outputs | ||
| node_modules/ | ||
| .svelte-kit/ | ||
| build/ |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| { | ||
| "overrides": [ | ||
| { | ||
| "files": "*.svelte", | ||
| "options": { | ||
| "parser": "svelte" | ||
| } | ||
| } | ||
| ], | ||
| "plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"], | ||
| "printWidth": 100, | ||
| "semi": false, | ||
| "singleQuote": true, | ||
| "tabWidth": 4, | ||
| "trailingComma": "none", | ||
| "useTabs": false | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,12 @@ | ||
| import { fetchGitHubStats } from '@humanspeak/docs-kit/scripts/fetch-github-stats' | ||
| import path from 'path' | ||
| import { fileURLToPath } from 'url' | ||
| import { docsConfig } from '../src/lib/docs-config' | ||
|
|
||
| const __dirname = path.dirname(fileURLToPath(import.meta.url)) | ||
|
|
||
| await fetchGitHubStats({ | ||
| repo: docsConfig.repo, | ||
| fallbackStars: docsConfig.fallbackStars, | ||
| outputPath: path.resolve(__dirname, '..', 'src', 'lib', 'github-stats.json') | ||
| }) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| import { generateSocialCards } from '@humanspeak/docs-kit/scripts/generate-social-cards' | ||
| import path from 'path' | ||
| import { fileURLToPath } from 'url' | ||
| import { docsConfig } from '../src/lib/docs-config' | ||
|
|
||
| const __dirname = path.dirname(fileURLToPath(import.meta.url)) | ||
| const ROOT = path.resolve(__dirname, '..') | ||
|
|
||
| await generateSocialCards({ | ||
| npmPackage: docsConfig.npmPackage, | ||
| defaultTitle: docsConfig.name, | ||
| defaultDescription: | ||
| 'A high-performance virtual chat viewport for Svelte 5. Follow-bottom, streaming-stable, history-aware.', | ||
| defaultFeatures: docsConfig.defaultFeatures, | ||
| rootDir: ROOT, | ||
| fontsDir: path.join(ROOT, 'node_modules/@humanspeak/docs-kit/dist/fonts') | ||
| }) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,17 +1,36 @@ | ||
| @import 'tailwindcss'; | ||
| @source '../node_modules/@humanspeak/docs-kit/dist'; | ||
| @import '@humanspeak/docs-kit/styles/base.css'; | ||
| @plugin '@tailwindcss/typography'; | ||
|
Comment on lines
+2
to
+4
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "== app.css header =="
nl -ba docs/src/app.css | sed -n '1,20p'
echo
echo "== stylelint config candidates =="
fd -HI 'stylelint|\.stylelintrc'
echo
echo "== stylelint rule snippets (if present) =="
rg -n --iglob '*stylelint*' 'ignoreAtRules|at-rule-no-unknown|no-invalid-position-at-import-rule|scss/at-rule-no-unknown' || trueRepository: humanspeak/svelte-virtual-chat Length of output: 154 🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "== app.css content (first 30 lines) =="
head -30 docs/src/app.css || echo "File not found or error reading"
echo
echo "== stylelint config files =="
fd -HI 'stylelint' --type f
echo
echo "== .stylelintrc* files =="
fd -HI '\.stylelintrc' --type f
echo
echo "== stylelint.config files =="
fd -HI 'stylelint\.config' --type fRepository: humanspeak/svelte-virtual-chat Length of output: 1027 🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "== .stylelintrc.json content =="
cat .stylelintrc.json
echo
echo "== Check for at-rule rules in config =="
rg -A5 -B5 'at-rule|ignoreAtRules' .stylelintrc.json || trueRepository: humanspeak/svelte-virtual-chat Length of output: 1923 🌐 Web query:
💡 Result: In stylelint-config-standard-scss (latest v17.0.0 as of 2026-01-15), the "at-rule-no-unknown" rule is disabled (set to null) and replaced by the SCSS-specific "scss/at-rule-no-unknown" rule, which is enabled (true). This configuration extends stylelint-config-standard (which enables "at-rule-no-unknown": true) and stylelint-config-recommended-scss. The recommended-scss config bundles stylelint-scss plugin and turns on error-checking rules including scss/at-rule-no-unknown, while overriding the standard at-rule-no-unknown to support SCSS at-rules like Citations:
🌐 Web query:
💡 Result: Tailwind CSS v4 does not enforce a strict ordering requirement for Citations:
🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "== Search for scss/at-rule-no-unknown references =="
rg 'scss/at-rule-no-unknown|ignoreAtRules.*source|ignoreAtRules.*plugin' . --type json || echo "Not found - means not configured"
echo
echo "== Check if `@source` and `@plugin` would be flagged =="
echo "Current stylelint config extends stylelint-config-standard-scss"
echo "Which has scss/at-rule-no-unknown ENABLED by default"
echo "Without ignoreAtRules configuration, `@source` and `@plugin` WILL be flagged as unknown"Repository: humanspeak/svelte-virtual-chat Length of output: 412 Configure stylelint to recognize Tailwind v4 at-rules before merge. The stylelint config extends {
"rules": {
"scss/at-rule-no-unknown": {
"ignoreAtRules": ["source", "plugin", "config", "theme", "utility", "variant"]
}
}
}Note: The at-rule ordering in 🧰 Tools🪛 Stylelint (17.7.0)[error] 3-3: Invalid position for (no-invalid-position-at-import-rule) [error] 2-2: Unexpected unknown at-rule "@source" (scss/at-rule-no-unknown) (scss/at-rule-no-unknown) [error] 4-4: Unexpected unknown at-rule "@plugin" (scss/at-rule-no-unknown) (scss/at-rule-no-unknown) 🤖 Prompt for AI Agents
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. These are Tailwind CSS 4 directives — not standard CSS at-rules. They're processed by the Tailwind Vite plugin. Same pattern as svelte-markdown's docs. |
||
|
|
||
| :root { | ||
| --brand-500: #6366f1; | ||
| --brand-600: #4f46e5; | ||
| --brand-700: #4338ca; | ||
| /* Project-specific: landing page decorative styles */ | ||
| .orb-a-bg { | ||
| background: radial-gradient( | ||
| circle at 30% 30%, | ||
| color-mix(in oklab, var(--color-brand-100) 40%, transparent), | ||
| color-mix(in oklab, var(--color-brand-100) 10%, transparent) | ||
| ); | ||
| } | ||
|
|
||
| body { | ||
| font-family: | ||
| system-ui, | ||
| -apple-system, | ||
| BlinkMacSystemFont, | ||
| 'Segoe UI', | ||
| Roboto, | ||
| sans-serif; | ||
| .orb-b-bg { | ||
| background: radial-gradient( | ||
| circle at 70% 50%, | ||
| color-mix(in oklab, var(--color-brand-500) 30%, transparent), | ||
| color-mix(in oklab, var(--color-brand-500) 8%, transparent) | ||
| ); | ||
| } | ||
|
|
||
| @keyframes sheen { | ||
| 0%, | ||
| 100% { | ||
| background-position: 0% 50%; | ||
| } | ||
| 50% { | ||
| background-position: 100% 50%; | ||
| } | ||
| } | ||
|
|
||
| .sheen-gradient { | ||
| background-size: 200% 100%; | ||
| animation: sheen 6s ease-in-out infinite; | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| import { createDocsKitHandle } from '@humanspeak/docs-kit/hooks' | ||
|
|
||
| export const handle = createDocsKitHandle() |
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.
🧩 Analysis chain
🏁 Script executed:
Repository: humanspeak/svelte-virtual-chat
Length of output: 187
Remove unsupported
enabledkeys fromcode_generationconfig at Lines 168 and 170code_generation.docstrings.enabledandcode_generation.unit_tests.enabledare not valid schema keys. CodeRabbit will ignore these settings. Usepath_instructionsinstead to configure these sections.Suggested fix
code_generation: docstrings: - enabled: false + path_instructions: [] unit_tests: - enabled: false + path_instructions: []📝 Committable suggestion
🤖 Prompt for AI Agents
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.
Copied from svelte-markdown where it works. If CodeRabbit ignores these keys, no harm done.