Skip to content

Chore/cleanup ccsync mentions#646

Open
bhola-dev58 wants to merge 5 commits intoCCExtractor:mainfrom
bhola-dev58:chore/cleanup-ccsync-mentions
Open

Chore/cleanup ccsync mentions#646
bhola-dev58 wants to merge 5 commits intoCCExtractor:mainfrom
bhola-dev58:chore/cleanup-ccsync-mentions

Conversation

@bhola-dev58
Copy link
Copy Markdown

@bhola-dev58 bhola-dev58 commented Apr 3, 2026

🧹 Chore: Clean up remaining CCSync references & fix FRB version mismatch

Summary

Completes the removal of legacy CCSync backend references from the codebase and resolves a flutter_rust_bridge version mismatch that was preventing the app from launching.


Changes

CCSync → Sync Renaming

File What Changed
manage_task_champion_creds_view.dart Updated UI to use sync-prefixed translation getters instead of deprecated ccsync ones
french_sentences.dart Renamed ccsyncCredentialssyncCredentials, added missing syncBackendUrl and syncClientId overrides
german_sentences.dart Renamed ccsyncCredentialssyncCredentials, updated string values to remove "CCSync" mentions
spanish_sentences.dart Verified and ensured all sync-prefixed getters are correctly implemented

Flutter Rust Bridge Version Fix

File What Changed
pubspec.yaml Updated flutter_rust_bridge from ^2.11.1 to ^2.12.0
pubspec.lock Synced lock file with new dependency version
frb_generated.dart Updated hardcoded codegenVersion from 2.11.12.12.0 to match runtime
frb_generated.io.dart Updated version comment
frb_generated.web.dart Updated version comment
api.dart Updated version comment

Why

  • CCSync Cleanup: The project has transitioned from CCSync to TaskChampion for sync. Leftover ccsync references in the French, German, and Spanish translation files and the credentials view were causing inconsistency and would confuse future contributors.

  • FRB Version Fix: The Dart runtime package (flutter_rust_bridge) resolved to 2.12.0 but the codegen stamp in frb_generated.dart was still 2.11.1. This version mismatch caused a fatal Bad state exception at startup, preventing the app from loading past the splash screen.


Testing

  • ✅ App builds successfully with flutter run --flavor production
  • ✅ App launches past splash screen (FRB version check passes)
  • ✅ All translation files implement required Sentences abstract getters
  • ✅ No compilation errors

Related

  • Continues the work from the chore/cleanup-ccsync-mentions branch
  • Addresses runtime crash: tc_helper's codegen version (2.11.1) should be the same as runtime version (2.12.0)

Summary by CodeRabbit

  • Refactor

    • Renamed in-app wording from "CCSync" to "Sync" across the UI and all supported languages for consistency; backend/credential labels updated.
  • New Features

    • Added platform integrations: App Links support on macOS and Windows, and GTK support on Linux for improved native integration.
  • Chores

    • Bumped tooling/dependency generator versions.
  • Tests

    • Updated localization and integration test expectations to match renamed strings and UI behavior.

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 3, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 327ec9f4-5f88-42fc-b357-a4a650377bfc

📥 Commits

Reviewing files that changed from the base of the PR and between 7a62949 and f3e44e7.

📒 Files selected for processing (1)
  • test/utils/taskchampion/taskchampion_test.dart
🚧 Files skipped from review as they are similar to previous changes (1)
  • test/utils/taskchampion/taskchampion_test.dart

📝 Walkthrough

Walkthrough

Renamed CCSync identifiers to sync* across controllers, views, and localization; updated tests accordingly. Bumped flutter_rust_bridge to 2.12.0 (Dart and Rust pins, generated headers). Added GTK and App Links plugin registrations in generated platform registrants and CMake files.

Changes

