更新日志 留言

6.5 DEV

  • ehance 图片存储器的AnimatedWebpConfigure支持sec属性,用于设置生成动态webp的最长处理时间
  • ehance 新版的markdown编辑器通过插件来提供
  • ehance 在应用启动期间,允许插件覆盖系统默认的RequestMapping

6.4 RELEASE

  • ehance markdown编辑器采用markdown-it进行前端解析,增加了同步预览
  • ehance 文章索引增加了updateHits方法,用于提高更新文章点击量索引的效率
  • bug 修复了刷新缓存的点击数时没有清除缓存对象的bug
  • bug 修复了评论列表标签分页数量没有指定时,不是后台配置的分页数目而是系统默认分页数目的bug
  • ehance 恢复记住我功能,如果开启了二次认证,依然需要输入动态口令
  • ehance 增加了记录动态点击数的功能
  • remove 去掉了插件的登录成功处理器注册、注销处理器注册
  • ehance data标签支持 ref-{tagAttName} 属性,用于在当前请求中获取已经被查询的对象, 例如 <data name="articleNav" ref-article2="article"/> 会通过 request.getAttribute('article') 查询已经存在的article对象, 再将article放入key为article2的标签属性中
  • ehance 如果文章的编辑器为markdown,那么文章摘要也将通过markdown来渲染
  • ehance data标签的name属性支持dataName属性了,比如<data name="articlePage"/> = <data name="文章列表"/>,同时不再通过dataName来支持别名,而是通过alias属性
  • ehance 增加了一个MarkdownItMarkdown2Html的markdown解析插件,需要nodejs支持
  • ehance 禁止了管理台以及默认页面在safari浏览的缩放
  • ehance 增加了对pjax的支持

6.3

  • ehance 自定义页面支持路径后缀了,不同的路径将会被设置为不同的content type,具体的转化为
    html==>text/html
    xml==>application/xml
    txt==>text/plain
    js==>text/javascript
    json==>application/json
    css==>text/css
    其他==>application/octet-stream
  • bug 修复了edge|ie浏览器本地测试无法保存cookie的bug
  • ehance 视频存储器如果选择压缩,最后生成的文件会转为mp4后缀
  • ehance 增加了用于获取上一条下一条动态的标签,请见newsNav
  • ehance 静态资源管理增加了js、css、json和xml文件的在线编辑,增加了一个新增文件的操作
  • remove 删除了mediaType标签
  • ehance Fragment新增了del属性,用来判断是否被删除(普通删除仅仅将内容设置为空,del设置为true), 这是为了防止 通过 fragment/{fragmentName}来外部调用模板片段时 缓存不存在的模板片段,被删除的模板片段依然会被缓存, 这是为了在页面存在被删除的模板片段时,减少查询次数
  • remove 删除了SpaceCache
  • bug 修复了sitemap没有更新的bug
  • ehance 插件增加了新的方法,请见plugin
  • ehance urls增加了对cookie的处理,请见urls

6.2

  • ehance 验证码现在不存储在session中,而是通过cookie和内存共同管理(存在数目限制),请见FixedNumCaptchaController
  • ehance 增加了CookieMemoryLinkFlashMapManager,用来替代默认的SessionFlashMapManager
  • bug 修复了更新不存在的模板片段时返回404的bug
  • ehance 插件增加了ResourceHttpRequestHandler注册
  • remove 去掉了头像存储
  • ehance 用户未解锁或者解锁失败后不再将解锁对象储存在session中,而是将锁ID转发到解锁页面
  • ehance CSRF现在存储在cookie中,而不是存储在session中
  • ehance 访问未授权页面时,地址不会被存储在session中,而是被转发到了错误页面,通过${error.url}即可获取页面地址(仅限403状态码)
  • bug 修复了无法解锁空间的bug
  • ehance 插件增加了排序
  • ehance 插件增加了模板渲染辅助对象的注册器
  • ehance 评论插件增加了一个浏览所有评论的页面,并且可以设置单独的管理员评论昵称,防止暴露登录名
  • ehance 模板数据现在可以在后台直接指定是否可以被直接访问而无需重启了

