siyuan-note/siyuan · error

Conf.Language(29)

Error message

Conf.Language(29)

What it means

SetCloudReminder requires an active SiYuan paid subscription (IsSubscriber). For non-subscribers on all platforms except iOS, it returns a localized error using i18n language key 29, which tells the user that this feature requires a paid subscription. The check happens before any reminder data is parsed or stored.

Solutions

  1. Log in with a subscription-active SiYuan account
  2. Purchase or renew the SiYuan subscription for the current account
  3. Use local block reminders instead of cloud reminders if a subscription is not available
Defensive patterns

Strategy: try-catch

Try / catch

try {
  await setCloudReminder(id, content, timed);
} catch (e) {
  if (isSubscriptionError(e)) showSubscribeDialog(); // localized i18n key 29
}

Prevention

When it happens

Trigger: Calling SetCloudReminder while the current workspace is not logged into a subscription-bearing SiYuan account, on desktop, mobile (Android), or any container other than "ios".

Common situations: Desktop plugin/scripts setting cloud reminders for a free or logged-out account; test environments without subscription credentials.

Related errors


AI-assisted analysis of siyuan-note/siyuan@9f775e8a12 (2026-09-19). Data as JSON: /api/errors/1e2f97690e9888fc. Report an issue: GitHub.

Appendix: source

Thrown at kernel/model/blockial.go:45

	"github.com/88250/lute/ast"
	"github.com/88250/lute/editor"
	"github.com/88250/lute/html"
	"github.com/88250/lute/parse"
	"github.com/araddon/dateparse"
	"github.com/siyuan-note/siyuan/kernel/av"
	"github.com/siyuan-note/siyuan/kernel/cache"
	"github.com/siyuan-note/siyuan/kernel/filesys"
	"github.com/siyuan-note/siyuan/kernel/sql"
	"github.com/siyuan-note/siyuan/kernel/treenode"
	"github.com/siyuan-note/siyuan/kernel/util"
)

func SetCloudReminder(id, content, timed string) (err error) {
	if !IsSubscriber() {
		if "ios" == util.Container {
			return errors.New(Conf.Language(122))
		}
		return errors.New(Conf.Language(29))
	}

	var timedMills int64
	if "0" != timed {
		t, e := dateparse.ParseIn(timed, time.Now().Location())
		if nil != e {
			return e
		}
		timedMills = t.UnixMilli()
	}

	content = strings.TrimSpace(content)
	err = SetCloudBlockReminder(id, content, timedMills)
	if err != nil {
		return
	}

	if "0" == timed {

View on GitHub (pinned to 9f775e8a12)