diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..64ac8471 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,45 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + validate: + strategy: + fail-fast: false + matrix: + os: [macos-latest, windows-latest] + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup pnpm + uses: pnpm/action-setup@v4 + with: + version: 10.25.0 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: pnpm + + - name: Install dependencies + run: pnpm install --no-frozen-lockfile + + - name: Typecheck + run: pnpm typecheck + + - name: Lint + run: pnpm lint + + - name: Test + run: pnpm test + + - name: Build + run: pnpm build diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..98a4f38c --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,48 @@ +name: Release + +on: + push: + tags: + - 'v*' + workflow_dispatch: + +jobs: + package: + runs-on: macos-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup pnpm + uses: pnpm/action-setup@v4 + with: + version: 10.25.0 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: pnpm + + - name: Install dependencies + run: pnpm install --no-frozen-lockfile + + - name: Build app + run: pnpm build + + - name: Package macOS + env: + CSC_LINK: ${{ secrets.CSC_LINK }} + CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }} + APPLE_ID: ${{ secrets.APPLE_ID }} + APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }} + APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} + run: pnpm dist:mac + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: release-macos + path: release/** + if-no-files-found: error diff --git a/src/renderer/components/chat/ChatHistoryLoadingState.tsx b/src/renderer/components/chat/ChatHistoryLoadingState.tsx index d03c60d7..2398c259 100644 --- a/src/renderer/components/chat/ChatHistoryLoadingState.tsx +++ b/src/renderer/components/chat/ChatHistoryLoadingState.tsx @@ -1,20 +1,40 @@ /** * Loading skeleton for ChatHistory while conversation is loading. + * Industrial shimmer with organic line widths — no generic pulse. */ export const ChatHistoryLoadingState = (): JSX.Element => { + const rows = [ + { user: ['85%', '60%'], ai: ['92%', '70%', '82%', '45%'] }, + { user: ['75%', '92%', '40%'], ai: ['88%', '65%', '78%'] }, + { user: ['95%', '55%'], ai: ['72%', '85%', '60%', '92%', '35%'] }, + ]; + return ( -