6.1

  • ehance 视频存储器增加了一个压缩功能
  • bug 修复了获取视频封面错误的bug
  • app.properties,plugins.properties文件现在移动到了${user.home}/blog目录下,删除了mail.properties,现在邮件服务通过插件提供
  • 升级到了JDK10
  • ehance 增加了一个动态统计的标签,请见动态统计
  • ehance 增加了一个sitemap的插件
  • bug 修复了在tomcat9.0.6+中,错误页面(存在错误状态码)中redirect标签无法生效的bug.
  • ehance 文章详情和动态详情标签增加了ignoreException属性,用于忽略文章|动态不存在时的异常,返回null
  • ehance 增加了导入模板的预览
  • bug 修复了外部调用模板片段时,没有考虑预览模板片段的bug
  • ehance 通过插件注册的过滤器支持 MappedInterceptor,以支持路径选择
  • ehance 插件增加了登录成功处理器注册、注销处理器注册和锁提供器注册
  • 系统锁、登录页还原、最近被访问文章、邮件发送、异常邮件记录以及点击量缓存现在通过插件来提供
  • ehance 解锁页面不再根据锁类型来寻找模板片段进行渲染,而是寻找页面来渲染,例如锁类型为qa,那么解锁页面模板名为 space/{alias}/unlock/qa或者unlock/qa

6.0

  • remove 去除了文章的缓存
  • ehance 增加了一个用于获取评论总数的标签(请见 评论总数),主要用于获取页面的评论数
  • 现在原有的评论功能由插件实现
  • ehance 增加了一个插件功能,请见 https://github.com/mhlx/mblog/tree/master/src/main/java/me/qyh/blog/core/plugin,说明请见https://www.qyh.me/doc/plugin.html
  • remove 去掉了ping和sitemap功能
  • ehance增加了对微信jssdk的支持, 请见 https://github.com/mhlx/mblog/tree/master/src/main/java/me/qyh/blog/plugin/wechat
  • bug 修复了配置的分页数目在管理台没起作用的bug(当设置的分页数目>10时)
  • ehance增加了评论IP的黑名单
  • bug 修复了访问存储器中文件时,如果不包含文件路径信息,直接报出空指针异常的bug
  • ehance增加了模板片段的预览
  • ehance管理员的评论内容将不会被HtmlClean过滤
  • ehance现在app.properties中的domain可以设置为ip了
  • ehance增加了对ServletRequestBindingException异常的捕获,返回400状态
  • ehance 增加了一个记录动态的功能
  • remove fragment恢复了原来的行为 fragment标签行为现在和th:replace完全一致,因为如果将fragment转换为th:replace渲染,会造成每个页面缓存一次fragment的问题, 但其实fragment是独立的,不是依赖于页面的
  • bug 修复了更改模板片段时没有清除缓存的bug

5.10

  • ehance 自定义页面增加了作用于全部空间(除默认空间)的选项,勾选该选项后,会在页面访问路径前面增加space/{alias},主要用于对某些系统默认页面进行覆盖,例如 文章详情页
  • bug 修复了非默认空间页面无法预览的bug
  • ehance 文章编辑器增加了黏贴、拖拽上传图片功能
  • bug 修复了更新文章时,如果只改变文章的特征图像,更改失败的bug
  • ehance 新增了一个登录页还原的功能,在登录页访问异常的情况下, 通过 /login/restore 可以将登录页还原为系统默认的登录页,这项功能需要GoogleAuthenticator的支持
  • ehance 预览逻辑调整,匹配预览页面时不再通过用户是否登录来判断,而是通过设置预览页面时的IP来判断,即在登录的情况下,如果预览某个页面, 那么设置预览页面请求的IP将会被设置为预览IP,在IP没有变动的情况下,无论是否登录,都将会被匹配到预览页面,但如果用户退出登录或者用户 选择清空预览页面,将会重置预览IP
  • ehance 最近被访问文章增加了ip和time属性,ip用于获取访问该文章用户IP,time用于获取访问该文章时间
  • bug 修复了period标签 include属性为false时,没有按照预期工作的bug

