Skip to content

Commit e7943b7

Browse files
authored
Add UI improvements (#14)
1 parent 930a007 commit e7943b7

File tree

12 files changed

+110
-29
lines changed

12 files changed

+110
-29
lines changed

CHANGELOG.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [1.0.1] - 2026-01-07
11+
12+
### Fixed
13+
14+
- UI layout and styling improvements
15+
1016
## [1.0.0] - 2026-01-02
1117

1218
### Added
@@ -25,5 +31,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2531
- GitHub Actions CI/CD pipeline with lint, type-check, tests, and build
2632
- Release workflow with Docker image publishing to Docker Hub
2733

28-
[Unreleased]: https://github.com/pedrordgs/vaulthub/compare/v1.0.0...HEAD
34+
[Unreleased]: https://github.com/pedrordgs/vaulthub/compare/v1.0.1...HEAD
35+
[1.0.1]: https://github.com/pedrordgs/vaulthub/compare/v1.0.0...v1.0.1
2936
[1.0.0]: https://github.com/pedrordgs/vaulthub/releases/tag/v1.0.0

app/api/health/__tests__/route.test.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ describe('GET /api/health', () => {
3232
timestamp: '2024-01-01T00:00:00.000Z',
3333
uptime: 123.456,
3434
environment: process.env.NODE_ENV || 'development',
35-
version: '1.0.0',
35+
version: '1.0.1',
3636
service: 'vaulthub',
3737
},
3838
{
@@ -117,7 +117,7 @@ describe('GET /api/health', () => {
117117

118118
expect(mockNextResponse.json).toHaveBeenCalledWith(
119119
expect.objectContaining({
120-
version: '1.0.0',
120+
version: '1.0.1',
121121
}),
122122
expect.any(Object),
123123
);
@@ -134,4 +134,3 @@ describe('GET /api/health', () => {
134134
);
135135
});
136136
});
137-

app/api/health/route.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export async function GET() {
88
timestamp: new Date().toISOString(),
99
uptime: process.uptime(),
1010
environment: process.env.NODE_ENV || 'development',
11-
version: '1.0.0',
11+
version: '1.0.1',
1212
service: 'vaulthub',
1313
};
1414

@@ -20,4 +20,3 @@ export async function GET() {
2020
},
2121
});
2222
}
23-

app/apple-icon.tsx

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import { ImageResponse } from 'next/og';
2+
3+
export const runtime = 'edge';
4+
5+
export const size = {
6+
width: 180,
7+
height: 180,
8+
};
9+
10+
export const contentType = 'image/png';
11+
12+
export default function Icon() {
13+
return new ImageResponse(
14+
(
15+
<div
16+
style={{
17+
fontSize: 24,
18+
background: '#1a1714',
19+
width: '100%',
20+
height: '100%',
21+
display: 'flex',
22+
alignItems: 'center',
23+
justifyContent: 'center',
24+
borderRadius: 32,
25+
}}
26+
>
27+
<svg
28+
xmlns="http://www.w3.org/2000/svg"
29+
width="120"
30+
height="120"
31+
viewBox="0 0 24 24"
32+
fill="none"
33+
stroke="#c67f32"
34+
strokeWidth="2"
35+
strokeLinecap="round"
36+
strokeLinejoin="round"
37+
>
38+
{/* Lock shackle */}
39+
<rect x="3" y="11" width="18" height="11" rx="2" ry="2" fill="#c67f32" stroke="none" />
40+
<path d="M7 11V7a5 5 0 0 1 10 0v4" strokeWidth="2.5" />
41+
{/* Keyhole */}
42+
<circle cx="12" cy="16" r="1.5" fill="#1a1714" stroke="none" />
43+
<rect x="11.25" y="16" width="1.5" height="3" fill="#1a1714" stroke="none" />
44+
</svg>
45+
</div>
46+
),
47+
{
48+
...size,
49+
}
50+
);
51+
}

app/icon.svg

Lines changed: 20 additions & 0 deletions
Loading

