ข้ามไปยังเนื้อหา
Dee Wan 1.0 ยังอยู่ระหว่างพัฒนาและยังไม่เปิดตัว (pre-MVP) — ดู ขอบเขตผลิตภัณฑ์ 1.0

ขอบเขตผลิตภัณฑ์ Dee Wan 1.0

สถานะ: Pre-release Dee Wan ยังไม่ได้ release อัปเดตล่าสุด: 2026-10-19

หน้านี้แสดงรายการสิ่งที่ Dee Wan ทำได้ในวันนี้ และแต่ละส่วนได้รับการพิสูจน์ไปแล้วมากแค่ไหน สัญญา 1.0 เดิมครอบคลุมด้วยเทสต์อัตโนมัติในเครื่อง ส่วนซอร์สที่เพิ่มเดือนตุลาคมด้านล่างผ่านการตรวจเฉพาะส่วนแล้ว แต่ยังรอการทดสอบร่วมกับเบราว์เซอร์และการตรวจหน้าจอที่ใช้งานจริง ยังไม่มีการรัน acceptance ที่ครบถ้วนบนบัญชี Cloudflare จริง

Dee Wan คือ headless CMS สำหรับกำหนดและดำเนินงานเนื้อหาแบบมีโครงสร้าง มันยังสามารถสร้าง แบ็กเอนด์อิสระ ที่คุณเป็นเจ้าของได้: Prisma schema ที่ normalize แล้ว, migration ที่ตรวจทานได้, route ที่สร้างขึ้น พร้อม semantics ของ model และ query แบบ Prisma ที่คุ้นเคย และเนื้อหาที่เผยแพร่แล้ว ใน repository, ฐานข้อมูล และ runtime ของคุณเอง แบ็กเอนด์ที่สร้างขึ้นอ่านตารางปกติ และไม่ขึ้นกับ Dee Wan ขณะ รัน

Cloudflare คือแพลตฟอร์มปัจจุบัน แหล่งนำเข้าคือ archive ของ Strapi ไฟล์ส่งออกของ WordPress และการดึงข้อมูล WordPress REST แบบมีขอบเขต การนำเข้า (import) ช่วยให้คุณย้ายเข้าและออก แต่ไม่ใช่เป้าหมายหลักของผลิตภัณฑ์

