Commit graph

117 commits

Author SHA1 Message Date
Tim Zöller
e203250104 Delayed Fediverse publication 2026-04-06 21:10:11 +02:00
Tim Zöller
47fd3808d2 Migrate old, locationless activities 2026-01-15 11:05:09 +01:00
Tim Zöller
debc55d484 Reverse Lookup for activities 2026-01-15 10:59:34 +01:00
Tim Zöller
612d67ccda Search function, declaudification 2026-01-14 16:53:34 +01:00
Tim Zöller
6e7d52f827 Access terms without redirect 2026-01-13 13:22:20 +01:00
Tim Zöller
45b7285d1c Big Feature and Beautifying Package 2026-01-13 12:59:26 +01:00
Tim Zöller
1f2ff67f38 Big Feature and Beautifying Package 2026-01-13 12:53:18 +01:00
Tim Zöller
87da2a3861 Remove migration logic again 2026-01-11 12:21:24 +01:00
Tim Zöller
1a068e3217 Fixes for indoor activity markers 2026-01-11 12:05:12 +01:00
Tim Zöller
22c4ca0964 Mark indoor activities to exclude them from the heatmap 2026-01-11 11:56:48 +01:00
Tim Zöller
851ba87ef2 Performance Improvements 2026-01-10 08:41:20 +01:00
Tim Zöller
3fe5f90e02 Fix Elevation chart hovering 2026-01-09 14:02:47 +01:00
Tim Zöller
fcef751483 Privacy Zones 2026-01-09 13:32:45 +01:00
Tim Zöller
6a8598ef30 UI fixes & updates 2026-01-09 09:05:51 +01:00
Tim Zöller
22f7f7c271 Async uploads, graph improvements 2026-01-07 09:52:46 +01:00
Tim Zöller
9dee8a7e84 Speed up upload 2026-01-07 09:07:19 +01:00
Tim Zöller
a560036265 Fix remote activities 2026-01-05 22:14:19 +01:00
Tim Zöller
40173c269f Heatmap optimized 2026-01-05 14:40:08 +01:00
Tim Zöller
f34ce5723e Moving Time ergänzt 2026-01-05 14:12:29 +01:00
Tim Zöller
1e833d52b6 Add a font 2026-01-05 11:07:15 +01:00
Tim Zöller
4b166c0637 Process activities without GPS better 2026-01-05 10:42:06 +01:00
Tim Zöller
4fe283f246 Account >D
eletion
2026-01-04 08:18:21 +01:00
Tim Zöller
b5164c9617 Fix Weather API access 2026-01-04 07:46:07 +01:00
Tim Zöller
9f13e89632 Fix Weather API access 2026-01-04 07:37:42 +01:00
Tim Zöller
054fa58290 More Logging 2026-01-04 07:31:57 +01:00
Tim Zöller
73dc2e1c15 More Logging 2026-01-04 07:28:44 +01:00
Tim Zöller
fa5c04377c Fix Logging 2026-01-03 22:40:29 +01:00
Tim Zöller
0fe0810f51 Quality of Life, Security 2026-01-03 22:30:04 +01:00
Tim Zöller
5455f8cd36 Fix dark mode contrast issues on notifications page
- Active tab (ALL/UNREAD): Light text on dark background instead of white-on-white
- Unread notifications: Cyan-tinted semi-transparent background for visibility
- Actor names: Light color (#e8e8f0) for proper contrast in dark mode
- Hover states: Dark purple background (#301550) instead of white
- Notification icons: Semi-transparent backgrounds with bright neon colors

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-03 21:03:58 +01:00
Tim Zöller
bc63e0f16d Moar Fixes 2026-01-03 20:39:57 +01:00
Tim Zöller
c9b982890a Fix federated follow counts 2026-01-03 20:25:17 +01:00
Tim Zöller
3b18e30cee Undo für Batch Import 2026-01-03 14:57:34 +01:00
Tim Zöller
a19d4870f7 Batch Import 2026-01-03 08:56:57 +01:00
Tim Zöller
7ecb5456cc Fix integration test: Add sourceFileFormat to test activity builder
ActivityControllerIntegrationTest was failing because the helper method
createTestActivity() didn't set the source_file_format field, which
became required after migration V15.

Added sourceFileFormat("FIT") to the Activity builder in the test helper.

Test Results:
-  128 tests passing
-  0 failures
-  0 errors
- 4 tests skipped (expected)

All integration tests now pass with Docker/Testcontainers.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-02 18:03:23 +01:00
Tim Zöller
534d55d6f3 Add Maven profile to skip integration tests when Docker unavailable
Integration tests using Testcontainers require Docker. This profile allows
running unit tests in CI/CD environments or local setups without Docker.

Usage:
  mvn test -P skip-integration-tests

Results:
- 97 unit tests pass
- 18 integration tests skipped (require Docker)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-02 17:50:06 +01:00
Tim Zöller
f4be439002 Add GPX file support for activity imports
This commit adds comprehensive GPX file support alongside existing FIT file support, enabling users to import activities from Strava, Komoot, and other GPS apps.

## Key Features

### Core Components
- **GpxParser**: Full GPX 1.1 parsing with Garmin TrackPointExtension support
- **GpxFileValidator**: Validation for GPX file format and structure
- **ActivityFileService**: Unified service with automatic format detection (FIT/GPX)
- **ParsedActivityData**: Common data structure for both FIT and GPX files

### GPX Parsing Capabilities
- GPS track point extraction (latitude, longitude, elevation, timestamp)
- Garmin extension data (heart rate, cadence, temperature)
- Activity type detection from GPX metadata
- Distance calculation using Haversine formula
- Elevation gain/loss calculation
- Speed calculation from consecutive GPS points
- Speed smoothing to remove GPS artifacts
- Timezone detection from GPS coordinates
- Moving time vs. stopped time analysis

### Database Changes
- Migration V15: Renamed raw_fit_file → raw_activity_file
- Added source_file_format column (FIT/GPX) with constraint
- Index on source_file_format for performance
- Updated Activity entity with new fields

### Controller & UI Updates
- ActivityController: Now handles both FIT and GPX uploads
- Upload form: Updated to accept .fit and .gpx files
- Help text: Clarified both formats are supported

### Testing
- GpxParserIntegrationTest: 9 comprehensive tests with real GPX file
- Tests cover: parsing, validation, heart rate extraction, distance calculation,
  elevation metrics, speed calculation, chronological ordering, smoothing
- Fixed TrainingLoadServiceTest date issue (testDate outside 30-day window)
- All 97 unit tests passing (integration tests require Docker)

### Technical Details
- Supports GPX 1.0 and 1.1 specifications
- Handles multiple track segments
- Processes Garmin TrackPointExtension v1 and v2
- Same track simplification as FIT (Douglas-Peucker algorithm)
- Consistent JSONB storage format for track points
- Compatible with existing analytics, heatmaps, and image generation

## Testing Summary
-  9/9 GpxParserIntegrationTest tests passing
-  4/4 FitParserIntegrationTest tests passing
-  14/14 FitFileServiceTest tests passing
-  97/97 total unit tests passing

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-02 13:31:05 +01:00
Tim Zöller
66b14ebf7f Add on-demand heatmap rebuild and remove nightly scheduler
- Added rebuild button to heatmap page with loading states
- Added POST /api/heatmap/me/rebuild endpoint for on-demand recalculation
- Removed HeatmapRecalculationScheduler (nightly 3 AM cron job)
- Removed @EnableScheduling annotation since no schedulers remain
- Users can now rebuild their heatmap manually instead of relying on automatic nightly recalculation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-02 09:21:52 +01:00
Tim Zöller
f391028061 Added Heatmaps 2026-01-01 23:48:05 +01:00
Tim Zöller
c8b37f4720 Darkmode 2025-12-16 15:29:29 +01:00
Tim Zöller
0e092e670b Smoothen Speed 2025-12-16 15:01:20 +01:00
Tim Zöller
75a4f6524c Better Federation Support 2025-12-15 21:59:44 +01:00
Tim Zöller
5b687883b0 Better Federation Support 2025-12-15 21:55:17 +01:00
Tim Zöller
15b420b87a Make webfinger discovery case insensitive 2025-12-15 10:53:51 +01:00
Tim Zöller
fe05e2ffa4 Follow Users on the instance 2025-12-15 10:25:40 +01:00
Tim Zöller
cc59701337 Small visual fixes 2025-12-15 09:07:15 +01:00
Tim Zöller
566fc90249 Small visual fixes 2025-12-15 09:03:15 +01:00
Tim Zöller
7c957e5135 Chart Rendering fixed for analytics 2025-12-15 08:42:39 +01:00
Tim Zöller
6158707daa Fixes 2025-12-14 17:29:33 +01:00
Tim Zöller
1569114593 Quality of Life Improvements 2025-12-14 17:22:36 +01:00
Tim Zöller
114d92c453 Optical improvements, don't duplicate initially created entries 2025-12-14 17:11:24 +01:00