Git Product home page Git Product logo

blossom-editor / blossom Goto Github PK

View Code? Open in Web Editor NEW
2.6K 15.0 201.0 61.66 MB

A markdown editor that you can deploy on your own servers to achieve cloud storage and device synchronization(支持私有部署的云端存储双链笔记软件)

Home Page: https://www.wangyunf.com/blossom-doc/index

License: MIT License

Shell 0.02% Java 42.86% JavaScript 0.15% TypeScript 10.20% HTML 2.99% Vue 37.15% CSS 2.81% SCSS 3.74% Dockerfile 0.08%
editor markdown blog client-server

blossom's Introduction

Featured|HelloGitHub

💻️ 试用 | 📃 文档 | 📥 下载

Blossom 是一个支持私有部署云端双链笔记软件,你可以将你的笔记,图片,个人计划安排保存在自己的服务器中,并在任意设备之间实时同步。同时还是一个动态博客。

支持 Windows,Mac,网页客户端,网页移动端。

🛎️ 在线试用

你可以通过在线地址下载客户端试用,详细信息请查看试用文档。



👏 Blossom 的特点:

完善的文件关系

Blossom 不依赖任何三方存储和图床,其本身就是一个图床,并且提供了完善的图片管理,防勿删,以及图片和文章的双向关系绑定。

基于 Markdown 编写,没有破坏性的语法拓展,在这里编写的内容在任何 Markdown 软件中都能正常显示。

快速迁移

所有图片和文章都支持一键备份和导出,可以在几分钟内轻松迁出。导出的文件可以无缝使用 VS Code 或 Obsidian 等本地软件正常打开。

丰富的附加功能

Blossom 拥有丰富的功能,不仅仅是知识管理,更是一个可以供多人同时使用的全面实用性工具。



🚀 Docker Compose 一键部署

docker compose -f docker/compose/blossom-mysql8.yaml up -d



🥳 加入群聊

加入群聊进行沟通,反馈问题。

  • 1 群:522359970 (即将满)
  • 2 群:921906098 (即将满)
  • 3 群:749721525

🤝 赞助 Blossom

Blossom 不会向你收取任何的费用,你可以永久免费使用!

但开源软件的收益目前很难维持生活,并且项目设计,开发,测试需要大量的时间和精力,如果你愿意赞助我的工作,将非常有助于该项目的成长,并激励我长期持续下去!

感谢每一个位赞助者对 Blossom 的大力支持,Blossom 因为你们变得更好。

sponsors


你可以通过以下几种方式赞助 Blossom。


更多图片

"编辑器"

编辑器


"双链笔记"

双链笔记


"照片墙"

照片墙


"日历计划"

待办事项清单


"日历计划"

日历计划


"便签管理"

便签管理


"博客"

博客

博客移动端

Star 历史

Stargazers over time

blossom's People

Contributors

acyco avatar andecheal avatar chivehao avatar klaus-cicd avatar t1anjiu avatar xiaozzzi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

blossom's Issues

关于内容搜索功能

没找到站内搜索的功能,文章很多的情况下,想全局搜索关键字找到对应的文档。 (难道是我没有发现吗 手动狗头。。。)

图片资源配置

我的图片配置

  iaas:
    os-type: blossom
    blos:
      # 请以 /pic 结尾, 如果你在 nginx 中配置有代理, 注意别忘了添加你的代理路径
      domain: "https://blossom-esion.tocmcc.cn/bl/pic/"
      # 请以 / 开头, / 结尾, 简短的路径在文章中有更好的显示效果, 过长一定程度会使文章内容混乱
      default-path: "/home/esion/Appliaction/blossom/bl/img/"

之后上传完图片路径是

https://blossom-esion.tocmcc.cn/bl/pic/home/esion/Appliaction/blossom/bl/img/U1/avatar.png

是不是图片需要自己配置反向代理,代理这个目录啊

一个请求

能不能增加同步手机日历/日程功能,如谷歌日历等

[建议]PLAN功能建议

1、新增计划的界面,如果之前的计划设置了重复天数,即使新的计划没有勾选重复,依旧会生成重复的计划,就像下图一样
image

图片上传后无预览显示

作者你好,根据你的博客部署教程,我使用了docker部署,完成部署后尝试上传图片,上传后的页面如下图所示
WeCom截圖_20231219213649
回头查看后端容器输出的日志,得到结果如下
WeCom截圖_20231219213730
看起来,上传并没有报错,也看不出来图片预览这一功能在哪一个环节出错了,想咨询一下这个情况可以怎么排查解决

