Skip to content

Commit a748a2a

Browse files
feat(v0.3.1): CSV editing MVP, video embed parsing, and planning baseline
Land v0.3.1 PRDs and ROADMAP refresh, archive v0.3.0 task snapshots, and add cyclopsctl handover scaffolding (.gitignore for .cyclopsctl/). Code: CSV rendered cell editing with size gating, undo, and keyboard navigation; initial video embed URL parsing module and parser AST hooks (rendering follows in later tasks). Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent 55dc59a commit a748a2a

26 files changed

Lines changed: 4787 additions & 362 deletions

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,3 +112,6 @@ logs
112112
# Task files
113113
# tasks.json
114114
# tasks/
115+
# Cyclopsctl (added by cyclopsctl init)
116+
cyclopsctl.toml
117+
.cyclopsctl/

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ serde_yaml = "0.9"
4545
toml = "0.8"
4646
dirs = "5"
4747
open = "5"
48+
url = "2"
4849
rfd = "0.14"
4950
log = "0.4"
5051
env_logger = "0.11"

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ This transparency is intentional — I want others to learn from (and improve up
123123

124124
> **v0.3.0 (Latest):** **eframe / egui 0.34.2** platform refresh. **PDF + themed HTML export**. **Executable code blocks** (`▶ Run`). **Rendered edit session** (one-click WYSIWYG block switching). **Split-view scroll sync**. **User accent color**. **Mermaid** insert toolbar + validation + flowchart polish. **Phosphor icons**. **Session recovery** hardening. **Quick note workflow**. See [CHANGELOG.md](CHANGELOG.md) for full details.
125125
126-
> 🛠️ **Coming in v0.3.1:** LSP diagnostics panel, executable code block hardening, and remaining Mermaid parity. See [ROADMAP.md](ROADMAP.md) for the full plan.
126+
> 🛠️ **Coming in v0.3.1:** LSP (diagnostics panel + hover/complete), YouTube embeds, Mermaid second wave, multi-window, CSV editing, and GitHub HTML parity. See [ROADMAP.md](ROADMAP.md) and [prd-v0.3.1.md](docs/ai-workflow/prds/prd-v0.3.1.md).
127127
128128
> 📦 **v0.2.6 Highlights:** Custom Editor Engine with virtual scrolling (80MB file uses ~80MB RAM), Multi-Cursor Editing, Code Folding, IME/CJK input improvements.
129129

ROADMAP.md

Lines changed: 59 additions & 20 deletions
Large diffs are not rendered by default.

ai-context.md

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# Ferrite v0.3.1 — Mermaid Wave 2, Embeds, Multi-Window, Data UX & Polish - AI Context
2+
3+
## Rules (DO NOT UPDATE)
4+
- **Implementation sessions:** follow **Implementation Phase Rules** below only.
5+
- **Update sessions:** follow **Update Phase Rules** below only when you receive the update handover prompt.
6+
- Only do the task specified; do not start the next task or go over scope.
7+
- Run `cargo test` after code changes to verify tests pass.
8+
- Follow existing code patterns and conventions.
9+
- Use Context7 MCP to fetch library documentation when needed (resolve library ID first, then fetch docs). Task operations use **`cyclopsctl tasks` CLI only**.
10+
11+
## Implementation Phase Rules
12+
When working from **`current-handover-prompt.md`** (the normal case for every cyclopsctl task cycle):
13+
14+
- **DO:** Implement and test only the current parent task described in the handover.
15+
- **DO:** Run `cargo test` before finishing; meet the task test strategy.
16+
- **DO:** Use Context7 MCP for up-to-date library documentation when implementing unfamiliar APIs or frameworks.
17+
- **DO NOT:** Read `prd.md` during cyclopsctl cycles — task scope, details, and test strategy are already in this handover.
18+
- **DO NOT:** Mark tasks done or change task status.
19+
- **DO NOT:** Run `cyclopsctl tasks next`, rewrite `current-handover-prompt.md`, or edit `ai-context.md`.
20+
- **DO NOT:** Create or update docs in `docs/`, or edit `docs/index.md`.
21+
- **DO NOT:** Edit `update-handover-prompt.md`.
22+
23+
Task completion and all documentation updates happen only in the **update phase** (`update-handover-prompt.md`).
24+
25+
## Update Phase Rules
26+
When `update-handover-prompt.md` is provided (after implementation in the same agent session):
27+
28+
- **DO:** Follow every step in `update-handover-prompt.md`.
29+
- **DO:** Use `cyclopsctl tasks list pending --project-root G:\DEV\markDownNotepad` and pick the **lowest numeric parent id** for the next handover — not `cyclopsctl tasks next` (priority can skip ahead).
30+
- **DO:** Rewrite `current-handover-prompt.md` for the **next** task (this is the only time that file may change).
31+
- **DO:** Update `ai-context.md` project memory per update handover step 2 (key facts only, not a changelog).
32+
- **DO:** Use `cyclopsctl tasks` with `--project-root G:\DEV\markDownNotepad` for all task commands (see Environment in the handover).
33+
- **DO:** Document by feature (e.g., `auth-layer.md`), not by task number; update `docs/index.md` when adding documentation.
34+
- **DO NOT:** Re-implement or extend the task you just finished unless tests are broken.
35+
36+
## Conventions
37+
- **Documentation:** Feature-based names in `docs/` (e.g., `auth-layer.md`), not `task-1.md`. Update `docs/index.md` in the update phase only.
38+
- **Tasks:** `cyclopsctl tasks` CLI only from agents.
39+
40+
## Handover Files
41+
| File | Who may edit | When |
42+
|------|----------------|------|
43+
| `current-handover-prompt.md` | Update-phase agent only | After implementation |
44+
| `update-handover-prompt.md` | Human / template only | Never edited by agents |
45+
| `ai-context.md` | Update-phase agent only | Every update phase — project memory bullets (see update handover step 2) |
46+
47+
## Tech Stack
48+
Rust
49+
50+
## Architecture & Data Model
51+
See `prd.md` for product architecture. This file captures agent workflow rules and where project artifacts live.
52+
53+
## Where Things Live
54+
| Want to... | Look in... |
55+
|------------|------------|
56+
| Product requirements | `prd.md` |
57+
| Current implementation handover | `current-handover-prompt.md` |
58+
| Post-task update rules | `update-handover-prompt.md` |
59+
| Documentation map | `docs/index.md` |
60+
| Tasks and complexity | `.cyclopsctl/tasks/tasks.json`, `.cyclopsctl/reports/complexity-report.json` |
61+
| Cyclopsctl config | `cyclopsctl.toml` |

current-handover-prompt.md

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# Session Handover
2+
3+
# Task ID: 1
4+
5+
## Environment
6+
- **Project:** Ferrite v0.3.1 — Mermaid Wave 2, Embeds, Multi-Window, Data UX & Polish
7+
- **Project root:** `G:\DEV\markDownNotepad`
8+
- **Tech stack:** ** See prd.md and ai-context.md
9+
- **Context file:** Cyclopsctl prepends `ai-context.md` automatically — follow its implementation rules.
10+
- **Branch:** `master`
11+
- **Tasks CLI:** `cyclopsctl tasks ... --project-root G:\DEV\markDownNotepad`
12+
13+
## Core Handover Rules
14+
- **NO HISTORY:** This file describes only the current task. Do not infer remaining work from prior handovers or git history.
15+
- **SCOPE:** Implement task **1** only. Do not start the next task or mark tasks done.
16+
- **IMPLEMENTATION ONLY:** Do not edit docs, `ai-context.md`, or this handover during implementation.
17+
18+
## Implementation Phase — Do Only This
19+
- Implement and test only the current parent task below.
20+
- Run `python -m pytest` before finishing; meet the task test strategy.
21+
- Use Context7 MCP for library docs per `ai-context.md` (resolve library ID first; not for task queue ops).
22+
- **Do not** mark tasks done, run `cyclopsctl tasks next`, rewrite this file, or edit `update-handover-prompt.md`.
23+
- **Do not** create or update docs in `docs/` or edit `docs/index.md`.
24+
25+
## Current Task: 1 — Execute v0.3.0 platform verification matrix (#106, #111, #112)
26+
27+
| Field | Value |
28+
|-------|--------|
29+
| ID | 1 |
30+
| Title | Execute v0.3.0 platform verification matrix (#106, #111, #112) |
31+
| Complexity | 3 |
32+
| Priority | high |
33+
| Dependencies | none |
34+
| Status | pending |
35+
36+
### Description
37+
38+
Run the remaining blank rows of the v0.3.0 regression matrix on target OSes, focusing on KBD-8 (Wayland, #106), KBD-9 (macOS Sonoma, #111), and Windows borderless (#112), and record outcomes so these carry-over gates can be closed or re-scoped.
39+
40+
### Implementation Details
41+
42+
Manual QA + documentation only; no code changes expected. Follow docs/technical/platform/v0.3.0-regression-matrix.md and fill the blank rows for Wayland keyboard handling, Sonoma keyboard handling, and Windows borderless window behaviour. Record per-row pass/fail with environment details. Update CHANGELOG.md with verification outcomes; draft closing comments for GitHub issues #106/#111/#112 when confirmed fixed, or write scoped follow-up issue text when not. Out of scope: any fixes discovered (file follow-ups instead), other matrix rows already filled.
43+
44+
### Test Strategy
45+
46+
All targeted matrix rows have recorded outcomes in v0.3.0-regression-matrix.md; CHANGELOG.md contains a platform-verification note; each of #106/#111/#112 has either a documented 'verified' result or a written, scoped follow-up. Diff review of the matrix and CHANGELOG confirms no row left blank for KBD-8/KBD-9/Windows borderless.
47+
48+
## Verification
49+
50+
```bash
51+
python -m pytest
52+
```
53+
54+
## Model Selection
55+
56+
Complexity **3****Composer 2.5** (`composer-2.5`). Informational only; the cyclopsctl selects the runtime model from the complexity report when using automated runs.

docs/ai-context.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ fn process(text: &str) -> Vec<&str> { text.lines().collect() }
8383
| External invalidation epoch (`source_epoch`) | `state.rs``Tab::source_epoch()`, `bump_source_epoch()`, `record_external_edit_from_snapshot()` |
8484
| Rendered table cells (hits, Tab focus) | `markdown/widgets.rs` `EditableTable`[`table-cell-focus-navigation.md`](./technical/markdown/table-cell-focus-navigation.md); session/force-commit in [`rendered-edit-session-tables.md`](./technical/markdown/rendered-edit-session-tables.md) |
8585
| Modify markdown parsing | `markdown/parser.rs` |
86+
| Video embed parsing | `markdown/video_embed.rs`, `parser.rs` (`VideoEmbed` AST) — [`video-embed-parsing.md`](./technical/markdown/video-embed-parsing.md) |
8687
| Modify central panel | `app/central_panel.rs` |
8788
| Add special tab | `state.rs``SpecialTabKind`, `app/central_panel.rs` |
8889
| Add viewer tab | `state.rs``TabKind` variant + state struct, `app/central_panel.rs` → render method |

docs/ai-workflow/README.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,9 @@ PRDs define features and acceptance criteria for each version.
4949
| `prd-v0.2.5.md` | v0.2.5 | Mermaid, CSV, i18n |
5050
| `prd-v0.2.6.1.md` | v0.2.6.1 | Patch & stability, PR #74, code signing |
5151
| `prd-v0.2.7.md` | v0.2.7 | Pre–v0.2.8 cycle (tasks 11–45); archived from `.taskmaster` Mar 2026 |
52-
| `prd-v0.3.0-mermaid-crate.md` | v0.3.0 | Mermaid crate extraction |
52+
| `prd-v0.3.0.md` | v0.3.0 | Platform refresh, PDF/HTML export, code run, Mermaid wave 1 (egui 0.34); archived from `.taskmaster` May 2026 |
53+
| `prd-v0.3.1.md` | v0.3.1 | LSP, video embeds, HTML Ph 1–2, Mermaid wave 2, multi-window, CSV/table UX (active PRD) |
54+
| `prd-v0.3.0-mermaid-crate.md` | v0.3.0 | Mermaid crate extraction (deferred scope doc) |
5355

5456
---
5557

@@ -67,6 +69,8 @@ Task files generated from PRDs showing how requirements were broken down.
6769
| `tasks-v0.2.6.1.json` | v0.2.6.1 | v0.2.6.1 patch release tasks |
6870
| `tasks-v0.2.7-archive-2026-03-25.json` | v0.2.7 | Full `tasks.json` snapshot (tasks 11–45) before v0.2.8 reset |
6971
| `task-complexity-report-v0.2.7-archive-2026-03-25.json` | v0.2.7 | Complexity report snapshot for that cycle |
72+
| `tasks-v0.3.0-archive-2026-05-31.json` | v0.3.0 | Full `tasks.json` snapshot (tasks 57–106, 50 tasks) before v0.3.1 reset |
73+
| `task-complexity-report-v0.3.0-archive-2026-05-31.json` | v0.3.0 | Complexity report snapshot for v0.3.0 cycle |
7074
| `tasks-v0.3.0-mermaid-crate.json` | v0.3.0 | Mermaid crate tasks |
7175

7276
---

0 commit comments

Comments
 (0)