แต่ละความสามารถอยู่ในรายการเดียวเท่านั้น: สัญญา 1.0, pilot ภายใต้การกำกับดูแล, การพัฒนาและการตรวจรับก่อน 1.0 หรือนอกขอบเขต “ก่อน 1.0” หมายถึงงานที่ต้องเสร็จก่อนเปิดตัว 1.0

  • content model และฟิลด์ที่กำหนดผ่าน UI: text, rich text, number, boolean, select, date, media, JSON, relation, component และ point
  • การตรวจ breaking change ก่อนนำการเปลี่ยน model ไปใช้
  • เนื้อหาหลายภาษาพร้อมภาษาที่กำหนดค่าได้ และนโยบาย locale แบบ strict หรือ fallback
  • snapshot ที่เผยแพร่แล้วซึ่งแก้ไขไม่ได้, ประวัติเวอร์ชัน, การกู้คืน, publish และ unpublish การกู้คืนครอบคลุมภาษาเดียวได้: เปลี่ยนเฉพาะค่าที่แปลได้ของภาษานั้น รายการ relation ของภาษานั้นเอง ที่อยู่ draft และ SEO override ส่วนฟิลด์ที่ใช้ร่วมกัน relation ที่ใช้ร่วมกัน และสื่อคงเดิม ต้องมีสิทธิ์ restore สำหรับภาษานั้น
  • การเผยแพร่โดยตรง หรือ approval workflow
  • โหมด review ที่เลือกเปิดได้ ปิดไว้โดยค่าเริ่มต้น ตั้งค่าแยกต่อไซต์ที่ การตั้งค่า → ขั้นตอนงาน
    • ปิดไม่ได้ขณะที่มีเนื้อหารอ review อยู่ การปฏิเสธจะระบุชื่อรายการเหล่านั้น
    • เมื่อเปิด review dashboard คือคิว review: สิ่งที่กำลังรอ สิ่งที่คุณทำได้ต่อไป แถวที่คุณขยับไม่ได้ กำลังรออะไรอยู่ และสิ่งที่ถูกส่งกลับ
    • เมื่อปิด review dashboard แสดงการเปลี่ยนแปลงล่าสุด
    • การสลับโหมดไม่เขียนนิยาม workflow ใดใหม่ ดังนั้น workflow ที่ปรับแต่งไว้จะกลับมา โดยไม่เปลี่ยนแปลง
  • การถือสิทธิ์แก้ไขและการกู้คืนงานที่ยังไม่บันทึก สำหรับการแก้ไขเนื้อหาทั่วไปและ page composer
    • รายการหนึ่งในภาษาหนึ่งมีผู้ถือสิทธิ์แก้ไขได้ครั้งละคน คนอื่นอ่านตามได้และรับช่วงต่อได้ในการกระทำเดียว หลังจากนั้นการบันทึกของผู้ถือคนก่อนจะถูกปฏิเสธ และสิ่งที่พิมพ์ไว้แต่ยังไม่บันทึกจะถูกเก็บเป็น draft กู้คืนของผู้ถือคนนั้นเอง
    • การแก้ไขที่ยังไม่บันทึกของรายการที่มีอยู่แล้วบันทึกอัตโนมัติเป็น draft ร่วมหนึ่งชุดต่อรายการและภาษา พร้อมเวอร์ชันบนเซิร์ฟเวอร์ที่มันเริ่มต้นมา การ reload การเปิดบนอุปกรณ์อื่น หรือการเปิดโดยบุคคลอื่น ที่อ่านรายการนั้นได้ จะแสดง draft นี้ draft ที่ทำบนเวอร์ชันเก่ากว่าจะถูกเปรียบเทียบก่อนนำมาใช้ ดังนั้นจะไม่เขียนทับสิ่งที่คนอื่นบันทึกไว้
    • การแก้ไขที่ยังไม่บันทึกของรายการใหม่ถูกเก็บเป็น draft ส่วนตัวของบุคคลนั้นและระบบจะเสนอให้กู้คืน
    • งานที่ยังไม่บันทึกยังอยู่แม้แท็บขัดข้อง โหลดหน้าใหม่ เบราว์เซอร์พักแท็บ หรือปิดเบราว์เซอร์ คำเตือนเมื่อ ออกจากหน้าครอบคลุมการนำทางออกโดยตั้งใจ
    • เบราว์เซอร์เก็บสำเนาไว้จนกว่าเซิร์ฟเวอร์จะได้รับ ดังนั้นการเขียนขณะ offline หรือการเขียนที่ล้มเหลว จะไม่ทำให้อะไรหายไป
    • เมื่ออุปกรณ์อื่นแทนที่ draft ไปแล้ว editor จะถามว่าจะเก็บอันไหนไว้
    • draft ถูกเก็บไว้ 30 วันหลังการเปลี่ยนแปลงครั้งล่าสุด
    • page composer แชร์ชุดการเปลี่ยนแปลงของตนในแบบเดียวกัน ต่อหน้าและภาษา ข้อเสนอจาก AI ที่ยังไม่ได้ นำไปใช้ยังเป็นของบุคคลนั้นเอง
  • Component ที่ไซต์เป็นเจ้าของหรือใช้ร่วมกัน
    • ไซต์เป็นเจ้าของ component ได้ shared library ทุกไซต์อ่านได้ และมีเพียง superadmin ที่แก้ไขได้ สองไซต์อาจต่างก็เป็นเจ้าของ component ที่มี slug เดียวกันได้
    • ไซต์ fork component ที่ใช้ร่วมกันได้ fork จะ override ตัวที่ใช้ร่วมกันสำหรับทั้งไซต์: ทุก ฟิลด์ที่ระบุ slug นั้นจะใช้ fork นับจากนั้น UI จะบอกว่ามีการอ้างอิงกี่รายการที่จะย้าย ก่อนที่คุณยืนยัน
    • การสร้าง component ของไซต์ด้วย slug ของ component ที่ใช้ร่วมกันจะถูกปฏิเสธจนกว่าคุณจะยืนยัน การ override แม้ยืนยันแล้ว ก็ยังเปิดเผยค่าภายใต้คีย์ที่ฟิลด์ที่ใช้ร่วมกันเคยเก็บไว้เป็นส่วนตัวในเวอร์ชันที่ยังเก็บอยู่ไม่ได้ (retained_key_reuse)
    • การแก้ช่องเก็บโครงสร้างเดิมให้อัตโนมัติ อินสแตนซ์เดิมเก็บค่าไว้จนกว่าจะกด อัปเดตคอมโพเนนต์ ประเภทที่เลิกใช้เพิ่มหรือทำสำเนาไม่ได้ แต่รายการเดิมยังแก้ไขได้
    • เมื่อติดตั้งแบบแยกฐานข้อมูลต่อไซต์ การเปลี่ยนรายการช่องหรือสถานะเลิกใช้ของคอมโพเนนต์ร่วมถูกปฏิเสธ (split_topology_migration_unsupported) ยังเปลี่ยนชื่อได้ ให้ทำสำเนาสำหรับไซต์ก่อนแก้ช่อง ดู ช่องส่วนตัว
    • slug ของ component เปลี่ยนไม่ได้หลังสร้าง เพราะฟิลด์และ component อื่นอ้างถึงมัน ด้วย slug ส่วนชื่อเปลี่ยนได้
    • คำเตือนเรื่อง fork และ delete guard นับการอ้างอิงจากฟิลด์ของ model และจาก component อื่น
    • component และ dynamic zone ของ Strapi นำเข้าเป็น component ที่ไซต์เป็นเจ้าของ ดู การนำเข้าและการย้ายข้อมูล
  • model แบบรายการเดียว สำหรับเนื้อหาที่มีชิ้นเดียว เช่น หน้าแรกหรือการตั้งค่าไซต์ รายการที่สองจะถูกปฏิเสธ (single_entry_exists) ไม่ว่าจะสร้างผ่านเส้นทางใด รายการที่อยู่ในถังขยะยังคงจองที่ไว้ single type ของ Strapi นำเข้าเป็น model แบบนี้ ดู model แบบรายการเดียว
  • role และสิทธิ์ต่อไซต์
  • saved view ของรายการเนื้อหา: มุมมองส่วนตัวและมุมมองที่ใช้ร่วมกัน เลือกคอลัมน์และลำดับได้ ตั้งค่าเริ่มต้นส่วนตัวและของไซต์ได้ เก็บตัวกรองขั้น workflow การเผยแพร่ การค้นหาข้อความที่บันทึกไว้ เงื่อนไขของฟิลด์ และการเรียงหนึ่งแบบ ดู saved view
  • กรองและเรียงตามฟิลด์ในรายการเนื้อหา: โมเดลเดียว ใช้ได้สูงสุดสี่เงื่อนไขในกลุ่ม AND/OR ลึกสามระดับ กรองฟิลด์ scalar การมีหรือไม่มีความสัมพันธ์ และฟิลด์แสดงผลของความสัมพันธ์ภายในไซต์ที่ตั้งไว้ จากค่าที่บันทึกล่าสุดรวมฉบับร่าง เรียงตามฟิลด์ scalar หนึ่งฟิลด์ หรือฟิลด์แสดงผลของความสัมพันธ์ค่าเดียวที่มีโมเดลเป้าหมายเดียว ฟิลด์จุดรองรับรัศมี กรอบพื้นที่ และระยะใกล้สุด จำนวน หน้า มุมมอง และการเลือกทั้งหมดใช้แผน SQL และการตรวจสิทธิ์เดียวกัน ข้อความจัดรูปแบบ สื่อ คอมโพเนนต์ และ JSON กรองหรือเรียงไม่ได้ ดูกรองและเรียงตามฟิลด์
  • bulk action ในรายการเนื้อหา: ย้ายขั้น workflow, publish หรือ unpublish แบบ override และย้ายไปถังขยะ เลือกแถวโดยตรงได้ไม่เกิน 25 รายการ หรือเลือกทั้งหมดที่ตรงเงื่อนไขได้ถึง 5,000 รายการข้ามหน้า พร้อมยกเว้นบางรายการ ทำทีละไม่เกิน 25 รายการ แก้ฟิลด์สเกลาร์ได้เมื่อเลือกเนื้อหาชนิดเดียว ในถังขยะ การกู้คืนและลบถาวรใช้การเลือกแถวโดยตรง
    • ตรวจทุกรายการแยกกัน: grant ของ role, ความเป็นเจ้าของ :own, สิทธิ์ workflow, revision ที่ส่งมา และรายการที่ขึ้นกับมันเมื่อถูกนำออฟไลน์ การปฏิเสธหนึ่งรายการไม่หยุดรายการที่เหลือ ผลลัพธ์กลับมาตามลำดับที่ส่ง
    • ลองใหม่ด้วย key เดิมไม่ทำรายการซ้ำ แม้ request หยุดกลางทาง key ผูกกับผู้ที่ใช้มัน
    • ตรึงรายการที่ตรงตัวกรองเมื่อเริ่ม ตรวจสิทธิ์และ revision อีกครั้งต่อรายการ ผลลัพธ์แยกรายการที่ เปลี่ยน ไม่เปลี่ยน ถูกปฏิเสธ และขัดแย้ง ดูการแก้หลายรายการ
  • การมอบหมายผู้รีวิว: มีผู้รับผิดชอบทั้งรายการและผู้รับผิดชอบแยกตามภาษาพร้อมกำหนดส่ง งานบรรณาธิการมีผู้รับผิดชอบ ภาษาแบบไม่บังคับ กำหนดส่ง และ revision ของตนเอง งานที่บังคับต้องเสร็จสำหรับเวอร์ชันที่ตรวจทานก่อนเผยแพร่ การแก้ภาษาอื่นไม่ล้างการอนุมัติภาษานี้ คิวรีวิวกรองงานที่มอบหมายให้คุณใน workflow ได้ ไม่มีการเตือนอัตโนมัติ
  • การสนทนาและการแจ้งเตือนรีวิว: เธรดระดับฟิลด์ผูกกับเวอร์ชันและภาษา มีคำตอบ การกล่าวถึงผู้ใช้หรือทีม และการปิดหรือเปิดใหม่ ตรวจสิทธิ์ฟิลด์ ภาษา และผู้รับตามปัจจุบัน แจ้งการมอบหมาย ขอรีวิว และส่งกลับให้แก้ไขในแอดมิน อีเมลเป็นตัวเลือก เอดิเตอร์ management API และคำสั่งปลั๊กอินใช้เส้นทางเดียวกัน การนำเข้าไม่แจ้งเตือนเว้นแต่เลือกไว้ ประวัติที่ย้ายมาไม่แจ้งเตือน กำหนด workflow ให้แต่ละโมเดลได้ หรือใช้ของไซต์ ดูfeedback และการแจ้งเตือน
  • crop และ focal point ต่อการอ้างอิง media เก็บเป็นสัดส่วนของภาพ ไบต์ที่เก็บไว้ไม่เปลี่ยนเลย
    • การใช้แต่ละครั้งมีการจัดเฟรมของตัวเอง: ภาพเดียวกันสองครั้งในฟิลด์เดียว ค่าคอมโพเนนต์แต่ละค่า และ ช่องของส่วนหน้าแต่ละช่อง
    • เวอร์ชันที่เผยแพร่แล้วเก็บการจัดเฟรมของตัวเอง การแทนที่ไฟล์เก็บการจัดเฟรมไว้และเตือนเมื่อภาพใหม่มี รูปทรงอื่น focal point ค่าเริ่มต้นใช้กับการใช้ครั้งใหม่เท่านั้น
    • public API และการ generate ส่งการจัดเฟรมไปด้วย ไซต์ที่ generate และตัวเรนเดอร์แบบ managed ส่งสำเนาที่ย่อ และ crop แล้วผ่าน Cloudflare Image Transformations บนโฮสต์ที่เจ้าของประกาศ และส่งภาพเดิมพร้อม การจัดเฟรมด้วย CSS ในกรณีอื่น
  • การเขียน relation แทนที่รายการที่เรียงลำดับของฟิลด์ หรือ connect และ disconnect ทีละรายการ รายการ connect ใส่ตำแหน่งได้ (before หรือ after id หรือ start หรือ end) และรายการ move ย้ายรายการที่สัมพันธ์อยู่แล้ว ลำดับการใช้: disconnect, connect, move ทุกรายการที่เขียนถูกตรวจ: เป้าหมายมีอยู่ในไซต์ เป็น model เป้าหมายของฟิลด์ ผู้เขียน อ่านได้ (รวม :own) ปรากฏครั้งเดียว และฟิลด์ to-one มีเป้าหมายเดียว เป้าหมายที่ไม่มีอยู่ และเป้าหมายที่อ่านไม่ได้ถูกปฏิเสธแบบเดียวกัน
  • เมื่อบันทึกจะตรวจชนิด โครงสร้าง ขอบเขตค่า ความไม่ซ้ำ และข้อมูลอ้างอิงที่ส่งมา โดยค่าเริ่มต้นฉบับร่างเว้นค่าที่บังคับได้ หรือเลือกโหมดเข้มงวดให้ครบตั้งแต่บันทึก การเผยแพร่ตรวจ snapshot ที่จะเผยแพร่จริงรวมถึงค่าที่บังคับ
  • การประกอบหน้าเป็นเอกสารแบบมีโครงสร้างที่ไม่ผูกกับ framework ใด (ดู ข้อกำหนดข้อมูลหน้า) revision ของหน้าใช้การจัดการเวอร์ชัน การเผยแพร่ และ rollback ตามปกติ admin ไม่ได้ให้บริการเว็บไซต์สาธารณะของคุณ หน้าของเว็บไซต์ถูกวาดโดยเว็บไซต์ที่ generate แล้ว, managed template หรือ front end ของคุณเอง
  • การค้นหาและการแชร์ sitemap และ redirect ดู การค้นหาและการแชร์ และ Redirect
    • แต่ละภาษาของรายการหรือหน้าตั้งได้: ชื่อสำหรับการค้นหา คำอธิบาย ภาพสำหรับการแชร์ ที่อยู่ canonical “ซ่อนจาก search engine” และประเภทหน้า ค่าเหล่านี้บันทึกในเวอร์ชัน และส่งออกจากเวอร์ชันที่เผยแพร่เท่านั้น ไม่มีค่าใดถูกเติมจากข้อความหรือภาพของหน้า
    • เมนูและ SEO เก็บค่าเริ่มต้น ผู้ดำเนินการไซต์ รหัสยืนยันของ search engine นโยบาย sitemap และ robots และ redirect: ที่อยู่แบบตรงตัวได้ถึง 256 รายการและ pattern 32 รายการ ตอบด้วย 301, 302, 307, 308, 410 หรือ 451
    • service redirect เดียวปฏิเสธ loop, pattern ที่กำกวม และที่อยู่ที่สงวนไว้หรือที่อยู่ที่ live อยู่ pattern ที่เปลี่ยนต้องผ่านการตรวจหน้าที่ live ซึ่ง pattern นั้นครอบคลุม
    • การเผยแพร่ที่ย้ายที่อยู่ที่ live อยู่จะเพิ่มและยอมรับ redirect ถาวรจากที่อยู่เดิม เมื่อสร้าง redirect ไม่ได้ การเผยแพร่ยังสำเร็จ และ editor บอกเหตุผล การเผยแพร่ที่ที่อยู่ซึ่ง redirect ถือไว้ถูกปฏิเสธโดยระบุชื่อ
    • public API ส่ง seo ของแต่ละรายการ, redirect ที่ยอมรับแล้ว (GET /v1/_redirects) และข้อมูล sitemap (GET /v1/_sitemap) เว็บไซต์ที่ generate แล้วเขียนแท็ก head, structured data, alternate แบบ hreflang, /sitemap.xml (index ของชิ้นละ 5,000 ที่อยู่พร้อมภาพ) และ /robots.txt redirect และชิ้น sitemap ของหน้าถูกตรึงตอน generate ส่วนชิ้นของโพสต์ Blog อ่านแบบ live front end ของคุณเอง อ่านข้อมูลเดียวกันและวาดเอง
  • endpoint ของ admin API GET /api/models/public-client.ts สร้าง TypeScript client ที่ไม่มี dependency สำหรับไซต์หนึ่ง: ฟิลด์ของ model ที่แน่นอน, locale union, query type, response envelope และ หนึ่ง method ต่อหนึ่ง model ไฟล์บันทึก schema identity ที่ใช้สร้างมัน คำสั่ง dee-wan-client.mjs จาก การตั้งค่า → API ใช้ site API token อัปเดตไฟล์ และก่อน deploy จะจบด้วยรหัสที่ไม่ใช่ศูนย์เมื่อ schema เปลี่ยนแบบ breaking เป็นสคริปต์ที่คุณ commit ไว้ ไม่ใช่ dependency ขณะรัน

  • การสร้างแบ็กเอนด์อิสระ ให้แบ็กเอนด์ที่มี type ซึ่งคุณเป็นเจ้าของ และ snapshot ของเนื้อหาที่ เผยแพร่ ณ ขณะนั้น API ของแบ็กเอนด์นี้ไม่เรียก Dee Wan ขณะรัน แต่ Blog การค้นหา ส่วน «รายการล่าสุด» ความคิดเห็น และฟอร์มบนเว็บไซต์ของมันยังเรียกอยู่ (ดู สัญญาการแยกตัว) API ของแบ็กเอนด์นี้รับ API_BEARER_TOKEN, read token ใน ACCESS_CONFIG, session ที่เปิดใช้ได้ตามต้องการ และ credential สำหรับเครื่องแต่ละตัวที่แอปเป็นเจ้าของ กำหนดสิทธิ์ วันหมดอายุ หมุนเวียน และเพิกถอนแยกกันได้

  • regeneration ที่จัดการจาก CMS ดึงนิยาม model และรายงานผลกลับไปยัง Dee Wan การ build และการรันแบ็กเอนด์แยกจากการรายงานนั้น

  • CMS ออก read token สำหรับแบ็กเอนด์ที่สร้าง แยกตามโมเดล (ไม่เคยเป็น *) แสดงครั้งเดียว และ ส่งมอบเป็น digest ในการ regeneration และ deploy ครั้งถัดไป การเพิกถอนมีผลหลัง regeneration และ deploy นั้นเท่านั้น การเขียน relation ในแบ็กเอนด์ที่สร้างตรวจว่าเป้าหมาย to-one มีอยู่จริง

  • การสแกนความพร้อมในการสร้าง การตั้งค่า → ซอร์สโค้ดและการเผยแพร่ แสดงรายการการปฏิเสธระดับ model ก่อนบิลด์ และยังเดินไปตามคอนเทนต์ที่เผยแพร่เพื่อแสดงสิ่งที่บิลด์จะปฏิเสธได้ ทีละหน้าแบบจำกัด ตัวบิลด์ยังเป็นขั้นตอนที่ตัดสินข้อขัดแย้งที่ต้องตรวจทั้งไซต์

  • หลายไซต์ในการติดตั้งเดียว แต่ละ request ถูกจำกัดขอบเขตไว้ที่ไซต์เดียว ผู้เรียกเลือกข้อมูลหรือ ฐานข้อมูลของไซต์อื่นไม่ได้
  • ไซต์ที่ใช้ฐานข้อมูลร่วมกันถูกแยกออกจากกันในระดับโค้ด
  • session ที่เก็บในฐานข้อมูล, claim link ใช้ครั้งเดียวสำหรับผู้ดูแลคนแรก, ความเป็นเจ้าของรหัสผ่าน, การกู้คืน, การเพิกถอน session, การล็อกบัญชี และการจำกัด request
  • ขอบเขต Cloudflare Access ที่เลือกใช้ได้ ปิดไว้โดยค่าเริ่มต้น
  • บัญชีที่มีอยู่แล้วสามารถได้รับสิทธิ์เข้าถึงไซต์รายตัวได้ การเชิญ (invitation) เป็น pilot ภายใต้การกำกับดูแล ดูด้านล่าง
  • public Worker แยกต่างหากให้บริการเนื้อหาที่เผยแพร่แล้วของแต่ละไซต์บน hostname ของไซต์นั้นเอง ไซต์ถูกเลือกจาก header Host ไม่เคยเลือกจาก site id ที่ผู้เรียกส่งมา ดู เอกสารอ้างอิง public read API
  • การอ่าน snapshot ที่เผยแพร่แล้ว, นโยบาย locale แบบ strict หรือ fallback, cursor pagination และ relation filter
  • filter ตามฟิลด์แบบมี type: การเท่ากันบนฟิลด์ text, select, boolean, ตัวเลข และวันที่ ช่วงแบบไม่รวมขอบ และแบบรวมขอบบนฟิลด์ตัวเลขและวันที่ ฟิลด์ sort หนึ่งฟิลด์ และ fields แบบเลือกบางส่วน filter ตามฟิลด์ได้ไม่เกิน 4 ฟิลด์ การใส่ filter[field] ซ้ำให้ทางเลือกได้สูงสุด 10 ค่า (OR ภายในฟิลด์ AND ระหว่างฟิลด์) expand คืนฟิลด์ relation ได้สูงสุด 3 ฟิลด์ ลึกหนึ่งระดับ ฟิลด์ละ 25 เป้าหมายที่เผยแพร่แล้ว และมี route พร้อม cursor สำหรับส่วนที่เหลือ ทุก ขีดจำกัดจะปฏิเสธแทนการตัดให้แคบลง cursor ใช้ต่อได้เฉพาะ query เดิมทุกประการที่ออกมา ยังไม่มีเพดานจำนวนแถวที่วัดแล้ว
  • model สาธารณะไม่ต้องใช้ token model ส่วนตัวต้องใช้ site API token และไม่ถูกเก็บใน shared cache เลย
  • edge caching ปิดไว้โดยค่าเริ่มต้น เมื่อผู้ดูแลเปิดใช้ (PUBLIC_CACHE_MAX_AGE) และ ตั้งค่า credential สำหรับ purge (CF_PURGE_ZONE_ID, CF_PURGE_API_TOKEN) การเผยแพร่จะ purge response ที่ได้รับผลกระทบตาม cache tag
  • public Worker ไม่เขียนลงฐานข้อมูลเลย นี่คือกฎในระดับโค้ด D1 ไม่มีการตั้งค่า binding แบบ read-only
  • media เก็บใน R2 หรือ Cloudflare Images พร้อมการแปลงเป็น WebP และ AVIF
  • การสร้างข้อความ การแปล และการสร้างภาพผ่านการเชื่อมต่อผู้ให้บริการ AI ฝั่งเซิร์ฟเวอร์ คีย์ของผู้ให้บริการ ไม่ไปถึงเบราว์เซอร์เลย
  • โควตารายชั่วโมงแยกตามไซต์ ค่าเริ่มต้นคือ DeepInfra และกำหนดปลายทางที่เข้ากันได้กับ OpenAI พร้อมโมเดลข้อความ การอ่านภาพ และการสร้างภาพได้ ดู ผู้ให้บริการ AI
  • ไฟล์ซ้ำในคลัง media ของไซต์เดียว การอัปโหลดที่ไซต์มีไบต์เดียวกันทุกไบต์อยู่แล้วจะไม่เก็บอะไร และเสนอ ใช้ไฟล์ที่มีอยู่ หรือ อัปโหลดเป็นสำเนาแยก ตัวเลือกเดียวกันนี้มีในหน้าต่าง media, ตอนบันทึกภาพจาก AI, ใน management API (on_duplicate) และสำหรับ plugin ไฟล์ของไซต์อื่นไม่ถูกจับคู่เลย จับคู่เฉพาะไบต์ที่ เหมือนกันทุกไบต์ ภาพที่ย่อขนาดหรือเข้ารหัสใหม่จึงไม่ถูกพบ ไฟล์ที่อยู่ในคลังแล้วไม่ถูกสแกน การนำเข้าและ การคัดลอกไซต์เก็บหนึ่งไฟล์ต่อ asset ต้นทางและไม่จับคู่ไฟล์ซ้ำ
  • ไฟล์ส่วนตัว สื่อเป็นสาธารณะโดยค่าเริ่มต้น ไบต์ของไฟล์ส่วนตัวอยู่ในบัคเก็ตส่วนตัวแยกต่างหาก และเปิดได้ผ่านลิงก์ห้านาทีตามขอบเขตสิทธิ์อ่านสื่อปัจจุบันของสมาชิก เมื่อเปิดลิงก์ ระบบตรวจสิทธิ์นี้และสิทธิ์ปัจจุบันของ integration ที่ออกลิงก์ซ้ำ
    • วางไฟล์ส่วนตัวในช่องสื่อหรือข้อความจัดรูปแบบของโมเดลส่วนตัวได้ รวมถึงข้อความซ้อนในบล็อกปลั๊กอิน โมเดลสาธารณะ สนิปเป็ต และการตั้งค่าไซต์ รูปโซเชียล และส่วนของหน้าจะปฏิเสธพร้อมเหตุผล model ส่วนตัวเปลี่ยนเป็นสาธารณะไม่ได้ขณะที่มีรายการ ใช้ไฟล์ส่วนตัว
    • การอ่านแบบสาธารณะไม่เคยมีไบต์ส่วนตัวหรือที่อยู่ที่ใช้งานได้ การอ่านแบบไม่ระบุตัวตนของ model ส่วนตัว ตอบ 404 และการอ่านด้วยโทเคนของไซต์ได้รายละเอียดไฟล์พร้อมที่อยู่ว่าง
    • สำเนาไซต์และการย้ายพร้อมประวัติพาไฟล์ส่วนตัวไปพร้อมไบต์ checksum และการมองเห็น และปลายทางเก็บไว้ แบบส่วนตัว การสร้างหรือดาวน์โหลดไฟล์ดังกล่าวต้องมีสิทธิ์ส่งออกและสิทธิ์อ่านคลังสื่อทั้งหมด ซึ่งตรวจซ้ำ ทุกครั้งที่ดาวน์โหลด การส่งออก CSV, JSON ของคอลเลกชัน และ XLSX ไม่ขึ้นกับไฟล์ส่วนตัวเลย ปลายทางที่ไม่มีที่เก็บ ส่วนตัวถูกปฏิเสธพร้อมเหตุผลก่อนเขียนอะไร ไม่มีข้อมูลรับรองที่เก็บหรือชื่อบัคเก็ตถูกส่งไป
    • แอปพลิเคชันที่ generate ส่งไฟล์ส่วนตัวที่ GET /api/<model>/files/<field>/<id> เฉพาะผู้ที่อ่านแถวนั้นได้ ตาม session และกฎการเข้าถึงของแอปเอง สิทธิ์ในคลังสื่อของ CMS ไม่ให้สิทธิ์ใดที่นั่น แอปเก็บไบต์ส่วนตัว ในบัคเก็ตส่วนตัวของตัวเอง (PRIVATE_FILES) รันไทม์ Node serve ส่งไฟล์แบบเดียวกันจากไดเรกทอรีของผู้ใช้ที่ระบุใน PRIVATE_FILES_DIRECTORY และตอบ 503 private_files_unavailable เฉพาะเมื่อยังไม่ได้ตั้งค่า
    • การเปลี่ยน model ส่วนตัวเป็นสาธารณะและการบันทึกไฟล์ส่วนตัวลงไปถูกตรวจภายในการเขียนของแต่ละฝั่ง การบันทึก นำเข้า หรือกู้คืนพร้อมกันจึงไม่ทำให้ model สาธารณะมีไฟล์ส่วนตัวค้างอยู่ ดูไฟล์ส่วนตัว
  • site bundle ของ Dee Wan ที่พกพาได้ และการถ่ายโอนเนื้อหาแบบ CSV และ XLSX
  • การนำเข้า Strapi v4 และ v5: ตรวจ archive, mapping ที่ระบุชัดแจ้ง, dry run, resume, rerun ซ้ำได้, receipt, แถวที่มีปัญหา, manifest และ undo ที่มีการป้องกัน
  • การนำเข้า WordPress จากไฟล์ Tools → Export (รูปแบบ 1.2, UTF-8, ไม่เกิน 8 MiB): โพสต์ หน้า หมวดหมู่ แท็ก ผู้เขียน ความคิดเห็น เมนู ชนิดโพสต์และ taxonomy ที่กำหนดเอง ฟิลด์ที่กำหนดเองที่ตรวจทานแล้ว และค่า Yoast SEO พร้อมคัดลอกไฟล์สื่อได้สูงสุด 5,000 ไฟล์จากโฮสต์ https สาธารณะ รายการที่ยังไม่เผยแพร่ เข้ามาเป็น draft และความคิดเห็นเข้ามารอการกลั่นกรอง undo ลบสิ่งที่การนำเข้าสร้าง ดู การนำเข้าจาก WordPress
  • เมื่อไม่ชัดเจนว่า เรคคอร์ดต้นทางแต่ละรายการเป็นของกลุ่มใด dry run จะหยุด importer ไม่เคย เดาจากชื่อ, slug หรือ URL
  • การนำเข้า archive จริงจาก production, ขีดจำกัดของ Worker บน deployment รวมถึง cutover และ rollback ยัง ไม่ได้รับการพิสูจน์
  • การวางแผนติดตั้ง apply และ resume ผ่าน command line, การวินิจฉัย (npm run doctor), การตรวจสอบ, install manifest และ teardown แบบ dry run

  • ตัวติดตั้งผ่านเบราว์เซอร์แบบ local สำหรับนักพัฒนาที่มี Node, checkout และ terminal อยู่แล้ว

  • ประวัติ deployment โดย rollback จะถูกปฏิเสธหลัง migration ที่ทำลายข้อมูล

  • outbound webhook: การตั้งค่า, ประวัติการส่ง การลงลายเซ็น, การหมุนเวียน secret และการ replay ด้วยมือ

  • การลองส่งใหม่อัตโนมัติสำหรับ outbound webhook

    • การส่งที่ล้มเหลวด้วยเหตุที่อาจผ่านได้ในภายหลัง (ไม่มีคำตอบ, 408, 429 หรือ 5xx ใด ๆ) จะถูกลองใหม่ตามตารางแบบ exponential ที่มี jitter สูงสุดห้าครั้ง โดยเคารพ Retry-After
    • การปฏิเสธที่ผู้รับจะตอบซ้ำเหมือนเดิมจะไม่ถูกลองใหม่
    • ทุกครั้งที่ลองส่งใช้ event id เดียวกัน ดังนั้นผู้รับของคุณจึงจำรายการซ้ำได้
    • การลองใหม่ส่ง body ที่บันทึกไว้ตรงตัว ลงลายเซ็นด้วย secret ปัจจุบันของผู้รับ
    • การลองใหม่ที่รอส่งไม่นับรวมในขีดจำกัดของประวัติการส่ง
    • ระบบพยายามส่งภายในจำนวนครั้งที่กำหนด สูงสุดห้าครั้ง การแจ้งเตือนอาจมาซ้ำ และไม่รับประกันว่าจะได้รับ ตรวจสอบบน local เท่านั้น
  • รายงานข้อผิดพลาด

    • ข้อผิดพลาดที่ไม่ได้จัดการจาก admin Worker, public Worker และ admin UI สามารถส่งไปยัง โปรเจกต์ที่เข้ากันได้กับ Sentry
    • โดยค่าเริ่มต้นไม่มีอะไรถูกส่ง เวอร์ชันนี้ไม่มีที่อยู่โปรเจกต์ของ Dee Wan ในตัว ดังนั้นรายงานจะไป ถึง Dee Wan เฉพาะเมื่อ deployment ตั้ง DEEWAN_SENTRY_DSN และไปถึงโปรเจกต์ของคุณเองเฉพาะเมื่อคุณ ตั้ง OPERATOR_SENTRY_DSN
    • รายงานมีประเภทข้อผิดพลาด, ข้อความที่ถูกลบข้อมูลอ่อนไหวแล้ว, stack frame (function, ชื่อไฟล์, บรรทัด), route pattern, release และ environment เนื้อหา, ค่าในฟอร์ม, ที่อยู่อีเมล, URL, query string และ credential ถูกลบออกก่อน
    • superadmin ปิดการส่งรายงานไปยัง Dee Wan สำหรับทั้งการติดตั้งได้ที่ การติดตั้ง → รายงานข้อผิดพลาด ตัวแปรของ Worker DEEWAN_ERROR_REPORTING=off ทำเช่นเดียวกัน สวิตช์ทั้งสองไม่มีผลกับ OPERATOR_SENTRY_DSN
  • Rich text คือ rich document หนึ่งฉบับที่ผ่านการตรวจแล้ว และ renderer ของคุณเป็นผู้วาดมัน

    • เก็บเป็น HTML แบบ canonical ไม่เกิน 256 KiB ของ UTF-8: บล็อกข้อความ ตาราง แกลเลอรีรูปภาพ บล็อกเสียง วิดีโอ และไฟล์ และการฝัง YouTube, Vimeo หรือ origin https ที่ไซต์อนุญาตใน การตั้งค่า → การเชื่อมต่อ
    • ทุกการเขียนอ่านค่าอย่างเข้มงวดและเก็บรูปแบบ canonical markup ที่อยู่นอก document จะถูกปฏิเสธ ด้วย 400 ที่ระบุฟิลด์ ภาษา และ element หรือ attribute แต่ไม่เคยระบุเนื้อหา
    • type ที่สร้างขึ้นของมันคือ Html ไม่ใช่ type “HTML ที่ปลอดภัย”: บล็อกสื่อและการฝังเป็นข้อมูล ไม่ใช่ตัวเล่น ให้ render ด้วย renderRichDocument ของ ข้อกำหนดข้อมูลหน้า หรือ renderer ของคุณเอง สำหรับ document เดียวกัน
    • renderer ของ Dee Wan เอง (หน้าโพสต์ของ Blog และ ส่วน «รายการล่าสุด») วาดค่านี้ด้วย renderRichDocument
  • ที่เดียวสำหรับการส่งมอบ ที่ การตั้งค่า → ซอร์สโค้ดและการเผยแพร่

    • CMS read API แบบ live และแบ็กเอนด์อิสระ ถูกนำเสนอเป็นสองสัญญาที่ต่างกัน โดย ความแตกต่างเรื่อง route, การยืนยันตัวตน, response envelope, deployment, rollback และการขึ้นกับ CMS ถูกระบุไว้ก่อนที่คุณจะสลับ
    • สถานะแสดง ยังไม่เคยสร้าง, ปัจจุบัน, drift, กำลัง build, build หรือ deployment ล้มเหลว และ แยกตัวแล้ว รายการ revision ปฏิเสธ rollback ที่ไม่ปลอดภัย ตรวจสอบบน local เท่านั้น
  • เวอร์ชันของ generator และ drift แบ็กเอนด์ที่สร้างขึ้นถูกระบุตัวตนด้วยเวอร์ชันของ generator บวกกับ fingerprint ของสัญญา model ของไซต์ ไม่ใช่ timestamp ไซต์ที่ถูก build ใหม่ด้วย generator ที่ใหม่กว่า จะแสดงเป็น drift แทนที่จะเป็นปัจจุบัน ทุก deployment บันทึกเวอร์ชันของ generator: workflow ของ build หยุดด้วย generator_version_missing เมื่อ artifact ไม่ระบุเวอร์ชัน และรายงาน build ที่ไม่มีเวอร์ชัน จะถูกปฏิเสธ (build_report_incomplete) ไม่มีอะไร regenerate หรือ deploy เอง artifact ที่สร้างด้วย generator รุ่นเก่ากว่า จะปฏิเสธการ regenerate จนกว่าคุณจะสร้างแบ็กเอนด์อิสระใหม่อีกครั้ง ไม่มีชั้นความเข้ากันได้

  • audit log เชิงบริหาร ที่ การตั้งค่า → ประวัติ อยู่หลังสิทธิ์ audit:read ของมันเอง

    • บันทึกว่าใครเปลี่ยน model, component, role, grant, site token, settings, โครงสร้างพื้นฐาน หรือ hostname และใคร deploy หรือ rollback
    • แต่ละการกระทำเขียนเจตนาของมันก่อนรัน และเขียนผลลัพธ์หลังรัน หากเขียนเจตนาไม่ได้ การกระทำจะไม่รัน หากเขียนผลลัพธ์ไม่ได้ ผลลัพธ์จะแสดงเป็นไม่ทราบ แทนที่จะเป็นสำเร็จ
    • เพิ่มต่อท้ายได้อย่างเดียว: ไม่มีอะไรแก้ไขมันได้
    • กรองตาม operation, outcome, actor, target type, target id และช่วง from/to และดาวน์โหลดเป็น CSV (format=csv) จาก route GET /api/sites/:siteId/audit เดียวกัน ภายใต้ audit:read เซลล์ CSV ถูก escape สูตร แบ่งหน้าด้วย cursor ไม่มีตัวนับ