[建议]颜色调整&代码行号展示

  1. 黑暗模式下,背景有点绿绿的,很多字体颜色还是灰色,很难看清,建议黑暗模式下优化字体/图标颜色进行优化
    image
  2. 希望可以展示代码块行号
  3. 主题颜色可以增加一些选择,比如比较大众的天蓝

[BUG] 服务端天气相关报错日志

环境

  • 系统:Windows11
  • 数据库: MySQL 8.0
  • 容器环境:Docker For Windows
  • 使用版本:1.5.0

请求URL

/weather?location=101100101

响应

{
  "code": "20000",
  "msg": "成功",
  "data": {}
}

服务端报错日志

2023-10-03 21:11:44 21:11:44.561 ERROR[999-exec-3] [84.B1] c.b.b.t.hefeng.WeatherManager  77 : 获取城市信息失败,body : [{"code":"401"}]
2023-10-03 21:11:44 21:11:44.561 ERROR[999-exec-3] [84.B1] c.b.b.t.hefeng.WeatherManager  86 : 获取当天气失败,body : [{"code":"401"}]
2023-10-03 21:11:44 21:11:44.562 ERROR[999-exec-3] [84.B1] c.b.b.t.hefeng.WeatherManager  98 : 获取3日天气预报失败,body : [{"code":"401"}]
2023-10-03 21:11:44 21:11:44.562 ERROR[999-exec-3] [84.B1] c.b.b.t.hefeng.WeatherManager  111: 获取小时预报失败,body : [{"code":"401"}]}

[建议]Home界面的一些建议

1、问候语目前是根据时间自动变化的,可以考虑支持可配置,然后可以设置自动变化,比如除了问候,还可以提示一些励志的名言;或者随机显示一些之前的文章;
2、Blossom Statistic区域,文章数和图片数2个按钮,可以支持点击直接跳转到EDITOR和PIC功能;
3、请求流量部分,支持自适应,目前不会自适应;
4、天气预报部分,建议由填写城市代码调整为选择城市,由程序自动去匹配代码给天气预报;
5、好像首页没有编辑热力图

支持个人OKR

Blossom里有TODO,有没有考虑加入个人OKR相关的功能?

功能可以参考 Vision

客户端异常

Snipaste_2023-09-28_11-28-35
客户端退出时,未退出全部进程,导致第二次无法打开,需要杀死这几个进程才能重新打开

【建议】Blossom图标填充功能

创建文件选择图标时,选中图标后还需要返回设置页面手动输入图标名称,不方便,建议选中后直接返回设置页面并将选中的图标内容自动填入,或者选中后会自动复制图标名称
image

七牛云无法使用

配置

  iaas:
    os-type: qiniu
    kodo:
      access-key: *****************************************************
      secret-key: *****************************************************
      bucket-name: static-***-***
      domain: https://static.***.***
      default-path: /blog

得到了链接

https://static.***.***/blog/U1/Snipaste_2022-12-09_11-07-18.png

但是并未上传

上传时也报错了:

POST https://upload.qiniup.com/mk
blk/285575 {ResponseInfo:com.qini
u.http.Response@1a9e617a,status:4
00,reqId:Z9IAAABc3te98YgX,xlog:
X-Log,xvia:,adress:upload.qiniu
p.c0m/157.0.149.246:443,
duratio
n:0.229000 s,error:incorrect reg
ion,please use up-z2.qiniup.com,
bucket is:static-***-*** err
or:incorrect region,please use u
p-z2.qiniup.com,bucket is:stati
c-esion-xyz}

连接nas自带的MariaDB报错

群晖NAS,连接了自带的MariaDB 10,日志显示数据库连接成功。但是后续还是报错了。
手动插入了 INSERT INTO base_sys_param (id, param_name, param_value, param_desc, open_state, cre_time, upd_time) SELECT 1, 'WEB_ARTICLE_URL', 'https://www.domain.com/blossom/#/articles?articleId=', '博客端文章地址,用于PC端直接调往WEB端阅读文章', 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP WHERE NOT EXISTS (SELECT 1 FROM base_sys_param WHERE id = 1)
但不管用。

以下是日志信息。

2023-12-27T03:29:35.040636866Z,stdout, ... 34 common frames omitted

