Below you will find pages that utilize the taxonomy term “Junie”
Implementing a Fuzzier font option using Junie
Collaborating with Junie on implementing font family setting for Fuzzier
On the last PR I let Junie handle all coding. On this one I use my normal collaborative workflow.
- Junie: Initial setup - Added the new setting and created tests (normally copy-paste work for me)
- Junie: API work - Handled the editor font API call (would’ve been googling/doc-reading for me)
- Me: Review & refactor - Went through the changes, tested functionality and did some refactoring
- Junie: Code review - Suggested improvements (null safety, caching)
- Both: Implementation - Applied the improvements together
- Me: Documentation - Updated docs and some minor tweaks (wording etc.)
Implementing a config feature to Fuzzier using Junie
Junie implementing global exclusions
I let Junie implement a new feature to Fuzzier. Here are some thoughts about that.
You can checkout the full PR below. I only wrote the changelog, but all other changes were made by Junie.
It’s not that simple
Evaluating pros and cons of AI is hard (for me).
Prompting
Nothing special going on.
The whole process took 3 separate tasks
Attempted agentic migration
Migrating from Mockito to MockK
Iteration 1
OkayPrompt
Lets migrate from mockito to mockk because this is a kotlin projectResult
Actually took the right steps for the update:
- Replaced the dependency
- Migrated Mockito calls
But couldn’t solve coroutine version conflict between platform libs and MockK.
Iteration 2
Not goodPrompt
There are failing testsResult
It tried to bring in another version of coroutines and tried to ensure that system JNA wouldn’t be used. This only made things worse.Conclusion
Honestly my prompting wasn’t the best, but this was supposed to be a simple migration. The agent took a long time running this task and I don’t think it was worth it.
Extending a Rust cli tool using Junie
Implementing a new command to cforge
Iteration 1
ExcellentPrompt
Implement clear command by accomplishing the next tasks:
- Create a new file and implement it according to the other commands
- Create and verify a tests for clear command
- Add the command to the commands.rs
Desing a plan following these steps and present it to me before continuing
Result
Actually one shot the task. Just required minor cleanup (and no plan was ever presented).Iteration 2
OkayPrompt
Write documentation for theclear command to the commands.md file and add clear command to the changelog.md file. Increment the minor version
Result
Documentation wasn’t great and required manual tweaking. Way too much unnecessary text.Conclusion
Really simple change, but it still nailed it.
Implementing a search improvement using Junie
Fuzzier ripgrep file type globbing
Iteration 1
GoodPrompt
Let’s make a modification to FuzzyGrep and FuzzyFinderComponent:
When FuzzyGrep is using ripgrep (rg) command, add a new field to the component. It should be located on the right side of the main search field and share the same container
When in doubt, ask me for clarifications!
Result
The actual field implementation was fine, didn’t remember to say that don’t comment every line (why is this still a thing?)Iteration 2
GoodPrompt
Remove the unnecessary comments that you’ve added and make the new field around the size of a single wordResult
Comments are gone, but when trying to limit the size, it fucked up the actual field dimensionsTODO: Image here
Implementing preview improvement for Fuzzier using Junie
Up/down navigation for preview
Iteration 1
ExcellentPrompt
Add CTRL + D and CTRL + U keybindings to the main and secondary search field in FuzzyFinderComponentResult
Nothing to complain about, it also included a working action, which moves half page on the result list.
Even though it overreached, I think the result warrants an excellent grade.
Iteration 2
ExcellentPrompt
Implement the functionmovePreviewHalfPage for FuzzyFinderComponent
Result
Yup, easy as that.Iteration 3
OkayPrompt
Create simple tests for the listeners created at setupCtrlDUShortcutsResult
Too much complexity, but I did see that coming.Markdown parsing with Junie
Parsing md files for statistics
Iteration 1
GoodPrompt
Create a stand-alone rust script collect_data.rs that analyzes .md files from content/agents/
Gather the tags from each file and write them to contents/agents/_index.md. The tags are defined in a toml; example below
+++
tags = ['junie','fuzzier','kotlin']
title = 'Implementing a search improvement using Junie'
categories = 'agent-testing'
+++
Result
It collected unique tags from the files and wrote them as tags to the_index.md.
Which again is fine, but now what I was looking for.
Iteration 2
GoodPrompt
Instead of collecting and writing unique tags to thecontent/agents/_index.md collect the amount of tags and display them as a table on the index file
Result
Nothing strange, it did what it was supposed to.Iteration 3 (new task)
GoodPrompt
Let’s add a new layer of parsing to the collect_data.rs rust script
Updating deprecated calls using Junie
Fix deprecated document listener calls
Iteration 1
Not goodPrompt
Fix TestBenchComponent addDocumentListener call
document.addDocumentListener(listener, project)
The call requires a parent disposable, but it cannot use the project because plugin code shouldn’t do that
Result
It created a new disposable right before creating the listener.Iteration 2
Not goodPrompt
We shouldn’t create a new disposable to use as a parent disposable right before. That disposable is not handling the lifetime correctly, it is created to just satisfy the function call instead which is not what I want.Result
It created some convoluted mess of duplicate variables and returned to the deprecated method call.I rolled back and tried again with a more focused prompt.