Pilot ภายใต้การกำกับดูแล: สร้างแล้วบน local แต่ยังไม่ได้พิสูจน์บนโครงสร้างพื้นฐานจริง

หัวข้อที่มีชื่อว่า “Pilot ภายใต้การกำกับดูแล: สร้างแล้วบน local แต่ยังไม่ได้พิสูจน์บนโครงสร้างพื้นฐานจริง”
  • ฐานข้อมูลเนื้อหาแยกต่อไซต์ ฐานข้อมูลควบคุมหนึ่งตัวบวกฐานข้อมูลเนื้อหาหนึ่งตัวต่อ ไซต์ routing, provisioning, migration ข้ามไซต์, backup และ restore และ teardown ตรวจสอบ บน local แล้ว ความจุ, backup และ restore และการแยกกันระหว่างหลายไซต์ยังไม่ได้ พิสูจน์บนบัญชี Cloudflare จริง
  • การ deploy แบ็กเอนด์อิสระ จาก CMS claim, build token, workflow ของ repository ที่สร้างขึ้น, migration, การรายงานกลับ และ rollback ตรวจสอบบน local แล้ว ยังไม่มีการบันทึกการรัน ที่ครบถ้วนผ่าน GitHub Actions ไปยัง Cloudflare
  • เส้นทางตัวติดตั้งฉบับสมบูรณ์ admin Worker และ UI ทำตามเส้นทาง setup ปกติ setup ยังเขียน backend/wrangler.public.jsonc เมื่อรู้บัญชี, Cloudflare zone และฐานข้อมูล แล้ว มันไม่เขียนทับไฟล์ที่มีอยู่ เมื่อหาค่าใดไม่ได้ มันจะปฏิเสธและระบุชื่อค่านั้นแทนการเดา การคัดลอกตัวอย่างด้วยมือเป็นเพียงทางสำรองสำหรับการปฏิเสธนั้น หากไม่มีไฟล์นี้ deploy จะปฏิเสธแทนที่จะข้ามไป การติดตั้งที่ตั้งใจไม่ให้บริการเนื้อหาสาธารณะ บอกเช่นนั้นด้วย --admin-only และการรันจะถูกรายงานว่าเป็น admin-only แทนที่จะเป็นครบถ้วน สิ่งที่ ยังขาดคือการรันที่บันทึกไว้บนบัญชีจริง
  • การดูตัวอย่างบน front end ของคุณเอง admin เก็บที่อยู่ front end แบบ HTTPS และ route template ต่อ model และการดูตัวอย่างเปิด draft บน front end ของคุณ แผงการแสดงตัวอย่างที่ การตั้งค่า → ซอร์สโค้ดและการเผยแพร่ → ตัวเลือกสำหรับนักพัฒนา → ตัวอย่างเว็บไซต์แบบกำหนดเอง อ่านและเขียนการตั้งค่านั้น อธิบายว่า การดูตัวอย่างทำอะไรก่อนตั้งค่า และระบุชื่อการปฏิเสธแต่ละครั้ง จนกว่าจะตั้งค่าและ ตรวจสอบ front end แล้วการดูตัวอย่างจะเปิด JSON response ของ public API
    • Preview การเปลี่ยนแปลงที่ยังไม่บันทึก บน renderer ที่ตรวจสอบแล้วและประกาศรองรับ (managed Blog renderer สำหรับโพสต์ และ renderer ที่ generate หรือเป็นของคุณเองผ่าน verification key ที่เผยแพร่) ข้อความ component ความสัมพันธ์ รูปที่คุณเลือก และที่อยู่ของภาษา มาจาก draft ที่ลงนามชุดเดียว ซึ่งหมดอายุใน 60 วินาที เซิร์ฟเวอร์ค้นไฟล์ด้วย id ตามสิทธิ์ปัจจุบัน ของคุณ ไม่มีการบันทึก จองที่อยู่ หรือเขียน redirect และการอ่านแบบสาธารณะไม่เปลี่ยน สำหรับ renderer หรือโมเดลอื่น ระบบจะแสดงเวอร์ชันที่บันทึกไว้พร้อมเหตุผล ดู preview การเปลี่ยนแปลงที่ยังไม่บันทึก
  • Remote plugin โปรโตคอล v1 ฝั่ง Dee Wan ติดตั้งผ่าน manifest HTTPS พร้อมตรวจสิทธิ์และ model แต่ละ delegated operation ตรวจสิทธิ์ปัจจุบันของผู้ใช้ซ้ำ การอ่านรายการและเวอร์ชันที่เก็บไว้ การสร้าง แก้ไขแบบมีชนิด ย้ายลงถังขยะ อ่านสื่อ/แก้ metadata และ publish/unpublish ใช้ lifecycle เดิม Settings เปรียบเทียบ manifest ใหม่กับรุ่นที่ติดตั้งก่อน upgrade สิทธิ์ใหม่ยังไม่ได้รับอัตโนมัติ ใช้ control ของ host ได้ และ manifest ประกาศ frame ที่ตรวจแล้วบน exact origin ของ plugin พร้อมรายการ operation ได้ credentialless sandbox และช่องข้อความที่ผูกไว้ไม่ส่ง cookie หรือ token ของ admin การแก้ฟิลด์ใช้ save ปกติ action ใช้ operation ที่ตรวจสิทธิ์แล้ว เมื่อปิด plugin จะกลับไป editor เดิม Catalogue ของ operator (PLUGIN_CATALOGUE_URLS) ใช้ค้นหา plugin ผู้แก้ไขเปิด Scheduling เฉพาะ model ที่อ่านได้โดยไม่ต้องมี site:plugins ส่วน management API, CLI และ MCP แสดง view/action และสร้างลิงก์ครั้งเดียว ตรวจในเครื่องแล้ว แต่ยังรอ deploy Scheduling
  • Backup และ restore ตรวจสอบกับ SQLite บน local ไม่ใช่กับ D1 จริง
  • การเชิญ (invitation) ที่ การตั้งค่า → ผู้ใช้ ผู้ดูแลเชิญที่อยู่อีเมลให้มีบทบาทหนึ่งบนไซต์หนึ่ง ผู้ได้รับเชิญพิมพ์ที่อยู่นั้นในหน้าคำเชิญ ถ้าตั้งค่าอีเมลไว้ ต้องกรอกรหัสที่ส่งไปยังที่อยู่นั้นด้วย ถ้าไม่มีอีเมล ผู้ดูแลส่งลิงก์ต่อเอง และบัญชีใหม่จะถูกบันทึกว่ายังไม่ยืนยัน บัญชีที่มีอยู่แล้วได้รับบทบาท และใช้รหัสผ่านเดิม ลิงก์ใช้ได้ครั้งเดียว หมดอายุใน 7 วัน และส่งใหม่หรือยกเลิกได้ ตรวจสอบบน local กับผู้ให้บริการอีเมลจำลอง ยังไม่มีบันทึกการส่งผ่านบัญชี Resend จริง
  • พาสคีย์ (passkey) ปิดไว้จนกว่า superadmin จะเปิด การเข้าสู่ระบบไม่ถามที่อยู่อีเมล แต่ละคนเพิ่ม เปลี่ยนชื่อ และลบพาสคีย์ของตนเองที่ ความปลอดภัยของบัญชี วิธีเข้าสู่ระบบสุดท้ายลบไม่ได้ ตรวจสอบบน local ด้วย authenticator แบบซอฟต์แวร์ ยังไม่มีบันทึกการเข้าสู่ระบบด้วยอุปกรณ์จริง (Touch ID, Windows Hello, โทรศัพท์)
  • การย้ายไซต์ที่ใช้งานจริงจาก Strapi เส้นทางการนำเข้ามีอยู่แล้ว ยังไม่มีการย้ายไซต์จริง แบบ end-to-end พร้อม cutover และ rollback ที่เสร็จสมบูรณ์

