Skip to content

Commit 69bb542

Browse files
committed
Bump version
1 parent 90b53f0 commit 69bb542

37 files changed

+4072
-334
lines changed

CHANGELOG.md

Lines changed: 54 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,64 @@
1+
## v0.0.120 (2026-01-18)
2+
3+
### Feat
4+
5+
- Introduce LLM prompt for generating isolated tests and refactor `test_fix.py` to improve test module isolation.
6+
- Refine command arguments with default values, add operation logging, and introduce new tests for `fix` and `utility` commands.
7+
- Recursively ensure all JSON schema properties are marked as required for OpenAI strict mode.
8+
- Add `promptToCodeScore` and `codeToPromptScore` fields to the LLM prompt output specification and renumber subsequent fields.
9+
- Introduce standardized operation logging for CLI commands and refactor sync orchestration to use the new `operation_log` module.
10+
- Implement an operation logging module with state management, fingerprinting, run reports, and a command decorator.
11+
- add operation_log module prompt for shared PDD logging infrastructure (#277)
12+
13+
### Refactor
14+
15+
- centralize sync orchestration logging to a new operation log module and add new tests for LLM invocation and server prompt routes.
16+
- introduce structured log entry creation and update functions, rename log loading, and enhance fingerprint metadata storage.
17+
18+
## v0.0.120 (2026-01-17)
19+
20+
### Feat
21+
22+
- allow multiple test files for fix and test commands
23+
- add test cases for numbered file creation
24+
- Add VS Code extension PDD CLI installation system
25+
- add automated theorem proving languages Lean and Agda
26+
27+
### Fix
28+
29+
- prevent `pdd fix` from printing output paths for unmodified files and add reproduction tests for issue #232.
30+
- pass concatenated test content to fix_error_loop and update PR description
31+
- update tests for multiple test files
32+
- update tests for multiple test files
33+
- move file numbering logic to construct_paths
34+
- update extension metadata for Cursor marketplace compatibility
35+
- ignore sqlite cache
36+
- ignore .pyc files
37+
- ignore .pyc files
38+
- add --list-contexts cli test
39+
- Configure pytest subprocess with project root, PYTHONPATH, and cwd for accurate fix operation test results.
40+
41+
### Refactor
42+
43+
- simplify multi-file test fixing
44+
145
## v0.0.119 (2026-01-16)
246

347
### Feat
448

5-
- Introduce 'hello' example with unit tests covering output, return value, multiple calls, and signature, removing Z3 formal verification.
6-
- introduce a new `hello.py` example, update `README.md` with a PDD command relationship diagram, and refactor the `hello` example and test files.
7-
- Add smart port detection and frontend improvements
8-
- Add a new 'hello' example and update the changelog with recent features, fixes, and documentation.
49+
- **Smart Port Detection:** `pdd connect` automatically detects when the default port (9876) is in use and finds the next available port in range 9876-9899. User-specified ports (`--port`) show a clear error if unavailable instead of auto-switching.
50+
- **Audio Notifications:** New `useAudioNotification` hook plays Web Audio API sounds on job completion (ascending chime for success, descending for failure). Toggle via sound icon in header; preference persisted to localStorage.
51+
- **Command Relationship Diagram:** README now includes a Mermaid flowchart showing how PDD commands interact (entry points → issue-driven commands → sync workflow).
52+
53+
### Fix
54+
55+
- **`pdd fix --loop` Without ERROR_FILE:** Loop mode (`--loop`) no longer requires ERROR_FILE argument; error output is generated during the loop. Non-loop mode still requires ERROR_FILE as the last positional argument. Thanks Serhan Asad for your help with this fix!
56+
- **Nested Project Test Isolation:** `_execute_tests_and_create_run_report()` now sets `--rootdir`, `PYTHONPATH`, and `cwd` based on the project's `.pddrc` marker, preventing pytest from using parent directory configs and causing infinite fix loops.
57+
- **Click Exception Handling:** `pdd fix` now properly re-raises Click exceptions (`Abort`, `UsageError`, etc.) instead of swallowing them with generic error handling.
958

1059
### Refactor
1160

12-
- Address PR review feedback for audio notifications
61+
- **PromptSpace Code Panel Layout:** Sidebar hides when code panel is open; commands displayed in vertical bar between prompt and code panels for better space utilization.
1362

1463
## v0.0.118 (2026-01-16)
1564

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# PDD (Prompt-Driven Development) Command Line Interface
22

3-
![PDD-CLI Version](https://img.shields.io/badge/pdd--cli-v0.0.119-blue) [![Discord](https://img.shields.io/badge/Discord-join%20chat-7289DA.svg?logo=discord&logoColor=white)](https://discord.gg/Yp4RTh8bG7)
3+
![PDD-CLI Version](https://img.shields.io/badge/pdd--cli-v0.0.120-blue) [![Discord](https://img.shields.io/badge/Discord-join%20chat-7289DA.svg?logo=discord&logoColor=white)](https://discord.gg/Yp4RTh8bG7)
44

55
## Introduction
66

@@ -365,7 +365,7 @@ export PDD_TEST_OUTPUT_PATH=/path/to/tests/
365365

366366
## Version
367367

368-
Current version: 0.0.119
368+
Current version: 0.0.120
369369

370370
To check your installed version, run:
371371
```
@@ -1812,13 +1812,13 @@ After the workflow completes, a PR is automatically created linking to the issue
18121812
18131813
**Manual Mode (legacy):**
18141814
```
1815-
pdd [GLOBAL OPTIONS] change --manual [OPTIONS] CHANGE_PROMPT_FILE INPUT_CODE [INPUT_PROMPT_FILE]
1815+
pdd [GLOBAL OPTIONS] change --manual [OPTIONS] CHANGE_PROMPT_FILE INPUT_CODE INPUT_PROMPT_FILE
18161816
```
18171817
18181818
Arguments:
18191819
- `CHANGE_PROMPT_FILE`: The filename containing the instructions on how to modify the input prompt file.
18201820
- `INPUT_CODE`: The filename of the code that was generated from the input prompt file, or the directory containing the code files when used with the '--csv' option.
1821-
- `INPUT_PROMPT_FILE`: (Optional) The filename of the prompt file that will be modified. Not required when using the '--csv' option.
1821+
- `INPUT_PROMPT_FILE`: The filename of the prompt file that will be modified. Required in standard mode; not used when using the '--csv' option.
18221822
18231823
Options:
18241824
- `--budget FLOAT`: Set the maximum cost allowed for the change process (default is $5.0).

context/commands/analysis_example.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,11 +102,14 @@ def main():
102102
with open(des_out, "w") as f: f.write("6")
103103

104104
# FIX: Use correct arguments for bug command (manual=True, args=tuple)
105+
# Added timeout_adder and no_github_state to match function signature
105106
result = bug.callback(
106107
manual=True,
107108
args=(bug_prompt, bug_code, bug_prog, curr_out, des_out),
108109
output=test_out,
109-
language="Python"
110+
language="Python",
111+
timeout_adder=0.0,
112+
no_github_state=False
110113
)
111114
print(f"Bug Result: {result}")
112115

context/commands/modify_example.py

Lines changed: 49 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -526,23 +526,25 @@ def cli(ctx):
526526

527527
def example_change_command():
528528
"""
529-
Demonstrate the change command.
530-
529+
Demonstrate the change command in manual mode.
530+
531531
The change command modifies an existing prompt based on change instructions.
532-
It can operate on a single file or in batch mode using a CSV file.
533-
534-
Command signature:
535-
pdd change CHANGE_PROMPT INPUT_CODE INPUT_PROMPT [OPTIONS]
536-
537-
Arguments:
532+
It supports two modes: agentic (default) and manual.
533+
534+
Command signatures:
535+
Agentic mode: pdd change ISSUE_URL [OPTIONS]
536+
Manual mode: pdd change --manual CHANGE_PROMPT INPUT_CODE INPUT_PROMPT [OPTIONS]
537+
538+
Arguments (manual mode):
538539
CHANGE_PROMPT: Path to file containing change instructions (must exist)
539540
INPUT_CODE: Path to existing code file (must exist)
540541
INPUT_PROMPT: Path to prompt file to modify (must exist)
541-
542+
542543
Options:
544+
--manual: Use legacy manual mode instead of agentic mode
543545
--output: Where to save the modified prompt (default: overwrites input)
544-
--csv: Path to CSV file for batch mode (columns: prompt_name, change_instructions)
545-
546+
--csv: Enable CSV batch mode (use with --manual)
547+
546548
Returns via @track_cost decorator:
547549
Tuple[Dict[str, str], float, str]:
548550
- result_data: Dictionary with keys:
@@ -566,11 +568,12 @@ def cli(ctx):
566568

567569
runner = CliRunner()
568570

569-
# Run the change command
571+
# Run the change command in manual mode
570572
result = runner.invoke(
571573
cli,
572574
[
573575
"change",
576+
"--manual",
574577
files["change_prompt"],
575578
files["input_code"],
576579
files["input_prompt"],
@@ -595,22 +598,27 @@ def cli(ctx):
595598

596599
def example_change_command_csv_batch():
597600
"""
598-
Demonstrate the change command in CSV batch mode.
599-
600-
When using --csv option, the change command processes multiple prompts
601+
Demonstrate the change command in manual CSV batch mode.
602+
603+
When using --csv with --manual, the change command processes multiple prompts
601604
based on instructions in a CSV file.
602-
605+
603606
CSV file format:
604607
prompt_name,change_instructions
605608
path/to/prompt1.prompt,Instructions for first prompt
606609
path/to/prompt2.prompt,Instructions for second prompt
607-
610+
608611
Command signature:
609-
pdd change --csv CSV_FILE
610-
612+
pdd change --manual --csv CSV_FILE CODE_DIRECTORY
613+
614+
Arguments:
615+
CSV_FILE: Path to CSV file with batch change instructions
616+
CODE_DIRECTORY: Directory containing code files referenced by prompts
617+
611618
Options:
612-
--csv: Path to CSV file with batch change instructions
613-
619+
--manual: Required for CSV batch mode
620+
--csv: Enable CSV batch processing
621+
614622
Returns via @track_cost decorator:
615623
Tuple[Dict[str, Any], float, str]:
616624
- result_data: Dictionary with keys:
@@ -634,12 +642,15 @@ def cli(ctx):
634642

635643
runner = CliRunner()
636644

637-
# Run the change command in CSV batch mode
645+
# Run the change command in manual CSV batch mode
638646
result = runner.invoke(
639647
cli,
640648
[
641649
"change",
642-
"--csv", files["csv_file"],
650+
"--manual",
651+
"--csv",
652+
files["csv_file"],
653+
files["code_dir"],
643654
],
644655
catch_exceptions=False,
645656
)
@@ -654,23 +665,23 @@ def cli(ctx):
654665
def example_update_command():
655666
"""
656667
Demonstrate the update command.
657-
668+
658669
The update command updates a prompt based on changes made to the code.
659-
It compares the original and modified code to understand what changed,
660-
then updates the prompt to reflect those changes.
661-
670+
It analyzes the modified code file and updates the corresponding prompt
671+
to reflect the changes.
672+
662673
Command signature:
663-
pdd update INPUT_PROMPT MODIFIED_CODE [OPTIONS]
664-
674+
Repo-wide mode: pdd update [OPTIONS]
675+
Single-file mode: pdd update MODIFIED_CODE [OPTIONS]
676+
665677
Arguments:
666-
INPUT_PROMPT: Path to the original prompt file (must exist)
667-
MODIFIED_CODE: Path to the modified code file (must exist)
668-
678+
MODIFIED_CODE: Path to the modified code file (single-file mode)
679+
669680
Options:
670-
--original-code: Path to original code for comparison (optional)
681+
--git: Use git history for original code comparison
671682
--output: Where to save the updated prompt (default: overwrites input)
672683
--simple: Use legacy 2-stage LLM update instead of agentic mode
673-
684+
674685
Returns via @track_cost decorator:
675686
Tuple[Dict[str, str], float, str]:
676687
- result_data: Dictionary with keys:
@@ -695,20 +706,19 @@ def cli(ctx):
695706

696707
runner = CliRunner()
697708

698-
# Run the update command
709+
# Run the update command in simple mode (legacy mode without git history)
699710
result = runner.invoke(
700711
cli,
701712
[
702713
"update",
703-
files["input_prompt"],
714+
"--simple",
704715
files["modified_code"],
705-
"--original-code", files["original_code"],
706716
"--output", "./output/modified/greeter_updated_python.prompt",
707717
],
708718
catch_exceptions=False,
709719
)
710-
711-
print(f"\nCommand: pdd update {files['input_prompt']} {files['modified_code']} --original-code {files['original_code']}")
720+
721+
print(f"\nCommand: pdd update --simple {files['modified_code']}")
712722
print(f"Exit code: {result.exit_code}")
713723
print(f"Output:\n{result.output}")
714724

0 commit comments

Comments
 (0)