Changelog
- 9e4c4bd Add root library package with Config, Run and ProcessFile
- 61510ff Fix go install/get commands to use correct cmd/mark path
- 9a26f65 Fix goreleaser config to point builds to ./cmd/mark
- e68a9f6 Refactor CLI to be a thin adapter over the library
- 8205794 Update Makefile
- 98c9c94 build(deps): bump github.com/yuin/goldmark from 1.7.16 to 1.7.17
- 2b62ffd confluence: fix NewAPI double-slash and DeletePageLabel missing status check
- b7c9229 fix: RestrictPageUpdatesCloud now resolves allowedUser by name
- ed6ae15 fix: add HTTP status checks to GetUserByName; remove redundant FindHomePage check
- aa16e7a fix: check error return from fmt.Fprintln
- 9e7f2cf fix: check os.ReadFile error before using file contents
- 0d7caab fix: close response body on all paths in newErrorStatusNotOK
- 9184e91 fix: defer body.Close() before ReadAll to ensure it runs on read error
- 594c1e4 fix: guard FirstChild() nil in paragraph renderer
- 66120b9 fix: handle nil meta in dry-run mode when PageID is set
- d714bc9 fix: move scanner.Err() check after loop and fix matches bounds check
- 7d4d045 fix: narrow vfs.Opener interface from ReadWriteCloser to ReadCloser
- 2a505a2 fix: parseLinks regex misses links at position 0 of string
- fef39dc fix: preserve include directive in output on error in ProcessIncludes
- cf0699c fix: remove dead level-map infrastructure in mkDocsAdmonitionRenderer
- 5e1d40d fix: remove no-op log.GetLevel() call in SetLogLevel
- 3e71d65 fix: remove unused newLabels parameter from UpdatePage
- 14219ae fix: return error from Run() when ContinueOnError files fail
- a481424 fix: return error instead of panic from CompileMarkdown
- 32577c9 fix: return error instead of panic in ResolveAttachments; fix wrong slice index in log
- 4c81c81 fix: return original match on error in macro Apply()
- 4e3b90c fix: route result output through Config.Output, not os.Stdout
- 06c3afe fix: skip label sync when metadata is absent
- 0d73520 fix: trim whitespace from ParseTitle result
- a4ef890 fix: trim whitespace from stdin password
- 5b87945 fix: use ancestry slice for warning log, not meta.Parents
- d68f8c3 fix: use api.BaseURL instead of config.BaseURL for page URL output
- d6b37af fix: use index-based loop in ResolveLocalAttachments to persist checksums
- 566fd74 fix: validate emoji rune from utf8.DecodeRuneInString
- 17436ef renderer: HTML-escape admonition title and guard against empty attachments
- 807d057 stdlib: remove duplicate err check in New() and add XML escaping to user-controlled template values
- 1fc553f style: fix indentation in Test_setLogLevel