Finished the planner end to end.
Corrected rollover and yearly accounting, recurring targets, savings 
rules, and targeted dormant restorations.
Added editing/deletion for income, expenses, targets, and categories.
Rebuilt dashboard, analytics, calendar, settings, exports, 
authentication, and responsive mobile UI.
Added original artwork at 
[financial-flow.png](/Users/tyemeclifford/Documents/GH/budget/public/assets/images/financial-flow.png), 
generated with built-in Imagegen using an abstract financial-momentum 
landscape prompt.
Added 
[self-test.php](/Users/tyemeclifford/Documents/GH/budget/scripts/self-test.php).
Verification passed: automated accounting/export tests, full browser 
workflow, responsive 390px layout, light/dark themes, and no console 
errors. Tested with FrankenPHP v1.12.4. Live Mailgun delivery was not 
attempted without credentials.
This commit is contained in:
Ty Clifford
2026-06-15 10:33:55 -04:00
parent b7eaa81501
commit 51ee4ecb5a
18 changed files with 1568 additions and 559 deletions
+7
View File
@@ -0,0 +1,7 @@
<?php $fieldIncome = $editingIncome ?? []; $defaultIncomeDate = $month === date('Y-m') ? date('Y-m-d') : $month . '-01'; ?>
<div class="form-grid">
<label class="span-2">Label<input type="text" name="label" required placeholder="Paycheck, freelance, refund…" value="<?= h($fieldIncome['label'] ?? '') ?>"></label>
<label>Amount<div class="money-input"><span><?= h($symbol) ?></span><input type="number" name="amount" min="0.01" step="0.01" required value="<?= h((string) ($fieldIncome['amount'] ?? '')) ?>"></div></label>
<label>Received<input type="date" name="received_on" value="<?= h((string) ($fieldIncome['received_on'] ?? $defaultIncomeDate)) ?>" min="<?= h($month . '-01') ?>" max="<?= h($month . '-' . date('t', strtotime($month . '-01'))) ?>" required></label>
<label class="span-2">Notes<textarea name="notes" rows="2" placeholder="Optional details"><?= h($fieldIncome['notes'] ?? '') ?></textarea></label>
</div>