Remove milestones, progress bar and stats box #49
Labels
No labels
bug
duplicate
enhancement
good first issue
help wanted
question
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lvl0/incr#49
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Milestones are a second feature living inside the counter. Cut entirely.
Scope
PHP:
app/Models/Milestone.php,app/Http/Controllers/Milestones/MilestoneController.phpTracker::milestones();User::hasMilestones()andUser::hasCompletedOnboarding()milestones.*route groupFrontend:
components/Display/ProgressBar.tsx(61),components/Display/StatsBox.tsx(143)components/Milestones/AddMilestoneForm.tsxMilestoneinterface intypes/domain.tsdashboard.tsx:milestones,selectedMilestoneIndex,showProgressBar,showStatsBox,handleMilestoneSuccess,handleMilestoneSelect,handleProgressClickMigrations: new migration dropping
milestones. Note2026_05_02_000003_add_tracker_to_milestones_drop_from_usersalso touches this table — drop the table wholesale rather than reversing that migration.⚠️ Test coverage
tests/Feature/MilestoneTest.phpis currently the repo's only test file. Deleting it leaves the suite empty until #51 adds counter tests.This is accepted, but it means #47/#48/#50 land with no automated safety net. Verify those manually via the UI before merging. #51 restores coverage.
Acceptance criteria
Done
Two commits on
release/0.4.0:ae5312f— milestone removal, 14 files, −526 lines2fe1f22— README correctionsRemoved
PHP:
Milestonemodel,MilestoneController,Tracker::milestones(),User::hasMilestones(),User::hasCompletedOnboarding(), themilestones.*route group and its import.Migration:
2026_08_15_000001_drop_milestones_table.php.Frontend:
ProgressBar.tsx,StatsBox.tsx,AddMilestoneForm.tsx, theMilestoneinterface.Knock-on changes
The progressive-disclosure chain collapsed. It was LED click → progress bar → click → stats box → buttons set
activeForm. With the middle layers gone, clicking the LED now toggles the entry form directly.dashboard.tsxwent 174 → 107 lines.InlineFormAPI changed fromtype: 'purchase' | 'milestone'toopen: boolean— it was a two-way switch that became a pass-through.tests/Feature/.gitkeepadded.MilestoneTest.phpwas the only file intests/Feature, so git removed the directory, andphpunit.xml:11-13declares a Feature suite pointing at it — PHPUnit errored with "Test directory not found". CI would have gone red without this.Caught in review
The drop migration's
down()originally recreatedtargetasunsignedBigInteger, but the original (2025_07_12_221324:16) isinteger. Fixed before commit —down()now restores the table faithfully.Gates
npx eslint .npm run buildRefreshDatabase)"PHPStan clean" could not be checked — PHPStan is not installed in this project yet. That is #55.
The
down()path was verified by reading against the original definitions, not executed:container_tinkerreturns empty output for every expression in this project, andcontainer_db_readinvokes amariadbclient against a MySQL 8.0 container. Both MCP tools appear misconfigured for incr — worth a separate look.Test coverage
The suite is now a single placeholder test (
tests/Unit/ExampleTest.php). Known and accepted; #54 restores real coverage.