5.9

  • ehance 获取gravatar头像地址现在可以通过${gravatars.getUrl(emailMd5)}来获取,具体请见 gravatars
  • bug 修复了最近访问文章标签,当num属性值小于最近访问文章总数时,实际返回文章数量不一致的bug
  • ehance 文章列表标签增加了ignorePaging属性,用于忽略分页,获取指定的所有的记录
  • ehance fragment标签行为现在和th:replace完全一致,fragment name属性可以使用选择器,例如 <fragment name="nav :: li"/>,它等效于 <div th:replace="Template%Fragment%nav :: li"></div>
  • bug 修复了SessionConfig设置域名时,多个同级子域名互相影响的bug
  • ehance 新增了markdown标签,标签内的内容将会通过markdown来渲染,请见markdown
  • bug 修复了图片存储器缩放图片时有时会旋转90度的bug
  • bug 修复了访问某个私人空间时,如果没有权限,调用的错误页面是默认空间的错误页面的bug
  • ehance 现在lock必须要根据unlockId来解锁,这样当一个页面有多个锁的时候,可以选择性的解锁
  • bug 修复了LockHelper#addKey线程不安全的bug
  • ehance lock标签增加了type属性,如果该属性值为block,那么lock标签下还可以放置locked标签和unlocked标签,前者的内容会在未被解锁时渲染, 后者内容会在解锁后渲染,通过${urls.getUnlockUrl(unlockId)}可以获取当前的解锁地址
  • ehance 模板渲染错误页面将会显示StackTrace
  • ehance 取消了thymeleaf的限制模式,具体请见thymeleaf #648
  • ehance 增加了一个保存历史模板的功能,用于在当前模板发生不期望异常的时候进行还原,需要手动保存
  • ehance 增加了animated webp的处理,依赖于libwebp中的gif2webp
  • bug 修复了gif文件因为与实际类型不匹配时,JavaImageHelper读取图片信息失败的bug,例如实际为jpeg格式,但是后缀为gif的图片文件
  • ehance 默认的图片存储器现在会将图片设置为正确的后缀,例如将gif图片改成jpeg后缀上传,存储器会将其后缀改为gif

5.8

  • ehance period标签不再决定页面的跳转,现在如果在指定区间内,period标签内的内容将会被执行,否则会被忽略
  • bug 修复了当RequestContextUtils.getInputFlashMap(request)存在名为error的key时,在错误渲染页面通过${error}获取到的不是ErrorInfo而是Message的bug
  • bug 修复了尝试编辑不存在的页面时,跳转链接错误的bug
  • ehance 新增了一个视频存储器(依赖于FFMPEG),该存储器支持获取视频的封面,并可以对封面进行动态缩放
  • ehance 重写了页面、模板片段撰写页面
  • bug 修复了分页查询文章时,如果包含不为空的query参数,为空的space.id参数时,系统异常的bug,并且当不包含query参数,但是space.id参数为空时,查询所有文章
  • ehance 文章管理页面增加了按空间查询
  • ehance 页面编辑页面增加了静态资源浏览
  • ehance 新增了一个文章撰写的markdown页面用来取代目前的页面,请见https://jbt.github.io/markdown-editor
  • ehance 增加了一个gravatar的头像缓存,用来解决gravatar头像访问缓慢的问题

