85c3bb7a42056dc46989c933644edf19b3a00d1b
ENGINE (ScrollViewDriver.swift): - UIViewRepresentable placed inside ScrollView (zero size) - Finds parent UIScrollView via view hierarchy traversal - CADisplayLink at 60fps drives contentOffset.y smoothly - Speed: 1.0x = 60pt/sec, adjustable 0.25x–3.0x in 0.25 steps - User touch detection: intercepts UIScrollViewDelegate scrollViewWillBeginDragging → stops auto-scroll immediately - Stops at bottom (contentOffset >= maxOffset) - Forwards all delegate methods to SwiftUI's original delegate INTEGRATION (EntryListView): - Accepts @Binding isAutoScrolling + scrollSpeed - ScrollViewDriver placed as first child in ScrollView - Auto-scroll stops on: user touch, navigation back (onAppear), filter change, sub-tab change, reaching bottom CONTROLS (ReaderTabView — temporary, Phase 1): - Play/Stop button in toolbar (play.fill / stop.fill) - When playing: [-] speed [+] controls appear inline - Speed shown as "1.00x" with monospacedDigit MARK-AS-READ: - Auto-scroll drives real UIScrollView contentOffset - This moves LazyVStack rows, triggering their GeometryReader onChange callbacks — the existing mark-as-read system fires naturally with no special case or bypass needed Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Gitea CI Workflows
security.yml
Runs on push/PR to master. Three jobs:
- dependency-audit —
npm audit --audit-level=highfor budget and frontend - secret-scanning — checks for tracked .env/.db files and hardcoded secret patterns
- dockerfile-lint — verifies all Dockerfiles have
USER(non-root) andHEALTHCHECK
Runner Setup
The runner is configured in the Gitea docker-compose at /media/yusiboyz/Media/Scripts/gitea/docker-compose.yml.
What was done:
- Added
[actions] ENABLED = trueto Gitea'sapp.ini - Added
runnerservice (gitea/act_runner) to Gitea's docker-compose - Generated runner token via
docker exec -u git gitea gitea actions generate-runner-token - Token stored in
/media/yusiboyz/Media/Scripts/gitea/.envasRUNNER_TOKEN - Runner registered as
platform-runnerwith labels: ubuntu-latest, ubuntu-24.04, ubuntu-22.04
To regenerate token (if needed):
cd /media/yusiboyz/Media/Scripts/gitea
docker exec -u git gitea gitea actions generate-runner-token
# Update .env with new RUNNER_TOKEN value
docker compose up -d runner
To check runner status:
docker logs gitea-runner
Description
Languages
Svelte
51.2%
Python
24.2%
Swift
13.5%
JavaScript
5.4%
TypeScript
3.3%
Other
2.4%