Skip to content

Commit 684b3e4

Browse files
iptouxMaik Roland Dammclaude
authored
feat(deps): upgrade leptos 0.7->0.8 + leptos_icons/icondata 0.5->0.7 (#5)
* feat(setup): enhance setup and release automation with platform-specific scripts * feat(deps): upgrade leptos 0.7→0.8, leptos_icons 0.5→0.7, icondata 0.5→0.7 Lucide icon renames required by icondata 0.7: - LuFileEdit → LuFilePenLine - LuPlusCircle → LuCirclePlus - LuSendHorizonal → LuSendHorizontal (typo fix) - LuAlertTriangle → LuTriangleAlert - LuTerminalSquare → LuSquareTerminal - LuPlayCircle/AlertCircle/CheckCircle/MinusCircle → LuCircle* variants No reactive API changes needed — leptos 0.8 is backward-compatible for all signal, effect, callback and event-listener APIs used here. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * ci: add PR cargo check workflow Runs cargo check for both crates on every pull request: - blxcode (Tauri backend, native Linux) - blxcode-ui (Leptos frontend, wasm32-unknown-unknown) Uses dtolnay/rust-toolchain for reliable toolchain setup and actions/cache to speed up repeated runs. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * feat(plans): add Kanban board view and manage plans skill documentation * fix(setup): correct root directory path resolution in Windows setup script * fix(setup): update script paths in setup scripts for consistency --------- Co-authored-by: Maik Roland Damm <maik.damm@bluewave-tech.de> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 7f4ae3d commit 684b3e4

17 files changed

Lines changed: 442 additions & 26 deletions

File tree

.agents/plans/PLANS.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,4 @@ Persistent plans for multi-step work on **blxcode**. Individual plans live as Ma
1212
| done | [skills-rules-tabs.md](skills-rules-tabs.md) | Neue RightPanel-Tabs für Skills & Rules: Card-Liste mit Toggle, Skill-Install-Dialog (git/npm/local), agent toolcalls (list/read/write/enable/remove/install), index.json pro Bereich, System-Prompt-Update |
1313
| done | [terminal-agent-context-handoff.md](terminal-agent-context-handoff.md) | BLXCode Agent kann aktuellen Kontext gezielt per Toolcall an Terminal-Agent-Sessions uebergeben; Bilder werden als Metadaten plus lokale Pfade exportiert |
1414
| planned | [plan-manager.md](plan-manager.md) | Plan Manager fuer `.agents/plans`: Manage-Tab wie Memory Files, plan-linked Tasks gruppiert, Agent-Toolcalls, System-Prompt-Update und shared Context fuer BLXCode Agent plus Terminal-Handoff |
15+
| planned | [kanban-board-view.md](kanban-board-view.md) | Kanban-View im Plans-Panel fuer alle Plan-Tasks eines Workspaces: Status-Spalten, Drag-and-Drop fuer Karten und Spalten, Spalten ein-/ausblenden und Markdown-Writeback |

.agents/plans/kanban-board-view.md

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
# Kanban Board View fuer Plan-Tasks
2+
3+
## Summary
4+
5+
Ergaenze im bestehenden Plans-Panel eine schnell umschaltbare Kanban-Ansicht fuer alle Plan-Tasks eines Workspaces. Die Datenquelle bleiben die Markdown-Plaene unter `.agents/plans/*.md`; `PLANS.md` ist weiter der geschuetzte Index und wird fuer Kanban-Tasks ignoriert.
6+
7+
Die Kanban-Spalten sind fest an die vorhandenen Task-Statuswerte gebunden: pending, in progress, blocked, completed und cancelled. User koennen Spalten per Drag and Drop umsortieren und leere Spalten ausblenden oder wieder einblenden. Task-Karten koennen per Drag and Drop zwischen Spalten verschoben werden; das aktualisiert den Task-Status und schreibt den passenden Marker zurueck in die jeweilige Plan-Markdown-Datei.
8+
9+
## Decisions
10+
11+
- Es gibt keine frei definierbaren neuen Statuswerte.
12+
- "Boards anlegen/entfernen/bewegen" wird als Spaltenverwaltung interpretiert, nicht als mehrere unabhaengige Boards.
13+
- Kanban zeigt alle Tasks aus Nicht-Index-Plaenen im aktiven Workspace.
14+
- Freie Tasks ohne `planPath` bleiben ausserhalb dieser Kanban-View.
15+
16+
## Implementation Notes
17+
18+
### Backend
19+
20+
- Neues fokussiertes Kanban/Plan-Task-Modul anlegen, statt `plans.rs` weiter wachsen zu lassen.
21+
- Workspace-Konfiguration unter `.blxcode/kanban/index.json` speichern:
22+
- `version`
23+
- `columnOrder: TaskStatus[]`
24+
- `hiddenColumns: TaskStatus[]`
25+
- `cardOrder: { cardKey: string, rank: u32 }[]`
26+
- Neue Tauri-Kommandos ergaenzen:
27+
- `kanban_settings_get(workspaceCwd)`
28+
- `kanban_settings_save(workspaceCwd, settings)`
29+
- `plan_task_list_all(workspaceCwd)`
30+
- `plan_task_create(workspaceCwd, planPath, status, title)`
31+
- `plan_task_update(workspaceCwd, planPath, planTaskId, patch)`
32+
- `plan_task_delete(workspaceCwd, planPath, planTaskId)`
33+
- Plan-Task-Mutationen muessen die vorhandenen Parser/Rewriter aus `plans.rs` nutzen, damit Markdown-Syntax und Statusmarker konsistent bleiben.
34+
- Wenn ein Kanban-Task bereits im `.blxcode/tasks`-Store gespiegelt ist, soll der Store best-effort mit aktualisiert werden.
35+
36+
### Frontend
37+
38+
- `PlansPanel` um einen View-Mode `Editor | Preview | Kanban` erweitern.
39+
- Kanban als eigenen Komponentenordner unter `src/workbench/plans_panel/kanban/` umsetzen, inklusive eigener CSS-Datei.
40+
- Typed IPC-Wrappers und Wire-Typen in `tauri_bridge.rs` ergaenzen.
41+
- Kanban-Toggle in die bestehende Plans-Toolbar setzen.
42+
- Board-Layout:
43+
- horizontale Status-Spalten mit Scroll bei schmalem Right-Panel
44+
- moderne, dichte Workspace-UI im bestehenden dunklen Theme
45+
- Statusfarben: blau aktiv, gelb blocked, gruen completed, rot/gedaempft cancelled
46+
- Karten zeigen Task-Titel, Plan-Badge/Pfad und Status-Akzent
47+
- Spaltenverwaltung:
48+
- Spalten-Drag-and-Drop persistiert `columnOrder`
49+
- Ausblenden ist nur fuer leere Spalten erlaubt
50+
- Wiedereinblenden erfolgt ueber ein kleines Columns-Menue
51+
- Task-Management:
52+
- Quick-add pro Spalte erstellt eine Task im Zielplan
53+
- Zielplan-Auswahl im Kanban-Header
54+
- Default-Zielplan: aktuell gewaehlter Nicht-Index-Plan, sonst `activePlanPath`, sonst erster Nicht-Index-Plan
55+
- Karten-Drop in andere Spalte aktualisiert den Status im Plan-Markdown
56+
- Karten-Drop innerhalb derselben Spalte aktualisiert nur die Kanban-Reihenfolge
57+
58+
## Public Interfaces
59+
60+
- Neue IPC-Typen:
61+
- `KanbanSettings`
62+
- `KanbanColumnStatus`
63+
- `PlanTaskCard`
64+
- `PlanTaskCreateInput`
65+
- `PlanTaskUpdatePatch`
66+
- Bestehende `TaskStatus`-Werte bleiben unveraendert.
67+
- Bestehende `plan_load`, `plan_sync_from_tasks` und `tasks_update` bleiben kompatibel.
68+
- I18n-Keys fuer Kanban-Toggle, Columns-Menue, Empty-State, Zielplan-Auswahl, Add/Delete und Drag-Fehler in allen Locale-Tabellen ergaenzen.
69+
70+
## Tests
71+
72+
- Backend:
73+
- Kanban-Settings werden initial mit Default-Spalten erzeugt und persistiert.
74+
- `plan_task_list_all` liest Tasks aus mehreren Nicht-Index-Plaenen und ignoriert `PLANS.md`.
75+
- Status-Update schreibt korrekte Marker: `[ ]`, `[>]`, `[!]`, `[x]`, `[-]`.
76+
- Task-Erstellung erzeugt stabile eindeutige `planTaskId`s und haengt an `## Tasks` an.
77+
- Task-Loeschung entfernt nur die passende Task-Zeile und erhaelt andere Markdown-Abschnitte.
78+
- Pfad-Sandboxing verhindert absolute Pfade, `..` und Nicht-Markdown-Ziele.
79+
- Frontend:
80+
- `cargo check -p blxcode-ui --target wasm32-unknown-unknown`
81+
- `cargo check -p blxcode`
82+
- Manuelle UI-Pruefung in Tauri/Trunk: Toggle Editor/Kanban, Karten-DnD, Spalten-DnD, Spalten aus-/einblenden, Quick-add.
83+
84+
## Tasks
85+
86+
- [ ] `backend-kanban-store` - Workspace Kanban settings store unter `.blxcode/kanban/index.json` implementieren.
87+
- [ ] `backend-plan-task-api` - Plan-Task IPC fuer Listen, Erstellen, Aktualisieren und Loeschen ergaenzen.
88+
- [ ] `backend-sync-tests` - Parser/Rewriter-, Sandbox- und Markdown-Writeback-Tests fuer Kanban-Mutationen abdecken.
89+
- [ ] `frontend-kanban-module` - Kanban-Komponentenordner, typed IPC-Wrappers und View-Mode im Plans-Panel ergaenzen.
90+
- [ ] `frontend-dnd-columns` - Spaltenreihenfolge, Ausblenden und Wiedereinblenden mit Drag and Drop und persistierter Config bauen.
91+
- [ ] `frontend-dnd-cards` - Karten zwischen Status-Spalten und innerhalb von Spalten verschiebbar machen.
92+
- [ ] `frontend-task-actions` - Quick-add, Zielplan-Auswahl und Delete/Edit-Aktionen fuer Kanban-Karten anbinden.
93+
- [ ] `i18n-docs` - I18n-Keys und User/Developer-Dokumentation zur Kanban-View ergaenzen.
94+
- [ ] `verification` - Cargo-Checks und manuelle UI-Pruefung durchfuehren.
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
# Plan: Leptos 0.7 → 0.8 + leptos_icons/icondata 0.5 → 0.7
2+
3+
## Status: IN PROGRESS — Cargo.toml already bumped, code not yet fixed
4+
5+
## Context
6+
7+
Upgrading the three coupled frontend deps:
8+
- `leptos` 0.7.8 → 0.8.19
9+
- `leptos_icons` 0.5 → 0.7.1 (requires leptos 0.8)
10+
- `icondata` 0.5 → 0.7 (paired with leptos_icons)
11+
12+
Research confirmed **most leptos API is unchanged** between 0.7 and 0.8. The only true breaking change is in **leptos_icons**: the `icon` prop changed from a bare `icondata_core::Icon` value to `Signal<icondata_core::Icon>`.
13+
14+
---
15+
16+
## Breaking Changes
17+
18+
| Change | Scope | Fix |
19+
|---|---|---|
20+
| `leptos_icons::Icon` prop `icon:` changed from `icondata_core::Icon` to `Signal<icondata_core::Icon>` | 20 files | Wrap every `icon={icondata::LuX}``icon=Signal::derive(\|\| icondata::LuX)` |
21+
| leptos prelude now also exports `write::*` (additive) | Possible name shadowing | Fix any name conflicts from compile errors |
22+
| reactive_graph 0.1 → 0.2, tachys 0.1 → 0.2 | Internal | No code changes expected |
23+
24+
---
25+
26+
## Fix Pattern
27+
28+
```rust
29+
// Before (leptos_icons 0.5):
30+
<LxIcon icon={icondata::LuTerminal} width="16" height="16" />
31+
32+
// After (leptos_icons 0.7):
33+
<LxIcon icon=Signal::derive(|| icondata::LuTerminal) width="16" height="16" />
34+
```
35+
36+
`Signal` is already in scope via `leptos::prelude::*` — no extra import needed.
37+
38+
---
39+
40+
## Files to Update (20 files — all `<LxIcon icon={...}>` call sites)
41+
42+
All in `src/workbench/`:
43+
1. `agent_context_handoff.rs`
44+
2. `agent_panel/context_list.rs`
45+
3. `agent_panel/mod.rs`
46+
4. `agent_panel/timeline.rs` ← also has `fn -> icondata::Icon` return type — leave that alone
47+
5. `agent_panel/voice_orb/mod.rs`
48+
6. `create_workspace_wizard.rs`
49+
7. `git_graph/mod.rs`
50+
8. `harness_image_pane/mod.rs`
51+
9. `harness_ui.rs`
52+
10. `harness_voice_pane/mod.rs`
53+
11. `memory_graph/mod.rs`
54+
12. `memory_panel.rs`
55+
13. `model_picker/mod.rs`
56+
14. `plans_panel/mod.rs`
57+
15. `project_explorer/mod.rs`
58+
16. `right_panel.rs`
59+
17. `skills_rules_panel/rules_tab.rs`
60+
18. `skills_rules_panel/skills_tab.rs`
61+
19. `terminal_cell.rs`
62+
20. `workspace_panel.rs`
63+
64+
---
65+
66+
## Execution Steps
67+
68+
1. ~~Bump `leptos = "0.8"`, `leptos_icons = "0.7"`, `icondata = "0.7"` in `Cargo.toml`~~ ✅ Done
69+
2. Run `cargo check -p blxcode-ui --target wasm32-unknown-unknown` — collect all errors
70+
3. For each error: wrap `icondata::Lu*` in `Signal::derive(|| ...)`
71+
4. Re-run `cargo check` — fix any residual errors
72+
5. Final: `cargo check -p blxcode` + `cargo check -p blxcode-ui --target wasm32-unknown-unknown`
73+
74+
---
75+
76+
## APIs Confirmed Unchanged (no edits needed)
77+
78+
- `window_event_listener_untyped` — same (11 files safe)
79+
- `mount_to_body()` — same
80+
- `Effect::new()` — same (19 files safe)
81+
- `spawn_local` at `leptos::task::spawn_local` — same (27 files safe)
82+
- `on_cleanup` — same (14 files safe)
83+
- `Callback<In, Out>` / `Callable` — same (8 files safe)
84+
- `signal()`, `RwSignal::new()`, `.get()`, `.set()` — same
85+
- `Signal::derive()`, `Memo::new()` — same
86+
- `provide_context` / `expect_context` — same
87+
- `NodeRef::<html::Div>`, `NodeRef::<html::Audio>` — same
88+
- `Show`, `For` in `view!` macro — same

.agents/skills/index.json

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,14 @@
3333
"installedAt": "2026-05-20T11:32:10Z",
3434
"updatedAt": "2026-05-20T11:32:10Z"
3535
},
36+
"manage-plans": {
37+
"enabled": true,
38+
"source": {
39+
"kind": "local"
40+
},
41+
"installedAt": "2026-05-21T00:00:00Z",
42+
"updatedAt": "2026-05-21T00:00:00Z"
43+
},
3644
"rust-async-patterns": {
3745
"enabled": true,
3846
"source": {
@@ -58,4 +66,4 @@
5866
"updatedAt": "2026-05-20T11:32:10Z"
5967
}
6068
}
61-
}
69+
}
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
---
2+
name: manage-plans
3+
description: Create, update, and maintain BLXCode workspace plans under `.agents/plans/`. Use when Codex needs to add a new implementation plan, refine an existing plan, update plan task status, keep `PLANS.md` indexed, or explain the repository's Markdown plan format and task syntax to agents.
4+
---
5+
6+
# Manage BLXCode Plans
7+
8+
## Core Rules
9+
10+
- Store durable plans in `.agents/plans/` as Markdown files.
11+
- Keep `.agents/plans/PLANS.md` as the protected index. Do not delete or rename it.
12+
- Use one focused plan file per feature, refactor, investigation, or multi-step implementation.
13+
- Prefer lowercase hyphenated filenames ending in `.md`, for example `kanban-board-view.md`.
14+
- Keep plans agent-actionable: concrete enough to implement, but not bloated with unrelated analysis.
15+
- Update the plan as work changes. A stale plan is worse than no plan.
16+
17+
## Plan File Structure
18+
19+
Use this default structure for new plans:
20+
21+
```markdown
22+
# Short Plan Title
23+
24+
## Summary
25+
26+
Briefly state the goal, current direction, and important constraints.
27+
28+
## Decisions
29+
30+
- Record product or technical decisions that should not be rediscovered.
31+
- Include assumptions when the user has not explicitly decided something.
32+
33+
## Implementation Notes
34+
35+
- Describe the intended approach by subsystem or behavior.
36+
- Mention important files only when needed to avoid ambiguity.
37+
- Include public APIs, storage formats, commands, or UI contracts when they change.
38+
39+
## Tests
40+
41+
- List backend, frontend, integration, and manual checks expected for the work.
42+
43+
## Tasks
44+
45+
- [ ] `stable-task-id` - Concrete task title
46+
```
47+
48+
Small plans may omit `Decisions` or `Implementation Notes` if they would be empty. Keep `Summary`, `Tests`, and `Tasks` whenever the plan is meant to guide implementation.
49+
50+
## Task Syntax
51+
52+
BLXCode parses plan tasks from a `## Tasks` section. `## Todos` is accepted, but prefer `## Tasks`.
53+
54+
Use exactly one task per line:
55+
56+
```markdown
57+
- [ ] `task-id` - Pending task
58+
- [>] `active-task` - In-progress task
59+
- [!] `blocked-task` - Blocked task
60+
- [x] `done-task` - Completed task
61+
- [-] `cancelled-task` - Cancelled task
62+
```
63+
64+
Status markers:
65+
66+
- `[ ]` pending
67+
- `[>]` in progress
68+
- `[!]` blocked
69+
- `[x]` completed
70+
- `[-]` cancelled
71+
72+
Task IDs must be stable, unique within the plan, lowercase where practical, and wrapped in backticks. Do not rename a task ID casually because BLXCode uses it to sync plan-linked tasks.
73+
74+
## Creating A New Plan
75+
76+
1. Check `.agents/plans/PLANS.md` and existing plan filenames to avoid duplicates.
77+
2. Create a focused `.md` file under `.agents/plans/`.
78+
3. Add a clear H1 title and the standard sections above.
79+
4. Add concrete `## Tasks` entries using stable task IDs.
80+
5. Add a row to `.agents/plans/PLANS.md` with status, link, and concise description.
81+
82+
Index row format:
83+
84+
```markdown
85+
| planned | [new-plan.md](new-plan.md) | One-sentence description of the intended work |
86+
```
87+
88+
Use `planned`, `active`, `blocked`, `done`, or `cancelled` in the index status column. Match the style already used in `PLANS.md`.
89+
90+
## Updating Existing Plans
91+
92+
- Update task status markers when work progresses.
93+
- Add tasks when the implementation discovers real new work.
94+
- Remove tasks only when they are invalid or superseded; prefer `[-]` for cancelled work with useful history.
95+
- Keep the index row status aligned with the plan's actual state.
96+
- Preserve unrelated sections and user-authored content.
97+
- Avoid reformatting the whole file unless explicitly asked.
98+
99+
## Quality Bar
100+
101+
- Make each task independently actionable.
102+
- Avoid vague tasks like "fix stuff" or "improve UI".
103+
- Include edge cases and acceptance checks in `Tests`, not as hidden assumptions.
104+
- For UI work, include expected user-visible behavior.
105+
- For storage/API work, include compatibility and migration expectations.
106+
- Do not include implementation details that are merely guesses if the repo can answer them; inspect first.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
interface:
2+
display_name: "Manage Plans"
3+
short_description: "Create and maintain BLXCode Markdown plans."
4+
default_prompt: "Create or update a BLXCode plan under .agents/plans using the repository plan format."

