Commit Graph

7 Commits

Author SHA1 Message Date
Davide Ferrari
903e352687 feat: Add internationalization (i18n) support (#67)
* feat(i18n): add localization support for DashboardScreen

- Set up localization infrastructure with values-it, values-es, values-ca folders
- Extract all hardcoded strings from DashboardScreen to strings.xml
- Add Italian, Spanish, and Catalan translations
- Include contextual comments for translators

Supported languages: English (default), Italian, Spanish, Catalan

* feat(i18n): add localization for SettingsScreen

- Extract all hardcoded strings from SettingsScreen
- Add Italian, Spanish, and Catalan translations
- Include contextual comments for server settings, display settings,
  and advanced options

* feat(i18n): add localization for DrivesScreen

- Extract all hardcoded strings from DrivesScreen
- Add localized filter labels for date and distance filters
- Add Italian, Spanish, and Catalan translations for:
  - Screen title and navigation
  - Summary card labels
  - Drive stat labels
  - Chart titles (drives/time/distance/speed per day/week/month)
  - Filter chip labels

* feat(i18n): add localization for DriveDetailScreen

- Extract all hardcoded strings from DriveDetailScreen
- Add Italian, Spanish, and Catalan translations for:
  - Screen title and navigation
  - Route header (from/to, started/ended)
  - Stats section titles and labels
  - Chart titles (speed/power/battery/elevation profiles)

* feat(i18n): localize ChargesScreen strings

Extract and translate all user-facing strings from ChargesScreen:
- Screen title and section headers
- Summary card labels (Total Sessions, Total Energy, Total Cost, etc.)
- Charge item stat labels (Added, Duration, Cost, Battery)
- Empty state message
- Chart titles for energy/cost/charges per day/week/month
- Filter labels using helper functions for DateFilter and ChargeTypeFilter

Translations provided for Italian (it), Spanish (es), and Catalan (ca).

* feat(i18n): localize ChargeDetailScreen strings

Extract and translate all user-facing strings from ChargeDetailScreen:
- Screen title and header labels (Location, Started, Ended)
- Stats section titles (Energy, Battery, Power, Charger, Temperature, Cost)
- Stats labels (voltage/current max/min/avg, efficiency, etc.)
- Chart titles (Power Profile, Voltage Profile, Current Profile, Battery Level)
- Map marker title
- AC/DC badge text

Translations provided for Italian (it), Spanish (es), and Catalan (ca).

* feat(i18n): localize BatteryScreen strings

Extract and translate all user-facing strings from BatteryScreen:
- Screen titles (Battery Health, Battery Detail)
- Capacity section (Usable new/now, Rated)
- Degradation section (Estimated degradation, Loss kWh/%)
- Range section (Max Range new/now, Range loss)
- Current charge section
- Range information section (Estimated, Rated, Ideal ranges)
- Estimated total capacity section
- Info dialog titles and messages with explanatory content
- Common dialog button text (Got it)

Translations provided for Italian (it), Spanish (es), and Catalan (ca).

* feat(i18n): localize StatsScreen

- Add strings for stats title, sync messages, progress indicators
- Localize drives overview and charges overview sections
- Localize all record labels (longest drive, top speed, etc.)
- Add category names (Drives, Battery, Weather & Altitude, Distances)
- Localize temperature extremes and AC/DC ratio cards
- Add dialog strings for sync logs, gap records, range records
- Add translations for Italian, Spanish, and Catalan

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(i18n): localize MileageScreen

- Add strings for mileage title, chart titles (by year/month/day)
- Localize empty states (no data, no data for year)
- Add summary labels (Total, Avg/Year, Avg/Month, # of drives)
- Localize info dialog explaining average per year calculation
- Add "Recent trips" and "Drives" section headers
- Localize all "View details" content descriptions
- Add translations for Italian, Spanish, and Catalan

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(i18n): localize SoftwareVersionsScreen

- Add strings for software title, overview card labels
- Localize date filter labels (Last 6 months, Last year, All time)
- Add update history header and empty state message
- Localize version card labels (Current version, Installed, Days, Duration)
- Add strings for longest installed badge
- Localize chart title and format strings
- Add translations for Italian, Spanish, and Catalan

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(i18n): localize common components and weather card

- Add fullscreen/exit fullscreen content descriptions
- Localize WeatherAlongTheWayCard title, loading, and empty states
- Localize weather table headers (Time, Distance, Weather)
- Localize weather condition descriptions (Clear sky, Partly cloudy, etc.)
- Localize distance markers (Start, End)
- Add translations for Italian, Spanish, and Catalan

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* docs: add localization instructions to DEVELOPMENT.md

- Document supported languages (English, Italian, Spanish, Catalan)
- Add string naming conventions (snake_case)
- Explain how to add new strings with context comments
- Document format strings with placeholders
- Add instructions for adding new languages
- Include testing tips for translations

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(i18n): enable per-app language selection (Android 13+)

- Add locale_config.xml declaring supported languages (en, it, es, ca)
- Reference locale config in AndroidManifest.xml
- Users can now change app language without changing system language

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix(i18n): keep AC/DC untranslated in all languages

Technical terms AC (Alternating Current) and DC (Direct Current) are
universally understood and should not be translated to CA/CC.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* ci: add lint check for hardcoded strings

- Configure Android Lint to treat HardcodedText and SetTextI18n as errors
- Add CI workflow that runs lint on every push/PR to main
- Build job depends on lint passing
- Upload lint report as artifact on failure

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* docs: add localization rules to CLAUDE.md

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* ci: combine lint and build into single job

Lint requires compilation anyway, so running them in one job allows
Gradle to reuse artifacts and is more efficient than two separate jobs.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix: increase JVM heap to prevent OOM in CI

- Increase Gradle daemon heap from 2GB to 4GB
- Add HeapDumpOnOutOfMemoryError for debugging
- Set test JVM max heap to 1GB

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 19:03:30 +01:00
Davide Ferrari
5a49bde594 instructions: added charts details 2026-01-10 23:26:27 +01:00
Davide Ferrari
4ae8477335 feat: add F-Droid and fastlane metadata (#26)
* chore: add Makefile for easier debug builds

Add Makefile with targets for building, installing, and running debug
builds on connected devices. Update DEVELOPMENT.md to document the
available make targets.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat: add F-Droid and fastlane metadata for app store publishing

- Add fastlane metadata structure (title, descriptions, changelogs, screenshots, icon)
- Add F-Droid build recipe reference (com.matedroid.yml)
- Update CLAUDE.md with fastlane maintenance instructions

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 14:37:52 +01:00
Davide Ferrari
65575e61b8 docs: tweaked CC instructions 2025-12-23 18:44:59 +01:00
Davide Ferrari
63ca2295b0 chore: release v0.6.0
- Bump version to 0.6.0 (versionCode 7)
- Update repository URLs to github.com/vide/matedroid
- First public GitHub release with automated APK builds

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 17:10:37 +01:00
Davide Ferrari
84b75d5f87 fix: added clarifications 2025-12-14 19:40:28 +01:00
Davide Ferrari
d6cb3b42f2 feat: initial project structure with Settings screen
- Set up Kotlin + Jetpack Compose Android project
- Configure Gradle with version catalog and all dependencies
- Implement Settings screen for TeslamateApi server configuration
- Add Material Design 3 theming with Tesla-inspired colors
- Set up Hilt dependency injection
- Add DataStore for settings persistence
- Include navigation component with Compose integration
- Add GPLv3 license

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 12:03:25 +01:00