Skip to content

chore: repo hygiene — ignore local artifacts, correct AGENTS.md, track the UI/UX audit - #35

Merged
nioasoft merged 3 commits into
mainfrom
chore/repo-hygiene
Aug 2, 2026
Merged

chore: repo hygiene — ignore local artifacts, correct AGENTS.md, track the UI/UX audit#35
nioasoft merged 3 commits into
mainfrom
chore/repo-hygiene

Conversation

@nioasoft

@nioasoft nioasoft commented Aug 2, 2026

Copy link
Copy Markdown
Owner

ניקיון של תיקיית העבודה. שלושה קומיטים נפרדים.

1. .gitignore — מה שלא צריך לעקוב אחריו

מה למה
.mimocode/ cache מקומי של כלי agent אחר, ~56MB
docs/*security-audit*.html
docs/*security-review*.html
⚠️ הריפו הזה ציבורי. שלושת הדוחות מפרטים ממצאים עם ראיות file:line (משטח SSRF ב-web push, אימות cron, טיפול בהעלאות, אחסון טוקנים) וגם מכילים נתיבים מוחלטים מהמחשב שלך. לדחוף אותם = לפרסם מפת דרכים לתוקף
public/logos/ + scripts/generate_html.py ארטיפקטים מחיפוש הלוגו ברִיברנד. שום קוד לא מפנה אליהם, וכל מה שנמצא תחת public/ מוגש פומביתlogo_data.json לבדו הוא ~2MB של base64

שום דבר לא נמחק מהדיסק — הקבצים נשארים אצלך מקומית.

2. AGENTS.md — היה untracked ועם שתי הוראות שגויות

  • נפתח ב-docker compose up -d # PostgreSQL on :5432 ותיאר קונטיינר clockbill-db. אין DB מקומי.env.local מצביע על ה-dev branch ב-Neon. אימתתי: ה-CI מקבל Postgres מ-services: של GitHub Actions, לא מ-docker-compose.yml, ושום דבר חוץ מ-AGENTS.md לא הפנה לקובץ הזה.
  • הציג את npm run db:migrate כדרך להריץ מיגרציות. זו בדיוק הפקודה ש-CLAUDE.md אוסר (ה-journal של drizzle לא מסונכרן), והיא כבר גרמה לתקלה בפרודקשן. הוחלף בתהליך db:apply.

בנוסף תועדו המלכודות מ-#32: לגזור תאריכים דרך lib/dates.ts ולא toISOString(), ושעמודות date (OID 1082) חוזרות כאובייקט Date למרות שהן מטופסות string.

וגם — ששלב ה-audit ב-CI רץ ראשון, ולכן כשהוא נופל כל השאר מסומן skipped. זה נראה כמו "הבדיקות עברו" אבל המשמעות היא שהן מעולם לא רצו.

3. CLAUDE.md + דוח UI/UX

CLAUDE.md קוצר לעיקר, והוסרה הדרכה שהתיישנה: initSchema() (כבר לא קיים בקוד) ו-"Prod TODO: set Vercel DATABASE_URL" (בוצע מזמן).

docs/ui-ux-audit-2026-07-10/ נוסף לפי הקונבנציה הקיימת ב-docs/. הצילומים דורשים -f כי .gitignore חוסם *.png גורף — בלעדיהם ה-HTML נשבר. בדקתי את צילום הדשבורד: חשבון בדיקה ריק, בלי שמות לקוחות או סכומים.

Test plan

אין שינוי קוד — רק .md, .gitignore ותיעוד. ה-CI מריץ את הסט המלא (audit → gitleaks → lint → tsc → tests → integration → build).

Three classes of local-only files were sitting untracked in the working
tree and would be swept in by any `git add .`:

- .mimocode/ — another agent tool's local cache (~56MB)
- docs/*security-audit*.html, docs/*security-review*.html — THIS REPO IS
  PUBLIC. The three reports enumerate findings with file:line evidence
  (SSRF surface, cron auth, upload handling, token storage) and embed
  local absolute paths. Committing them would publish a remediation
  roadmap to anyone. Keep local, share out-of-band.
- public/logos/ + scripts/generate_html.py — logo exploration from the
  rebrand. Referenced by no code, and anything under public/ is served
  publicly; logo_data.json alone is ~2MB of base64.

Nothing is deleted from disk — these stay locally, they just stop
following the repo around.
CLAUDE.md: condensed to the non-obvious. Drops guidance that had gone
stale — lib/db.ts initSchema() (removed from the codebase) and the
"Prod TODO: set Vercel DATABASE_URL=clockbill_app" (done long ago).

AGENTS.md was untracked and had drifted into actively harmful territory:

- It opened with `docker compose up -d  # PostgreSQL on :5432` and
  described a `clockbill-db` dev container. There is no local dev DB —
  .env.local points at the Neon dev branch. CI gets Postgres from GitHub
  Actions `services:`, not docker-compose.yml; nothing but AGENTS.md
  referenced that file.
- It listed `npm run db:migrate` as the way to apply migrations. That is
  the one command CLAUDE.md forbids (drizzle journal out of sync) and it
  has caused a production outage. Replaced with the db:apply flow.

Also documents the date/timezone traps found while fixing #32: derive
calendar days via lib/dates.ts, never toISOString(); and `date` columns
(OID 1082) deserialize as Date objects while typed `string`.

Notes that the CI audit gate runs first, so a failure there makes every
later step report `skipped` — which reads as "tests passed" but means
they never ran.
Matches the existing docs/ convention (docs/product-ux-refresh/,
docs/superpowers/plans/). The screenshots need -f because .gitignore
blanket-ignores *.png; without them index.html renders with broken
images. Verified the dashboard capture is an empty test account — no
client names or amounts.
@vercel

vercel Bot commented Aug 2, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
clock-bill Ready Ready Preview Aug 2, 2026 8:25am

Request Review

@nioasoft
nioasoft merged commit a98575b into main Aug 2, 2026
3 checks passed
@nioasoft
nioasoft deleted the chore/repo-hygiene branch August 2, 2026 08:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant