|
| 1 | +## v0.0.161 (2026-02-26) |
| 2 | + |
| 3 | +### Feat |
| 4 | + |
| 5 | +- implement PDD_GH_TOKEN_FILE push retry in agentic_e2e_fix_orchestrator (#629) |
| 6 | +- add PDD_GH_TOKEN_FILE push retry to e2e fix orchestrator prompt (#629) |
| 7 | +- Add position coordinates to various architectural components in `architecture.json`. |
| 8 | +- Implement and test node grouping with relative layout for sub-flow nodes in the DependencyViewer. |
| 9 | +- **architecture_sync**: auto-fix renamed step files and register untracked prompts |
| 10 | +- update Next.js API route handlers to await dynamic route parameters and refine pipeline configurations |
| 11 | +- verify all 116 checklist items and fix annotation refresh after batch resolve (TDD) |
| 12 | +- implement working Remotion/Claude environment (TDD) |
| 13 | +- Allow creation of drawing-only annotations via API and improve `FixPreviewPanel` robustness with null-safety checks for `filesModified` and `confidence`. |
| 14 | + |
| 15 | +### Fix |
| 16 | + |
| 17 | +- add namespace package fallback to import validation (#572) |
| 18 | +- validate Python imports after generation in agentic mode (#572) |
| 19 | +- address PR #631 review — URL-encode token and warn on restore failure |
| 20 | +- prevent token leakage and add missing protect_tests to prompt interface |
| 21 | +- correct misleading log message and outdated test docstrings (#573) |
| 22 | +- reject coverage=0.0 as pipeline success when tests pass (#573) |
| 23 | +- **test-batch-ann-1772149596067**: Subtitle font size 96px causes text to clip the ri |
| 24 | +- **test-batch-ann-1772145259285**: Subtitle font size 96px causes text to clip the ri |
| 25 | +- **test-batch-ann-1772144357396**: Subtitle font size 96px causes text to clip the ri |
| 26 | +- **test-batch-ann-1772144248964**: Subtitle font size 96px causes text to clip the ri |
| 27 | +- **test-batch-ann-1772138159325**: Subtitle font size 96px causes text to clip the ri |
| 28 | +- **test-batch-ann-1772138080231**: Subtitle font size 96px causes text to clip the ri |
| 29 | +- **test-batch-ann-1772137614567**: Subtitle font size 96px causes text to clip the ri |
| 30 | +- **test-batch-ann-1772137505532**: Subtitle font size 96px causes text to clip the ri |
| 31 | +- **test-batch-ann-1772137500794**: Subtitle font size 96px causes text to clip the ri |
| 32 | +- **test-batch-ann-1772133369466**: Subtitle font size 96px causes text to clip the ri |
| 33 | +- **test-batch-ann-1772132467714**: Subtitle font size 96px causes text to clip the ri |
| 34 | +- **test-batch-ann-1772132380789**: Subtitle font size 96px causes text to clip the ri |
| 35 | +- **test-batch-ann-1772129529612**: Subtitle font size 96px causes text to clip the ri |
| 36 | +- **test-batch-ann-1772129479688**: Subtitle font size 96px causes text to clip the ri |
| 37 | +- ensure Audit API `specPath` is consistently prefixed with `specs/` and Stage 10 Audit spec viewer correctly parses JSON responses. |
| 38 | + |
| 39 | +### Refactor |
| 40 | + |
| 41 | +- remove unused project_root param from _validate_python_imports |
| 42 | +- remove agentic architecture workflow LLM prompts from architecture.json.refactor: remove agentic architecture workflow LLM prompts from architecture.json. |
| 43 | +- update CLI core dump and output capture logic, add new TTS API prompt, and adjust video editor components and tests. |
| 44 | +- Update API route generation prompts to include explicit implementation details and dependency specifications for pipeline stages. |
| 45 | + |
| 46 | +## v0.0.160 (2026-02-25) |
| 47 | + |
| 48 | +### Feat |
| 49 | + |
| 50 | +- **Module grouping in architecture view** — Modules can now be assigned to named groups that collapse into a single summary node. New `GroupNode` and `GroupEditModal` components; `ArchitectureModule` schema gains an optional `group` field. Groups auto-expand on first appearance and support edit-mode rename/reassignment via a batch update. Dagre layout uses virtual group→child edges for placement. |
| 51 | +- **Compact zoom mode for ModuleNode** — When the React Flow viewport zoom drops below 0.5, module nodes switch to a minimal single-line label using a `calc(14px / zoom)` font size that stays readable at any zoom level. New `VpZoomSync` component keeps the `--vp-zoom` CSS custom property in sync with all viewport changes (including programmatic `fitView`). |
| 52 | +- **Focus mode for dependency graph** — Clicking a module node dims all nodes outside its 1-hop neighborhood (direct dependencies and dependents). Focus auto-clears when the focused module's group is collapsed. |
| 53 | +- **API route coverage in architecture completeness check** — Step 10 completeness prompt now extracts every distinct URL pattern from the PRD and verifies a 1:1 corresponding route module exists. Step 5 design prompt reinforces one-module-per-distinct-URL-path. Prevents the LLM from collapsing multiple API endpoints under a single module. |
| 54 | +- **Header-only tag parsing in `architecture_sync`** — `parse_prompt_tags()` now extracts PDD metadata tags only from the header section (content before the first `%` section marker), preventing example `<pdd-dependency>` tags inside code fences or prose from being treated as real metadata declarations. |
| 55 | + |
| 56 | +### Fix |
| 57 | + |
| 58 | +- **Replace `.format(**context)` with safe `str.replace()` in all agentic orchestrators** — All six orchestrators (architecture, bug, change, checkup, e2e-fix, test) now use iterative `str.replace()` for prompt template substitution instead of Python's `.format()`. This prevents `KeyError` crashes when LLM outputs contain JSON curly braces and eliminates the need to double-escape braces in context values. Context outputs are no longer pre-escaped with `{{`/`}}`. |
| 59 | +- **Support modern Codex CLI NDJSON format in agentic sync** — `_run_with_provider()` now parses Codex CLI 0.104.0+ output, which splits agent text (`item.completed` with `agent_message` type) and usage stats (`session.end`) into separate NDJSON events. `_parse_provider_json()` extracts text from `data["item"]["text"]` for modern format. |
| 60 | +- **Resolve 'no changes to commit' on resume** — `_commit_and_push()` in the e2e-fix orchestrator now falls back to `git diff` when the hash snapshot is tainted by a prior interrupted run, catching orphaned unstaged changes that the snapshot missed. |
| 61 | +- **`modify` command propagates `click.UsageError`** — Both `split` and `change` subcommands now re-raise `click.UsageError` instead of swallowing it in the generic exception handler, allowing Click to display proper usage messages. |
| 62 | + |
| 63 | +### Refactor |
| 64 | + |
| 65 | +- **Agentic orchestrator prompt templating** — Prompt substitution across all orchestrators unified to a three-step pattern: preprocess with `double_curly_brackets=True`, un-double template braces, then iterate `str.replace()` per context key. Removes all `try/except KeyError` formatting blocks and brace-escaping of step outputs. |
| 66 | + |
| 67 | +### Test |
| 68 | + |
| 69 | +- **E2E regression suites for issues #545, #549, #557, #566** — Four new E2E test modules covering: format double-escaping across all orchestrators (`test_e2e_issue_549_format_double_escaping.py`, `test_e2e_issue_549_other_orchestrators.py`), Codex NDJSON parsing (`test_e2e_issue_557_codex_ndjson.py`), code-fence tag extraction (`test_e2e_issue_566_code_fence_tags.py`), and no-changes-to-commit on resume (`test_e2e_issue_545_no_changes_to_commit.py`). Total: ~2,300 new test lines. |
| 70 | +- **Unit tests for `agentic_common` and `agentic_e2e_fix_orchestrator`** — New `test_agentic_common.py` (305 lines) covers NDJSON parsing, provider JSON extraction, and cost calculation. New `test_agentic_e2e_fix_orchestrator.py` (226 lines) covers commit-and-push fallback logic. |
| 71 | +- **Unit tests for `architecture_sync` header parsing** — New `test_architecture_sync.py` (272 lines) verifies that tags in code fences and body sections are ignored. |
| 72 | +- **Frontend tests for compact font and zoom sync** — Three new test files covering `getCompactFontPx()` math, compact render mode at low zoom, and `VpZoomSync` CSS property propagation. |
| 73 | + |
| 74 | +## v0.0.159 (2026-02-24) |
| 75 | + |
| 76 | +### Feat |
| 77 | + |
| 78 | +- **13-step agentic architecture workflow** — Expanded from 11 to 13 steps by adding a dedicated Step 4 (Data Model Design) for entities, relationships, and storage decisions. All subsequent steps renumbered accordingly. New `_check_step4_output()` validates that the LLM produces data model content rather than module design. |
| 79 | +- **Context window validation in `llm_invoke`** — Prompt token count is now checked against the model's context limit before each LLM call. Prompts exceeding the limit skip to the next candidate model. Post-call `ContextWindowExceededError` is also caught as a safety net. Error messages include a hint to reduce prompt size or use a larger-context model. |
| 80 | +- **Cross-cutting concern detection and channel enumeration in agentic prompts** — Architecture prompts now detect shared concerns across modules and enumerate communication channels. |
| 81 | +- **Validate prompt token count against model context window** — `token_counter.py` rewritten to use litellm's model-aware tokenizer and `get_model_info()` for context limits instead of hardcoded `MODEL_CONTEXT_LIMITS`. Falls back to tiktoken `cl100k_base` for unknown models. `get_context_limit()` returns `Optional[int]` (None for unknown models). |
| 82 | +- **Agentic bug orchestrator E2E skip support** — Step 9 now handles `E2E_SKIP:` markers for simple bugs that don't need E2E tests, treating them as successful completion. E2E file list is deduplicated with insertion-order preservation. |
| 83 | +- **Sanitize corrupted architecture dependencies** — New `_sanitize_architecture_dependencies()` in `agentic_change_orchestrator` removes dependency strings that contain newlines or are too long (LLM confusion between example `<pdd-dependency>` tags and real tags). |
| 84 | +- **Deep copy formatted_messages before LiteLLM calls** — Prevents Groq's structured output fallback from mutating the shared message list, which corrupted retries on other providers (upstream PR #598). |
| 85 | + |
| 86 | +### Fix |
| 87 | + |
| 88 | +- **`--quiet` flag does not suppress all output** — Pre-parse `--quiet` from `sys.argv` before importing `llm_invoke` to set `PDD_QUIET` env var early. New `set_quiet_logging()` raises logger levels to ERROR. `preprocess.py` Rich panels suppressed when `PDD_QUIET` is set. New E2E subprocess test and unit tests for quiet flag behavior. |
| 89 | + |
| 90 | +### Refactor |
| 91 | + |
| 92 | +- **Agentic architecture prompt renaming** — Steps 4-12 prompts renamed to steps 5-13 to accommodate the new data model step (e.g. `agentic_arch_step4_design_LLM.prompt` → `agentic_arch_step5_design_LLM.prompt`). |
| 93 | + |
1 | 94 | ## v0.0.158 (2026-02-23) |
2 | 95 |
|
3 | 96 | ### Feat |
4 | 97 |
|
5 | | -- Implement comprehensive API routes for the video pipeline and add a new E2E test for Stage 8 Composition Generation. |
6 | | -- Add comprehensive Playwright E2E tests for all video editor stages and enhance the script API to support TTS script management. |
7 | | -- add E2E test for non-recursive circular include detection and update project configuration defaults for video editor. |
8 | | -- Update test durations and modify `test_llm_invoke_integration.py`. |
| 98 | +- **Include-aware sync fingerprints (Issue #522)** — `sync_determine_operation` now stores `<include>` dependency paths and their SHA256 hashes in the fingerprint JSON. When an included file changes but the top-level `.prompt` file doesn't, sync correctly detects the change and regenerates code. New functions: `extract_include_deps()`, `calculate_prompt_hash()`, `_resolve_include_path()`. `_save_fingerprint_atomic()` and `save_fingerprint()` accept `include_deps_override` to capture deps before auto-deps strips `<include>` tags. |
| 99 | +- **Circular include detection for non-recursive preprocess (Issue #553)** — `process_include_tags()` and `process_backtick_includes()` now enforce a `_MAX_INCLUDE_ITERATIONS` limit (50) on the convergence loop, raising `ValueError` instead of hanging forever on circular `<include>` references. |
| 100 | +- **E2E tests for include fingerprint and circular include detection** — Two new E2E test suites: `test_e2e_issue_522_include_fingerprint.py` (verifies sync detects included file changes) and `test_e2e_issue_553_circular_includes_non_recursive.py` (verifies `pdd preprocess` exits with error on circular includes). |
9 | 101 |
|
10 | 102 | ### Fix |
11 | 103 |
|
| 104 | +- **Vertex AI credential resolution** — `_ensure_api_key()` now resolves missing `VERTEXAI_PROJECT` from `GOOGLE_CLOUD_PROJECT` and missing `VERTEXAI_LOCATION` from CSV location column, and passes `vertex_location` to litellm kwargs. |
| 105 | +- **Centralized cost/model extraction** — New `_extract_cost_from_result()` and `_extract_model_from_result()` in `sync_orchestration` correctly index into varying tuple formats per operation type (`crash`/`fix`/`verify`, `generate`, `example`/`test`/`auto-deps`). `operation_log` now uses these instead of hardcoded indices. |
12 | 106 | - make sync regression cases 5 and 9 non-fatal on LLM failures |
13 | 107 | - handle multi-language sync failure gracefully in case 4 |
14 | 108 | - increase timeouts and add --max-attempts to sync regression tests |
15 | 109 |
|
16 | | -### Refactor |
17 | | - |
18 | | -- improve color readability assertion in review tab E2E test by using canvas for RGB extraction. |
19 | | -- Split audit results API into a dedicated route, implement the Stage 10 Audit UI, and add comprehensive E2E tests including dark theme readability checks. |
20 | | -- Restructure ProjectConfig schema for output resolution, TTS, audio sync, VEO, and render settings, updating relevant UI and tests. |
21 | | -- Centralize cost and model extraction logic in Python and update video project configuration. |
22 | | -- Update Stage1ProjectSetup for StagePanelProps compatibility, correct annotation fetching API parameter, and switch to 'server-only' directive for database utilities. |
23 | | - |
24 | 110 | ## v0.0.157 (2026-02-22) |
25 | 111 |
|
26 | 112 | ### Feat |
|
0 commit comments