Compare commits

...

3 Commits

Author SHA1 Message Date
Flea Flicker 6f471a4934 fix(GRO-1026): re-apply GRO-730 scrollbar-hide to portal tab rows
CI / Test (pull_request) Successful in 33s
CI / Lint & Typecheck (pull_request) Successful in 42s
CI / Build & Push Docker Image (pull_request) Successful in 45s
The scrollbar-hide CSS utility and its usage in BillingPayments.tsx and
PetProfiles.tsx were lost in the groombook/app → groombook/web migration.

- src/index.css: add cross-browser .scrollbar-hide utility (Firefox/IE/WebKit)
- BillingPayments.tsx: replace flex-wrap with overflow-x-auto scrollbar-hide
- PetProfiles.tsx: add scrollbar-hide to pet-selector row and section tabs row
- UAT_PLAYBOOK.md: add §5.16a portal tab-row mobile overflow test cases

Updated UAT_PLAYBOOK.md §5.16a — new portal mobile overflow test cases TC-WEB-5.16.4–7.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-26 08:55:34 +00:00
Flea Flicker b49978710b Merge pull request 'feat(GRO-2516): add agent-runtime credential stanza to .gitignore' (#84) from feature/gro-2516-harden-gitignore into dev
CI / Test (push) Successful in 26s
CI / Lint & Typecheck (push) Successful in 35s
CI / Test (pull_request) Successful in 21s
CI / Build & Push Docker Image (push) Successful in 16s
CI / Lint & Typecheck (pull_request) Successful in 31s
CI / Build & Push Docker Image (pull_request) Successful in 15s
feat(GRO-2516): add agent-runtime credential stanza to .gitignore
2026-06-25 02:24:19 +00:00
Stockboy Steve 88995ff59b feat(GRO-2516): add agent-runtime credential stanza to .gitignore
CI / Test (pull_request) Successful in 28s
CI / Lint & Typecheck (pull_request) Successful in 36s
CI / Build & Push Docker Image (pull_request) Successful in 14s
Appends canonical ignore rules for .gh-token, .config/gh/,
.claude/, .codex/, and AGENT_HOME patterns per GRO-2516 guardrail
to prevent accidental commit of agent credential artifacts.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-25 02:18:14 +00:00
5 changed files with 32 additions and 4 deletions
+10
View File
@@ -6,3 +6,13 @@ dist/
playwright-report/ playwright-report/
test-results/ test-results/
*.log *.log
# Agent runtime artifacts — never commit
.gh-token
*.gh-token
**/.gh-token
.config/gh/
**/.config/gh/
**/AGENT_HOME/**
$AGENT_HOME/**
.claude/
.codex/
+9
View File
@@ -320,6 +320,15 @@ the seeded UAT customer (`uat-customer@groombook.dev`), not just unit-rendered.
| TC-WEB-5.16.2 | PWA install prompt | Load app on supported browser | Install prompt appears when criteria met | | TC-WEB-5.16.2 | PWA install prompt | Load app on supported browser | Install prompt appears when criteria met |
| TC-WEB-5.16.3 | Touch interactions | Use touch gestures on mobile | All interactions work with touch input | | TC-WEB-5.16.3 | Touch interactions | Use touch gestures on mobile | All interactions work with touch input |
#### 5.16a Portal Tab Rows — Mobile Overflow (GRO-730 / GRO-1026)
| # | Scenario | Steps | Expected |
|---|----------|-------|----------|
| TC-WEB-5.16.4 | My Pets tab row — horizontal scroll, no visible scrollbar | Sign in as customer → My Pets. Set viewport to 390px. If 3+ pets are seeded, the pet-selector row overflows. | Pet selector row scrolls horizontally; native scrollbar is **not** visible (`scrollbar-width: none` / `scrollbar-hide` applied). |
| TC-WEB-5.16.5 | My Pets section tab row — no visible scrollbar | On the same My Pets view, observe the tabs row (Basic Info / Medical / Grooming / History). | Tabs row scrolls horizontally when needed; native scrollbar is not visible. |
| TC-WEB-5.16.6 | Billing/Payments tab row — no wrap, no visible scrollbar | Sign in as customer → Billing/Payments at 390px. | Tab row (Invoices / Payment Methods / Packages) does **not** wrap to a second line; scrolls horizontally if needed; native scrollbar not visible. |
| TC-WEB-5.16.7 | Desktop — no visual regression | Open My Pets and Billing/Payments at ≥1024px. | No layout change; tab rows display identically to before the fix. |
### 5.17 Error & Empty States ### 5.17 Error & Empty States
| # | Scenario | Steps | Expected | | # | Scenario | Steps | Expected |
+9
View File
@@ -78,6 +78,15 @@ input:focus, select:focus, textarea:focus {
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
} }
/* ─── Scrollbar hide utility ─── */
.scrollbar-hide {
scrollbar-width: none;
-ms-overflow-style: none;
}
.scrollbar-hide::-webkit-scrollbar {
display: none;
}
/* ─── Scrollbar polish ─── */ /* ─── Scrollbar polish ─── */
::-webkit-scrollbar { ::-webkit-scrollbar {
width: 6px; width: 6px;
+1 -1
View File
@@ -130,7 +130,7 @@ function BillingPaymentsInner({ sessionId, readOnly }: BillingPaymentsProps) {
</div> </div>
)} )}
<div className="flex gap-2 flex-wrap"> <div className="flex gap-2 overflow-x-auto scrollbar-hide">
{([ {([
{ id: "invoices" as const, label: "Invoices", icon: DollarSign }, { id: "invoices" as const, label: "Invoices", icon: DollarSign },
{ id: "payment" as const, label: "Payment Methods", icon: CreditCard }, { id: "payment" as const, label: "Payment Methods", icon: CreditCard },
+2 -2
View File
@@ -145,7 +145,7 @@ export function PetProfiles({ sessionId, readOnly }: Props) {
return ( return (
<div className="space-y-6"> <div className="space-y-6">
{/* Pet Selector */} {/* Pet Selector */}
<div className="flex gap-3 overflow-x-auto pb-1"> <div className="flex gap-3 overflow-x-auto pb-1 scrollbar-hide">
{pets.map(p => ( {pets.map(p => (
<button <button
key={p.id} key={p.id}
@@ -191,7 +191,7 @@ export function PetProfiles({ sessionId, readOnly }: Props) {
)} )}
{/* Tabs */} {/* Tabs */}
<div className="flex gap-1 bg-white rounded-xl border border-stone-200 p-1 overflow-x-auto"> <div className="flex gap-1 bg-white rounded-xl border border-stone-200 p-1 overflow-x-auto scrollbar-hide">
{([ {([
{ id: "info", label: "Basic Info", icon: PawPrint }, { id: "info", label: "Basic Info", icon: PawPrint },
{ id: "medical", label: "Medical", icon: Heart }, { id: "medical", label: "Medical", icon: Heart },