Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
14378b2
reworking player
chhoumann Jul 31, 2024
2973586
style: code style
chhoumann Jul 31, 2024
2eaacad
very very rough and wip timestamped transcriptions
chhoumann Jul 31, 2024
5830702
feat(transcripts): Implement configurable timestamped transcripts
chhoumann Mar 14, 2025
31da871
fix(transcripts): Fix TimestampRange type issues
chhoumann Mar 14, 2025
fd2993f
docs: Update design document with completed features and next steps
chhoumann Mar 14, 2025
25725ce
docs: Update design doc to remove unnecessary features
chhoumann Mar 14, 2025
541800a
docs: Update documentation for timestamped transcripts
chhoumann Mar 14, 2025
7903c3a
perf: Optimize transcription service for non-blocking performance
chhoumann Mar 14, 2025
4242541
fix: Improve error handling for transcription service
chhoumann Mar 14, 2025
8b5fa3e
chore: Clean up repository
chhoumann Mar 14, 2025
d5496d0
feat(transcription): Add API validation, cancel/resume functionality
chhoumann Mar 14, 2025
8f93908
fix(transcription): Improve UX for transcription process
chhoumann Mar 14, 2025
94913e0
refactor(transcription): Improve transcription UI and progress tracking
chhoumann Mar 14, 2025
82e503c
fix(transcription): Improve UI reactivity and update frequency
chhoumann Mar 14, 2025
9b05178
refactor(transcription): Improve UI reactivity and remove notifications
chhoumann Mar 14, 2025
bbdce5c
fix(transcription): Fix reactivity issues in transcription progress UI
chhoumann Mar 14, 2025
bc91101
fix(transcription): improve progress display and time formatting
chhoumann Mar 15, 2025
3b51e2f
feat(transcription): improve handling of existing transcripts
chhoumann Mar 15, 2025
8e84adc
fix(transcription): simplify UI by hiding transcribe button when tran…
chhoumann Mar 15, 2025
a8184d8
chore: update packages, delete failing test
chhoumann Mar 24, 2025
70a1d7c
chore: remove eslint, add biome
chhoumann Mar 24, 2025
a497220
ci: use bun in ci
chhoumann Mar 24, 2025
033a9a5
fix(typescript): Fix type errors in TranscriptionService
chhoumann Mar 24, 2025
3792a3f
fix(build): resolve TypeScript errors and Svelte 5 compatibility issues
chhoumann May 28, 2025
c8edc34
feat(svelte): modernize Svelte integration and fix linting issues
chhoumann May 28, 2025
cf291ea
fix(a11y): resolve accessibility warnings in PodcastView
chhoumann May 28, 2025
b808ebf
fix(typescript): Enable verbatimModuleSyntax and fix all type imports
chhoumann May 28, 2025
6fd51b5
refactor(svelte): Migrate Button and Dropdown to callback props pattern
chhoumann May 28, 2025
67aa517
fix(ui): Fix remaining type issues and Button component usage
chhoumann May 28, 2025
3d3e3fd
refactor(svelte): Migrate PodcastResultCard and Text to callback props
chhoumann May 28, 2025
6baaf1b
fix(svelte): Enable Svelte 5 compatibility mode for component instant…
chhoumann May 28, 2025
3d56375
perf(ui): Complete performance overhaul of PodcastView
chhoumann May 28, 2025
01ace04
fix(ui): Fix image loading issue in optimized Image component
chhoumann May 28, 2025
c7e5e7f
perf(ui): Further performance optimizations
chhoumann May 28, 2025
85e7bae
refactor: improve TypeScript strictness and code formatting
chhoumann May 28, 2025
505115e
perf: optimize interaction responsiveness
chhoumann May 28, 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
14 changes: 7 additions & 7 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,19 @@ jobs:
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Setup Deno
uses: denolib/setup-deno@v2
- name: Setup Bun
uses: oven-sh/setup-bun@v1
with:
deno-version: v1.x
bun-version: latest
- name: Install dependencies
run: |
npm ci
npm run build --if-present
bun install
bun run build --if-present
- name: Run tests
run: |
npm run test
bun run test
- name: Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
run: npx semantic-release
run: bunx semantic-release
12 changes: 6 additions & 6 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@ jobs:
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Setup Deno
uses: denolib/setup-deno@v2
- name: Setup Bun
uses: oven-sh/setup-bun@v1
with:
deno-version: v1.x
bun-version: latest
- name: Install dependencies
run: |
npm ci
npm run build --if-present
bun install
bun run build --if-present
- name: Run tests
run: |
npm run test
bun run test
142 changes: 142 additions & 0 deletions SVELTE5_MIGRATION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
# Svelte 5 Migration Guide for PodNotes