5.7

  • ehance 新增了一个period标签,用来限制页面只能在指定时间段内|外访问
  • ehance 调整了系统路径以及自定义模板路径访问的顺序,系统页面、访问路径包含在系统页面路径中的用户自定义页面以及没有PathVariables的用户自定义页面,拥有第一访问优先级, 系统保留地址拥有第二访问优先级,用户定义的路径中含有PathVariables的页面拥有第三访问优先级。被预览的页面在同等情况下拥有第一优先级,但是在路径包含可变参数的情况下 会进行一次额外的比较,比如预览页面路径为 {1}/{2}/{3} ,存在一个访问路径为{1}/2/{3}的用户自定义页面,此时访问 1/2/3,虽然能被预览页面路径匹配到,但最终还是访问优先级 较高的{1}/2/{3}页面。自定义页面不再作为RequestMapping注册到系统中,只是持有一个路径与模板名的映射
  • ehance 调整了异常处理,现在部分异常的处理结果由redirect改为了forward,用于传递状态码
  • remove 移除了物理文件模板
  • ehance static目录现在由StaticResourceHttpRequestHandler来管理,提供了拷贝、删除、移动、重命名、zip压缩以及zip文件的解压缩等操作
  • bug 修复了文件能存储在非文件夹类型文件下的bug
  • bug 修复了文件查询标签没有填写path属性时抛出异常的bug(现在为查询根目录)
  • bug 修复了文件查询标签因为name属性重复而无法查询出文件的bug(现在属性名改为了fileName)

5.6

  • ehance 待审核评论页面添加了删除评论功能
  • ehance 查询最近评论时,受保护的文章的评论也会被查询出来,但是内容会被替换为******,主要用于和评论数目保持一致
  • ehance 创建页面时可以选择一些页面模板
  • bug 修复了没有登录时,默认空间页面评论统计始终为0的bug
  • bug 修复了项目名不为ROOT时,访问受锁保护资源会陷入死循环的bug
  • ehance 增加了一个TemplateRenderHandler,用来处理渲染后模板内容
  • ehance 现在本地的文件存储器可以通过设置registerMapping属性来决定是否注册为RequestMapping,如果为false,那么等价于<mvc:resources location="/resources/" mapping="/resources/**"/>,默认为false
  • ehance 管理台的页面现在同样通过TemplateRender来渲染,TemplateExposeHelper被整合到了TemplateRender中
  • ehance 将文档放在了项目中,通过http://domain/doc/index.html即可访问文档,例如: https://www.qyh.me/doc/index.html
  • ehance 新增了一个基于模板名的拦截器,详见 TemplateInterceptor
  • bug 修复了自定义页面的访问不受RequestMappingHandlerMapping部分配置(useSuffixPatternMatch)影响的bug
  • ehance 在管理台页面,未审核评论菜单后面将显示未审核评论数目(如果存在未审核评论)

5.5

  • ehance 增加了mediaType标签,可以用来指定ContentType,例如<mediaType value="application/json"/>将会将页面的内容以json形式输出
  • ehance 管理台增加了未审核评论页面,用于审核评论
  • ehance 同一张图片某个尺寸的缩略图同一时间只能缩放一次
  • ehance 通过ArticleInderer的useRAMDirectory可以设置是否采用RAMDirectory
  • ehance 文件归档可以指定年、年月和年月日模式
  • ehance 文件可以被重命名了
  • bug 修复了移动文件时,图片存储器缩略图文件没有被删除的bug
  • bug 修复了根据标签查询文章时,查询出来的文章只有一个标签的bug
  • ehance 现在AttemptLogger通过AttemptLoggerManager来创建,如果多个AttemptLogger拥有相同的刷新周期,将只会用一个定时任务来清空AttemptLogger
  • ehance 查询最近评论时将不会查询受保护文章(包括空间)下的评论
  • remove 移除了TimeDiffParser,因为它只是跟服务器时间对比而不是跟客户端时间对比,用base.js的renderTimeDiff(jqueryContainer)方法来替代
  • bug 修复了访问独立空间下文章归档中的文章链接时400异常的bug

