From a9aff5a120a9289181b62fa144a9816531d9fb30 Mon Sep 17 00:00:00 2001
From: Mattsson <111893710+mattssonn@users.noreply.github.com>
Date: Thu, 28 May 2026 15:43:48 +0200
Subject: [PATCH] Bug/template and sandbox (#589)
* Enhance booking template functionality and add sandbox extraction checks
* Implement Recapt integration for feedback submission and user identification
* Add Recapt identification component and bank sync status chip; update crontab entries
* Update .gitignore to ignore the entire scripts directory
* Refactor Recapt integration: add loader component, update privacy policy, and enhance bank sync status messages
* Fix .gitignore to correctly ignore the scripts directory
---
.gitignore | 2 +-
app/(dashboard)/layout.tsx | 14 ++
app/(dashboard)/settings/account/page.tsx | 2 +
app/(dashboard)/skattekonto/page.tsx | 2 +-
app/(dashboard)/transactions/page.tsx | 3 +
app/(public)/privacy/page.tsx | 12 +-
components/RecaptHideWidget.tsx | 38 +++
components/RecaptIdentify.tsx | 37 +++
components/RecaptLoader.tsx | 31 +++
components/dashboard/DashboardNav.tsx | 2 +
components/settings/BookingTemplatesPanel.tsx | 117 +++++++--
.../transactions/BankSyncStatusChip.tsx | 94 +++++++
docker/crontab.hosted | 3 +-
docker/crontab.self-hosted | 2 +
.../__tests__/retry-extraction.test.ts | 2 +
.../__tests__/sandbox-skip-extraction.test.ts | 238 ++++++++++++++++++
extensions/general/invoice-inbox/index.ts | 57 ++++-
.../__tests__/template-library.test.ts | 109 +++++++-
lib/recapt.ts | 31 +++
lib/support/__tests__/submit-feedback.test.ts | 76 ++++--
lib/support/submit-feedback.ts | 55 +++-
messages/en.json | 19 +-
messages/sv.json | 19 +-
next.config.ts | 9 +-
types/recapt.d.ts | 23 ++
25 files changed, 927 insertions(+), 70 deletions(-)
create mode 100644 components/RecaptHideWidget.tsx
create mode 100644 components/RecaptIdentify.tsx
create mode 100644 components/RecaptLoader.tsx
create mode 100644 components/transactions/BankSyncStatusChip.tsx
create mode 100644 extensions/general/invoice-inbox/__tests__/sandbox-skip-extraction.test.ts
create mode 100644 lib/recapt.ts
create mode 100644 types/recapt.d.ts
diff --git a/.gitignore b/.gitignore
index ce2e628f..6d63ef03 100644
--- a/.gitignore
+++ b/.gitignore
@@ -67,4 +67,4 @@ supabase/.temp/
# out of the box without running the generator.
supabase/.branches/
-scripts\remap-krister-bas96-to-bas2025.ts
+/scripts
\ No newline at end of file
diff --git a/app/(dashboard)/layout.tsx b/app/(dashboard)/layout.tsx
index a5ac505f..cb12e080 100644
--- a/app/(dashboard)/layout.tsx
+++ b/app/(dashboard)/layout.tsx
@@ -4,6 +4,9 @@ import { headers } from 'next/headers'
import DashboardNav from '@/components/dashboard/DashboardNav'
import { MainContainer } from '@/components/dashboard/MainContainer'
import CompanyTabSync from '@/components/dashboard/CompanyTabSync'
+import { RecaptIdentify } from '@/components/RecaptIdentify'
+import { RecaptLoader } from '@/components/RecaptLoader'
+import { RecaptHideWidget } from '@/components/RecaptHideWidget'
import { AgentSheetProvider } from '@/components/agent/AgentSheetProvider'
import AgentTrigger from '@/components/agent/AgentTrigger'
import CommandPalette from '@/components/common/CommandPalette'
@@ -278,6 +281,17 @@ export default async function DashboardLayout({
- Senast synkad{' '}
+ Synkas automatiskt varje natt. Senast synkad{' '}
{new Date(saldo.lastSyncedAt).toLocaleString('sv-SE')}
diff --git a/app/(dashboard)/transactions/page.tsx b/app/(dashboard)/transactions/page.tsx
index 7dd0aee2..fde5f858 100644
--- a/app/(dashboard)/transactions/page.tsx
+++ b/app/(dashboard)/transactions/page.tsx
@@ -24,6 +24,7 @@ import { ChevronDown, Search, Trash2, X } from 'lucide-react'
import TransactionForm from '@/components/transactions/TransactionForm'
import BatchCategorySelector from '@/components/transactions/BatchCategorySelector'
import TransactionStatusBar from '@/components/transactions/TransactionStatusBar'
+import BankSyncStatusChip from '@/components/transactions/BankSyncStatusChip'
import TransactionInboxCard from '@/components/transactions/TransactionInboxCard'
import TransactionHistoryList from '@/components/transactions/TransactionHistoryList'
import InboxZeroState from '@/components/transactions/InboxZeroState'
@@ -1513,6 +1514,8 @@ export default function TransactionsPage() {
onToggleBatchMode={() => (isBatchMode ? exitBatchMode() : setIsBatchMode(true))}
/>
+
- Senast uppdaterad: 2026-03-05 + Senast uppdaterad: 2026-05-28