app/layout.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,10 @@ export const metadata: Metadata = {
3838
},
3939
},
4040
icons: {
41-
icon: "/favicon.ico",
41+
icon: [
42+
{ url: '/icon.svg', type: 'image/svg+xml' },
43+
],
44+
apple: '/apple-icon',
4245
},
4346
};
4447

app/manifest.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,19 @@ export default function manifest(): MetadataRoute.Manifest {
77
description: 'A modern, secure web application for encrypting and decrypting Ansible vault strings',
88
start_url: '/',
99
display: 'standalone',
10-
background_color: '#ffffff',
11-
theme_color: '#000000',
10+
background_color: '#1a1714',
11+
theme_color: '#c67f32',
1212
icons: [
1313
{
14-
src: '/favicon.ico',
14+
src: '/icon.svg',
1515
sizes: 'any',
16-
type: 'image/x-icon',
16+
type: 'image/svg+xml',
17+
},
18+
{
19+
src: '/apple-icon',
20+
sizes: '180x180',
21+
type: 'image/png',
1722
},
1823
],
1924
};
2025
}
21-

app/page.tsx

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export default function Home() {
1313
return (
1414
<div className="min-h-screen">
1515
{/* Subtle grid pattern */}
16-
<div
16+
<div
1717
className="pointer-events-none fixed inset-0 -z-10 opacity-[0.015] dark:opacity-[0.03]"
1818
style={{
1919
backgroundImage: `linear-gradient(var(--foreground) 1px, transparent 1px), linear-gradient(90deg, var(--foreground) 1px, transparent 1px)`,
@@ -44,14 +44,14 @@ export default function Home() {
4444
{/* Main Content */}
4545
<Tabs defaultValue="encrypt" className="space-y-6">
4646
<TabsList className="grid w-full grid-cols-2 bg-muted/60 p-1">
47-
<TabsTrigger
48-
value="encrypt"
47+
<TabsTrigger
48+
value="encrypt"
4949
className="gap-2 data-[state=active]:bg-primary data-[state=active]:text-primary-foreground"
5050
>
5151
<Lock className="h-4 w-4" />
5252
Encrypt
5353
</TabsTrigger>
54-
<TabsTrigger
54+
<TabsTrigger
5555
value="decrypt"
5656
className="gap-2 data-[state=active]:bg-primary data-[state=active]:text-primary-foreground"
5757
>
@@ -60,10 +60,10 @@ export default function Home() {
6060
</TabsTrigger>
6161
</TabsList>
6262

63-
<TabsContent value="encrypt" className="mt-6">
63+
<TabsContent value="encrypt" className="my-6">
6464
<EncryptForm />
6565
</TabsContent>
66-
<TabsContent value="decrypt" className="mt-6">
66+
<TabsContent value="decrypt" className="my-6">
6767
<DecryptForm />
6868
</TabsContent>
6969
</Tabs>
@@ -72,18 +72,18 @@ export default function Home() {
7272
<footer className="mt-16 space-y-4 text-center text-xs text-muted-foreground">
7373
<p>AES-256 · Compatible with Ansible Vault · Stateless & Secure</p>
7474
<p>
75-
<a
76-
href="https://github.com/pedrordgs/vaulthub"
77-
target="_blank"
75+
<a
76+
href="https://github.com/pedrordgs/vaulthub"
77+
target="_blank"
7878
rel="noopener noreferrer"
7979
className="hover:text-foreground transition-colors underline underline-offset-4"
8080
>
8181
Open Source
8282
</a>
8383
{" · "}
84-
<a
85-
href="https://github.com/pedrordgs/vaulthub/blob/main/LICENSE"
86-
target="_blank"
84+
<a
85+
href="https://github.com/pedrordgs/vaulthub/blob/main/LICENSE"
86+
target="_blank"
8787
rel="noopener noreferrer"
8888
className="hover:text-foreground transition-colors underline underline-offset-4"
8989
>

app/robots.txt/route.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,3 @@ Sitemap: https://vaulthub-app.vercel.app/sitemap.xml
1414
},
1515
});
1616
}
17-

app/sitemap.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,3 @@ export default function sitemap(): MetadataRoute.Sitemap {
1212
},
1313
];
1414
}
15-

0 commit comments

Comments
 (0)