งานพัฒนาหรือการตรวจรับต่อไปนี้ต้องเสร็จก่อนเปิดตัว 1.0

  • การตรวจรับโปรเจกต์ Astro เริ่มต้นสำหรับใช้งานจริง คำสั่งสร้างซอร์สมีแล้ว แต่ยังต้องรันทดสอบเบราว์เซอร์ทั้งหมดและตรวจบนบริการจริง
  • การดูตัวอย่าง sitemap และ robots ใน admin
  • การส่ง release ของ managed renderer ซึ่งเป็นงานก่อน 1.0 การ prepare, activate, rollback และ การตรวจ deployment ทำผ่านบริการแยกต่างหากที่เก็บโทเค็น Cloudflare มีการทดสอบเฉพาะส่วนในเครื่องแล้ว แต่ยังต้องผ่านการทดสอบเบราว์เซอร์ทั้งหมดและตรวจรับกับบัญชี Cloudflare จริง ผลในเครื่องไม่แทนการตรวจรับรีลีส หากไม่มีการตั้งค่าของ deployment service action เหล่านี้จะใช้ไม่ได้ การยอมรับ template ของไซต์ไม่เปลี่ยนแปลงสิ่งที่ใช้งานจริงอยู่เลย
  • ตัวติดตั้งที่ไม่ต้องใช้ terminal และ Cloudflare OAuth application ที่ลงทะเบียนแล้ว
  • การกรองผ่านฟิลด์ที่เกี่ยวข้องอย่างอิสระ และการกรองหลายโมเดลพร้อมกัน ส่วนฟิลด์แสดงผลของความสัมพันธ์ภายในไซต์ที่ตั้งไว้ใช้ได้
  • การค้นหาภาพที่คล้ายกันแต่ไบต์ไม่ตรงกัน ไฟล์ที่ซ้ำกันทุกไบต์ การค้นหา media และการกรอง alt-text สร้างแล้ว
  • การเตือนรีวิวอัตโนมัติและผู้รับมอบหมาย workflow หลายคนต่อทั้งรายการ ส่วนผู้รับผิดชอบแยกภาษา งานบรรณาธิการ และการสนทนาระดับฟิลด์มีแล้ว
  • การตรวจรับกับผู้ให้บริการจริงสำหรับการรีเฟรชเมื่อเผยแพร่และ GitHub App ส่วนกลางที่เลือกใช้ได้ การตั้งค่า งานที่บันทึกไว้ถาวร และบริการ App แยกต่างหากมีโค้ดแล้ว แต่ยังต้องผ่านการตรวจรับกับระบบจริง ดูการส่งมอบผ่าน GitHub
  • ส่วนที่ผู้แก้ไขหน้าลบไม่ได้หรือแยกเป็นสำเนาไม่ได้ ส่วนที่ใช้ร่วมกัน (shared section) ซึ่งแสดงชุดส่วนที่เผยแพร่แล้วชุดเดียว บนหลายหน้าและแก้ไขเนื้อหาร่วมจากที่เดียวได้ สร้างแล้ว (ดู ตัวสร้างหน้า)
  • การยืนยันตัวตนสองขั้นตอนแบบ TOTP และ OIDC single sign-on เป็นวิธีเสริม
  • การรับประกันใด ๆ ว่าผู้รับจะได้รับการแจ้งเตือน
  • การแบ่ง model หนึ่งตัวไปหลายฐานข้อมูล
  • SAML single sign-on
  • การตั้งเวลา publish และ unpublish ในผลิตภัณฑ์หลัก การตั้งเวลาคือ plugin Scheduling ที่แยกต่างหาก ซึ่งยังไม่ได้ deploy content release แบบประสานงานสร้างไว้ใน plugin นั้น ไม่ใช่ในผลิตภัณฑ์หลัก
  1. CMS public read API เป็นแบบ live การเผยแพร่ไปถึงมันทันที หากเปิด edge caching และ ตั้ง credential สำหรับ purge ไว้ การเผยแพร่จะ purge response ที่ cache ไว้ซึ่งได้รับผลกระทบด้วย
  2. แบ็กเอนด์อิสระ คือ release มันมีสิ่งที่เผยแพร่ไว้ ณ ตอนที่ถูกสร้าง โดยค่าเริ่มต้นต้องสั่งสร้างและดีพลอยใหม่ด้วยตนเอง ตัวเลือก อัปเดตเมื่อเผยแพร่ ปิดไว้เป็นค่าเริ่มต้นของแต่ละไซต์ เมื่อเปิดจะใช้กระบวนการสร้าง ตรวจทาน migration และดีพลอยตามปกติ โดยไม่เขียนลงฐานข้อมูลของแบ็กเอนด์อิสระโดยตรง จึงไม่ใช่ข้อมูลที่อัปเดตทันที ดูอัปเดตเมื่อเผยแพร่ การตรวจรับกับผู้ให้บริการจริงยังไม่เสร็จ

