@@ -488,6 +488,59 @@ func (a *App) CheckUpdate(currentVersion string) (UpdateResult, error) {
488488 return UpdateResult {HasUpdate : false , LatestVersion : highestVersion }, nil
489489}
490490
491+ func (a * App ) RecoverCC () error {
492+ a .emitRecoverLog ("Starting recovery process..." )
493+
494+ home , err := os .UserHomeDir ()
495+ if err != nil {
496+ a .emitRecoverLog (fmt .Sprintf ("Error getting home dir: %v" , err ))
497+ return err
498+ }
499+
500+ // Remove ~/.claude directory
501+ claudeDir := filepath .Join (home , ".claude" )
502+ a .emitRecoverLog (fmt .Sprintf ("Checking directory: %s" , claudeDir ))
503+ if _ , err := os .Stat (claudeDir ); ! os .IsNotExist (err ) {
504+ a .emitRecoverLog ("Found .claude directory. Removing..." )
505+ if err := os .RemoveAll (claudeDir ); err != nil {
506+ a .emitRecoverLog (fmt .Sprintf ("Failed to remove .claude directory: %v" , err ))
507+ return fmt .Errorf ("failed to remove .claude directory: %w" , err )
508+ }
509+ a .emitRecoverLog ("Successfully removed .claude directory." )
510+ } else {
511+ a .emitRecoverLog (".claude directory not found, skipping." )
512+ }
513+
514+ // Remove ~/.claude.json file
515+ claudeJsonPath := filepath .Join (home , ".claude.json" )
516+ a .emitRecoverLog (fmt .Sprintf ("Checking file: %s" , claudeJsonPath ))
517+ if _ , err := os .Stat (claudeJsonPath ); ! os .IsNotExist (err ) {
518+ a .emitRecoverLog ("Found .claude.json file. Removing..." )
519+ if err := os .Remove (claudeJsonPath ); err != nil && ! os .IsNotExist (err ) {
520+ a .emitRecoverLog (fmt .Sprintf ("Failed to remove .claude.json file: %v" , err ))
521+ return fmt .Errorf ("failed to remove .claude.json file: %w" , err )
522+ }
523+ a .emitRecoverLog ("Successfully removed .claude.json file." )
524+ } else {
525+ a .emitRecoverLog (".claude.json file not found, skipping." )
526+ }
527+
528+ a .emitRecoverLog ("Recovery process completed successfully." )
529+ return nil
530+ }
531+
532+ func (a * App ) emitRecoverLog (msg string ) {
533+ runtime .EventsEmit (a .ctx , "recover-log" , msg )
534+ }
535+
536+ func (a * App ) ShowMessage (title , message string ) {
537+ runtime .MessageDialog (a .ctx , runtime.MessageDialogOptions {
538+ Type : runtime .InfoDialog ,
539+ Title : title ,
540+ Message : message ,
541+ })
542+ }
543+
491544// compareVersions returns 1 if v1 > v2, -1 if v1 < v2, 0 if equal
492545func compareVersions (v1 , v2 string ) int {
493546 parts1 := strings .Split (v1 , "." )
0 commit comments