From 7a0720f10a5733f8e396725ed03cf53b30540096 Mon Sep 17 00:00:00 2001 From: Ibrahim Suleiman Date: Wed, 20 May 2026 09:36:58 +0100 Subject: [PATCH 1/4] docs: add note about active development status in README --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 8e3166d..df5b87d 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,8 @@ Most reminder apps are built around tasks and notifications. I wanted something Sometimes it’s a reflection I want to revisit months later, a message for an important milestone, encouragement before a difficult period, or just context I know I’ll forget with time. Future Self is built around that idea: delayed personal communication instead of productivity tooling. +> **Note** This repository is still in active development + ## Prerequisites - **Node.js** 22.x or current LTS From e0e1e930d0447657b71fc942da9fedeb33d97f05 Mon Sep 17 00:00:00 2001 From: Ibrahim Suleiman Date: Wed, 20 May 2026 09:44:00 +0100 Subject: [PATCH 2/4] feat: enhance input styling for autofill in light and dark modes --- frontend/src/index.css | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/frontend/src/index.css b/frontend/src/index.css index 0281373..b455be0 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -38,6 +38,33 @@ @apply bg-[#e8e4dc] text-paper-dark; } } + + input:-webkit-autofill, + input:-webkit-autofill:hover, + input:-webkit-autofill:focus, + textarea:-webkit-autofill, + textarea:-webkit-autofill:hover, + textarea:-webkit-autofill:focus { + -webkit-text-fill-color: #121212; + -webkit-box-shadow: 0 0 0 1000px #f4f1ea inset; + box-shadow: 0 0 0 1000px #f4f1ea inset; + transition: background-color 9999s ease-in-out 0s; + caret-color: #121212; + } + + @media (prefers-color-scheme: dark) { + input:-webkit-autofill, + input:-webkit-autofill:hover, + input:-webkit-autofill:focus, + textarea:-webkit-autofill, + textarea:-webkit-autofill:hover, + textarea:-webkit-autofill:focus { + -webkit-text-fill-color: #e8e4dc; + -webkit-box-shadow: 0 0 0 1000px #0c0c0c inset; + box-shadow: 0 0 0 1000px #0c0c0c inset; + caret-color: #e8e4dc; + } + } } @layer utilities { From 650cea32f734f30847d89a289f9abc45de9182f0 Mon Sep 17 00:00:00 2001 From: Ibrahim Suleiman Date: Wed, 20 May 2026 09:51:39 +0100 Subject: [PATCH 3/4] feat: implement dark mode support in index.html with dynamic styling --- frontend/index.html | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/frontend/index.html b/frontend/index.html index 34ceb16..5542c81 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -3,6 +3,31 @@ + + Future Self From d38027a3451a06df4effb488fa5e0dd39e93f147 Mon Sep 17 00:00:00 2001 From: Ibrahim Suleiman Date: Wed, 20 May 2026 10:09:03 +0100 Subject: [PATCH 4/4] feat: add password length validation to reset and create user DTOs --- src/auth/dto/reset-password.dto.ts | 4 +++- src/user/dto/create-user.dto.ts | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/auth/dto/reset-password.dto.ts b/src/auth/dto/reset-password.dto.ts index 7543564..9ac5611 100644 --- a/src/auth/dto/reset-password.dto.ts +++ b/src/auth/dto/reset-password.dto.ts @@ -1,4 +1,4 @@ -import { IsEmail, IsNotEmpty, isString, IsString } from 'class-validator'; +import { IsEmail, IsNotEmpty, isString, IsString, MaxLength, MinLength } from 'class-validator'; export class ResetPasswordDto { @IsNotEmpty() @@ -7,6 +7,8 @@ export class ResetPasswordDto { @IsNotEmpty() @IsString() + @MinLength(8) + @MaxLength(32) new_password: string; @IsNotEmpty() diff --git a/src/user/dto/create-user.dto.ts b/src/user/dto/create-user.dto.ts index fbc4a97..5d8b73b 100644 --- a/src/user/dto/create-user.dto.ts +++ b/src/user/dto/create-user.dto.ts @@ -1,4 +1,4 @@ -import { IsNotEmpty, IsOptional, IsString } from 'class-validator'; +import { IsNotEmpty, IsOptional, IsString, MaxLength, MinLength } from 'class-validator'; export class CreateUserDto { @IsString() @@ -7,6 +7,8 @@ export class CreateUserDto { @IsString() @IsNotEmpty() + @MinLength(8) + @MaxLength(32) password: string; @IsString()