ซอร์สที่เพิ่มเดือนตุลาคมและการยอมรับที่ยังเหลือ

หัวข้อที่มีชื่อว่า “ซอร์สที่เพิ่มเดือนตุลาคมและการยอมรับที่ยังเหลือ”

ซอร์สปัจจุบันเพิ่มรายการต่อไปนี้จากสัญญาเดิม มีเทสต์เฉพาะส่วนแล้ว ยังต้องตรวจ browser integration ภาพจริงบนมือถือและ desktop และการยอมรับ provider

  • กลุ่ม AND/OR ในรายการ ตัวเลือก relation ตามบริบท และตัวเลือก select แบบมีเงื่อนไขใช้กฎจำกัดขอบเขตและตรวจ dependency ซ้ำเมื่อบันทึก
  • Operation plugin สำหรับรายการ เวอร์ชัน สร้าง แก้ไข ถังขยะ และสื่อ ใช้ lifecycle เดิมกับสิทธิ์ปัจจุบันของผู้ใช้ Upgrade แสดง version สิทธิ์และ origin ก่อนยืนยัน สิทธิ์ใหม่ต้องให้อย่างชัดเจน frame บน origin plugin ที่ตรวจแล้วรองรับ UI ของตนโดยไม่มี credential admin
  • Rich text เก็บการจัดแนวย่อหน้า/หัวข้อ relation และกลุ่มซ้อนแบบซ้ำของ plugin Vendor snippet HTML/CSS/JavaScript แบบมีชนิดทำงานใน frame แยกใน admin และ renderer ทั้งสอง
  • ความปลอดภัยของบัญชี ยืนยัน email ใหม่ก่อนเปลี่ยนบัญชีเดิมและจบ session สมาชิก credential และประวัติยังอยู่ หน้าลงชื่อเข้าใช้เปิดให้ขอตั้งรหัสผ่านใหม่ได้เมื่อกำหนดค่าอีเมลไว้ โดยตอบเหมือนกันสำหรับที่อยู่ที่รู้จัก/ไม่รู้จัก การกู้คืนแบบไม่มี mail เดิมยังใช้ได้
  • กฎ role ของรายการจำกัดการอ่านหลักและ atomic create/update/delete จากบริบทผู้ใช้และค่าเดิม/ใหม่ เพดาน model แถวตนเอง ฟิลด์ และภาษายังอยู่ ยังรอ audit API/export ที่เกี่ยวข้อง
  • CSV/XLSX เลือกสร้าง อัปเดต หรือสร้าง/อัปเดตได้ ผ่านกลไกตรวจทานเดียวกับ JSON collection รองรับความสัมพันธ์ สื่อ และคอมโพเนนต์ซ้อน พร้อมตรวจสิทธิ์และเวอร์ชันตามปกติ ค่าเริ่มต้นคืออัปเดต จับคู่ด้วย ID รายการหรือฟิลด์ไม่ซ้ำที่รองรับ
  • WordPress ที่เชื่อมต่อใช้ WXR review/import/receipt/undo เดิม การแทนค่าชัดเจนครอบคลุมชื่อ tagline logo icon คำอธิบาย SEO และการทำดัชนีที่ส่งมา ต้องมี site:settings และ revision ปลายทางที่ตรวจแล้ว ข้อมูลที่ไม่รองรับหรือ REST ซ่อนไว้ยังแสดงเป็น omission
  • AI เสนอ alt/caption จาก bytes ที่มีสิทธิ์และต้องให้ผู้เขียนตรวจ การอัปเดตคำแปลทำหลังบันทึกข้อความต้นทางเท่านั้น สำหรับภาษาที่เลือกและยินยอมแทนคำแปลที่เขียนเองอย่างชัดเจน