## Overview
This guide outlines the migration strategy from Svelte 4 patterns to Svelte 5 runes in the PodNotes codebase.

## Migration Status
- ✅ Svelte 5.25.3 installed
- ✅ Build configuration updated
- ✅ Biome linting configured and applied
- 🟡 Components use Svelte 4 patterns (migration pending)

## Key Changes in Svelte 5

### 1. Props: `export let` → `$props()`
```svelte
<!-- Old (Svelte 4) -->
<script lang="ts">
export let value: string;
export let disabled = false;
</script>

<!-- New (Svelte 5) -->
<script lang="ts">
interface Props {
value: string;
disabled?: boolean;
}

let { value, disabled = false }: Props = $props();
</script>
```

### 2. Reactive Statements: `$:` → `$derived`
```svelte
<!-- Old -->
$: doubled = count * 2;

<!-- New -->
let doubled = $derived(count * 2);
```

### 3. State: `let` → `$state`
```svelte
<!-- Old -->
let count = 0;

<!-- New -->
let count = $state(0);
```

### 4. Effects: `onMount`/`onDestroy` → `$effect`
```svelte
<!-- Old -->
onMount(() => {
const interval = setInterval(() => {...}, 1000);
return () => clearInterval(interval);
});

<!-- New -->
$effect(() => {
const interval = setInterval(() => {...}, 1000);
return () => clearInterval(interval);
});
```

### 5. Store Usage in Components
When using stores with runes, you need to manage subscriptions manually:

```svelte
<!-- Old -->
<script>
import { myStore } from './stores';
</script>
<div>{$myStore}</div>

<!-- New -->
<script>
import { myStore } from './stores';

let storeValue = $state();

$effect(() => {
const unsub = myStore.subscribe(v => storeValue = v);
return unsub;
});
</script>
<div>{storeValue}</div>
```

## Migration Strategy

### Phase 1: Infrastructure (✅ Complete)
1. Update to Svelte 5
2. Configure build tools
3. Fix linting issues
4. Ensure backward compatibility

### Phase 2: Gradual Component Migration
1. Add `<svelte:options runes />` to individual components
2. Start with leaf components (no children)
3. Work up to container components
4. Test thoroughly after each migration

### Phase 3: Store Modernization
1. Consider replacing some stores with component state
2. Use context API with runes for shared state
3. Simplify store interfaces

## Component Migration Checklist

For each component:
- [ ] Add `<svelte:options runes />` at the top
- [ ] Convert `export let` props to `$props()`
- [ ] Convert reactive statements to `$derived`
- [ ] Convert state variables to `$state`
- [ ] Replace lifecycle hooks with `$effect`
- [ ] Update store subscriptions
- [ ] Test all functionality
- [ ] Update any parent components if needed

## Example Migration

See the attempted EpisodePlayer migration for a complex example:
1. Props converted to `$props()` pattern
2. State managed with `$state` runes
3. Store subscriptions handled in `$effect`
4. Derived values use `$derived`
5. Cleanup handled in effect returns

## Best Practices

1. **Don't migrate everything at once** - Svelte 5 is backward compatible
2. **Test thoroughly** - Especially store interactions
3. **Use TypeScript** - Better type inference with runes
4. **Simplify when possible** - Runes often require less code
5. **Consider performance** - Fine-grained reactivity can improve performance

## Resources

- [Svelte 5 Documentation](https://svelte.dev/docs/svelte/v5-migration-guide)
- [Runes Overview](https://svelte.dev/docs/svelte/runes)
- [Migration Examples](https://svelte.dev/docs/svelte/v5-migration-guide#examples)
44 changes: 44 additions & 0 deletions biome.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
{
"$schema": "https://biomejs.dev/schemas/1.5.0/schema.json",
"organizeImports": {
"enabled": true
},
"linter": {
"enabled": true,
"rules": {
"recommended": true,
"style": {
"useImportType": "error",
"noInferrableTypes": "error",
"useConst": "warn"
},
"complexity": {
"useOptionalChain": "warn"
},
"suspicious": {
"noExplicitAny": "error"
}
}
},
"formatter": {
"enabled": true,
"formatWithErrors": false,
"indentStyle": "tab",
"indentWidth": 2,
"lineWidth": 80,
"lineEnding": "lf"
},
"javascript": {
"parser": {
"unsafeParameterDecoratorsEnabled": true
},
"formatter": {
"trailingCommas": "all",
"semicolons": "always",
"quoteStyle": "double"
}
},
"files": {
"ignore": ["node_modules", "dist", "build", "main.js", "*.min.js"]
}
}
Loading
Loading