Artalk Versions Save

🌌 自托管评论系统 | Your self-hosted comment system

nightly

1 week ago

nightly (2024-04-18)

Features

  • ci/build: add nightly build workflow
  • conf/http: add http.proxy_header config option
  • go: upgrade golang to v1.22.1 and some deps

Bug Fixes

  • cmd/gen: ensure directory before saving in gen cmd (#612)
  • db/migrator: remove foreign key constraints and better root_id generation (#835)
  • log: improve log system and fix memory leaks (#843)
  • ui/comment: missing reply comment data when inserting (#838)
  • ui/comment: incorrect reply comment data in nested mode (#771) (#837)
  • ui/lifecycle: keep root element during destroy (#810)
  • ui/sidebar: user list not refresh when data is modified
  • ui/upload: unable to upload image when file extension is uppercase
  • upload: add config option to solve request entity too large issue (#834)

Performance Improvements

  • conf/upgit: disallow custom executable path of upgit for security (#817)
  • db: optimize N+1 query in comment list (#799)
  • i18n: add translation for 'parameter is required'
  • ui/pkg: add shorter export names (#821)
  • ui/version_check: beautify version upgrade notice

Code Refactoring

  • comments_get: reduce api complexity by introducing LiteDB (#800)
  • ui/prettier: add prettier code formatter

Documentation

  • extras: add deploy guide for Valaxy (#836)
  • i18n: add French translation (#797)

BREAKING CHANGE

For UpGit users: Due to security reasons, Artalk no longer allows configuring the executable file path (img_upload.upgit.exec) for upgit. Please add it to system environment variables instead.

[!NOTE] The Nightly version, automatically built based on the latest code, is not yet released and may be unstable. Please use it with caution. Docker user can run docker pull artalk/artalk-go:nightly to get the nightly build.

v2.8.3

1 month ago

v2.8.3 (2024-03-04)

Features

  • api/auth: invalidate old auth tokens after changing password
  • api/domain: add GET /conf/domain endpoint
  • app: add onConfUpdated hook
  • comment: add is_verified field for comment entity
  • ui/api: add ctx.getApiHandlers() to handle error responses and expose hooks
  • ui/editor: add beforeSubmit hook for editor submitting
  • ui/plugins: support dynamic loading of ui plug-in scripts (#774)

Bug Fixes

  • captcha/image: unable to display image captcha on initial load
  • conf: skip patching IP region conf if disabled
  • exception: missing message field after refactoring exception data structure
  • sidebar/login: cannot select a name with the same email upon login (#781)
  • ui/layer: ensure immediate operation when calling show() after hide()

Performance Improvements

  • ui/editor: improve the icon details for editor

Code Refactoring

  • dao: validate the args of the FindCreateUser function
  • entity/user: extract CheckPassword function
  • origin: extract CheckURLTrusted function

v2.8.2

2 months ago

v2.8.2 (2024-02-05)

Bug Fixes

  • api/comments: ua field is optional and not required (#767)
  • style: replace style break-all with break-word in content el (#644)

Performance Improvements

  • ui/editor: optimize editor styles for narrow-width screens
  • ui/editor: modify editor plug-in text buttons to icons for brevity
  • ui/editor: place Cancel Reply at the bottom of editor area (#644)
  • ui/lite: disable ArtalkLite preview config option by default

v2.8.1

2 months ago

v2.8.1 (2024-02-04)

Features

  • api: add GET /comments/:id endpoint (#764)
  • config: add db.prepare_stmt config option (#760) (#762)
  • ui/goto: improved solution of navigating to comment via link hash (#693) (#765)

Bug Fixes

  • api/comments: counting comments issue in PostgreSQL db (#760) (#761)
  • cmd/admin: update user role to admin if already exists
  • ip_region: unable to output the IP region correctly (#760)
  • ui/list: unable to reply or delete comments after switching pagination
  • ui/no_comment: always appears when creating comment
  • ui/pv: missing pageTitle field in the PV request
  • ui/scroll: scroll into view issue when relativeTo parameter is provided

Performance Improvements

  • style/sidebar: improve some detail in sidebar

Code Refactoring

  • ui/comment: loose coupling between Comment and Context
  • ui/list: refactor the list layout manager

Documentation

  • supplement and refine fe-api.md

v2.8.0

2 months ago

v2.8.0 (2024-01-31)

Features

  • go: upgrade golang to v1.21.5 and some deps
  • notify: add notify_pending config option (#728) (#754)
  • ui/admin: add logout button in admin panel (#488) (#753)

Bug Fixes

  • cache: unable to change admin list after caching (#748) (#750)
  • i18n: sidebar language cannot be changed
  • ui/editor: prevent propagation of click event in editor (#734)
  • ui/layer: unexpected behavior with multiple items when closing
  • ui/lite: correct the instance name for compiling ArtalkLite (#740)
  • ui/no_comment: flickering when clearing list before fetch
  • ui/pagination: auto load list when scroll reaches bottom
  • ui/sidebar: incorrectly increasing pv count in sidebar (#724)
  • ui/sidebar_layer: sidebar still displays when login is required

Performance Improvements

  • ui/conf: support for watching partial changes in config with watchConf() (#755)
  • ui/i18n: refine some translation (#743)
  • ui/pagination: replace the prev/next text on pagination buttons with icons (#743)
  • ui/sidebar: prevent potential token leakage by clearing query in iframe url

Code Refactoring

  • api: update swagger file of API v2
  • api: refactor HTTP API to version 2 (#735)
  • transfer: normalize transfer payload parameter name
  • ui: optimize init and update lifecycle events
  • ui/comment: rename class Comment to CommentNode
  • ui/ctx: add getComments and getCommentNodes in context (#752)

Documentation

  • update multi-sites manual (#747)

BREAKING CHANGE

For Developers: The HTTP API has now been updated to version v2, with a lot of adjustments made, such as changing to Restful API style, request type, request body, response body, etc. data structure, adding error response codes. You can refer to #735 or https://artalk.js.org/http-api Please update all your existing clients to adapt to the new v2 server. The new base path is /api/v2/. The UI package's HTTP client has been implemented to auto-generate based on Swagger.json, and there have been a lot of adjustments to the artalk.ctx.getApi() related code. In addition, the HTTP API no longer enforces checks on the header's Origin and Referer (to implement strict isolation of different sites) but still maintains the original CORS origin check.

For General Users: Now all administrators have the same level of authority (there is no longer super admin authority), the function of assigning sub-administrators with independent scope authority to individual sites has been removed, which can simplify the HTTP server maintenance and implementation. Upgrading only requires updating the client and server application at the same time, and there are no additional operations.

v2.7.3

4 months ago

v2.7.3 (2023-12-28)

Features

  • ci: add dry-run mode for build workflow
  • cmd: support cli flag for creating admin account

Bug Fixes

  • ui/init: stack overflow when merging with config defaults (#717)

Performance Improvements

  • ui/build: better dts generation (#689)

Code Refactoring

  • ci: better release workflow
  • docker: add --build-arg argument to skip ui build
  • test/ui: add more ui api tests
  • ui: refactor directory structure (#712)
  • ui/conf: better handling of mutable config (#722)
  • ui/test: add vitest for unit testing

Documentation

  • update ui api documentation

BREAKING CHANGE

Directly referencing artalk.conf and artalk.$root is deprecated. Please use functions instead: artalk.getConf() and artalk.getEl().

v2.7.2

4 months ago

v2.7.2 (2023-12-20)

Features

  • patch locale config from zh-cn to zh-CN (#678)

Bug Fixes

  • sidebar: sidebar language switch and config save issue (#708)
  • ui: add referrerpolicy attribute for iframe (#687) (#707)
  • ui/dark-mode: potential memory leak issue in auto mode (#688)
  • ui/pagination: auto switch page by url hashtag issue (#693)
  • ui/sidebar: refactor settings and fix save issue (#677) (#706)

Code Refactoring

  • ui: move window references into function scope (#675)
  • ui/api: losing coupling between Api and User
  • ui/user: user class no longer globally singleton

Documentation

  • i18n: add translation for open button
  • refactor: organize the pkgs and fix some issues (#702)

v2.7.1

4 months ago

v2.7.1 (2023-12-17)

Bug Fixes

  • build: generate source maps to ease debugging
  • cout-widget: loadCountWidget issue
  • ui: static method export issue in JS module (#669)

Documentation

  • i18n: add translation of update notice

v2.7.0

4 months ago

v2.7.0 (2023-12-17)

Features

  • ui: support scrollRelativeTo config option
  • ui/test: add end-to-end (e2e) testing using Playwright

Bug Fixes

  • api/img-upload: public_path config enables the use of full url (#659) (#664)
  • lifecycle: create multi-instances at the same time (#660) (#663)
  • notify_pusher: panic when admin ids array is empty (#634)
  • style/list: replace float to text-align in footer part (#619)
  • ui: scroll to the center of the viewport issue
  • ui/conf: sanitize noComment conf option for security (#624)
  • ui/dark-mode: setDarkMode cannot save to instance config (#661)
  • ui/editor: fix position of the comment box when replying (#643) (#648)

Performance Improvements

  • cache: implement GC feature for simple_cache pkg (#656)

Code Refactoring

  • editor: refactor editor plugin manager (#609)
  • editor: refactor plug kit and events (#613)
  • ui: reduce coupling with ContextApi
  • ui: separate standalone admin-only-elem checker
  • ui/api: loose coupling between Api and Context
  • ui/conf: loose coupling between config and list fetch
  • ui/event: refactor core event manager (#611)
  • ui/layer: better layer implements and independence (#662)
  • ui/list: separate list into standalone components (#618)
  • ui/marked: separate markdown related codes
  • ui/marked: loose coupling with marked func
  • ui/plugin: further divide functionality into plugins (#615)
  • ui/stat: losing coupling of CountWidget
  • ui/types: better ArtalkType import and export (#620)

Documentation

  • revise and add more examples
  • provide clearer and more detailed instructions in CONTRIBUTING.md
  • conf: disable frontend.uaBadge config option by default
  • deploy: add deployment guide for render.com (#649)
  • import: update the examples in import-framework.md (#665)

BREAKING CHANGE

The following top-level functions exported by the 'artalk' npm package have been deprecated: Artalk.update, Artalk.reload, and Artalk.destroy. These methods now require invocation on an instance created by either Artalk.init or new Artalk. Please utilize instance-level methods instead, such as artalkInstance.update. For more information, refer to the documentation. The update was implemented to enable the concurrent creation of multiple instances, adapting to situations where Vue components are simultaneously referenced across various pages. Initially, only a singular instance was permitted to mitigate memory leak concerns. However, this proved limiting for scenarios involving the caching of multiple component instances through 'keep-alive.' To better suit intricate SPA application needs, the choice was made to permit the creation of multiple independent instances. It's crucial to remember to manually invoke the artalk.destroy method when releasing components to avoid memory leaks (Issue #660).

v2.6.4

6 months ago

v2.6.4 (2023-10-12)

Features

  • go: upgrade golang to v1.21.3 and some deps

Bug Fixes

  • editor: fix duplicate event binding when update conf (#605)
  • email: sender not initialized correctly
  • style: fix copyright text overlay on send button (#607)

Code Refactoring

  • anti_spam: refactor anti_spam pkg and add unit test (#589)