Deleting a group or sub group still used by barang (or a group still
used by sub groups) is refused, because PHP queries inner join on these
codes and would silently hide the orphaned barang. Editing a sub group
only changes its name, matching ajaxdlmpdk.php; changing the code pair
would orphan barang the same way.
Group codes are generated automatically, unlike the old PHP form where
they were typed manually.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Move cari-master, master-sheet-form, and hapus-master-button into
app/(dashboard)/master/_components since only master pages use them
- Merge MasterSheetForm and MasterMultiFieldSheetForm into one form that
accepts multiple fields; forms needing select/textarea stay custom
- Drop the initial prop and hardcode { ok: false } as the action state seed
- Blur number inputs on wheel to prevent accidental value changes
- Update CLAUDE.md to describe the new layout and rules
Mark steps 1-6 as ordered with mandatory mechanical checks (reference
check before delete, session chain, zod messages, import order), add the
CRLF caveat for prettier on Windows, and spell out the report format
with a concrete example.
CRUD page for satuan barang following the pelanggan feature pattern:
page, actions, form sheet, delete dialog, and a data layer with LIKE
search and pagination. Delete rejects units still referenced by barang.
Pull PER_PAGE, parsePage, and halamanHref into lib/pagination, the search
box into components/cari-master, and escapeLike into lib/utils so other
master features can reuse them. Pelanggan switches to these helpers and
its list now calls getCurrentUser() in its render chain.
- docker-compose: mariadb:10.4 service on port 3307 (utf8mb4), seeded from a
mysqldump of the office server so development never writes to production
- drizzle-amigo.config.ts + `pnpm db:amigo:pull` (introspection only)
- scripts/fix-amigo-schema.ts repairs drizzle-kit's MariaDB output: quoted
defaults, dropped primary keys, missing column-builder imports
- db/amigo: pulled schema and `amigoDb` connection
- README: step-by-step local MariaDB setup (dump, import, cleo_next grants)
- CLAUDE.md: MyISAM, concurrent PHP writes, zero dates, other apps' tables
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- docker-compose.yml runs Postgres 17 and reuses the existing cleo-pgdata volume.
- scripts/seed.ts creates the first admin through Better Auth's internal adapter,
so it works while public sign-up is disabled; skips if the admin exists.
- .env.example documents every variable; README has the new-laptop setup steps.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>