Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
b9df12b
feat: tos schemas
jona159 Mar 2, 2026
922694a
feat: translations
jona159 Mar 2, 2026
0e7647e
feat: add tos to user schema
jona159 Mar 2, 2026
029aa43
feat: enable middleware
jona159 Mar 2, 2026
a4e472f
feat: tos server
jona159 Mar 2, 2026
c8b2822
feat: add tos acceptance to user creation
jona159 Mar 2, 2026
0246ff1
feat: add terms to menu
jona159 Mar 3, 2026
6ff6b88
feat: dialog component for tos modal
jona159 Mar 3, 2026
3ea6b96
feat: require tos acceptance on register
jona159 Mar 3, 2026
6a0a883
feat: ui and api middlewares
jona159 Mar 3, 2026
4c90204
feat: adjust register via api for tos requirement
jona159 Mar 3, 2026
698fbbc
feat: tos validation
jona159 Mar 3, 2026
0bbbe97
feat: terms component
jona159 Mar 3, 2026
6f57d7c
feat: allow to accept tos via api
jona159 Mar 3, 2026
14144b9
fix: typo, add device deletion page
jona159 Mar 3, 2026
34c49f3
feat: delete device component
jona159 Mar 3, 2026
6fea65a
feat: translations
jona159 Mar 3, 2026
2f6403f
feat: translations
jona159 Mar 3, 2026
53e2da8
feat: get user device
jona159 Mar 3, 2026
49fd12b
fix: rm device deletion from general edit
jona159 Mar 3, 2026
82327d9
fix: style
jona159 Mar 3, 2026
5af63d9
feat: allow profile and delete device in ui
jona159 Mar 3, 2026
61f509f
feat: add delete action
jona159 Mar 3, 2026
a3ed19a
fix: tests
jona159 Mar 3, 2026
4d21408
fix: tests
jona159 Mar 3, 2026
d9fef16
Revert "fix: rm device deletion from general edit"
jona159 Mar 4, 2026
e3a153c
fix: rename to effective from
jona159 Mar 4, 2026
5ff6d7e
fix: rm delete from menu
jona159 Mar 4, 2026
77eedc2
fix: rm delete from sidebar
jona159 Mar 4, 2026
3abf816
feat: delete devices of users who delete their account
jona159 Mar 4, 2026
ce674cb
feat: improve api middleware allowlist
jona159 Mar 4, 2026
a30a5c8
fix: more tests
jona159 Mar 4, 2026
510f27d
fix: remove device deletion from allowlist
jona159 Mar 4, 2026
8356bfd
fix: remove device deletion from allowlist
jona159 Mar 4, 2026
9ec9572
Merge branch 'dev' into feat/tos
jona159 Mar 4, 2026
fc3a5c3
fix: migrations
jona159 Mar 4, 2026
a7e96ae
fix: minor
jona159 Mar 4, 2026
0869dea
fix: migrations
jona159 Mar 9, 2026
24a1b4c
feat: adjust tos schema
jona159 Mar 9, 2026
dfd1946
fix: adjust schema, no grace period
jona159 Mar 10, 2026
ef7fc57
feat: require skipTos flag on each api route to ensure middleware
jona159 Mar 10, 2026
25a6c69
Merge branch 'dev' into feat/tos
jona159 Mar 10, 2026
27f3f56
Merge branch 'dev' into feat/tos
jona159 Mar 17, 2026
2a065f6
fix: migrations
jona159 Mar 17, 2026
c40bca5
fix: make user id primary key no pw table
jona159 Mar 17, 2026
083f9f2
feat: tos and action token migration, adjust request password reset
jona159 Mar 17, 2026
05076da
feat: schema adjustments
jona159 Mar 17, 2026
9e6241a
fix: unique index on user purpose#
jona159 Mar 17, 2026
54943bf
fix: drop email confirmation token col from user
jona159 Mar 17, 2026
84a61cf
fix: rm graceUntil
jona159 Mar 17, 2026
8b25d84
feat: rework terms component for the new flow
jona159 Mar 18, 2026
1d00e00
fix: adjust user service for action tokens
jona159 Mar 18, 2026
730b587
fix: rm email search param from email confirmation
jona159 Mar 18, 2026
f289b92
fix: rm email from test
jona159 Mar 18, 2026
e529dfc
fix: reduce code duplication
jona159 Mar 18, 2026
0dcdc11
fix: use existing db method
jona159 Mar 18, 2026
fb4fc8c
Merge branch 'dev' into feat/tos
jona159 Mar 21, 2026
aa6a355
fix: rm tos migrations
jona159 Mar 21, 2026
2f158ea
fix: build error
jona159 Mar 21, 2026
6f57ac2
feat: tos, action_token migrations
jona159 Mar 21, 2026
5888e45
fix: errors after merge
jona159 Mar 21, 2026
b3bc820
feat: seed tos for tests in ci
jona159 Mar 21, 2026
1f89fc0
fix: types
jona159 Mar 21, 2026
be18fe0
feat: show tos body in markdown
jona159 Mar 21, 2026
943ef41
fix: improve naming
jona159 Mar 21, 2026
a35fe5b
fix: pass tos id
jona159 Mar 23, 2026
b812ecf
feat: use jsonb datatype for tos title and description for multi-lang…
jona159 Mar 23, 2026
2f77045
feat: display tos in user language
jona159 Mar 23, 2026
fa52bbb
Merge branch 'dev' into feat/tos
jona159 Mar 23, 2026
efe2e90
fix: ts
jona159 Mar 23, 2026
fb2d674
fix: localize seed
jona159 Mar 23, 2026
d211f2f
Merge branch 'dev' into feat/tos
jona159 Mar 23, 2026
3dcab45
fix: remove duplicate migration
jona159 Mar 23, 2026
6e73925
feat: tos migration
jona159 Mar 23, 2026
03d6bf9
fix: imports, update method description
jona159 Mar 23, 2026
92ae99a
Merge branch 'dev' into feat/tos
jona159 Mar 23, 2026
c3de066
fix: markdown content component again after merge
jona159 Mar 23, 2026
22f96fb
fix: issue email confirmation token for register
jona159 Mar 24, 2026
6d6c5ca
fix: drop consumedAt column, delete consumed tokens
jona159 Mar 25, 2026
4041b06
feat: add cronjob to delete expired tokens
jona159 Mar 25, 2026
d750e36
Merge branch 'dev' into feat/tos
scheidtdav Mar 25, 2026
7c62783
fix: regenerate and delete old migrations
scheidtdav Mar 25, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions app/components/header/menu/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import {
ExternalLink,
Settings,
Compass,
ScrollText,
} from 'lucide-react'
import { useState } from 'react'
import { useTranslation } from 'react-i18next'
Expand Down Expand Up @@ -153,6 +154,23 @@ export default function Menu() {
</DropdownMenuItem>
</Link>
</DropdownMenuGroup>
<DropdownMenuGroup>
<Link
to={
'/terms'
}
target="_blank"
>
<DropdownMenuItem
onSelect={(e) => e.preventDefault()}
className="cursor-pointer"
>
<ScrollText className="mr-2 inline h-5 w-5" />
<span> {t('tos')}</span>
<ExternalLink className="ml-auto h-4 w-4 text-gray-300" />
</DropdownMenuItem>
</Link>
</DropdownMenuGroup>
<DropdownMenuSeparator />

<DropdownMenuGroup>
Expand Down
103 changes: 87 additions & 16 deletions app/components/markdown-content.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,42 +15,113 @@ export function MarkdownContent({
options={{
overrides: {
h1: {
component: ({ children }) => (
<h1 className="text-3xl font-bold mb-4">{children}</h1>
component: ({ children, className, ...props }) => (
<h1
className={`mb-4 text-3xl font-bold ${className ?? ''}`}
{...props}
>
{children}
</h1>
),
},
h2: {
component: ({ children }) => (
<h2 className="text-2xl font-semibold mb-3">{children}</h2>
component: ({ children, className, ...props }) => (
<h2
className={`mb-3 mt-8 text-2xl font-semibold ${className ?? ''}`}
{...props}
>
{children}
</h2>
),
},
p: {
component: ({ children }) => (
<p className="mb-3 leading-7">{children}</p>
h3: {
component: ({ children, className, ...props }) => (
<h3
className={`mb-2 mt-6 text-xl font-semibold ${className ?? ''}`}
{...props}
>
{children}
</h3>
),
},
a: {
component: ({ children, href }) => (
<a
href={href}
className="text-blue-600 underline hover:text-blue-800"
target="_blank"
rel="noreferrer"
p: {
component: ({ children, className, ...props }) => (
<p
className={`mb-3 leading-7 ${className ?? ''}`}
{...props}
>
{children}
</a>
</p>
),
},
ul: {
component: ({ children, className, ...props }) => (
<ul
className={`${className ?? ''} list-inside list-disc space-y-1`}
className={`mb-4 list-disc pl-6 ${className ?? ''}`}
{...props}
>
{children}
</ul>
),
},
ol: {
component: ({ children, className, ...props }) => (
<ol
className={`mb-4 list-decimal pl-6 ${className ?? ''}`}
{...props}
>
{children}
</ol>
),
},
li: {
component: ({ children, className, ...props }) => (
<li
className={`mb-1 leading-7 ${className ?? ''}`}
{...props}
>
{children}
</li>
),
},
strong: {
component: ({ children, className, ...props }) => (
<strong
className={`font-semibold ${className ?? ''}`}
{...props}
>
{children}
</strong>
),
},
hr: {
component: ({ className, ...props }) => (
<hr className={`my-6 border-border ${className ?? ''}`} {...props} />
),
},
blockquote: {
component: ({ children, className, ...props }) => (
<blockquote
className={`my-4 border-l-4 pl-4 italic text-muted-foreground ${className ?? ''}`}
{...props}
>
{children}
</blockquote>
),
},
a: {
component: ({ children, href, className, ...props }) => (
<a
href={href}
className={`underline underline-offset-2 ${className ?? ''}`}
target="_blank"
rel="noreferrer"
{...props}
>
{children}
</a>
),
},
},
}}
>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ interface SidebarNavProps extends React.HTMLAttributes<HTMLElement> {
}[]
}

export function EditDviceSidebarNav({
export function EditDeviceSidebarNav({
className,
items,
...props
Expand Down
6 changes: 4 additions & 2 deletions app/components/ui/dialog.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ DialogOverlay.displayName = DialogPrimitive.Overlay.displayName

const DialogContent = React.forwardRef<
React.ElementRef<typeof DialogPrimitive.Content>,
React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>
>(({ className, children, ...props }, ref) => (
React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> & { hideClose?: boolean }
>(({ className, children, hideClose, ...props }, ref) => (
<DialogPortal>
<DialogOverlay />
<DialogPrimitive.Content
Expand All @@ -52,10 +52,12 @@ const DialogContent = React.forwardRef<
{...props}
>
{children}
{!hideClose &&(
<DialogPrimitive.Close className="absolute right-3 top-3 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground">
<X className="h-4 w-4" />
<span className="sr-only">Close</span>
</DialogPrimitive.Close>
)}
</DialogPrimitive.Content>
</DialogPortal>
))
Expand Down
Loading
Loading