Cohort / File(s) Summary
Task Champion creds UI & controller
lib/app/modules/manage_task_champion_creds/controllers/manage_task_champion_creds_controller.dart, lib/app/modules/manage_task_champion_creds/views/manage_task_champion_creds_view.dart
Renamed ccsyncBackendUrlControllersyncBackendUrlController, updated view wiring and replaced ccsync* sentence keys with sync*.
Localization interface
lib/app/utils/language/sentences.dart
Renamed public getters from ccsync*sync* (login, Easy Sync title, open button, intro, self-hosted, credentials, backend URL, client ID).
Localized language implementations
lib/app/utils/language/*.dart
lib/app/utils/language/bengali_sentences.dart, english_sentences.dart, french_sentences.dart, german_sentences.dart, hindi_sentences.dart, marathi_sentences.dart, spanish_sentences.dart, urdu_sentences.dart
Updated each language class to implement the sync* getters and changed displayed strings to replace “CCSync” with “Sync” where applicable.
Tests updated for renames & taskchampion
test/utils/language/*_sentences_test.dart, test/utils/language/sentences_test.dart, test/utils/taskchampion/taskchampion_test.dart
Adjusted test assertions to use sync* getters and updated taskchampion tests to reference syncBackendUrl controller and modified expectations for loading/saving behavior.
flutter_rust_bridge version bump
pubspec.yaml, lib/rust_bridge/api.dart, lib/rust_bridge/frb_generated.dart, lib/rust_bridge/frb_generated.io.dart, lib/rust_bridge/frb_generated.web.dart, rust/Cargo.toml
Bumped flutter_rust_bridge from 2.11.12.12.0 in dependencies, generated file headers, and Rust Cargo pins.
Platform plugin registrant & CMake updates
linux/flutter/generated_plugin_registrant.cc, linux/flutter/generated_plugins.cmake, macos/Flutter/GeneratedPluginRegistrant.swift, windows/flutter/generated_plugin_registrant.cc, windows/flutter/generated_plugins.cmake
Added GTK plugin registration on Linux and App Links registration on macOS/Windows; updated generated plugin lists and registration calls/CMake entries.
Minor comments / UI strings
lib/app/v3/models/task.dart, lib/app/modules/profile/views/profile_view.dart
Updated inline comments and a few UI/comment strings to reference “Sync” instead of “CCSync”.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

🐰 I hopped through code with nimble feet,

ccsync to sync — tidy and neat.
Languages sing, versions climb,
Plugins join in perfect time.
A rabbit cheers: small change, big treat!

🚥 Pre-merge checks | ✅ 1 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Description check ❓ Inconclusive The PR description is comprehensive and well-structured with clear sections covering the CCSync cleanup, FRB version fix, testing verification, and rationale. However, it does not follow the provided repository template structure with the required 'Fixes #(issue_no)', 'Screenshots', and 'Checklist' sections. Consider adding the 'Fixes #(issue_no)' section if applicable, and completing the checklist items (Tests, Documentation, Code style, All tests passing) to align with the repository's PR description template.
✅ Passed checks (1 passed)
Check name Status Explanation
Title check ✅ Passed The title 'Chore/cleanup ccsync mentions' directly aligns with the main objective of removing legacy CCSync references throughout the codebase, which is the primary focus of this PR.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 7

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@lib/app/modules/manage_task_champion_creds/controllers/manage_task_champion_creds_controller.dart`:
- Line 14: Update the test references in taskchampion_test.dart to use the
renamed controller field and storage key: replace usages of
ccsyncBackendUrlController with syncBackendUrlController and update any storage
key string ccsyncBackendUrl to syncBackendUrl so the tests reference the new
TextEditingController field name (syncBackendUrlController) in
ManageTaskChampionCredsController.

In `@lib/app/utils/language/bengali_sentences.dart`:
- Around line 5-16: The Bengali localization still contains literal "CCSync"
text inside the sync-related getters (syncLoginInstruction, syncEasySyncTitle,
syncOpenButton, syncIntro, syncSelfHosted); update those string values to use
the renamed sync product text consistent with other locales (replace "CCSync"
with the canonical sync name used elsewhere, e.g., "TaskChampion Sync" or the
project's agreed term) so all locales match the renamed getters.

In `@lib/app/utils/language/english_sentences.dart`:
- Line 227: The getter syncCredentials currently returns the string 'CCync
credentials' with a typo; update the return value of the syncCredentials getter
in english_sentences.dart to the correct label 'Sync credentials' (keeping the
getter name syncCredentials unchanged) so it aligns with the PR's "Sync"
terminology.

In `@lib/app/utils/language/hindi_sentences.dart`:
- Around line 5-16: Several Hindi strings still use "CCSync" while other keys
like syncCredentials and syncBackendUrl use "Sync"; update the strings for
syncLoginInstruction, syncEasySyncTitle, syncOpenButton, syncIntro, and
syncSelfHosted to consistently use "Sync" (or the chosen unified product name)
instead of "CCSync" so translations match other files and keys; ensure the same
wording is applied as in Marathi and other locales to keep UX consistent.

In `@lib/app/utils/language/marathi_sentences.dart`:
- Around line 5-17: Update the Marathi strings to consistently use the new
"Sync" naming instead of "CCSync": change the values for syncLoginInstruction,
syncEasySyncTitle, syncOpenButton, syncIntro, and syncSelfHosted to replace
"CCSync" with "Sync" (or the localized equivalent used by syncCredentials and
syncBackendUrl) so all sync-related keys (including syncCredentials and
syncBackendUrl) use the same term across the locale.

In `@lib/app/utils/language/urdu_sentences.dart`:
- Line 229: The getter syncCredentials currently returns the string with a typo
and legacy "CCSync" mention; update the return value of String get
syncCredentials to use the new naming convention by replacing 'CCync اسناد' with
'Sync اسناد' so it no longer contains the incorrect/legacy "CCSync" text.

In `@lib/rust_bridge/frb_generated.dart`:
- Line 68: The generated Dart constant codegenVersion in frb_generated.dart is
2.12.0 but the Rust side is still at 2.11.1, so update the Rust crate
dependencies in Cargo.toml (flutter_rust_bridge, flutter_rust_bridge_macros,
flutter_rust_bridge_codegen) to match "=2.12.0" and then re-run the bridge
generator (flutter_rust_bridge_codegen generate) to regenerate
rust/src/frb_generated.rs so the version emitted by the Rust bridge matches the
Dart code and RustLib.init() with forceSameCodegenVersion will succeed.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 130df1d8-7cba-4773-8a57-8d54790d4d03

📥 Commits

Reviewing files that changed from the base of the PR and between f058b4a and 857e17d.

⛔ Files ignored due to path filters (1)
  • pubspec.lock is excluded by !**/*.lock
