From b755c6bcbcfc6c37643e1769bda65a222db82ca6 Mon Sep 17 00:00:00 2001 From: Chili Palmer Date: Sun, 5 Apr 2026 16:28:59 +0200 Subject: [PATCH] feat: first take at milestone M3 --- crates/bds-core/src/engine/mod.rs | 2 + crates/bds-core/src/engine/script.rs | 431 +++++++++++ crates/bds-core/src/engine/template.rs | 550 ++++++++++++++ crates/bds-editor/src/buffer.rs | 718 ++++++++++++++++-- crates/bds-editor/src/highlight.rs | 95 ++- crates/bds-editor/src/history.rs | 115 +++ crates/bds-editor/src/lib.rs | 5 +- crates/bds-editor/src/widget.rs | 403 ++++++++-- crates/bds-ui/src/app.rs | 651 +++++++++++++++- crates/bds-ui/src/components/inputs.rs | 166 ++++ crates/bds-ui/src/components/mod.rs | 1 + crates/bds-ui/src/lib.rs | 1 + crates/bds-ui/src/views/dashboard.rs | 104 +++ crates/bds-ui/src/views/media_editor.rs | 208 +++++ crates/bds-ui/src/views/mod.rs | 8 + crates/bds-ui/src/views/post_editor.rs | 199 +++++ crates/bds-ui/src/views/script_editor.rs | 232 ++++++ crates/bds-ui/src/views/settings_view.rs | 431 +++++++++++ crates/bds-ui/src/views/tags_view.rs | 309 ++++++++ crates/bds-ui/src/views/template_editor.rs | 211 +++++ crates/bds-ui/src/views/translation_editor.rs | 154 ++++ crates/bds-ui/src/views/workspace.rs | 157 +++- locales/ui/de.json | 71 +- locales/ui/en.json | 71 +- locales/ui/es.json | 71 +- locales/ui/fr.json | 71 +- locales/ui/it.json | 71 +- 27 files changed, 5372 insertions(+), 134 deletions(-) create mode 100644 crates/bds-core/src/engine/script.rs create mode 100644 crates/bds-core/src/engine/template.rs create mode 100644 crates/bds-editor/src/history.rs create mode 100644 crates/bds-ui/src/components/inputs.rs create mode 100644 crates/bds-ui/src/components/mod.rs create mode 100644 crates/bds-ui/src/views/dashboard.rs create mode 100644 crates/bds-ui/src/views/media_editor.rs create mode 100644 crates/bds-ui/src/views/post_editor.rs create mode 100644 crates/bds-ui/src/views/script_editor.rs create mode 100644 crates/bds-ui/src/views/settings_view.rs create mode 100644 crates/bds-ui/src/views/tags_view.rs create mode 100644 crates/bds-ui/src/views/template_editor.rs create mode 100644 crates/bds-ui/src/views/translation_editor.rs diff --git a/crates/bds-core/src/engine/mod.rs b/crates/bds-core/src/engine/mod.rs index 9f49356..adb5f09 100644 --- a/crates/bds-core/src/engine/mod.rs +++ b/crates/bds-core/src/engine/mod.rs @@ -6,7 +6,9 @@ pub mod tag; pub mod post; pub mod media; pub mod post_media; +pub mod template; pub mod template_rebuild; +pub mod script; pub mod script_rebuild; pub mod task; pub mod metadata_diff; diff --git a/crates/bds-core/src/engine/script.rs b/crates/bds-core/src/engine/script.rs new file mode 100644 index 0000000..144ebee --- /dev/null +++ b/crates/bds-core/src/engine/script.rs @@ -0,0 +1,431 @@ +use std::fs; +use std::path::Path; + +use rusqlite::Connection; +use uuid::Uuid; + +use crate::db::queries::script as qs; +use crate::engine::{EngineError, EngineResult}; +use crate::model::{Script, ScriptKind, ScriptStatus}; +use crate::util::frontmatter::{write_script_file, ScriptFrontmatter}; +use crate::util::{atomic_write_str, ensure_unique, now_unix_ms, slugify}; + +/// Create a new draft script. Content stored in DB, no file written. +pub fn create_script( + conn: &Connection, + project_id: &str, + title: &str, + kind: ScriptKind, + content: &str, + entrypoint: Option<&str>, +) -> EngineResult