A native macOS migrationwith TaskBelay
Moving a Qt editor to native macOS components takes feature decisions, implementation and repeated verification. Notepad-- paired Codex with TaskBelay: Codex analyzed and built the app, while TaskBelay kept the plan, progress and check results together.
Agree on the plan. Connect each step.
From approval to test-driven rework, TaskBelay keeps the agreement, current progress and next action together.
Author’s own project · Edited development story
01 / Goal and roles
A clear goal. Defined responsibilities.
- User
- Defines the goal, approves the plan and checks the actual features.
- Codex
- Analyzes, plans, implements, runs checks and submits results.
- TaskBelay
- Saves task state and agreements, checks scope and verification, and advances stages from submitted results.
- The goal
- Migrate Notepad-- to Apple-native components, targeting macOS 15 compatibility, using available macOS 27 capabilities, and reducing motion on older systems.
- The choices
- Retain existing features within the agreed scope. Exclude Qt, Scintilla, comparison features, and compatibility with old Qt plugins.
- The outputs
- An AppKit, SwiftUI and NSTextView/TextKit project, requirements and implementation documents, and a local universal DMG.
02 / Development process
Turn an idea into work you can follow.
Define the scope, approve the plan, work through repairs and review progress. Give each part of a large task a clear place in the process.
Goal and responsibilities
Agree on the goal before choosing the next step
The goal was a genuinely native macOS Notepad-- app that retained the agreed editing capabilities. The discussion moved from technology choices to concrete decisions about which features had to stay and which were outside the task.
- How TaskBelay helped
- Retain the confirmed requirements and exclusions so design, implementation and review share the same agreement.
- Progress
- The architecture and feature scope were clear enough to plan concrete work.
Read the summary: architecture and scope
- Choose the native approach
- Use AppKit, SwiftUI and the system text editor, without Qt or Scintilla. Rebuild windows, menus, document operations and editing around macOS.
- Define the feature scope
- Retain the agreed document, search, column-editing, highlighting, encoding and recovery capabilities. Exclude comparisons and old plugins, with large-file and hex viewers remaining read-only.
- Set compatibility expectations
- Target macOS 15 and later, adopt newer capabilities when available, and reduce motion on older systems. Build the native app separately while keeping the Qt project.
Plan the implementation
Approve the full plan before implementation.
Codex organized the migration into 10 work items and 12 acceptance criteria covering the project, editor, search, tools and verification. TaskBelay saved the plan for approval; the user’s “Start” moved the task into implementation.
- How TaskBelay helped
- Kept the plan and its approval together, so later work followed the agreed scope.
- Progress
- The approval referred to the saved plan, which remained available for later review.
Explore the task operations
Plan approval and stage changes from this task.
- After saving the draft
TASKS · COMPLETE_TASKSRead and prepare the plan; wait for approval.
- User response
StartApproval was submitted for the saved plan.
- TaskBelay returned
IMPLEMENT · COMPLETE_IMPLEMENTATIONThe allowed actions now included product-file edits.
Read the summary: work and acceptance
- Map features before migration
- Identify the original application’s actual capabilities and map retained features to the native version before scheduling the editor, search and tool work.
- Make file scope explicit
- Add an independent native project and supporting documentation, with expected changes listed. Leave the existing Qt source unchanged.
- Tie checks to behavior
- Plan checks for Chinese input, multi-cursor undo, safe saving and recovery, with an initial budget of 20 automated commands. Record platform checks separately when hardware is unavailable.
Testing and rework
Keep repairs and retests connected.
When save-state and UI checks found problems, Codex submitted the failures and TaskBelay returned the task to implementation. Document notifications and launch arguments were fixed, then the implementation was submitted and retested. System prompts that needed user attention stayed attached to the current work.
- How TaskBelay helped
- Recorded the failures and moved the task back to rework. TaskBelay received check results; Codex diagnosed and fixed the code.
- Progress
- Code repairs, repeated checks and an updated installer stayed available in the same task.
One additional verification pass
- Original command budget used
- 20 commands
- Specific additional commands
- +4 commands
The repairs changed the source. Native regressions, a fresh build and package validation were needed to check the updated result.
- Full native tests
- Current Release build
- DMG packaging
- DMG validation
This was the first increase. The full migration record contains 8 adjustments, raising the automatic-command allowance from 20 to 37, each with a reason and planned checks.
20 → 24 → 28 → 29 → 30 → 31 → 32 → 36 → 37
Explore the task operations
Plan approval and stage changes from this task.
- Submit a failed result
taskbelay_submit_testRecord the failure and select a return to implementation.
- Recorded stage change
TEST → IMPLEMENTThe next action again allowed product-file edits.
- After the fix
IMPLEMENT → TESTSubmit the implementation and check the current content.
Read the summary: two failures and their fixes
- The file was saved; the interface was stale
- Saved content was intact, but the sidebar still showed the old filename and unsaved marker. The fix updated document-state notifications so the list reflected the save result.
- Find what is blocking the test
- A test argument was treated as a filename, opening a dialog that blocked find and undo. Codex changed the startup configuration and reran the affected flows.
- Keep the package aligned with the repair
- Rerun UI, document and editing checks after the fixes, then build and validate the universal installer from current source.
Review progress
Return to the plan to make the next work clear.
After the native project and installer were produced, the user and Codex compared the implementation plan with the original app. Cross-document search, batch operations and language styles were checked individually, making the remaining work concrete.
- How TaskBelay helped
- Retained the original agreement and development history as a reference for feature-by-feature review.
- Progress
- Implemented capabilities and remaining work became clearer, giving the next steps a specific focus.
Explore the feature review
- Compare search scenarios
- Review find and replace in one document and across all open documents separately.
- Break down batch operations
- Check multiple replacement rules, rule import and export, and batch renaming individually.
- Make further work concrete
- Keep language styles, digest tools and localization connected to the original plan as features are refined.
03 / Outputs and takeaways
Keep progress and the process in view.
Three ways to support longer work
- Approve features, file scope and checks together before implementation.
- Carry failure details and existing progress into the next repair.
- Give additional checks a specific purpose before expanding verification.
What the work produced
- A native project built with AppKit, SwiftUI and system text components.
- Core document, editing, search and recovery functionality.
- Requirements and implementation plans, plus a local universal DMG installer.
Native project and universal installer produced
The native project and core functionality are in place. Complete feature migration and compatibility acceptance remain the focus of continued work.
Check the experience, then the package.
- 3 / 3UI retests
Three UI flows passed
- 9 / 9Related regressions
Document and editing checks
- DMGPackage validation
Universal package validation passed
UI, document and editing checks ran in the local environment. The installer was rebuilt from the current source.
04 / Refining the experience
From a native project to a better everyday experience.
With the native app in place, further work brought Chinese and English to its settings, menus and system panels.
Follow-up development · implemented directly with Codex
Chinese and English across the interface
Choose Simplified Chinese or English in settings. After restart, app menus, settings and system file panels use the selected language. This bilingual update passed 43 unit tests and 5 UI tests, with a universal Release build.
05 / Download summary
Keep the key moments from this project.
Keep the planning, test repairs and verification process from this migration as a reference for your next longer task.
Edited from the author’s development experience, retaining key decisions and operations.
Download the task summary06 / Start a task
Try it on one of your own longer tasks.
Describe the work in your usual coding tool. Use TaskBelay to prepare the plan, agree on scope and keep moving from saved progress.