.github/workflows/pr-check.yml

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
name: PR Check
2+
3+
on:
4+
pull_request:
5+
6+
jobs:
7+
cargo-check:
8+
name: cargo check
9+
runs-on: ubuntu-latest
10+
11+
steps:
12+
- uses: actions/checkout@v4
13+
14+
- name: Install Rust stable
15+
uses: dtolnay/rust-toolchain@stable
16+
with:
17+
targets: wasm32-unknown-unknown
18+
19+
- name: Cache cargo registry + build
20+
uses: actions/cache@v4
21+
with:
22+
path: |
23+
~/.cargo/registry/index
24+
~/.cargo/registry/cache
25+
~/.cargo/git/db
26+
target
27+
key: ${{ runner.os }}-cargo-check-${{ hashFiles('**/Cargo.lock') }}
28+
restore-keys: ${{ runner.os }}-cargo-check-
29+
30+
- name: Install Linux system deps (for cpal / Tauri)
31+
run: |
32+
sudo apt-get update -qq
33+
sudo apt-get install -y --no-install-recommends \
34+
libasound2-dev \
35+
libgtk-3-dev \
36+
libwebkit2gtk-4.1-dev \
37+
libappindicator3-dev \
38+
librsvg2-dev \
39+
patchelf
40+
41+
- name: Check backend (blxcode)
42+
run: cargo check -p blxcode
43+
44+
- name: Check frontend (blxcode-ui, WASM)
45+
run: cargo check -p blxcode-ui --target wasm32-unknown-unknown

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
99

1010
### Added
1111

12+
- **Interactive setup scripts**: platform-specific post-clone setup helpers under `scripts/setup/` for Linux, macOS and Windows. They install/check Rust, `wasm32-unknown-unknown`, Trunk, Tauri CLI, Node/npm frontend assets, OS-native Tauri dependencies, and optional verification/bundle builds.
13+
- **Native release script counterparts**: PowerShell and Command Prompt release entrypoints (`scripts/release.ps1`, `scripts/release.cmd`, `scripts/release-windows.*`) plus a macOS launcher (`scripts/release-macos.sh`). The PowerShell modules under `scripts/release/*.ps1` mirror the Bash release pipeline for version bumps, CHANGELOG finalization, Tauri builds, artifact discovery, and GitHub uploads.
14+
1215
### Changed
1316

17+
- **Docs**: README, developer setup, build guide, and `.env.release.example` now document the setup and cross-platform release automation paths.
18+
1419
### Fixed
1520

1621
### Removed

0 commit comments

Comments
 (0)