Sprint 11/12/13 — 선택하이라이트 + 저장/로드 + Tauri앱 스켈레톤
Sprint 11 (Selection highlight + 단면 UI): - FeatureDraw: CPU 정점 저장, update_highlight() — 선택 시 yellow-orange - 렌더 루프: background mesh(지면+선형) + 피처별 독립 draw call 분리 - SceneParams: GirderSectionType (PscI / SteelBox), show_alignment - egui: 단면형식 ComboBox, 선형표시 checkbox - SteelBox 단면 지원 (span 비례 자동 치수) - build_background_scene(): 지면+선형만 반환 Sprint 12 (Project save/load): - project_file.rs: ProjectFile struct, to_params/from_params, save/load JSON - egui: 💾 저장 / 📂 불러오기 버튼 - projects/ 폴더 자동 생성 Sprint 13 (Tauri app skeleton): - crates/app/: Cargo.toml + main.rs (Tauri v2 통합 scaffold) - 기동 시 PureRustKernel 동작 검증 - Tauri setup checklist 주석으로 문서화 - workspace에 cimery-app 추가 cargo check --workspace 통과 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
27
cimery/crates/app/Cargo.toml
Normal file
27
cimery/crates/app/Cargo.toml
Normal file
@@ -0,0 +1,27 @@
|
||||
[package]
|
||||
name = "cimery-app"
|
||||
version.workspace = true
|
||||
edition.workspace = true
|
||||
description = "cimery desktop application (Tauri v2 + Leptos UI)"
|
||||
|
||||
[features]
|
||||
# Geometry backends
|
||||
occt = ["cimery-kernel/occt"]
|
||||
|
||||
[dependencies]
|
||||
cimery-core = { workspace = true }
|
||||
cimery-ir = { workspace = true }
|
||||
cimery-dsl = { workspace = true }
|
||||
cimery-kernel = { workspace = true }
|
||||
cimery-incremental = { workspace = true }
|
||||
cimery-evaluator = { workspace = true }
|
||||
cimery-usd = { workspace = true }
|
||||
|
||||
serde = { workspace = true }
|
||||
serde_json = { workspace = true }
|
||||
log = { workspace = true }
|
||||
env_logger = { workspace = true }
|
||||
|
||||
# Tauri v2 (ADR-001: desktop packaging)
|
||||
# Uncomment when setting up Tauri project:
|
||||
# tauri = { version = "2", features = ["devtools"] }
|
||||
61
cimery/crates/app/src/main.rs
Normal file
61
cimery/crates/app/src/main.rs
Normal file
@@ -0,0 +1,61 @@
|
||||
//! cimery-app — Tauri v2 desktop application skeleton.
|
||||
//!
|
||||
//! ADR-001: Tauri v2 (desktop) + PWA (web) dual-target.
|
||||
//! ADR-003 A3: Gitea CI → GitHub Actions for Win/macOS release builds.
|
||||
//!
|
||||
//! # Sprint 13 (this file): application shell scaffold
|
||||
//! - Tauri integration commented out (requires `tauri init` + frontend setup)
|
||||
//! - Core domain logic wired and accessible
|
||||
//!
|
||||
//! # Sprint 14: Leptos UI frontend
|
||||
//! - Leptos component tree for ribbon/panel/viewport layout
|
||||
//! - wgpu viewport embedded as a <canvas> element
|
||||
//! - Property panel connected to cimery-dsl builders
|
||||
//!
|
||||
//! # Tauri setup checklist (run once):
|
||||
//! 1. `cargo tauri init` in this directory
|
||||
//! 2. Edit `tauri.conf.json`: app name, window size, icons
|
||||
//! 3. Implement Tauri commands (IPC bridge) in `src/commands.rs`
|
||||
//! 4. Set up Leptos frontend in `src/ui/`
|
||||
|
||||
use cimery_dsl::Girder;
|
||||
use cimery_core::UnitExt;
|
||||
use cimery_kernel::{GeomKernel, PureRustKernel};
|
||||
|
||||
fn main() {
|
||||
env_logger::init();
|
||||
|
||||
// ── Quick sanity check: build a test girder ──────────────────────────────
|
||||
let girder = Girder::builder()
|
||||
.station_start(0.0.m())
|
||||
.station_end(40.0.m())
|
||||
.section_psc_i_default()
|
||||
.count(5)
|
||||
.spacing(2500.0.mm())
|
||||
.build()
|
||||
.expect("valid girder");
|
||||
|
||||
let mesh = PureRustKernel.girder_mesh(&girder.ir)
|
||||
.expect("girder mesh");
|
||||
|
||||
log::info!(
|
||||
"cimery-app startup OK — test girder: span={:.0}m, triangles={}",
|
||||
girder.ir.span_m(), mesh.triangle_count()
|
||||
);
|
||||
|
||||
// ── Tauri entry point (activate when Tauri is set up) ──────────────────
|
||||
// Uncomment after `cargo tauri init`:
|
||||
//
|
||||
// tauri::Builder::default()
|
||||
// .invoke_handler(tauri::generate_handler![
|
||||
// commands::get_scene_params,
|
||||
// commands::set_scene_params,
|
||||
// commands::save_project,
|
||||
// commands::load_project,
|
||||
// ])
|
||||
// .run(tauri::generate_context!())
|
||||
// .expect("Tauri runtime error");
|
||||
|
||||
println!("cimery-app v{}", env!("CARGO_PKG_VERSION"));
|
||||
println!("Tauri integration: pending (Sprint 14 — run `cargo tauri init`)");
|
||||
}
|
||||
Reference in New Issue
Block a user