`AIChatPlaceholder` + the model-picker dropdown now read op-editor-core types directly: - `ChatState` / `ChatRole` / `ChatMessage` / `ModelEntry` / `AgentProvider` swap from shell-core (`document::*` / `chat_models::*` / `agent_settings_state::*`) to `op_editor_core::chat::*`. - `AIChatPlaceholder::from_editor[_at]` takes `&EditorState`, reading `state.chat` + resolving chrome labels through `editor_state_ext`'s `translate` / `theme_for` instead of `Document::t` / `Document::theme`. Both hosts' paint + click + press call sites feed `&EditorState`. The desktop model-discovery worker keeps emitting shell-core `ModelEntry`s, already translated to op-editor-core's at the `editor_state.chat` write boundary in `model_discovery.rs` — no change needed there. |
||
|---|---|---|
| .. | ||
| op-editor-core | ||
| op-i18n | ||
| op-pen-loader | ||
| openpencil-desktop | ||
| openpencil-shell-core | ||
| openpencil-shell-native | ||
| openpencil-shell-web | ||
| wasm-libc-shim | ||
| CLAUDE.md | ||