OIDC认证方案

是否考虑提供使用OAuth2或OIDC

单点登录可以简化自托管服务的账号管理

登录异常

Snipaste_2023-09-28_11-25-43
不仅报空指针
图像_2023-09-28_113051473
登陆成功后,数据获取不到

mvn build failed

mvn version:

Apache Maven 3.9.4
Maven home: /usr/share/maven
Java version: 11.0.20.1, vendor: Oracle Corporation, runtime: /usr/lib64/jvm/java-11-openjdk-11
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "6.5.4-1-default", arch: "amd64", family: "unix"

error message:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.10.1:compile (default-compile) on project common-base: Compilation failure
[ERROR] /home/freak/Projects/blossom/blossom-backend/common/common-base/src/main/java/com/blossom/common/base/util/json/JsonUtil.java:[108,19] 对Module的引用不明确[ERROR] com.fasterxml.jackson.databind 中的类 com.fasterxml.jackson.databind.Module 和 java.lang 中的类 java.lang.Module 都匹配[ERROR]
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn -rf :common-base

修改密码,创建账户错误

nested exception is org.apache.ibatis.exceptions.PersistenceException:

Error updating database. Cause: java.lang.IndexOutOfBoundsException: No group 2

The error may exist in com/blossom/backend/base/user/UserMapper.java (best guess)

The error may involve com.blossom.backend.base.user.UserMapper.insert-Inline

The error occurred while setting parameters

SQL: INSERT INTO base_user ( id, type, username, password, salt, nick_name, real_name ) VALUES ( ?, ?, ?, ?, ?, ?, ? )

Cause: java.lang.IndexOutOfBoundsException: No group 2

[建议]便签内容选中功能支持

不足:目前便签的内容不支持选择,所以无法复制,个人喜欢将一些常用的指令放在便签内,需要的时候直接就复制了。

目标:希望便签支持用户选中

后续是否考虑增加一个docker-compose方式进行部署

当前的部署方式相对比较麻烦,
后续是否考虑增加一个docker-composedocker ci方式进行部署

docker compose

就是使用 docker compose 配置文件,直接启动进行

docker ci

就是使用 docker run ... 进行启动容器

[BUG]新增文档后所在目录异常

操作如下:我先在a目录下的b文章编写保存后,去a的同级目录c目录下去导入文章c(此时a目录已经被我收缩了),再点击刷新,又定位到了之前的b目录下了(a目录被自动展开),但是其实我现在的工作区应该在c文章;
如果我选择在c目录下创建文章而不是导入文章,创建后不需要点击刷新就跳回b文章了

希望效果:1. 新增文章后,工作区定为新增的文章位置 2. 刷新列表之后,所在的工作区不变

[建议&讨论]关于任务和计划的功能一些不成熟的想法

目前TODO及PLAN功能是OK的,我觉得已经可以很好的管理每天的任务和计划,这里有一些不成熟的想法,可以讨论下。目前想到的有以下几点:
1、首先目前这样各自管理保留,并且作为默认的情况;然后新增plan计划新增可以选择关联对应的todo任务,或者todo任务新增的时候可以选择关联paln计划,这样可以实现计划和任务的关联性,计划作为目标,任务作为具体的过程;
2、任务和计划的新增界面,新增一个提醒时间,默认可以不选择,如果某个任务或者计划需要提醒的话可以维护提醒时间,调用系统的闹钟进行提醒或者弹框进行提醒;

