siyuan-note/siyuan · warning

Conf.Language(122) (localized subscription-required message

Error message

Conf.Language(122) (localized subscription-required message for iOS container)

What it means

SetCloudReminder requires an active SiYuan subscription to store reminders in the cloud. When the user is not a subscriber and the kernel runs inside the iOS container (util.Container == "ios"), it returns the iOS-specific localized message from Conf.Language(122). This is a paywall/entitlement guard, not a bug.

Source

Thrown at kernel/model/blockial.go:43

	"github.com/88250/gulu"
	"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
	}

View on GitHub (pinned to 8641553a1f)

Solutions

  1. Purchase or renew the SiYuan subscription (Membership in settings) and log in again
  2. Use local reminders instead of cloud sync features, or skip setCloudReminder for non-subscribers
  3. Surface the localized message (Conf.Language(122)) to the user and stop retrying until subscription is active
Defensive patterns

Strategy: try-catch

Validate before calling

const isSubscriber = (await fetchPost('/api/setting/...', {})); // check subscription state before calling
if (!isSubscriber) showMessage(window.siyuan.languages[122]);

Try / catch

try {
  await fetchPost('/api/block/setCloudReminder', {id, content, timed});
} catch (e) {
  if (String(e.msg || e) === window.siyuan.languages[122]) {
    showMessage('SiYuan Membership required for cloud reminders', 6000, 'info');
    return; // do not retry
  }
  throw e;
}

Prevention

When it happens

Trigger: Calling SetCloudReminder (API /api/block/setCloudReminder) on iOS without an active subscription — e.g. a client setting a reminder on a block in the iOS app while the account has no paid subscription or the subscription has expired.

Common situations: iOS app users with expired subscriptions relying on reminder sync; third-party clients hitting the cloud reminder API against an iOS-hosted workspace; trial accounts after expiry.

Related errors


AI-assisted analysis of siyuan-note/siyuan@8641553a1f (2026-09-11). Data as JSON: /api/errors/3dd2ca9049c55133. Report an issue: GitHub.