📒 Files selected for processing (16)
  • lib/app/modules/manage_task_champion_creds/controllers/manage_task_champion_creds_controller.dart
  • lib/app/modules/manage_task_champion_creds/views/manage_task_champion_creds_view.dart
  • lib/app/utils/language/bengali_sentences.dart
  • lib/app/utils/language/english_sentences.dart
  • lib/app/utils/language/french_sentences.dart
  • lib/app/utils/language/german_sentences.dart
  • lib/app/utils/language/hindi_sentences.dart
  • lib/app/utils/language/marathi_sentences.dart
  • lib/app/utils/language/sentences.dart
  • lib/app/utils/language/spanish_sentences.dart
  • lib/app/utils/language/urdu_sentences.dart
  • lib/rust_bridge/api.dart
  • lib/rust_bridge/frb_generated.dart
  • lib/rust_bridge/frb_generated.io.dart
  • lib/rust_bridge/frb_generated.web.dart
  • pubspec.yaml

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
test/utils/language/french_sentences_test.dart (1)

7-180: Please add assertions for new French sync getters.

Given this test’s broad localization coverage, it should also assert french.syncBackendUrl and french.syncClientId (with their exact expected French strings) to prevent regressions in the newly added overrides.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@test/utils/language/french_sentences_test.dart` around lines 7 - 180, Add two
assertions for the new French sync getters: ensure the test includes
expect(french.syncBackendUrl, '<expected French string>') and
expect(french.syncClientId, '<expected French string>'); locate the canonical
French strings in the French localization file (the same resource that defines
the other french.* getters) and use those exact values so the test verifies the
newly added overrides for syncBackendUrl and syncClientId.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@test/utils/taskchampion/taskchampion_test.dart`:
- Around line 26-37: The test currently mocks SharedPreferences but
loadCredentials() uses file-based CredentialsStorage APIs, so replace the
SharedPreferences setup with direct stubs/mocks for
CredentialsStorage.getApiUrl(), CredentialsStorage.getClientId(), and
CredentialsStorage.getEncryptionSecret() (or create the expected credential
files under the test temp profile path) so that
ManageTaskChampionCredsController.loadCredentials() reads the expected values;
locate and update the test to mock those static methods (or write the
backend_url_tc, client_id_tc, encryption_secret_tc files) and then assert
controller.syncBackendUrlController.text, clientIdController.text, and
encryptionSecretController.text as before.
- Around line 40-51: The test currently asserts SharedPreferences writes but
saveCredentials() actually writes files via CredentialsStorage and calls
profilesWidget.setTaskcCreds(); update the test to either (A) mock the file
system or CredentialsStorage and assert that CredentialsStorage.write (or the
concrete method used) and profilesWidget.setTaskcCreds() are invoked with the
expected values and keys ('taskc_client_secret', 'taskc_client_id',
'backend_url_tc'), or (B) remove the SharedPreferences assertions and instead
read from the profile file created by CredentialsStorage to assert the stored
values; locate saveCredentials(), CredentialsStorage, and
profilesWidget.setTaskcCreds() to apply the change.

