Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
6f76bcd
refactor!: Delete entire project
dotunwrap Nov 20, 2025
72a105f
chore: Add flake
dotunwrap Nov 20, 2025
e5e30fc
refactor!: Init new Vue project
dotunwrap Nov 20, 2025
e09005e
chore: Create bun.lock
dotunwrap Nov 20, 2025
191527b
chore: Configure oxlint/oxfmt
dotunwrap Nov 20, 2025
74a92c1
chore: Add lint check
dotunwrap Nov 20, 2025
b4530db
chore: Add justfile
dotunwrap Nov 20, 2025
68012a8
chore: Re-add data
dotunwrap Nov 20, 2025
997b645
chore: Change title
dotunwrap Nov 20, 2025
4777701
chore: Add lint:check
dotunwrap Nov 20, 2025
3fa9903
fix: Use lint:check rather than lint
dotunwrap Nov 20, 2025
c532ff4
chore: Format
dotunwrap Nov 20, 2025
919723e
ci: Add Claude code review workflow
dotunwrap Nov 20, 2025
3370bd5
chore: Remove .direnv
dotunwrap Nov 20, 2025
b9bfd8b
ci: Update CD and CI
dotunwrap Nov 20, 2025
1efbe19
ci: Update Claude Code Review job name
dotunwrap Nov 20, 2025
d1e9fa5
refactor: Move away from nix flake checks
dotunwrap Nov 20, 2025
4788dfe
ci: Use proper flags for nix fmt CI
dotunwrap Nov 20, 2025
fd3eadb
ci: Checkout repo before running nix fmt
dotunwrap Nov 20, 2025
a590c39
chore: Explicitly ignore settings.local.json for Claude
dotunwrap Nov 20, 2025
054c68c
chore: Install TailwindCSS
dotunwrap Nov 20, 2025
03972ac
refactor: Move from oxfmt to prettier
dotunwrap Nov 20, 2025
cef62b3
chore: Format
dotunwrap Nov 20, 2025
512e71e
chore: Add CODEOWNERS
dotunwrap Nov 20, 2025
d24c727
chore: Update CLAUDE.md
dotunwrap Nov 20, 2025
3117919
ci: Change AGENTS.md to CLAUDE.md
dotunwrap Nov 20, 2025
294fd05
chore: Configure favicon
dotunwrap Nov 21, 2025
107769f
ci: Check types and builds
dotunwrap Nov 21, 2025
2db40a2
chore: Format
dotunwrap Nov 21, 2025
e48aa95
chore: Initial page structures
dotunwrap Nov 22, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
[*.{js,jsx,mjs,cjs,ts,tsx,mts,cts,vue,css,scss,sass,less,styl}]
charset = utf-8
indent_size = 2
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
end_of_line = lf
max_line_length = 100
1 change: 1 addition & 0 deletions .envrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
use flake
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* text=auto eol=lf
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* @dotunwrap
70 changes: 41 additions & 29 deletions .github/workflows/cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,17 @@ name: CD

on:
push:
branches:
branches:
- 'main'
paths-ignore:
- '.github/**'
- 'LICENSE'
- 'README.md'
- '.gitignore'

paths:
- 'index.html'
- 'index.css'
- 'bun.lock'
- 'tsconfig.json'
- 'tsconfig.node.json'
- 'tsconfig.app.json'
- 'public/**'
- 'src/**'
workflow_dispatch:

permissions:
Expand All @@ -18,34 +21,43 @@ permissions:
id-token: write

concurrency:
group: 'pages'
group: cd-${{ github.ref }}
cancel-in-progress: true

env:
BUN_VERSION: 1.3.2

jobs:
deploy:
name: 'Deploy content to GH Pages'
environment:
name: github-pages
name: production
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 22
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Build
run: npm run build
- name: Setup Pages
uses: actions/configure-pages@v5
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: "./dist"
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
- uses: actions/checkout@v5
with:
fetch-depth: 1

- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: ${{ env.BUN_VERSION }}

- name: Install dependencies
run: bun install --frozen-lockfile

- name: Build
run: bun run build

- name: Setup Pages
uses: actions/configure-pages@v5

- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: dist

- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
111 changes: 111 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
name: CI

on:
pull_request:
types:
- opened
- synchronize
- reopened
push:
branches:
- 'main'

concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true

env:
BUN_VERSION: 1.3.2

jobs:
lint:
name: Check Vue linter
runs-on: ubuntu-latest
continue-on-error: true
steps:
- uses: actions/checkout@v5

- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: ${{ env.BUN_VERSION }}

- name: Install dependencies
run: bun install --frozen-lockfile

- name: Check linter
run: bun run lint:check

check_fmt_vue:
name: Check Vue formatting
runs-on: ubuntu-latest
continue-on-error: true
steps:
- uses: actions/checkout@v5

- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: ${{ env.BUN_VERSION }}

- name: Install dependencies
run: bun install --frozen-lockfile

- name: Check formatting
run: bun run fmt:check

check_fmt_nix:
name: Check Nix formatting
runs-on: ubuntu-latest
continue-on-error: true
steps:
- uses: actions/checkout@v5

- name: Install Nix
uses: cachix/install-nix-action@v31
with:
extra_nix_config: |
auto-optimise-store = true
experimental-features = nix-command flakes
substituters = https://cache.nixos.org/ https://nix-community.cachix.org
trusted_public_keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
github_access_token: ${{ secrets.GITHUB_TOKEN }}

- name: Check formatting
run: nix fmt -- --fail-on-change

check_types:
name: Check types
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5

- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: ${{ env.BUN_VERSION }}

- name: Install dependencies
run: bun install --frozen-lockfile

- name: Check types
run: bun run type-check

check_build:
name: Check build
runs-on: ubuntu-latest
needs:
- check_types
steps:
- uses: actions/checkout@v5

- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: ${{ env.BUN_VERSION }}

- name: Install dependencies
run: bun install --frozen-lockfile

- name: Check build
run: bun run build-only
66 changes: 66 additions & 0 deletions .github/workflows/claude-pr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
name: Claude Code Review
run-name: "${{ format('PR #{0}', github.event.pull_request.number) }}"

on:
pull_request:
types:
- opened
- synchronize
- ready_for_review
- reopened

concurrency:
group: ${{ github.event.pull_request.number }}

jobs:
claude_code_review:
name: Review PR
if: github.event.pull_request.draft == false
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
issues: write
id-token: write
actions: read
steps:
- name: Checkout repository
uses: actions/checkout@v5
with:
fetch-depth: 20

- name: Run Claude Code
uses: anthropics/claude-code-action@v1
env:
NODE_VERSION: '22.x'
with:
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
track_progress: true
prompt: |
REPO: ${{ github.repository }}
PR NUMBER: ${{ github.event.pull_request.number }}

Perform a comprehensive code review with the following focus areas:

1. **Context**
- Check the CLAUDE.md file to get context on repository practices

2. **Code Quality**
- Clean code principles and best practices
- Proper error handling and edge cases
- Code readability and maintainability

3. **Security**
- Check for potential security vulnerabilities
- Validate input sanitization

4. **Documentation**
- Ensure code is properly documented
- Verify README updates for new features

Provide detailed feedback using inline comments for specific issues.
Use top-level comments for a concise and direct overall summary of your review. Include a suggestion between approval and requesting changes.
Ignore trivial issues potentially covered by CI (e.g. styling/formatting).
claude_args: |
--allowedTools "mcp__github_inline_comment__create_inline_comment,Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*)"
--system-prompt "You are a code review specialist. Focus on constructive feedback with direct comments. Be objective and avoid unnecessary praise."
20 changes: 17 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,6 @@ dist-ssr
coverage
*.local

/cypress/videos/
/cypress/screenshots/

# Editor directories and files
.vscode/*
!.vscode/extensions.json
Expand All @@ -26,3 +23,20 @@ coverage
*.njsproj
*.sln
*.sw?

*.tsbuildinfo

.eslintcache

# Cypress
/cypress/videos/
/cypress/screenshots/

# Vitest
__screenshots__/

# direnv
.direnv/

# Claude Code
.claude/settings.local.json
31 changes: 31 additions & 0 deletions .oxlintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{
"$schema": "./node_modules/oxlint/configuration_schema.json",
"plugins": ["typescript", "vue"],
"env": {
"browser": true,
"es2021": true,
"node": true
},
"globals": {
"defineProps": "readonly",
"defineEmits": "readonly",
"defineExpose": "readonly",
"defineSlots": "readonly",
"defineOptions": "readonly",
"defineModel": "readonly",
"withDefaults": "readonly"
},
"categories": {
"correctness": "error",
"suspicious": "warn",
"pedantic": "off"
},
"rules": {
"vue/no-unused-vars": "warn",
"vue/require-v-for-key": "error",
"vue/no-mutating-props": "error",
"vue/no-dupe-keys": "error",
"@typescript-eslint/no-explicit-any": "warn",
"@typescript-eslint/no-unused-vars": "warn"
}
}
14 changes: 14 additions & 0 deletions .prettierrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"$schema": "https://www.schemastore.org/prettierrc.json",
"useTabs": false,
"tabWidth": 2,
"printWidth": 100,
"singleQuote": true,
"semi": false,
"trailingComma": "all",
"arrowParens": "always",
"vueIndentScriptAndStyle": true,
"htmlWhitespaceSensitivity": "css",
"embeddedLanguageFormatting": "auto",
"plugins": ["prettier-plugin-tailwindcss"]
}
8 changes: 8 additions & 0 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"recommendations": [
"Vue.volar",
"dbaeumer.vscode-eslint",
"EditorConfig.EditorConfig",
"oxc.oxc-vscode"
]
}
Loading