ซอร์สโฟลเดอร์รายการยังรอ integration acceptance ขั้นสุดท้าย ส่วนโฟลเดอร์ model มีแล้วตามด้านบน Renderer อ้างอิงสำหรับ production/starter การ deploy Scheduling และการยอมรับ Cloudflare จริงด้าน publication preview media mail และ recovery ยังเป็นเงื่อนไขส่งมอบ การเปลี่ยนซอร์สอย่างเดียวไม่ทำให้เงื่อนไขเหล่านี้ผ่าน

ซอร์สมีโปรเจกต์ Astro เริ่มต้นที่อ่าน public API ปัจจุบันแล้ว ดู เว็บไซต์แรก การตรวจรับสำหรับใช้งานจริง การปรับใช้ Scheduling และหลักฐานจริงบน Cloudflare สำหรับการเผยแพร่ พรีวิว สื่อ อีเมล และการกู้คืนยังเป็นเงื่อนไขก่อนรีลีส ยังไม่มีรีลีสที่รองรับพร้อมแท็ก

ซอร์สที่ยังไม่รีลีสยังเพิ่มไฟล์แนบแบบส่วนตัวในแบบฟอร์มเว็บไซต์ และการส่งอีเมลของปลั๊กอินตามเทมเพลตที่อนุมัติถึงผู้สร้างรายการหรือผู้ตรวจทานที่ได้รับมอบหมาย ทั้งสองส่วนใช้ระบบรับแบบฟอร์มและส่งอีเมลเดิม การทดสอบร่วมกันขั้นสุดท้ายยังไม่เสร็จ และยังไม่ยืนยันรีลีสที่รองรับหรือการตรวจรับกับบริการจริง

