Hi @bowentan, there was just recently a showcase post about it here Part independent section. I personally use:
#let chapter(body) = heading(level: 1, body)
#set heading(
offset: 1,
numbering: (chap, ..nums) => {
if nums.pos().len() == 0 {
numbering("I", chap)
} else {
numbering("1.1", ..nums)
}
})
#outline()
#chapter[Chapter One]
= Section One
== Subsection
#chapter[Chapter Two]
= Section One
== Subsection
= Section Two
Typst does currently not include the numbering in the PDF bookmarks, see #2416.