Remove wrangler.json from git#148
Conversation
Integrate ultracite as the Biome configuration preset across the monorepo, replacing manual biome.json configs with extends-based biome.jsonc files. Set up husky pre-commit hook with lint-staged to auto-fix staged files on commit.
…tylessh#9) - Create @quickhub/icons package wrapping @hugeicons/react with stable aliases - Add horizontal topbar with user avatar dropdown, nav tabs, and theme switcher - Establish layout shell: muted background surface with rounded content card - Add surface tokens (surface-0/1/2) for layered background levels - Tune typography: 13px body at weight 450, 500 for interactive elements - Configure dark mode with inverted surface hierarchy and elevated popovers - Update button, dropdown, and select components for consistent radius and transitions - Move dashboard route from /dashboard to / with protected layout wrapper
* Share local D1 state across worktrees * Only share local D1 state in worktrees
* Redesign overview page with metric cards and PR comment preview Rebuild the overview page with a contained max-w-3xl layout featuring Luma-style metric cards (open PRs, issues, review requests), a recent pull requests list with state-colored icons and inline comment preview, and a shared GitHub Flavored Markdown renderer in the UI package. * Extract PullRequestRow component and add custom scrollbar Move PullRequestRow into #/components/pulls/ for feature-based organization. Add custom scrollbar styles with stable gutter, thumb-only rendering, and auto-hide on inactivity. Add welcome header to overview. * Fix markdown images breaking inline flow in table cells
Build detail pages at /$owner/$repo/pull/$id and /$owner/$repo/issues/$id with two-column layout: content on the left (header, description, activity timeline with comments, comment box) and metadata sidebar on the right (reviewers, participants, assignees, milestones, details). PR view includes merge status card with CI checks, review state, branch status, and update branch action. Stacked participant avatars with tooltips. Smaller tooltip styling globally. Issue rows now link internally instead of to GitHub.
* Improve dashboard caching and preloading * Refine dashboard detail route loading
Configure remote D1 deployment
… polish (stylessh#24) - Add shiki-based syntax highlighting to markdown code blocks with custom Vercel light/dark themes, copy button, and React Suspense for flash-free rendering - Move issue labels to sidebar with theme-aware label pill styling - Add icons to PR detail sidebar rows (calendar, clock, message, file, commit) - Restructure PR header layout with copyable branch badges - Add diff boxes visualization to PR stats bar - Darken green-500 in light mode, switch to Geist Mono variable font
* Add PR review page with diff viewer, inline comments, and file tree Introduces a dedicated code review page at /$owner/$repo/review/$pullId powered by @pierre/diffs for syntax-highlighted diffs with multi-line comment support via gutter drag selection. Includes resizable file tree sidebar, review submission (Comment/Approve/Request Changes), and proper dark/light theme integration. * Fix CF Workers deployment: exclude shiki from server bundle Shiki's bundled language grammars (~1.5 MB) were being included in the server bundle via @pierre/diffs and markdown.tsx, pushing the worker over the 3 MiB free plan limit. - Add Vite plugin to stub shiki in SSR environment - Lazy-load PatchDiff component to avoid SSR import chain to shiki - Guard shiki highlighter initialization to client-only in markdown.tsx
* feat: add test script and CI check for pull requests Wire up `pnpm test` via Turborepo to run Vitest across all workspace packages, and add a required Test job to the PR checks workflow. https://claude.ai/code/session_01Tw4Aikrys2TqqyAmC9AEXe * fix: align github.server and github-cache tests with refactored source - Mock `@tanstack/react-start/server` in github-cache tests to avoid slow dynamic import that caused a timeout on the first test - Add `Octokit.defaults` to the octokit mock so installation client tests can call the static method - Mock `configureGitHubRequestPolicies` and update assertions to match the refactored code that delegates request policies instead of configuring throttle/retry inline https://claude.ai/code/session_01Tw4Aikrys2TqqyAmC9AEXe * chore: rename test CI check to "Test Suite" https://claude.ai/code/session_01Tw4Aikrys2TqqyAmC9AEXe --------- Co-authored-by: Claude <noreply@anthropic.com>
* Fix shortcut hints * Polish shortcut navigation * Remove PR screenshot assets --------- Co-authored-by: Prem Sathisha Etagi <premsathisha@users.noreply.github.com>
# Conflicts: # apps/dashboard/src/routes/_protected/settings/shortcuts.tsx
* feat: add drag-to-reorder tabs and "close merged" context menu option - Add native HTML drag-and-drop to reorder dashboard tabs, persisted to localStorage - Add "Close merged" context menu option with purple PR icon to bulk-close merged PR/review tabs - Track merged state on tabs via explicit `merged` field with iconColor fallback for existing tabs * fix: add merged field to useRegisterTab type signature
…lob/tree routes * feat: add file explorer with tree sidebar, syntax highlighting, and blob/tree routes Add a split-panel code explorer accessible from the repo overview file tree. Clicking any file or folder navigates to tree/blob routes matching GitHub's URL convention. The explorer features: - Resizable left sidebar with recursive file tree (lazy-loaded directories) - Folder view with commit messages and timestamps in the right pane - Shiki syntax-highlighted code viewer with line numbers, copy, and raw download - File-specific latest commit bar (fetches last commit affecting that file) - Progressive BFS prefetching of all tree nodes to eliminate loading spinners - Mobile drawer pattern for file tree (matches review page) - Ref parsing from splat URLs with longest-branch-match strategy * feat: shared file search, per-entry commits, image preview, and UI polish - Extract file search card into shared component for reuse across repo sidebar and PR review page - Add fuzzy file search library (fuzzy-file-search.ts) - Fetch per-entry last commit data in folder view and file tree (commit message + relative time) - Render image files (png, jpg, gif, etc.) as media preview instead of blob content - Add preview/code toggle for SVG files - Fix long-line background rendering by moving overflow to outer wrapper with sticky line numbers - Split directory node click: arrow toggles expand, name navigates to folder - Center README content with max-w-3xl and increased vertical padding - Use bg-surface-1 for latest commit bar - Align search card top padding with content pane - Add F shortcut to focus search in PR review page * perf: optimize re-renders and batch commit queries - Batch per-entry commit messages into a single GraphQL query with aliased history fields instead of N separate REST calls - Add explorer-path-store (useSyncExternalStore) so tree nodes subscribe to derived isActive booleans — only 2 nodes re-render on navigation - Memoize scope objects in route components to stop busting memo on every child - Prevent same-URL navigation on already-active tree nodes - Stabilize callbacks in RepoExplorerLayout (useCallback + imperative reads from store) - Isolate pathname subscription in dashboard-tabs via ScrollActiveTabIntoView renderless component - Fix branch switch in blob view navigating to tree route - Add light-mode border to branch selector button
* feat: filter private repos by GitHub App installation access Build a cached installation access index that tracks which repos/owners the GitHub App is installed for. Private repos are only shown if the owning account has an "all" installation or the specific repo is in the "selected" set. Public repos always pass through. - Add `installationAccess` signal key and cache policy (30 min stale) - Webhook events (installation, installation_repositories, github_app_authorization) invalidate the index immediately - `getInstallationAccessIndex` fetches installations and paginates selected repos, cached via getOrRevalidateGitHubResource - `isRepoVisibleWithInstallationAccess` filter utility (fail-open when no app is configured) - Apply filter in `getUserRepos` (parallel fetch with repo list) - Expose `getInstallationAccess` server function for other consumers - 7 new tests covering all filter scenarios * feat: extend installation access filtering to all GitHub data flows Add isPrivate to RepositoryRef and all GraphQL repository fragments so the installation access filter can be applied everywhere, not just getUserRepos. - Add isPrivate to RepositoryRef type and GitHubGraphQLRepositoryRef - Update buildRepositoryRef, parseRepositoryRef, mapGraphQLRepositoryRef - Add isPrivate to GraphQL fragments for pull search, issue search, pull detail, and issue detail queries - Add generic filterItemsByInstallationAccess helper and specialized filterMyPullsResult / filterMyIssuesResult wrappers - Apply filter in getMyPulls, getMyIssues (parallel fetch with result) - Apply filter in searchCommandPaletteGitHub (parallel with search) - Apply filter in getNotifications (parallel with notification fetch) - Apply filter in getUserPinnedRepos * chore: add debug logs throughout installation access filtering Add debug() calls so the access index building and filtering behavior is fully observable in local dev: - Log when fetching the index (cache miss vs resolved from cache) - Log each installation's access mode (all/selected/suspended) - Log the full built index (owners, repos, counts) - Log whenever items are filtered out, with repo names and counts (getUserRepos, getMyPulls, getMyIssues, command palette, notifications, pinned repos) * feat: refresh installation access cache when returning from GitHub Add visibilitychange listener to /setup page and access dialog that busts the server-side installation access cache and invalidates all GitHub queries when the user returns from configuring permissions. * fix: address review feedback on installation access filtering - Paginate GET /user/installations (handles >100 installations) - Let transient API errors propagate instead of silently failing open - Use app-user client (not OAuth) for listInstallationReposForAuthenticatedUser - Default unknown repo visibility to null instead of false (public), so REST search results are checked against the access index - Wrap refreshInstallationAccess in try/finally so client-side cache invalidation runs even if the server call fails
…elect * feat: add open current page on github shortcut and command to cmd+k select * chore: reconsidered ui change * feat: Do not apply extension redirects for certain referers.
* feat: persist selected clone protocol in code explorer * apply suggestion
…nges Subscribe pulls/issues mine and repos.list caches to installationAccess signals, bust installation access row on refresh, so setup changes reflect immediately instead of waiting for unrelated cache TTLs.
* feat(comments): R2 media uploads and composer improvements Add Cloudflare R2-backed image/video upload for issue/PR comments (multipart route, finalize HTML embeds). Integrate react-dropzone with inline uploading placeholders, scroll-to-actions when needed, and remote R2 binding for local dev. Extend MarkdownEditor with field-sizing, non-blocking uploads, replaceUploadPlaceholder, and conditional scroll behavior. Document optional R2_PUBLIC_BASE_URL in .dev.vars.example. * fix(ci): disable Cloudflare remote bindings during Vitest Wrangler remote mode (R2 remote: true) requires wrangler login; GitHub Actions has no session, so Vitest failed at Vite startup. Set @cloudflare/vite-plugin remoteBindings to false when CI or VITEST is set so tests use local Miniflare only.
* Fix navbar avatar fallback * Delay avatar fallback to prevent initials flash on refresh * Render avatar fallback immediately when image is missing --------- Co-authored-by: Prem Sathisha Etagi <premsathisha@users.noreply.github.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
✅ Files skipped from review due to trivial changes (2)
📝 WalkthroughWalkthroughAdded Wrangler configuration setup for the Cloudflare Workers environment. Changes include updating Changes
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~3 minutes 🚥 Pre-merge checks | ✅ 1 | ❌ 2❌ Failed checks (2 inconclusive)
✅ Passed checks (1 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (1)
apps/dashboard/.gitignore (1)
15-15: Consider ignoring both.jsonand.jsoncvariants.Wrangler supports multiple config file formats (
wrangler.json,wrangler.jsonc,wrangler.toml). The current pattern only covers.jsonc. Consider whether other variants should also be ignored.🔧 Optional pattern expansion
If contributors might use different formats locally:
-wrangler.jsonc +wrangler.json +wrangler.jsoncOr use a pattern (though less explicit):
-wrangler.jsonc +wrangler.json*Note: Only add this if multiple formats are actually expected in local development.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/dashboard/.gitignore` at line 15, The .gitignore currently only lists "wrangler.jsonc"; update the ignore entries to cover other Wrangler config variants by adding "wrangler.json" and/or "wrangler.toml" (or a concise pattern like "wrangler.*") so local config files in formats .json, .jsonc, or .toml are ignored; modify the apps/dashboard/.gitignore to include these additional patterns (reference existing "wrangler.jsonc" entry) depending on which formats contributors may use.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@apps/dashboard/.gitignore`:
- Line 15: .gitignore currently excludes wrangler.jsonc but there's no
example/template committed; add a template file named wrangler.jsonc.example
that documents the required structure and placeholder values (matching the keys
used by your Cloudflare Worker setup such as d1_databases, binding,
database_name, database_id, migrations_dir) and commit it alongside keeping
wrangler.jsonc in .gitignore; also update the project's README or CONTRIBUTING
to instruct contributors to copy wrangler.jsonc.example to wrangler.jsonc and
fill in their own credentials.
- Line 15: Add a template wrangler config and local setup docs so new
contributors know required keys: create apps/dashboard/wrangler.jsonc.example
containing placeholder fields (e.g., account_id, kv_namespace_ids,
durable_object names) matching the real wrangler.jsonc structure, and add a
brief apps/dashboard/README.md (or update CONTRIBUTING.md) with steps to copy
wrangler.jsonc.example to wrangler.jsonc, fill in project-specific IDs, and note
that deployments are manual (pnpm run deploy); ensure filenames referenced in
docs match wrangler.jsonc and wrangler.jsonc.example exactly.
---
Nitpick comments:
In `@apps/dashboard/.gitignore`:
- Line 15: The .gitignore currently only lists "wrangler.jsonc"; update the
ignore entries to cover other Wrangler config variants by adding "wrangler.json"
and/or "wrangler.toml" (or a concise pattern like "wrangler.*") so local config
files in formats .json, .jsonc, or .toml are ignored; modify the
apps/dashboard/.gitignore to include these additional patterns (reference
existing "wrangler.jsonc" entry) depending on which formats contributors may
use.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 1589a189-83f6-4075-a21a-52ec36c3a2c5
📒 Files selected for processing (2)
apps/dashboard/.gitignoreapps/dashboard/wrangler.jsonc
💤 Files with no reviewable changes (1)
- apps/dashboard/wrangler.jsonc
| .vinxi | ||
| __unconfig* | ||
| todos.json | ||
| wrangler.jsonc |
There was a problem hiding this comment.
🛠️ Refactor suggestion | 🟠 Major
Add a template file to document required configuration structure.
To help contributors set up their local environment, commit a template file (e.g., wrangler.jsonc.example) that documents the expected structure with placeholder values. This is a standard practice when ignoring environment-specific configuration files.
📝 Suggested approach
- Create
apps/dashboard/wrangler.jsonc.examplewith placeholder values:
{
"d1_databases": [
{
"binding": "DB",
"database_name": "diffkit-db",
"database_id": "<YOUR_DATABASE_ID>",
"migrations_dir": "drizzle"
}
]
// Add other configuration sections with placeholders
}-
Update README or contributing docs to explain how to copy and configure the template.
-
Keep this
.gitignoreentry to prevent committing actual credentials.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@apps/dashboard/.gitignore` at line 15, .gitignore currently excludes
wrangler.jsonc but there's no example/template committed; add a template file
named wrangler.jsonc.example that documents the required structure and
placeholder values (matching the keys used by your Cloudflare Worker setup such
as d1_databases, binding, database_name, database_id, migrations_dir) and commit
it alongside keeping wrangler.jsonc in .gitignore; also update the project's
README or CONTRIBUTING to instruct contributors to copy wrangler.jsonc.example
to wrangler.jsonc and fill in their own credentials.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Description: Check CI/CD configuration for wrangler config handling
# Check for CI/CD config files
fd -t f 'workflow|pipeline|deploy' -e yml -e yaml -e json
# Search for wrangler-related commands in CI/CD
rg -n -C3 'wrangler' --glob '*.{yml,yaml,json}' --glob '.github/**/*'
# Check for wrangler config generation or secrets management
rg -n 'wrangler\.json' --glob '*.{yml,yaml,json,sh,js,ts}' --glob '.github/**/*'Repository: stylessh/diffkit
Length of output: 4075
🏁 Script executed:
#!/bin/bash
# Check for GitHub Actions workflows specifically
fd -type f -path '.github/workflows/*' -name '*.yml' -o -name '*.yaml'
# Look for wrangler config files and templates
fd -type f -name 'wrangler*'
# Check for documentation about setup
fd -type f \( -name 'README*' -o -name 'SETUP*' -o -name 'CONTRIBUTING*' \) apps/dashboard/
# Search for any references to wrangler config in CI files more broadly
find .github -type f 2>/dev/null | head -20Repository: stylessh/diffkit
Length of output: 767
🌐 Web query:
wrangler configuration deployment cloudflare required environment
💡 Result:
For Cloudflare Workers deployment with Wrangler, the required configuration in wrangler.toml (or wrangler.jsonc) includes at minimum: name (string, Worker name), main (string, entrypoint path like "src/index.js"), and compatibility_date (string, date like "2026-04-17"). Environment variables are optional via [vars] (plain text/JSON bindings deployed to the Worker) or [secrets.required] (list of required secret names, validated on deploy). Vars must be explicitly defined per environment as they are non-inheritable. Wrangler environments ([env.staging], etc.) allow separate configs; deploy with wrangler deploy --env staging. For authentication/deployment, system env vars like CLOUDFLARE_ACCOUNT_ID and CLOUDFLARE_API_TOKEN are needed (set in .env or shell), but not in the config file. Example minimal wrangler.toml: name = "my-worker" main = "src/index.js" compatibility_date = "2026-04-17" [vars] API_KEY = "value" # optional Deploy: npx wrangler deploy (auth via env vars).
Citations:
- 1: https://developers.cloudflare.com/workers/wrangler/configuration/
- 2: https://developers.cloudflare.com/workers/tooling/wrangler/configuration/
- 3: https://developers.cloudflare.com/workers/wrangler/system-environment-variables/
- 4: https://developers.cloudflare.com/workers/configuration/environment-variables/
- 5: https://developers.cloudflare.com/workers/wrangler/environments/
- 6: https://developers.cloudflare.com/workers/cli-wrangler/configuration/
- 7: https://developers.cloudflare.com/workers/cli-wrangler/configuration
🏁 Script executed:
#!/bin/bash
# Check the CI/CD workflow
cat .github/workflows/pr-checks.yml
# List files in apps/dashboard to see if wrangler.jsonc exists
echo "=== Files in apps/dashboard/ ==="
ls -la apps/dashboard/ | grep -E '(wrangler|\.jsonc|\.json|\.toml)'
# Check if there's a wrangler.jsonc in the repo anywhere
echo "=== Searching for wrangler.jsonc ==="
find . -name 'wrangler.jsonc' -o -name 'wrangler.json' -o -name 'wrangler.toml' 2>/dev/null
# Check deploy-related scripts
echo "=== Checking for deploy scripts ==="
fd -t f -name '*deploy*' -type fRepository: stylessh/diffkit
Length of output: 2381
Add a template file for local wrangler configuration.
Ignoring wrangler.jsonc is appropriate since database IDs and KV IDs differ per contributor. However, new developers won't know what this file should contain. Create apps/dashboard/wrangler.jsonc.example as a template and document the setup steps in a local README.md or CONTRIBUTING.md.
Note: The PR description questions deployment impact, but the CI/CD workflow (pr-checks.yml) doesn't run deployments—those are manual (pnpm run deploy). The concern is developer experience, not breaking CI/CD.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@apps/dashboard/.gitignore` at line 15, Add a template wrangler config and
local setup docs so new contributors know required keys: create
apps/dashboard/wrangler.jsonc.example containing placeholder fields (e.g.,
account_id, kv_namespace_ids, durable_object names) matching the real
wrangler.jsonc structure, and add a brief apps/dashboard/README.md (or update
CONTRIBUTING.md) with steps to copy wrangler.jsonc.example to wrangler.jsonc,
fill in project-specific IDs, and note that deployments are manual (pnpm run
deploy); ensure filenames referenced in docs match wrangler.jsonc and
wrangler.jsonc.example exactly.
|
nice catch |
|
did you apply coderabbit's feedback? |
|
Yep, I added an example file Also, for security reasons, you should probably erase this file from git history via git filter-repo |
* feat(dashboard): activity timeline, repo shell, and GitHub helpers - Issue/PR detail activity timelines, grouped label events, close reasons - Comment reaction bar; sidebar section titleRight for contributors count - Repo activity card empty states; header star/fork actions - Extend github.functions/types and icons for new UI * fix(dashboard): comment reaction tooltips, NumberFlow, motion polish - Store userLoginsByContent from GraphQL; optimistic patch with viewerLogin - Tooltip lists reactors (first 10 +N); pass viewerLogin from issue/PR bubbles - Motion layout, AnimatePresence, NumberFlow for reaction chips * fix: address CodeRabbit review (cache v2, viewer context, UI nits) - Bump GraphQL page and repo overview cache resource versions to v2 - Resolve viewer via getGitHubUserContextForRepository for issue/PR page loads - Map REST comment node_id to graphqlId for paginated comments and pull comments - Invalidate repoMeta on issue state change; bump parent repoMeta after fork - Gate close/reopen on successful createComment; repo header/sidebar a11y - Show reaction chips on coarse pointers (hover: none) without hover * refactor(dashboard): extract usePrefersNoHover for coarse pointer UI * feat(dashboard): reactions on issue/PR descriptions Fetch GraphQL id and reactions on issue/PR detail, optimistic detail patching in the reaction bar, and inline layout below markdown.
* feat(dashboard): GitHub cache tuning for My lists and repo signals Introduce a shorter mine policy for My pulls/issues/reviews on client and server, refresh mine aggregates without merging closed items back from cache, and shorten the signal poll fallback. Scope repo list and repo-filtered user search caches to repoMeta instead of global mine keys to cut spurious refetches and rate-limit churn. * fix(dashboard): decouple mine cache merge from timedOut telemetry CodeRabbit: timedOut is also set via hasRecentGitHubTimeouts(), so using it for cache union could resurrect stale rows after an unrelated timeout. Introduce partial when results.length < sources.length and use that for mergeMyPullsCachedWithFresh / mergeMyIssuesCachedWithFresh only.
|
@stylessh can you merge(I can't even with all checks and your approval)? |
Summary
Wrangler.json should be removed from gear indexing, because for each contributor database IDs, KV IDs, we would be different, and this setup should work only
Changes
Open questions
Would it affect deployment to claudflare itself? Or should we not remove it but modify in ci before deployment?
Screenshots
Summary by CodeRabbit
Documentation
Chores