ความสามารถเหล่านี้อยู่ในซอร์สของรุ่นรวมที่ยังไม่เผยแพร่ การทดสอบเบราว์เซอร์ทั้งหมด การตรวจหน้าใช้งานจริงบนมือถือและเดสก์ท็อป และการรับรองบริการภายนอกยังเป็นเงื่อนไขแยกต่างหาก

  1. การถ่ายโอนไซต์และประวัติเป็นส่วนรองรับไฟล์สื่อขนาดใหญ่ที่ไซต์รับได้ พร้อมผลรวมและการทำต่อ
  2. การแปลงหน้า WordPress เก็บหัวข้อ โค้ด ตาราง เนื้อหายาว และข้อมูลแหล่งที่จับคู่ไว้อย่างชัดเจน
  3. ข้อความจัดรูปแบบที่ป้องกันการเข้าถึงรองรับรูปภาพและไฟล์แนบส่วนตัว รวมถึงรูปภาพขนาดต่าง ๆ ที่ตรวจสิทธิ์
  4. ที่อยู่รองรับตัวอักษร ตัวเลข และเครื่องหมายผสม Unicode และสร้างจากชื่อภาษาไทยหรือภาษาอื่นได้
  5. ชุดค่าที่ไม่ซ้ำแบบมีชื่อรวมช่องสองถึงสี่ช่องและตรวจการเขียนแบบอะตอมมิก
  6. ข้อมูลร่วมของบล็อกใช้ข้อมูลผู้เขียน หมวดหมู่ และแท็กปัจจุบันได้ โดยยังเลือกโหมดสแนปช็อตได้อย่างชัดเจน
  7. คอมโพเนนต์ธรรมดาและแบบผสมเลิกใช้ชนิดเดิม เก็บโครงสร้างเดิม และอัปเกรดอินสแตนซ์ตามที่ผู้เขียนเลือกได้
  8. บล็อกปลั๊กอินมีช่องข้อความจัดรูปแบบของตัวแก้ไขหลักซ้อนอยู่ภายในได้ภายใต้ขีดจำกัดความลึก
  9. คอลัมน์ความสัมพันธ์ของระบบแสดงชื่อ จำนวน และค่าที่เกี่ยวข้องตามสิทธิ์
  10. เงื่อนไขการแสดงผลตามชนิดข้อมูลรวม AND/OR ได้สูงสุดสี่เงื่อนไขและสามระดับ
  11. ช่องแปลที่ไม่บังคับกรอกใช้ค่าที่ไม่มีจากภาษาสำรองที่เผยแพร่แล้วได้ แต่ค่าว่างโดยตั้งใจยังคงว่าง ดู ภาษาสำรองของช่อง
  12. SVG แบบคงที่ที่ผ่านการตรวจใช้เป็นรูปภาพได้
  13. แอปที่สร้างขึ้นรองรับบทบาทแบบมีชื่อสูงสุด 32 บทบาทพร้อมสิทธิ์การทำงานแต่ละโมเดล บทบาทเริ่มต้นสำหรับผู้สมัครที่ไม่ใช่ผู้ดูแล และบทบาท admin/user เดิม
  14. DeepInfra ยังเป็นผู้ให้บริการ AI เริ่มต้น ผู้ดูแลการติดตั้งเลือกปลายทางที่เข้ากันได้กับ OpenAI และรายการโมเดลข้อความ การอ่านภาพ และการสร้างภาพได้
  15. พรีวิวฉบับร่างที่เกี่ยวข้อง แสดงฉบับร่างที่บันทึกแล้วตามสิทธิ์ของผู้ใช้ การอ่านสาธารณะยังต้องใช้เนื้อหาที่เผยแพร่แล้ว
  16. การค้นหาเนื้อหา ค้นข้อความจัดรูปแบบที่บันทึกแล้ว รวมถึงฉบับร่าง พร้อมชื่อช่องที่ตรงกันและข้อความย่อ โดยตรวจสิทธิ์ก่อนแสดงผลและนับจำนวน
  17. ต้นทางของคำขอจากเบราว์เซอร์ กำหนด CORS, preflight และส่วนหัวที่อนุญาตสำหรับ API สาธารณะแยกตามไซต์
  18. การแทนที่สื่อผ่าน API การจัดการ เปลี่ยนไฟล์ผ่านบริการเดิม โดยคง ID สื่อและการอ้างอิงไว้
  19. การจัดการบัญชีของแอปที่สร้างขึ้น สร้างบัญชีพร้อมบทบาทที่เลือกและลบบัญชีที่ไม่มีข้อมูลแอปอ้างถึงได้ การลบเพิกถอนเซสชันและไม่อนุญาตให้ลบผู้ดูแลคนสุดท้าย
  20. การแก้ไขจากพรีวิว เปิดช่องข้อความและข้อความจัดรูปแบบทับตำแหน่งที่แสดงใน renderer ที่รองรับ ส่วน renderer รุ่นเก่ายังเปิดช่องที่ตรงกันในฟอร์ม
  21. การนำเข้าจาก WordPress เก็บกลุ่มและรายการซ้ำของ ACF ที่ตรวจทานแล้วเป็น JSON ที่แก้ไขได้ และให้เลือกเก็บกำหนดเผยแพร่ในอนาคตหรือเก็บเจตนาไว้ในฉบับร่างอย่างชัดเจน
  22. การอัปเดตเนื้อหาที่เลือก ให้ตรวจรายการเพิ่ม แก้ไข และลบในโมเดลที่มีข้อมูลแล้ว คงข้อมูลนอกขอบเขตและไฟล์สื่อเวอร์ชันเดิม และปฏิเสธเมื่อข้อมูลปลายทางเปลี่ยน งานทำต่อหรือยกเลิกได้ แต่ไม่มีการเลิกทำการแทนที่โดยอัตโนมัติ

