Since a break is also on the schedule for this week, apart from continuing the refactoring work, I only added 2 simply functionalities.

Enable Quail to Render TradingView

The decision to support TradingView sprouted from my observation that some writers are using Quail are delving into financial-related content.

The implementation followed my original plan: extend the capabilities of the goldmark-embed plugin.

The usage remains as intuitive as inserting an image, adhering to the ![](...) syntax:


The link comes from the browser address bar of TradingView, just copy and paste it here. If you want to customize it, two parameters are supported:

  • symbol: the trading symbol displayed on the chart, for example BITFINEX:BTCUSD is the price of BTC against USD on the BITFINEX.
  • theme: theme color, the default is light color, set to theme=dark is dark color.

And the result appears as follows:

If there’s any content you’d love to embed in your articles, feel free to extend the goldmark-embed plugin, and enable Quail to support it.

Authors Can Now Export Subscribers

An image to describe post Quail Weekly #17: TradingView Embeded Object & Exports

You’ll find this feature under "List Settings - Data Settings."

The rationale behind its placement here is straightforward. In the future, most of Quail's data, including settings, posts, comments, and so forth, will be exportable, converging at this very spot.

With export functionality comes import functionality.

However, after giving it some thought, I realized that importing and exporting are vastly different:

  1. If Quail operates as a service (i.e., the website), importing should be restricted (due to anti-spam reasons).
  2. If Quail serves as an open-source tool, importing shouldn’t face any constraints.

Bearing this in mind, the import function should be split into:

  1. For, I should offer a "migration" service instead of importing, assisting authors in transferring their data from other services to
  • For those looking to self-host Quail in the future, I can provide a tool to handle imports during startup.

Aside from that, the focus has been on refactoring.

According to the original plan, I should have been halfway through the code refactoring and started rolling out updates by now.

However, this month has been cluttered with overwhelming tasks, throwing many plans into disarray, and so I have to postpone it for another two months.