5.4

  • enhance 去掉了文章日期归档和文章空间归档(以前的归档与其说是归档,不如说是统计),文章归档现在通过单独的页面来访问,文章空间归档现在被移动到了文章统计中
  • bug 修复了上传GM无法处理的gif时提示图片已经损坏的bug(这张GIF图片仍然可以被java所处理)
  • enhance Date字段在json输出时将被转为时间戳格式
  • bug 修复了查询文章日期归档时,如果输出参数无法被转化为 ArticleDateArchiveMode 则系统异常的bug
  • remove 去掉了 查询相似文章的功能
  • bug 修复了删除物理文件模板时,如果是默认空间主页模板,返回400的bug
  • bug 修复了在请求编辑物理文件模板时,如果路径包含{}等字符时,返回400的bug
  • remove 去掉了 MysqlCloseableContextLoaderListener
  • enhance AttemptLogger内置了一个定时任务用于清除尝试次数,不再需要额外的定时任务
  • remove CacheableHitsStrategy 去掉了 maxArticles属性
  • enhance 在默认空间下,文章查询时支持指定spaces属性,用来查询指定空间下的文章(根据别名查询)
  • enhance 验证码不再通过Webs.matchValidateCode来校验,而是通过CaptchaValidator来校验,以支持更多形式的验证码校验
  • bug 在没有代理服务器的情况下,通过Webs.getIP将不可靠,客户端可以通过修改X-Forwarded-For来‘修改IP’, 现在AppInterceptor增加了一个IPGetter属性,在没有代理的情况下通过默认的IPGetter来获取ip,在存在代理的情况下通过ProxyIPGetter来获取, 这需要在blog-servlet.xml中手动配置
  • enhance 现在在模板中获取的response对象是只读的,同时无法获取output stream和writer

5.3

  • enhance ImageResourceStore去掉了线程池的配置,现在通过 Semaphore 来控制并发
  • enhance 现在ThymeleafEvaluationContext 默认不会被加入到解析model中去
  • bug 修复了非管理员用户访问所有空间数据标签时返回系统异常的bug
  • enhance 发送邮件时如果发生异常时将会将异常记录在文本日志中
  • enhance 优化了CacheHitsStrategy的效率, 更新点击量将采用批量操作
  • bug 修复了CacheableHitsStrategy 没有监听容器关闭事件和文章事件的bug
  • enhance 文章增加了特征图像属性,用于某些模板的显示
  • enhance 模板增加了一个private标签,用于私人访问
  • remove 去掉了ExtraService,因为难以管理,并且可以用localStorage来替代
  • remove 移除了对MetaweblogApi的支持
  • bug 修复了默认登录页面判断是否需要输入验证码请求返回404的bug
  • enhance 增加了一个基于Google Authenticator的二次验证登录
  • remove 去掉了自动登录
  • bug 修复了访问callable的fragment时,如果fragment中存在非callable的dataTag,将无法获取该dataTag中数据的bug
  • enhance 删除物理文件模板时需要先确认

5.2

  • enhance 现在ThumbnailUrl新增了两个方法,可以根据指定的图片尺寸生成对应的缩略图链接
  • bug 修复了查询评论是否需要输入验证码会导致系统异常的bug
  • bug 修复了输出评论时如果编辑器为html则不会过滤直接输出的bug,修复了查看评论会话如果没有父评论时不会清理评论内容的bug,同时修复了DefaultHtmlClean存在的xss漏洞
  • bug 修复了默认HtmlClean nofollow属性不起作用的bug
  • bug 修复了评论没有保存原始内容的bug
  • enhance 支持物理文件模板的在线编辑
  • enhance 评论标签支持pageSize,用来指定每页显示数目(实际分页数目取该值配置的分页数目的最小值)
  • enhance 完善了文件的查询,现在可以通过文件名进行模糊查询
  • bug 修复了页面无法被TemplateCacheManager缓存的bug
  • enhance 移除了FragmentFactoryBean,现在直接通过fragments来配置,同时不会在系统启动时将配置的fragments插入数据库,而是作为内置的模板片段
  • bug 修复了删除空间时,如果空间下存在页面会导致死锁的bug
  • enhance dataTag的动态参数将不再被escape