การเขียนเนื้อหายังรองรับคำแปลชื่อโมเดล ฟิลด์ กลุ่ม คำช่วย และตัวเลือก โดยไม่เปลี่ยนคีย์ที่จัดเก็บ การย้ายโครงสร้างโมเดลระหว่างไซต์ต้องตรวจการเปลี่ยนแปลงที่เลือกและผูก revision ทั้งสองฝั่ง วันที่พร้อมเขตเวลาเก็บเวลา UTC และเขต IANA ปฏิเสธเวลาท้องถิ่นที่ไม่มีจริง และให้เลือก offset เมื่อเวลากำกวม AI แบบกลุ่มสร้างข้อเสนอที่แก้ไขได้โดยไม่บันทึกเนื้อหา การยกเลิกเก็บข้อเสนอที่เสร็จแล้ว ฉบับร่างอนาคตแต่ละชุดมี snapshot และสื่อที่ตรึงไว้ของตนเองโดยไม่เปลี่ยนฉบับร่างปกติ เมื่อเริ่ม release จะตรึงสาขาที่เลือก และพรีวิวรวมจะใช้สถานะตามกำหนดการในอนาคต


ยังไม่เปิดตัว (pre-MVP) และยังไม่มีเวอร์ชันเสถียร
คอมมิตซอร์สโค้ด: e207e63239a627fbd2ae9c414ef7c6eb19fcfe5a (มีการแก้ไขที่ยังไม่คอมมิต)
วันที่สร้างเอกสาร (UTC): 2026-10-21T09:28:24.214Z
คอมมิตสำหรับอัปเกรด: ระบุไม่ได้: มีการแก้ไขที่ยังไม่คอมมิต. บันทึกการเปลี่ยนแปลง