I finally got a significant Marked update out. ==highlight== rendering, and a BYO JavaScript setup I think (some) users will like.
First, I don’t know why it’s become so popular, but I’ve received a lot of requests for ==highlight== rendering. So I’ve added it as an option. I also added ~~deletion~~ rendering, and ~underline~ as an additional option. I had to make ~underline~ function separately as it conflicts with MultiMarkdown’s subscript syntax. But you can find all of these options under Settings->Processor. There’s even an option to convert ==highlights== and ~~deletions~~ to CriticMarkup, which allows for a nicer display in Marked.
Next, I’ve had requests for Mermaid diagramming for a long time. I’ve had fewer requests for including arbitrary JavaScript in the preview, but I figured if I was going to start adding JS libraries, I might as well make it as flexible as possible.
If you look under Settings->Style, you’ll find an Additional Scripts button. This will open a panel where you can control what JS is loaded in every preview (docs). Mermaid has its own checkbox, and if I add additional library support, checkboxes will be added here. Below that is a 3-pane field where you can add JavaScript from local files, CDN urls, or embed raw text.
Note that when adding libraries, you’re responsible for making them update. The Marked.hooks API allows you to hook a render function into the update call, so every time the preview updates (which is not a full refresh), you can trigger whatever rendering needs to happen. See the docs for details on that.
There are a few other fixes. I published a second update this morning (v2.6.46) that improves multi-line ==highlight== rendering, and finally allows you to customize the reading speed for Reading Time calculations. That’s available right now for direct (Paddle) customers and in review for Setapp and MAS customers.
If you’ve never checked Marked out, head over to
marked2app.com to learn more!
I’ve always been intrigued by CriticMarkup, but never found occasion to try it. If I understand what you wrote about ==highlight== and ~~deletion~~, this style is a variant markdown method, and Marked will now convert the deleted text to official CriticMarkup --deletion-- instead of ~~deletion~~. Is that correct? What is the “nicer display” advantage that you mention?
The CriticMariup formats are {==highlight==} and {--deletion--}. If CriticMarkup is enabled in Marked, and these formats (or any Critic syntax are detected, Marked will switch to a 3-pane display showing Original, Markup, and Edited, allowing you to see the changes highlighted, and to see the document with the changes applied.
MathJax support is always JS-based. It’s a browser-side renderer. Same with Katex. Marked is 50% JS based, all the preview functionality is written in JS, with things like spell checking being a combination of JS and Cocoa.
All this new feature does is allow the user to add their own JS in addition to Marked’s. Like if you wanted to add a slideshow rendering, or your own version of a math renderer, etc.
You probably don’t want to hear this, but I’d rather switch to a subscription model that would allow for just constant updates rather than trying to do a big major version release.
Subscription models are fine if done the right way: Take Agenda, for example. You subscribe to a year of updated features. At the end of the term, you still own the app with all the features of its last upgrade — it doesn’t become crippleware. If you want to continue to receive updates for another year, you renew the subscription. The cost of subscription may be higher, but you own it and get to keep it.
The subscriptions that are not worth it in my book are those by which you rent access to an app: after the subscription ends, the app is reduced to crippleware. The cost of this type of subscription may be lower, but it still feels wrong.
The way Agenda does it is a good middle ground between the old model of paid major upgrades and the new world of subscriptions.
If you have a good vision for the Marked 3 feature roadmap, I bet you’d find good support in the Agenda-style of subscriptions.
These are the kinds of subscriptions I will support. The extortion model, (it would be awful if something happened to your workflow … so pay up) is pretty much a non-starter for me.
Yep, this is what we’d like to do with nvultra as well. It’s difficult to do through the App Store, though, I think. You either subscribe, or you pay for a lifetime unlock. And the problem with the unlock is that if the developer ever do wants to do a major version update that they feel should be paid, you have to release it as a whole new app.
I prefer the model that Curio uses where you get updates as long as you subscribe. You own the app, you’re just paying for their (frequent) updates. Which I think is what you’re saying. I need to dig back into understanding how MAS subscriptions work in that regard, as 50% of Marked’s income comes from there, and it’s where nvultra will initially be released. I’ve historically felt that an app like marked didn’t make sense as a subscription, so I’ve never implemented it before.
Reading back through, my statement about curio is obviously exactly what we’re saying about Agenda. Just have to explore how they’re doing it, because agenda is on MAS…
Yes, this is how Agenda does it. Agenda is on the App Store and is cross-platform. Perhaps the developers could tell you how they got their subscription setup to work (in technical details).
Here is a view of Agenda (on iOS, since I’m typing this while I’m out and about… but it’s similar on macOS). The little notification at the top is delightful when it pops up. It’s like a present to unwrap.
I would only recommend pursuing the subscription path if you have a feature roadmap that you can reasonably foresee guiding the next couple of years of development. Customers would appreciate a new feature every 3-6 months. If this would be rough to do, maybe avoid it, or angry/disappointed customers will slam the reviews. Unfortunately true.
First, I would gladly deliver new features on a regular basis if Marked was making a little more money. I love working on it, it’s just dwindled in sales over the years and the motivation to work on new projects is strong. I’d love to do a full revamp and fix up the RTF/DOCX capabilities.
Second, I want to make sure we’re talking about the same thing: I don’t want any features locked out, the only thing people pay for is updates. All features are unlocked right away, you just stop getting updates if you cancel your subscription. That’s what I need to figure out how to implement.
Yes, we’re talking about the same thing. The features list view in Agenda (in its Settings) will update regardless if you are a continuing subscriber or not. That way, a past subscriber who continues to use the app (with all the features still enabled from its last update during the last subscription period) can see the growing list of features available since the subscription expired and thus decide whether or not to renew. Nothing otherwise in the app changes (no interface changes, no buttons with little locks on them, no pestering messages to re-subscribe). It’s like viewing the latest changelog from the web site.
But for current subscribers, there appears the little notice that a new feature was added with the last auto-update. When this happens, it’s a pleasant little surprise, and I rush to check it out.
Yes this is ‘subscription’ model I would support for an app like Marked that does not incur any cost to you for my use of the app. It is like an old school magazine subscription where you you can keep the magazines you have received after your subscription has ended.
If the app does incur ongoing costs, like a weather app, then a pure subscription makes sense, where I only get new forecast data while I have an active subscription.