18 Commits

Author SHA1 Message Date
d1ad58b504 refactor: simplify apk filename parsing logic
- Simplify parseApkFilename to use version delimiter split
- Update tests to match new data structure with rawEnvironment
- Remove unnecessary test cases and assertions

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 20:27:54 +08:00
8d7d2f37d7 fix: show actual environment name for 'other' category
- Add rawEnvironment field to preserve extracted environment name
- Display rawEnvironment (e.g., 'timeshift') instead of 'other' in badge

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 15:13:52 +08:00
31bbebc2ab feat: add environment badge to commit id column in ApkTable
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 14:46:05 +08:00
0b86887680 fix: improve SearchForm text visibility with darker color
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 14:44:10 +08:00
7268b91ed3 feat: add config API and update ApkList to use configured tabs
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 12:54:31 +08:00
08f9015101 feat: update download page title to use display name
- Add Project interface with name and displayName
- Fetch projects via SWR
- Add getProjectDisplayName helper function
- Use display name in the download page title

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-04 22:17:31 +08:00
585827c632 fix: remove unused formatVersion import from ApkList
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-04 22:17:31 +08:00
173f182b21 feat: update ApkList to use tabbed view
Replaced card-based layout with tabbed interface for APK environments.
Now displays APKs grouped by dev/product/sandbox/other tabs with counts.

- Replaced ApkCard with ApkTable component
- Added tab navigation with active state styling
- Group APKs by environment using reduce
- Show count badges for each environment tab

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-04 22:17:31 +08:00
d42b72b650 feat: update SearchForm to use project display names
Add Project interface with name and displayName fields to support project aliases. Update SWR hook to type projects as Project[]. Display project.displayName in dropdown while using project.name as the option value for API compatibility.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-04 22:17:31 +08:00
bf63f52b66 feat: add ApkTable component 2026-03-04 22:17:31 +08:00
8227f36cbe refactor: organize tests and extract formatting utilities
- Move test files to lib/__tests__/ directory
- Extract formatting utilities (formatVersion, formatFileSize, formatDateTime)
  from fs-utils.ts to new utils.ts module
- Add Jest test configuration and test scripts
- Update component imports to use new utils module
- Add CLAUDE.md documentation for project structure

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-03-04 02:33:30 +08:00
240fd8b528 feat: add download page with SearchForm and ApkList 2026-03-04 02:14:16 +08:00
993ce520f0 fix: add 'use client' directive and fix prop mismatch
- Add 'use client' directive at top of ApkList.tsx to support useSWR hook
- Remove highlightCommit prop from ApkCard component call as it's not accepted by ApkCard interface

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-03-04 02:12:39 +08:00
608d67c7fd feat: add ApkList component 2026-03-04 02:11:04 +08:00
36b60687f0 fix: remove XSS vulnerability and add security attributes
- Removed dangerouslySetInnerHTML with unsanitized user input
- Removed highlightCommit prop and related highlighting logic
- Added download and rel="noopener noreferrer" attributes to download link
- Simplified component to safely display filename without HTML rendering

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-03-04 02:10:06 +08:00
99694cbc4c feat: add ApkCard component 2026-03-04 02:08:50 +08:00
df5c0b4237 fix: add error handling and use existing utility
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-03-04 02:08:09 +08:00
fdeb42f212 feat: add SearchForm component 2026-03-04 02:06:53 +08:00