一些问题

  1. 本地上传文件报错(使用云数据库,本地调试)
    org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'java.lang.Long'; nested exception is java.lang.NumberFormatException: For input string: "undefined"
    	at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:133)
    	at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)
    	at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:179)
    	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:146)
    	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
    	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
    	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
    	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
    	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072)
    	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965)
    	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
    	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:555)
    	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
    	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
    	at com.blossom.backend.base.auth.caffeine.CaffeineTokenAuthFilterProxy.doFilterInternal(CaffeineTokenAuthFilterProxy.java:104)
    	at com.blossom.backend.base.auth.filters.AuthFilterProxy.doFilter(AuthFilterProxy.java:53)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
    	at com.blossom.backend.base.auth.filters.RequestWrapperFilter.doFilterInternal(RequestWrapperFilter.java:35)
    	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
    	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
    	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
    	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
    	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
    	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
    	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
    	at com.blossom.expand.tracker.core.adapter.spring.TrackerFilter.doFilter(TrackerFilter.java:52)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
    	at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)
    	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
    	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:389)
    	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
    	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926)
    	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791)
    	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
    	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
    	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
    	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    	at java.lang.Thread.run(Thread.java:750)
    Caused by: java.lang.NumberFormatException: For input string: "undefined"
    	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    	at java.lang.Long.parseLong(Long.java:589)
    	at java.lang.Long.valueOf(Long.java:803)
    	at org.springframework.util.NumberUtils.parseNumber(NumberUtils.java:214)
    	at org.springframework.beans.propertyeditors.CustomNumberEditor.setAsText(CustomNumberEditor.java:115)
    	at org.springframework.beans.TypeConverterDelegate.doConvertTextValue(TypeConverterDelegate.java:429)
    	at org.springframework.beans.TypeConverterDelegate.doConvertValue(TypeConverterDelegate.java:402)
    	at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:155)
    	at org.springframework.beans.TypeConverterSupport.convertIfNecessary(TypeConverterSupport.java:73)
    	at org.springframework.beans.TypeConverterSupport.convertIfNecessary(TypeConverterSupport.java:53)
    	at org.springframework.validation.DataBinder.convertIfNecessary(DataBinder.java:729)
    	at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:125)
    	... 62 more
    
  2. sql 不规范,使用聚合函数查询时,select字段包括非聚合函数使用的
    1055-Expression#2of SELECT list is not in GROUP BY clause and contains non aggregated column'"blossom.blossom_to do.to do_name'which is not functionally dependent on colums in GROUP BY clause;this is incompatible with sql_mode=only_full_group_by
    
  3. sql 不规范,多表联合查询时,条件字段未指定表名
    Column'user_id' in where clause is ambiguous
    

【建议】Web端文章URI优化

目前效果:image
Web端在已经定位到某文章的情况下,URI没有指向这篇文章,如果需要将文章分享给朋友,URL分享出去别人打开是文章的首页,而不是我希望分享的那篇文章

希望效果:URI可以定位到具体文章,或者增加一个分享按钮自动复制能够准确定位到当前文章的URL

[建议&讨论] 关于便签的优化建议

在有笔记的软件里使用便签,更多情况是快速记录一些灵感一闪、临时任务,杂七杂八暂时无法归类或者稍后整理的东西。这种场景一般要求记录的快,离开的也会很快。
所以希望便签的记录能够更加快捷化,比如有全局的快捷键直接到达便签的编辑页面,或者有桌面小插件随手记录便签。
而现在记录便签需要:
1.打开软件
2.点击note
3.鼠标挪到编辑区,点击编辑
步骤还不不太方便,希望能优化一下

[BUG]快捷键异常

客户端:MacOS 1.7.0
问题:在文章页面,使用CMD+1 展开或者收缩目录栏(全程不松开CMD),不松开CMD继续按1无反应,反而按其他数字比如2,会执行CMD+1的逻辑,然后再按任何数字键都没有效果了。
希望效果:在不松开CMD的情况下继续按数字键可以按照正常逻辑执行

[建议&讨论]关于导入导出支持更多格式

目前导出可以支持导出为MD文件和HTML文件,但是导入的话只支持MD文件和TXT文件,比较单一,希望可以增加更多形式的导入导出,比如ZIP和MHT文件的导入,方便从其他笔记平台进行迁移;
MHT这种格式也是我最近发现的,为知笔记可以导出为MHT文件,这个文件的好处是他把笔记完整的导出为一个文件,这个文件里包含了所有文件及多媒体图片;
ZIP这种格式本质上是一个网页和一个资源包的合集,可以一次性将文章和图片进行导入;

当然,如果可以针对性的找几个其他笔记平台的导出格式进行匹配,那样更好了。比如常见的一些笔记平台:语雀、obsidian、思源、为知、有道、印象笔记、Notion,其他的一些开源笔记如trilium、Joplin等。

[建议]关于Editor功能的文档列表界面的一些建议

1、建议新增完文件夹或者文章后,列表可以自动刷新;
2、建议新增文件夹或者文章时,可以根据选择的类型增加默认的图标,比如选择文件夹默认一个文件夹的图标,选择文章则默认一个文档的图标;如果需要修改,则保持现在的功能,允许自行调整;(目前如果默认不设置图标的话,在列表中分不清是文件夹还是文章)
image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.