diff --git a/HISTORY.md b/HISTORY.md index 83ad5d4..40a630c 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,5 +1,21 @@ # Bill Tracker β€” Changelog +## v0.33.8.5 + +### 🎨 Design + +- **"S" badge (compact)** β€” Subscription badge shortened to "S" in all four locations (desktop tracker, mobile tracker, desktop bills table, mobile bills row), now with matching border style. +- **Tracker bucket side-by-side** β€” When both buckets (1st–14th, 15th–31st) have bills, they render in a 2-column grid at 2xl+ instead of stacked. +- **Compact bucket mode** β€” `compact` prop narrows table min-width to 700px at 2xl+, hides Last Month column, shrinks Notes (23%β†’16%) and Actions (10%β†’8%) columns, Due trimmed (10%β†’9%). +- **Bucket header: remaining summary** β€” Shows "Remaining" and "Done" labels alongside paid/total/overpaid in bucket headers. + +### πŸ›  Internal + +- Removed standalone `Remaining` summary card from the summary row (redundant with bucket header). +- `Row` and `Bucket` components accept `compact = false` prop. + +--- + ## v0.33.8.4 ### πŸš€ Features diff --git a/client/components/BillsTableInner.jsx b/client/components/BillsTableInner.jsx index d3660b1..bfaa9d4 100644 --- a/client/components/BillsTableInner.jsx +++ b/client/components/BillsTableInner.jsx @@ -72,8 +72,8 @@ function BillCard({ bill, prefs = ALL_ON, onEdit, onToggle, onDelete, onHistory, )} {prefs.showSubscription && !!bill.is_subscription && ( - - Sub + + S )} {hasHistory && ( diff --git a/client/components/MobileBillRow.jsx b/client/components/MobileBillRow.jsx index 3103169..4be6c44 100644 --- a/client/components/MobileBillRow.jsx +++ b/client/components/MobileBillRow.jsx @@ -71,7 +71,7 @@ export const MobileBillRow = React.memo(function MobileBillRow({ bill, onEdit, o 2FA )} {bill.is_subscription && ( - Sub + S )} diff --git a/client/components/MobileTrackerRow.jsx b/client/components/MobileTrackerRow.jsx index 7c0f64d..bb84375 100644 --- a/client/components/MobileTrackerRow.jsx +++ b/client/components/MobileTrackerRow.jsx @@ -200,7 +200,7 @@ export const MobileTrackerRow = React.memo(function MobileTrackerRow({ row, year className="inline-flex shrink-0 rounded border border-indigo-500/25 bg-indigo-500/10 px-1.5 py-0.5 text-[10px] font-bold leading-none text-indigo-600 dark:text-indigo-300" title="Subscription" > - Sub + S )} diff --git a/client/pages/TrackerPage.jsx b/client/pages/TrackerPage.jsx index 6594932..9ea0acf 100644 --- a/client/pages/TrackerPage.jsx +++ b/client/pages/TrackerPage.jsx @@ -789,7 +789,7 @@ function NotesCell({ row, refresh }) { } // ── Table row ────────────────────────────────────────────────────────────── -function Row({ row, year, month, refresh, index, onEditBill }) { +function Row({ row, year, month, refresh, index, onEditBill, compact = false }) { const amountRef = useRef(null); const [editPayment, setEditPayment] = useState(null); const [paymentLedgerOpen, setPaymentLedgerOpen] = useState(false); @@ -1049,7 +1049,7 @@ function Row({ row, year, month, refresh, index, onEditBill }) { className="inline-flex shrink-0 rounded border border-indigo-500/25 bg-indigo-500/10 px-1.5 py-0.5 text-[10px] font-bold leading-none text-indigo-600 dark:text-indigo-300" title="Subscription" > - Sub + S )}