---

Nitpick comments:
In `@test/utils/language/french_sentences_test.dart`:
- Around line 7-180: Add two assertions for the new French sync getters: ensure
the test includes expect(french.syncBackendUrl, '<expected French string>') and
expect(french.syncClientId, '<expected French string>'); locate the canonical
French strings in the French localization file (the same resource that defines
the other french.* getters) and use those exact values so the test verifies the
newly added overrides for syncBackendUrl and syncClientId.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: a0774156-681b-47b9-a450-ba4a39135dcf

📥 Commits

Reviewing files that changed from the base of the PR and between 857e17d and 7a62949.

📒 Files selected for processing (22)
  • lib/app/modules/manage_task_champion_creds/views/manage_task_champion_creds_view.dart
  • lib/app/modules/profile/views/profile_view.dart
  • lib/app/utils/language/bengali_sentences.dart
  • lib/app/utils/language/english_sentences.dart
  • lib/app/utils/language/hindi_sentences.dart
  • lib/app/utils/language/marathi_sentences.dart
  • lib/app/utils/language/urdu_sentences.dart
  • lib/app/v3/models/task.dart
  • linux/flutter/generated_plugin_registrant.cc
  • linux/flutter/generated_plugins.cmake
  • macos/Flutter/GeneratedPluginRegistrant.swift
  • rust/Cargo.toml
  • test/utils/language/bengali_sentences_test.dart
  • test/utils/language/english_sentences_test.dart
  • test/utils/language/french_sentences_test.dart
  • test/utils/language/hindi_sentences_test.dart
  • test/utils/language/marathi_sentences_test.dart
  • test/utils/language/sentences_test.dart
  • test/utils/language/spanish_sentences_test.dart
  • test/utils/taskchampion/taskchampion_test.dart
  • windows/flutter/generated_plugin_registrant.cc
  • windows/flutter/generated_plugins.cmake
✅ Files skipped from review due to trivial changes (5)
  • lib/app/v3/models/task.dart
  • lib/app/modules/profile/views/profile_view.dart
  • windows/flutter/generated_plugins.cmake
  • windows/flutter/generated_plugin_registrant.cc
  • rust/Cargo.toml
🚧 Files skipped from review as they are similar to previous changes (5)
  • lib/app/modules/manage_task_champion_creds/views/manage_task_champion_creds_view.dart
  • lib/app/utils/language/english_sentences.dart
  • lib/app/utils/language/urdu_sentences.dart
  • lib/app/utils/language/bengali_sentences.dart
  • lib/app/utils/language/hindi_sentences.dart

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant