tiddly-gittly / TidGi-Desktop

TidGi is an privacy-in-mind, automated, auto-git-backup, freely-deployed knowledge management Desktop note app, based on Tiddlywiki, with REST API for web-clipping and Anki connect. 「 太记 」是一个基于「 太微 TiddlyWiki 」的知识管理桌面应用,能保护隐私内容、高级自动化、自动Git云备份、部署为博客,且可通过RESTAPI与Anki等应用连接。(迭代开发中欢迎试用,开发进度见下方链接)(Under active development, see website below for details)
https://tidgi.fun
Mozilla Public License 2.0
1.74k stars 111 forks source link

bug: token无法自动复原 #405

Closed dongrentianyu closed 10 months ago

dongrentianyu commented 1 year ago

Environment 环境信息

No response

Description 描述

No response

Steps to Reproduce 复现方式

大概是同步中文教程的github,过段时间需要手动更新一下。

image

但这个更新在github desktop里可能出错了。

D}8`1W}W~TAUSS_PJ5LY{`C

大概会出现图片上的弹窗。

在Github桌面板那个仓库设置里可以看到仓库的地址,把那个地址中间一些token之类的都删掉,变成只剩仓库真实地址就好了

28JPW7R9Q_GN~4 ~L7`4MBT

之前这里有一大段乱码的内容,删除后重新把原地址复制过去,就推上去了。

问题多少是解决了,但现在这里留个记录。

Additional Context 额外上下文

No response

linonetwo commented 1 year ago

上次修了一下,发现现在右键主工作区同步云端居然会把 https://github.com/linonetwo/calendar 给改成 https://linonetwo:ghp_xxx@github.com/linonetwo/wiki ,让 git 仓库搞错了!这可是严重问题了

还好,在这里可以改回来,再用 source tree app 重新 fetch origin 一下就修好了

截屏2023-06-27 22 39 01 截屏2023-06-27 22 39 09
linonetwo commented 1 year ago

右键工作区里同步单个子工作区是没问题的,例如直接同步 calendar 工作区没问题

linonetwo commented 1 year ago

今天坑了我一把 https://github.com/desktop/desktop/issues/17409#issuecomment-1729299259

dongrentianyu commented 10 months ago

我感觉我又在这里被坑了。等下看看有没有啥好办法。论坛

dongrentianyu commented 10 months ago

呃,看样子是这么一个情况了。

就是用太记自动同步时,会把github desktop里的https://github.com/dongrentianyu/time2task,变成https://dongrentianyu:github_token_@github.com/dongrentianyu/itime2task这样的,也就是直接把token填进去了。

之前遇到了,然后不记得当时怎么修复的来着了。

dongrentianyu commented 10 months ago

呃,破案了。

就是github的token,账户名,和email,都要填上。分支应该是可选的。

然后在github desktop里,把仓库设置成https://github.com/dongrentianyu/cardwiki形式。如果是添加了token的,要改过来。

但新的问题是,我添加了email,结果再次启动email就没了。跟编辑者署名的那个一样,就是重启之后就没了。也没有保存下来。

dongrentianyu commented 10 months ago

呃,果然还是因为没有把email保存下去。我这次先在设置里,把所有设置都设置为默认值。然后再导入一个wiki测试。

发现就是写上了email各种信息。最后重启一下就没了。

我直接打开C:\Users\34656\AppData\Roaming\TidGi\settings\settings.json文件,在里面修改"github-email":null,修改为"github-email":"3465645884@qq.com",然后再重启,第一次正常提交了。

结果第二次填入的数据,就又变成了"github-email":null。感觉还是什么地方出了问题。

dongrentianyu commented 10 months ago

刚测试了最新版本的太记,问题还是没有解决。编辑者和email都没有保存下去。一同步,在github desktop那里就会变成https://dongrentianyu:github_token_@github.com/dongrentianyu/itime2task这样的。修改了也会变过来。

目前版本信息如下。

Version v0.8.1-prerelease14

Electron Version: 28.1.0
Node Version: 18.18.2
Chromium Version: 120.0.6099.109
dongrentianyu commented 10 months ago

关闭窗口时,存在卡顿,然后就弹出windows提示,是否终止程序。选择终止程序才关闭。

dongrentianyu commented 10 months ago

https://github.com/tiddly-gittly/TidGi-Desktop/blob/b3b333eaa5ff32e913a27c1209194fe1d73a8d76/src/components/TokenForm/GitTokenForm.tsx#L63

问claude,说是可能这一行出了问题。


根据代码逻辑分析,邮箱值没有被保存,重启变成null的原因可能有:

  1. set方法未成功执行

    代码中 onChange 事件中使用:

    void window.service.auth.set(`${storageService}-email`, event.target.value);

    来保存邮箱值。但这里使用了void,如果set方法执行失败或报错,也不会抛出。这样就导致了值未被真正保存,重启就丢失了。

  2. 用户信息状态没有正确更新

    值的读取通过 useUserInfoObservable 钩子获取用户信息状态。如果set后用户信息状态没有做对应更新,那再次渲染时还是显示旧的值。

  3. 本地存储本身失败

    很可能是把邮箱保存在本地的浏览器存储中,但浏览器存储操作失败了,没有错误处理和重试,导致最终的值没有保存下来。

  4. 组件实例之间数据没有同步

    如果是多个组件实例,一个组件实例中修改的值没有同步到其它实例,那其它实例渲染时还是旧的数据。

总结下来有可能的原因:

需要进一步调试定位上面的具体原因后继续优化。


其他的就不知道了。想pnpm update,更新一下,半天也没更新完,不知道啥又卡住了。

dongrentianyu commented 10 months ago

仔细研究了一下,发现上面的好像没啥问题。因为要有问题,肯定是几个同类型的组件都出了问题。不能只是email没有保存下去。

https://github.com/tiddly-gittly/TidGi-Desktop/blob/b3b333eaa5ff32e913a27c1209194fe1d73a8d76/src/services/auth/interface.ts#L81

感觉更像是这串代码的问题。说是会丢失ts的类型检查。从而导致一些很难看得见的问题。而下面的name: any;,也可能是导致编辑者名称一直保存不了的因素。编辑者名称还好说,好像tiddlywiki里设置了就没问题了。

不管怎样,就是尽力探索到这里了。我这本地构建不出来,也不知道咋测试,就这样了。期待太记早日解决这个问题,不然太闹心了。

linonetwo commented 10 months ago

邮箱是什么问题,和token不是同一个吧?

token 应该会自动复原了吧,我这次特地在 https://github.com/tiddly-gittly/git-sync-js 加了一些测试了

dongrentianyu commented 10 months ago

录制了视频。

dongrentianyu commented 10 months ago

现在就是退出,关闭,重启都会卡顿,我也不知道为啥,就从下面关闭窗口关闭了。

dongrentianyu commented 10 months ago

等看完了,检查完了,我估计要换个token了。感觉手动获取到的token应该没问题吧。

登录好像登录不了,就是授权了,但依旧没反应。

dongrentianyu commented 10 months ago

我感觉应该不是私人仓库的原因。因为之前私人仓库也是可以同步的。

linonetwo commented 10 months ago

是有点问题,刚发现登录按钮没有生成token,还得排查一下。还有点击立即重启那个我也发现了,可能所有导致重启app的都会这样,得修一下

linonetwo commented 10 months ago

直接退出app也会卡,可能是退出的逻辑有问题,但是我 Windows 开发的时候没遇到,日常用也没遇到,我是今天到公司在mac上用才发现了。

dongrentianyu commented 10 months ago

现在还是email和编辑者名称没有保存到设置文件里。一刷新就没了。没有这两个,github desktop,就无法正常同步了。

dongrentianyu commented 10 months ago

呃,有点尴尬。我好像找到原因了。

原因就是不能有中文路径。

就,很简单的原因。但我之前使用时包含了中文路径,用起来也一直没问题。不然我也不会现在才意识到这个问题,因为我从来就没怀疑过是中文路径的问题。一般来说,就是如果因为中文路径出了问题,那么第一次使用时,就应该显示出来有问题。而不可能是现在才出现。

我现在使用的版本号如下。

Version v0.8.1-prerelease6

Electron Version: 25.2.0
Node Version: 18.15.0
Chromium Version: 114.0.5735.134

我看好像发布了新版本,等下再尝试一下。至少这个版本,在没有中文路径下,好像能正常同步,不会出现各种各样的问题。

dongrentianyu commented 10 months ago

但奇怪的是github desktop里不是直接的https://github.com/dongrentianyu/time2task,而是https://dongrentianyu:github_token_@github.com/dongrentianyu/itime2task的形式。但能成功同步,不带上那个test的账号。感觉终于成功了。

dongrentianyu commented 10 months ago

但不好的消息是,新版本仍然有这个问题。

我使用下面的版本,会出现email和编辑者姓名丢失的问题。同时会和github desktop无法正常同步,会附带一个test账号。

Version v0.8.1-prerelease15

Electron Version: 28.1.0
Node Version: 18.18.2
Chromium Version: 120.0.6099.109

我先用回旧版本了。林大加油,我感觉不像是太记本身的问题,倒像是太记使用框架的问题。也就是框架更新太快了,而github desktop不能适应,哈哈。

但可能问题还在于这个无法保存的email和token上。

就是不知道其他人有没有类似的问题。如果也能附带log上来就好了。

dongrentianyu commented 10 months ago

如果github desktop是https://dongrentianyu:github_token_@github.com/dongrentianyu/itime2task的形式,那么就不能手动直接在github desktop里更新wiki了。只能由太记来同步更新了。

而要能够在github desktop里手动推送更新,那么就只能把仓库设置改回https://github.com/dongrentianyu/time2task形式。但只要一启动太记,就会被上面的token形式覆盖掉。

问题还是挺复杂。目前我先选择带有token的形式,最近经常需要太记,只能先用了。

linonetwo commented 10 months ago

https://github.com/tiddly-gittly/TidGi-Desktop/releases/tag/v0.8.1-prerelease16

试着修了一下

dongrentianyu commented 10 months ago

https://github.com/tiddly-gittly/TidGi-Desktop/releases/tag/v0.8.1-prerelease16

试着修了一下

尴尬的是,exe和msi版本都安装不上。启动没效果。电脑也重启过了。

linonetwo commented 10 months ago

图片

应该没问题呀,我的window可以直接升级

linonetwo commented 10 months ago

反正注意备份

linonetwo commented 10 months ago

https://github.com/tiddly-gittly/TidGi-Desktop/releases/tag/v0.9.0-prerelease2 我试了好像修复了

图片

dongrentianyu commented 10 months ago

TidGi-Exception-2024-01-08.log

TidGi-2024-01-08.log

这是两份log。目前我还是启动不了太记。我去问下ai是什么情况。

linonetwo commented 10 months ago

看 log 里的 SyntaxError: Unexpected end of JSON input ,是说 setting json 坏了,你用 vscode 之类的打开,把 json 格式手动修一下就能打开了。

linonetwo commented 10 months ago

可能是之前设置存不上的bug,导致文件损坏了,但是估计补个 } 或者删多余的} 之类的修复格式就好了。

dongrentianyu commented 10 months ago

但我把setting json,设置成空集还是什么呢?

image

我修改成这样,等下启动就会被覆盖。

dongrentianyu commented 10 months ago

用vscode保持了一下,竟然成功了。终于成功进到太记里了。

之前我也修改了,但修改后就关掉了vscode,然后重启失败了。

进到太记后就发现之前导入的wiki都失效了,要重新导入一遍。里面只有一个刚新建的wiki。

linonetwo commented 10 months ago

所以说修复一下就好了,不要删掉之前的设置

dongrentianyu commented 10 months ago

不是我删除的,而是我打开就已经是空白的文件了。我是添加了{},然后vscode没关闭,才成功了。之前都是关掉了vscode重启的,结果就失败了。

dongrentianyu commented 10 months ago

发布新版本好快啊,我再试试最新版本。

linonetwo commented 10 months ago

好吧,也不知道为啥这个文件被清空了,不过新版应该没问题了。不过新版也对保存设置的地方重写了一下,不知道会不会有新的问题。

linonetwo commented 10 months ago

主要是这几天我都在用Windows电脑,就把Windows上遇到的bug都修了。

dongrentianyu commented 10 months ago

image

image

果然跟我想的差不多。原本setting文件里是有文件的,下载了最新版本的,启动之后就清除了。

dongrentianyu commented 10 months ago

image

然后就是已经有一个了。要重新导入过我其他的wiki。

所以清除setting文件应该还是程序出了啥问题。

dongrentianyu commented 10 months ago

image

另一个是一直会重复添加这两个文件,不知道是模板wiki自带的还是什么,就是删除了,也会添加上。

dongrentianyu commented 10 months ago

编辑者名是保存下来了,但github-email还是保存不了。难道是因为我邮箱账号纯数字的缘故吗?

github-email保存不了,同步就还是会带上那个test账号。

dongrentianyu commented 10 months ago

我把数字账号改成了英文账号,但同样无法保存下来。

dongrentianyu commented 10 months ago

token问题已解决。

github email无法保存的问题,我重新提了一个issue,这样就不在这边追踪了。

https://github.com/tiddly-gittly/TidGi-Desktop/issues/501

dongrentianyu commented 9 months ago

感觉还是会时不时冒出来。可能是自动备份提交的时候,因为网络问题,识别不到github,然后就改用了test账号提交。

而且有时候提交上去,还会提示不能推送,因为仓库的设置被修改成token的形式。但等一会,又可以提交了。感觉是网络问题影响了。

现在我都关闭了自动备份,都是写完了就推送一下。

linonetwo commented 9 months ago

我这是除了网络原因以外都正常了