remade in Vitejs

This commit is contained in:
2026-08-09 20:48:12 +02:00
parent 23a7c03da5
commit 03b3e958cb
29 changed files with 697 additions and 9518 deletions
-11
View File
@@ -1,11 +0,0 @@
{
"extends": ["next/core-web-vitals", "next/typescript"],
"rules": {
"@typescript-eslint/no-unused-vars": "warn",
"@typescript-eslint/no-explicit-any": "warn",
"react-hooks/exhaustive-deps": "warn",
"react/no-unescaped-entities": "off",
"@next/next/no-img-element": "warn",
"jsx-a11y/alt-text": "warn"
}
}
+48
View File
@@ -0,0 +1,48 @@
name: Deploy Vite site to Pages
on:
push:
branches: ["main"]
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "22"
cache: npm
- name: Setup Pages
uses: actions/configure-pages@v5
- name: Install dependencies
run: npm ci
- name: Build
run: npm run build
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: ./dist
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
-93
View File
@@ -1,93 +0,0 @@
# Sample workflow for building and deploying a Next.js site to GitHub Pages
#
# To get started with Next.js see: https://nextjs.org/docs/getting-started
#
name: Deploy Next.js site to Pages
on:
# Runs on pushes targeting the default branch
push:
branches: ["main"]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
# Build job
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Detect package manager
id: detect-package-manager
run: |
if [ -f "${{ github.workspace }}/yarn.lock" ]; then
echo "manager=yarn" >> $GITHUB_OUTPUT
echo "command=install" >> $GITHUB_OUTPUT
echo "runner=yarn" >> $GITHUB_OUTPUT
exit 0
elif [ -f "${{ github.workspace }}/package.json" ]; then
echo "manager=npm" >> $GITHUB_OUTPUT
echo "command=ci" >> $GITHUB_OUTPUT
echo "runner=npx --no-install" >> $GITHUB_OUTPUT
exit 0
else
echo "Unable to determine package manager"
exit 1
fi
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "20"
cache: ${{ steps.detect-package-manager.outputs.manager }}
- name: Setup Pages
uses: actions/configure-pages@v5
with:
# Automatically inject basePath in your Next.js configuration file and disable
# server side image optimization (https://nextjs.org/docs/api-reference/next/image#unoptimized).
#
# You may remove this line if you want to manage the configuration yourself.
static_site_generator: next
- name: Restore cache
uses: actions/cache@v4
with:
path: |
.next/cache
# Generate a new cache whenever packages or source files change.
key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json', '**/yarn.lock') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }}
# If source files changed but packages didn't, rebuild from a prior cache.
restore-keys: |
${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json', '**/yarn.lock') }}-
- name: Install dependencies
run: ${{ steps.detect-package-manager.outputs.manager }} ${{ steps.detect-package-manager.outputs.command }}
- name: Build with Next.js
run: ${{ steps.detect-package-manager.outputs.runner }} next build
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: ./out
# Deployment job
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
+3 -11
View File
@@ -9,12 +9,8 @@
# testing # testing
/coverage /coverage
# next.js # vite
/.next/ /dist/
/out/
# production
/build
# misc # misc
.DS_Store .DS_Store
@@ -28,11 +24,7 @@ yarn-error.log*
# local env files # local env files
.env*.local .env*.local
# vercel
.vercel
# typescript # typescript
*.tsbuildinfo *.tsbuildinfo
next-env.d.ts
/resume /resume
Binary file not shown.
Binary file not shown.
-29
View File
@@ -1,29 +0,0 @@
import type { Metadata } from 'next'
import './globals.css'
export const metadata: Metadata = {
title: 'Pietro Quintavalle',
description: 'Systems Engineer · Developer · Homelabber. Economics student at USI Lugano with 5+ years building production-grade infrastructure.',
keywords: ['Pietro Quintavalle', 'Systems Engineer', 'Homelab', 'SysAdmin', 'Economics', 'USI', 'Switzerland'],
authors: [{ name: 'Pietro Quintavalle' }],
openGraph: {
title: 'Pietro Quintavalle',
description: 'Systems Engineer · Developer · Homelabber',
siteName: 'Pietro Quintavalle',
type: 'website',
},
}
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="en" style={{ colorScheme: 'light' }}>
<head>
<meta name="theme-color" content="#FAF9F5" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossOrigin="anonymous" />
<link href="https://fonts.googleapis.com/css2?family=Archivo:wght@500;600;700&family=IBM+Plex+Mono:wght@400;500&family=Inter:ital,wght@0,400;0,500;1,400&family=Fraunces:ital,wght@1,600&display=swap" rel="stylesheet" />
</head>
<body>{children}</body>
</html>
)
}
-12
View File
@@ -1,12 +0,0 @@
export default function NotFound() {
return (
<div style={{minHeight:'100dvh',display:'flex',flexDirection:'column',justifyContent:'center',maxWidth:'var(--container)',margin:'0 auto',padding:'0 var(--pad)'}}>
<div className="status-row"><span className="green-dot"></span>404</div>
<div className="hero-name">Page not<br/>found.</div>
<p className="hero-lead">The page you&rsquo;re looking for doesn&rsquo;t exist or has moved.</p>
<div className="btns">
<a href="/" className="btn btn-d">Back to home</a>
</div>
</div>
)
}
-1292
View File
File diff suppressed because it is too large Load Diff
-21
View File
@@ -1,21 +0,0 @@
{
"$schema": "https://ui.shadcn.com/schema.json",
"style": "new-york",
"rsc": true,
"tsx": true,
"tailwind": {
"config": "tailwind.config.ts",
"css": "app/globals.css",
"baseColor": "neutral",
"cssVariables": true,
"prefix": ""
},
"aliases": {
"components": "@/components",
"utils": "@/lib/utils",
"ui": "@/components/ui",
"lib": "@/lib",
"hooks": "@/hooks"
},
"iconLibrary": "lucide"
}
+24
View File
@@ -0,0 +1,24 @@
<!doctype html>
<html lang="en" style="color-scheme: light">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="theme-color" content="#FAF9F5" />
<title>Pietro Quintavalle</title>
<meta name="description" content="Systems Engineer · Developer · Homelabber. Economics student at USI Lugano with 5+ years building production-grade infrastructure." />
<meta name="keywords" content="Pietro Quintavalle, Systems Engineer, Homelab, SysAdmin, Economics, USI, Switzerland" />
<meta name="author" content="Pietro Quintavalle" />
<meta property="og:title" content="Pietro Quintavalle" />
<meta property="og:description" content="Systems Engineer · Developer · Homelabber" />
<meta property="og:site_name" content="Pietro Quintavalle" />
<meta property="og:type" content="website" />
<link rel="icon" href="/favicon.ico" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Archivo:wght@500;600;700&family=IBM+Plex+Mono:wght@400;500&family=Inter:ital,wght@0,400;0,500;1,400&family=Fraunces:ital,wght@1,600&display=swap" rel="stylesheet" />
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>
-6
View File
@@ -1,6 +0,0 @@
import { clsx, type ClassValue } from "clsx"
import { twMerge } from "tailwind-merge"
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs))
}
-12
View File
@@ -1,12 +0,0 @@
/** @type {import('next').NextConfig} */
const nextConfig = {
output: 'export',
distDir: 'out',
trailingSlash: true,
images: {
unoptimized: true,
domains: ['via.placeholder.com']
}
}
export default nextConfig
+534 -7867
View File
File diff suppressed because it is too large Load Diff
+8 -19
View File
@@ -2,33 +2,22 @@
"name": "pietro-portfolio", "name": "pietro-portfolio",
"version": "0.1.0", "version": "0.1.0",
"private": true, "private": true,
"type": "module",
"scripts": { "scripts": {
"dev": "next dev", "dev": "vite",
"build": "next build", "build": "tsc --noEmit && vite build",
"start": "next start", "preview": "vite preview",
"lint": "next lint",
"type-check": "tsc --noEmit" "type-check": "tsc --noEmit"
}, },
"dependencies": { "dependencies": {
"@radix-ui/react-slot": "^1.1.0",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"lucide-react": "^0.441.0",
"next": "15.5.21",
"radix-ui": "^1.4.2",
"react": "^18.3.1", "react": "^18.3.1",
"react-dom": "^18.3.1", "react-dom": "^18.3.1"
"tailwind-merge": "^2.6.0",
"tailwindcss-animate": "^1.0.7"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^20.16.5",
"@types/react": "^18.3.8", "@types/react": "^18.3.8",
"@types/react-dom": "^18.3.0", "@types/react-dom": "^18.3.0",
"eslint": "^10.6.0", "@vitejs/plugin-react": "^6.0.5",
"eslint-config-next": "16.2.10", "typescript": "^5.6.2",
"postcss": "^8.5.18", "vite": "^8.2.1"
"tailwindcss": "^3.4.12",
"typescript": "^5.6.2"
} }
} }
-8
View File
@@ -1,8 +0,0 @@
/** @type {import('postcss-load-config').Config} */
const config = {
plugins: {
tailwindcss: {},
},
};
export default config;
+44
View File
@@ -0,0 +1,44 @@
<!doctype html>
<html lang="en" style="color-scheme: light">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="theme-color" content="#FAF9F5" />
<title>Page not found · Pietro Quintavalle</title>
<link rel="icon" href="/whoami/favicon.ico" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Archivo:wght@700&family=IBM+Plex+Mono:wght@400;500&display=swap" rel="stylesheet" />
<style>
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{--stone:#F7F6F1;--navy:#111110;--navy2:#C1121F;--mid:#726F66;--line:#DAD7CC}
body{
min-height:100dvh;display:flex;flex-direction:column;justify-content:center;
max-width:640px;margin:0 auto;padding:0 24px;
background:var(--stone);color:var(--navy);
font-family:'Inter',sans-serif;
}
.status-row{
display:inline-flex;align-items:center;gap:8px;width:fit-content;
font-size:12px;color:var(--navy2);font-weight:500;letter-spacing:.08em;margin-bottom:24px;
font-family:'IBM Plex Mono',monospace;text-transform:uppercase;
border:1px solid var(--line);padding:6px 12px;
}
.dot{width:6px;height:6px;background:var(--navy2);border-radius:50%}
h1{font-family:'Archivo',sans-serif;font-size:clamp(40px,5.4vw,58px);font-weight:700;line-height:1.02;letter-spacing:-.02em}
p{font-size:15px;color:var(--mid);line-height:1.7;max-width:480px;margin:24px 0 32px}
a{
display:inline-block;padding:14px 20px;font-size:12px;font-weight:600;
font-family:'IBM Plex Mono',monospace;text-decoration:none;letter-spacing:.06em;text-transform:uppercase;
background:var(--navy);color:var(--stone);border:1px solid var(--navy);
}
a:hover{background:var(--navy2);border-color:var(--navy2)}
</style>
</head>
<body>
<div class="status-row"><span class="dot"></span>404</div>
<h1>Page not<br/>found.</h1>
<p>The page you&rsquo;re looking for doesn&rsquo;t exist or has moved.</p>
<a href="/whoami/">Back to home</a>
</body>
</html>

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

+1 -3
View File
@@ -1,5 +1,3 @@
"use client"
import { useEffect, useState } from 'react' import { useEffect, useState } from 'react'
import BootSequence from './components/boot-sequence' import BootSequence from './components/boot-sequence'
import LangSwitcher from './components/lang-switcher' import LangSwitcher from './components/lang-switcher'
@@ -17,7 +15,7 @@ function Html({ html, tag = 'span', className, style }: { html: string; tag?: 's
return <Tag className={className} style={style} dangerouslySetInnerHTML={{ __html: html }} /> return <Tag className={className} style={style} dangerouslySetInnerHTML={{ __html: html }} />
} }
export default function Home() { export default function App() {
return ( return (
<LangProvider> <LangProvider>
<Page /> <Page />
@@ -1,5 +1,3 @@
"use client"
import { useEffect, useRef, useState } from 'react' import { useEffect, useRef, useState } from 'react'
const BOOT_LINES = [ const BOOT_LINES = [
@@ -1,5 +1,3 @@
"use client"
import { useState, useRef, useEffect } from 'react' import { useState, useRef, useEffect } from 'react'
import { useLang } from '../i18n/lang-context' import { useLang } from '../i18n/lang-context'
import { LANGS } from '../i18n/translations' import { LANGS } from '../i18n/translations'
@@ -1,5 +1,3 @@
"use client"
import { createContext, useContext, useEffect, useState } from 'react' import { createContext, useContext, useEffect, useState } from 'react'
import { Lang, Translations, translations } from './translations' import { Lang, Translations, translations } from './translations'
@@ -142,6 +142,7 @@ const en = {
{ name: 'ValveSoftware/steam-for-linux', desc: 'Diagnosed and fixed a Steam Linux Runtime install bug via config.vdf and appmanifest inspection after all standard recovery paths (integrity verification, manifest wipes, steamcmd re-install) failed; workaround adopted by other affected users.', tag: 'debugging', isKind: true, action: 'Issue #13248', href: 'https://github.com/ValveSoftware/steam-for-linux/issues/13248', isIssue: true }, { name: 'ValveSoftware/steam-for-linux', desc: 'Diagnosed and fixed a Steam Linux Runtime install bug via config.vdf and appmanifest inspection after all standard recovery paths (integrity verification, manifest wipes, steamcmd re-install) failed; workaround adopted by other affected users.', tag: 'debugging', isKind: true, action: 'Issue #13248', href: 'https://github.com/ValveSoftware/steam-for-linux/issues/13248', isIssue: true },
{ name: 'Recol/DLSS-Updater', desc: 'Diagnosed a UI state bug where a popup overlay fired a spurious mouse-exit event, desyncing the card footer from an open dropdown menu; decoupled footer state from raw hover signal to fix it. Verified across 3 cold-launch cycles with tab-switch latency logging at the maintainer’s request before merge.', tag: 'Python', action: 'PR #252', href: 'https://github.com/Recol/DLSS-Updater/pull/252' }, { name: 'Recol/DLSS-Updater', desc: 'Diagnosed a UI state bug where a popup overlay fired a spurious mouse-exit event, desyncing the card footer from an open dropdown menu; decoupled footer state from raw hover signal to fix it. Verified across 3 cold-launch cycles with tab-switch latency logging at the maintainer’s request before merge.', tag: 'Python', action: 'PR #252', href: 'https://github.com/Recol/DLSS-Updater/pull/252' },
{ name: 'Recol/DLSS-Updater', desc: 'Fixed game card image/text alignment and added a light-theme background fade for readability; implemented click-to-open DLL details on the card itself, resolving an accessibility issue by reusing the existing dialog handler instead of adding a new entry point. Verified across light/dark themes with tab-switch latency held under 200ms.', tag: 'Python', action: 'PR #256', href: 'https://github.com/Recol/DLSS-Updater/pull/256' }, { name: 'Recol/DLSS-Updater', desc: 'Fixed game card image/text alignment and added a light-theme background fade for readability; implemented click-to-open DLL details on the card itself, resolving an accessibility issue by reusing the existing dialog handler instead of adding a new entry point. Verified across light/dark themes with tab-switch latency held under 200ms.', tag: 'Python', action: 'PR #256', href: 'https://github.com/Recol/DLSS-Updater/pull/256' },
{ name: 'Sultech/simple-taskbar', desc: 'Added complete Italian and German translations (gettext .po) for this configurable GNOME Shell taskbar extension, registering both locales in po/LINGUAS so the build picks them up — roughly 1,200 translated strings per language.', tag: 'JavaScript', action: 'PR #41', href: 'https://github.com/Sultech/simple-taskbar/pull/41' },
], ],
}, },
github: { github: {
@@ -154,6 +155,7 @@ const en = {
{ name: 'Quinta0/Nargothrond', desc: 'Documentation for full homelab provisioning.', tag: 'docs', isKind: true, href: 'https://github.com/Quinta0/Nargothrond' }, { name: 'Quinta0/Nargothrond', desc: 'Documentation for full homelab provisioning.', tag: 'docs', isKind: true, href: 'https://github.com/Quinta0/Nargothrond' },
{ name: 'Quinta0/ObsidianSetup', desc: 'Cross-platform Obsidian + plugin installer, driven by a shared plugins.json manifest. Author & maintainer.', tag: 'PowerShell', star: '26', href: 'https://github.com/Quinta0/ObsidianSetup' }, { name: 'Quinta0/ObsidianSetup', desc: 'Cross-platform Obsidian + plugin installer, driven by a shared plugins.json manifest. Author & maintainer.', tag: 'PowerShell', star: '26', href: 'https://github.com/Quinta0/ObsidianSetup' },
{ name: 'Quinta0/BostonHousing', desc: 'Probability & Statistics coursework at USI: regression models predicting Boston-area housing prices.', tag: 'Jupyter', href: 'https://github.com/Quinta0/BostonHousing' }, { name: 'Quinta0/BostonHousing', desc: 'Probability & Statistics coursework at USI: regression models predicting Boston-area housing prices.', tag: 'Jupyter', href: 'https://github.com/Quinta0/BostonHousing' },
{ name: 'Quinta0/benthicbloom', desc: 'GNOME Shell 50 extension for wallpaper rotation, with looping video/GIF live wallpapers decoded via GStreamer and rendered on Shell’s own Clutter stage, plus OLED burn-in protection (pixel shifting, idle dimming, forced rotation). Author & maintainer.', tag: 'JavaScript', href: 'https://github.com/Quinta0/benthicbloom' },
], ],
repoAction: 'Repo', repoAction: 'Repo',
}, },
@@ -390,6 +392,7 @@ const it: Translations = {
{ name: 'ValveSoftware/steam-for-linux', desc: 'Diagnosticato e risolto un bug nell’installazione dello Steam Linux Runtime tramite ispezione di config.vdf e appmanifest, dopo che tutti i percorsi di ripristino standard (verifica integrità, wipe dei manifest, reinstallazione via steamcmd) erano falliti; soluzione adottata anche da altri utenti colpiti.', tag: 'debug', isKind: true, action: 'Issue #13248', href: 'https://github.com/ValveSoftware/steam-for-linux/issues/13248', isIssue: true }, { name: 'ValveSoftware/steam-for-linux', desc: 'Diagnosticato e risolto un bug nell’installazione dello Steam Linux Runtime tramite ispezione di config.vdf e appmanifest, dopo che tutti i percorsi di ripristino standard (verifica integrità, wipe dei manifest, reinstallazione via steamcmd) erano falliti; soluzione adottata anche da altri utenti colpiti.', tag: 'debug', isKind: true, action: 'Issue #13248', href: 'https://github.com/ValveSoftware/steam-for-linux/issues/13248', isIssue: true },
{ name: 'Recol/DLSS-Updater', desc: 'Diagnosticato un bug di stato UI in cui un overlay popup generava un evento spurio di mouse-exit, desincronizzando il footer della card da un menu a tendina aperto; risolto scollegando lo stato del footer dal segnale hover grezzo. Verificato su 3 cicli di avvio a freddo con logging della latenza di cambio tab su richiesta del maintainer prima del merge.', tag: 'Python', action: 'PR #252', href: 'https://github.com/Recol/DLSS-Updater/pull/252' }, { name: 'Recol/DLSS-Updater', desc: 'Diagnosticato un bug di stato UI in cui un overlay popup generava un evento spurio di mouse-exit, desincronizzando il footer della card da un menu a tendina aperto; risolto scollegando lo stato del footer dal segnale hover grezzo. Verificato su 3 cicli di avvio a freddo con logging della latenza di cambio tab su richiesta del maintainer prima del merge.', tag: 'Python', action: 'PR #252', href: 'https://github.com/Recol/DLSS-Updater/pull/252' },
{ name: 'Recol/DLSS-Updater', desc: 'Corretto l’allineamento di immagine e testo nella card di gioco e aggiunta una sfumatura di sfondo per la leggibilità nel tema chiaro; implementato il click sulla card per aprire i dettagli DLL, risolvendo un problema di accessibilità riutilizzando il gestore di dialogo già esistente invece di aggiungerne uno nuovo. Verificato nei temi chiaro/scuro con latenza di cambio tab sotto i 200ms.', tag: 'Python', action: 'PR #256', href: 'https://github.com/Recol/DLSS-Updater/pull/256' }, { name: 'Recol/DLSS-Updater', desc: 'Corretto l’allineamento di immagine e testo nella card di gioco e aggiunta una sfumatura di sfondo per la leggibilità nel tema chiaro; implementato il click sulla card per aprire i dettagli DLL, risolvendo un problema di accessibilità riutilizzando il gestore di dialogo già esistente invece di aggiungerne uno nuovo. Verificato nei temi chiaro/scuro con latenza di cambio tab sotto i 200ms.', tag: 'Python', action: 'PR #256', href: 'https://github.com/Recol/DLSS-Updater/pull/256' },
{ name: 'Sultech/simple-taskbar', desc: 'Aggiunte le traduzioni complete in italiano e tedesco (gettext .po) per questa estensione GNOME Shell configurabile per la taskbar, registrando entrambe le lingue in po/LINGUAS per la build — circa 1.200 stringhe tradotte per lingua.', tag: 'JavaScript', action: 'PR #41', href: 'https://github.com/Sultech/simple-taskbar/pull/41' },
], ],
}, },
github: { github: {
@@ -402,6 +405,7 @@ const it: Translations = {
{ name: 'Quinta0/Nargothrond', desc: 'Documentazione per il provisioning completo dell’homelab.', tag: 'documentazione', isKind: true, href: 'https://github.com/Quinta0/Nargothrond' }, { name: 'Quinta0/Nargothrond', desc: 'Documentazione per il provisioning completo dell’homelab.', tag: 'documentazione', isKind: true, href: 'https://github.com/Quinta0/Nargothrond' },
{ name: 'Quinta0/ObsidianSetup', desc: 'Installer multipiattaforma per Obsidian + plugin, guidato da un manifest plugins.json condiviso. Autore e maintainer.', tag: 'PowerShell', star: '26', href: 'https://github.com/Quinta0/ObsidianSetup' }, { name: 'Quinta0/ObsidianSetup', desc: 'Installer multipiattaforma per Obsidian + plugin, guidato da un manifest plugins.json condiviso. Autore e maintainer.', tag: 'PowerShell', star: '26', href: 'https://github.com/Quinta0/ObsidianSetup' },
{ name: 'Quinta0/BostonHousing', desc: 'Coursework di Probabilità & Statistica all’USI: modelli di regressione per predire i prezzi delle case nell’area di Boston.', tag: 'Jupyter', href: 'https://github.com/Quinta0/BostonHousing' }, { name: 'Quinta0/BostonHousing', desc: 'Coursework di Probabilità & Statistica all’USI: modelli di regressione per predire i prezzi delle case nell’area di Boston.', tag: 'Jupyter', href: 'https://github.com/Quinta0/BostonHousing' },
{ name: 'Quinta0/benthicbloom', desc: 'Estensione GNOME Shell 50 per la rotazione dello sfondo, con live wallpaper video/GIF in loop decodificati via GStreamer e renderizzati direttamente sullo stage Clutter di Shell, più protezione OLED dal burn-in (pixel shifting, dimming da inattività, rotazione forzata). Autore e maintainer.', tag: 'JavaScript', href: 'https://github.com/Quinta0/benthicbloom' },
], ],
repoAction: 'Repo', repoAction: 'Repo',
}, },
@@ -628,6 +632,7 @@ const de: Translations = {
{ name: 'ValveSoftware/steam-for-linux', desc: 'Einen Installationsfehler des Steam Linux Runtime per Analyse von config.vdf und appmanifest diagnostiziert und behoben, nachdem alle Standard-Recovery-Wege (Integritätsprüfung, Manifest-Löschung, steamcmd-Neuinstallation) fehlgeschlagen waren; Workaround von weiteren betroffenen Nutzern übernommen.', tag: 'Debugging', isKind: true, action: 'Issue #13248', href: 'https://github.com/ValveSoftware/steam-for-linux/issues/13248', isIssue: true }, { name: 'ValveSoftware/steam-for-linux', desc: 'Einen Installationsfehler des Steam Linux Runtime per Analyse von config.vdf und appmanifest diagnostiziert und behoben, nachdem alle Standard-Recovery-Wege (Integritätsprüfung, Manifest-Löschung, steamcmd-Neuinstallation) fehlgeschlagen waren; Workaround von weiteren betroffenen Nutzern übernommen.', tag: 'Debugging', isKind: true, action: 'Issue #13248', href: 'https://github.com/ValveSoftware/steam-for-linux/issues/13248', isIssue: true },
{ name: 'Recol/DLSS-Updater', desc: 'Einen UI-State-Bug diagnostiziert, bei dem ein Popup-Overlay ein falsches Mouse-Exit-Ereignis auslöste und dadurch die Kartenfußzeile aus einem offenen Dropdown-Menü desynchronisierte; behoben, indem der Footer-State vom rohen Hover-Signal entkoppelt wurde. Über 3 Kaltstart-Zyklen mit Tab-Wechsel-Latenz-Logging auf Wunsch des Maintainers vor dem Merge verifiziert.', tag: 'Python', action: 'PR #252', href: 'https://github.com/Recol/DLSS-Updater/pull/252' }, { name: 'Recol/DLSS-Updater', desc: 'Einen UI-State-Bug diagnostiziert, bei dem ein Popup-Overlay ein falsches Mouse-Exit-Ereignis auslöste und dadurch die Kartenfußzeile aus einem offenen Dropdown-Menü desynchronisierte; behoben, indem der Footer-State vom rohen Hover-Signal entkoppelt wurde. Über 3 Kaltstart-Zyklen mit Tab-Wechsel-Latenz-Logging auf Wunsch des Maintainers vor dem Merge verifiziert.', tag: 'Python', action: 'PR #252', href: 'https://github.com/Recol/DLSS-Updater/pull/252' },
{ name: 'Recol/DLSS-Updater', desc: 'Ausrichtung von Bild und Text auf der Spielkarte korrigiert und einen Hintergrund-Verlauf für die Lesbarkeit im hellen Theme hinzugefügt; Klick auf die Karte zum Öffnen der DLL-Details implementiert, wodurch ein Zugänglichkeitsproblem gelöst wurde, indem der bestehende Dialog-Handler wiederverwendet statt ein neuer Einstiegspunkt hinzugefügt wurde. Verifiziert in hellem/dunklem Theme mit einer Tab-Wechsel-Latenz unter 200ms.', tag: 'Python', action: 'PR #256', href: 'https://github.com/Recol/DLSS-Updater/pull/256' }, { name: 'Recol/DLSS-Updater', desc: 'Ausrichtung von Bild und Text auf der Spielkarte korrigiert und einen Hintergrund-Verlauf für die Lesbarkeit im hellen Theme hinzugefügt; Klick auf die Karte zum Öffnen der DLL-Details implementiert, wodurch ein Zugänglichkeitsproblem gelöst wurde, indem der bestehende Dialog-Handler wiederverwendet statt ein neuer Einstiegspunkt hinzugefügt wurde. Verifiziert in hellem/dunklem Theme mit einer Tab-Wechsel-Latenz unter 200ms.', tag: 'Python', action: 'PR #256', href: 'https://github.com/Recol/DLSS-Updater/pull/256' },
{ name: 'Sultech/simple-taskbar', desc: 'Vollständige italienische und deutsche Übersetzungen (gettext .po) für diese konfigurierbare GNOME-Shell-Taskbar-Erweiterung hinzugefügt und beide Sprachen in po/LINGUAS für den Build registriert — rund 1.200 übersetzte Strings pro Sprache.', tag: 'JavaScript', action: 'PR #41', href: 'https://github.com/Sultech/simple-taskbar/pull/41' },
], ],
}, },
github: { github: {
@@ -640,6 +645,7 @@ const de: Translations = {
{ name: 'Quinta0/Nargothrond', desc: 'Dokumentation für die vollständige Homelab-Bereitstellung.', tag: 'Dokumentation', isKind: true, href: 'https://github.com/Quinta0/Nargothrond' }, { name: 'Quinta0/Nargothrond', desc: 'Dokumentation für die vollständige Homelab-Bereitstellung.', tag: 'Dokumentation', isKind: true, href: 'https://github.com/Quinta0/Nargothrond' },
{ name: 'Quinta0/ObsidianSetup', desc: 'Plattformübergreifender Obsidian-+-Plugin-Installer, gesteuert von einem gemeinsamen plugins.json-Manifest. Autor & Maintainer.', tag: 'PowerShell', star: '26', href: 'https://github.com/Quinta0/ObsidianSetup' }, { name: 'Quinta0/ObsidianSetup', desc: 'Plattformübergreifender Obsidian-+-Plugin-Installer, gesteuert von einem gemeinsamen plugins.json-Manifest. Autor & Maintainer.', tag: 'PowerShell', star: '26', href: 'https://github.com/Quinta0/ObsidianSetup' },
{ name: 'Quinta0/BostonHousing', desc: 'Wahrscheinlichkeits- & Statistik-Coursework an der USI: Regressionsmodelle zur Vorhersage von Hauspreisen im Raum Boston.', tag: 'Jupyter', href: 'https://github.com/Quinta0/BostonHousing' }, { name: 'Quinta0/BostonHousing', desc: 'Wahrscheinlichkeits- & Statistik-Coursework an der USI: Regressionsmodelle zur Vorhersage von Hauspreisen im Raum Boston.', tag: 'Jupyter', href: 'https://github.com/Quinta0/BostonHousing' },
{ name: 'Quinta0/benthicbloom', desc: 'GNOME-Shell-50-Erweiterung zur Hintergrundbild-Rotation, mit in Schleife laufenden Video-/GIF-Live-Hintergründen, die via GStreamer dekodiert und direkt auf Shells eigenem Clutter-Stage gerendert werden, plus OLED-Burn-in-Schutz (Pixel-Shifting, Idle-Dimming, erzwungene Rotation). Autor & Maintainer.', tag: 'JavaScript', href: 'https://github.com/Quinta0/benthicbloom' },
], ],
repoAction: 'Repo', repoAction: 'Repo',
}, },
@@ -866,6 +872,7 @@ const fr: Translations = {
{ name: 'ValveSoftware/steam-for-linux', desc: 'Diagnostic et correction d’un bug d’installation du Steam Linux Runtime via l’inspection de config.vdf et d’appmanifest, après l’échec de tous les chemins de récupération standards (vérification d’intégrité, suppression des manifestes, réinstallation via steamcmd) ; solution adoptée par d’autres utilisateurs concernés.', tag: 'débogage', isKind: true, action: 'Issue #13248', href: 'https://github.com/ValveSoftware/steam-for-linux/issues/13248', isIssue: true }, { name: 'ValveSoftware/steam-for-linux', desc: 'Diagnostic et correction d’un bug d’installation du Steam Linux Runtime via l’inspection de config.vdf et d’appmanifest, après l’échec de tous les chemins de récupération standards (vérification d’intégrité, suppression des manifestes, réinstallation via steamcmd) ; solution adoptée par d’autres utilisateurs concernés.', tag: 'débogage', isKind: true, action: 'Issue #13248', href: 'https://github.com/ValveSoftware/steam-for-linux/issues/13248', isIssue: true },
{ name: 'Recol/DLSS-Updater', desc: 'Diagnostic d’un bug d’état d’interface où une superposition popup déclenchait un événement de sortie de souris parasite, désynchronisant le pied de carte d’un menu déroulant ouvert ; corrigé en découplant l’état du pied de page du signal de survol brut. Vérifié sur 3 cycles de démarrage à froid avec journalisation de la latence de changement d’onglet à la demande du mainteneur avant la fusion.', tag: 'Python', action: 'PR #252', href: 'https://github.com/Recol/DLSS-Updater/pull/252' }, { name: 'Recol/DLSS-Updater', desc: 'Diagnostic d’un bug d’état d’interface où une superposition popup déclenchait un événement de sortie de souris parasite, désynchronisant le pied de carte d’un menu déroulant ouvert ; corrigé en découplant l’état du pied de page du signal de survol brut. Vérifié sur 3 cycles de démarrage à froid avec journalisation de la latence de changement d’onglet à la demande du mainteneur avant la fusion.', tag: 'Python', action: 'PR #252', href: 'https://github.com/Recol/DLSS-Updater/pull/252' },
{ name: 'Recol/DLSS-Updater', desc: 'Corrigé l’alignement de l’image et du texte sur la carte du jeu et ajouté un dégradé d’arrière-plan pour la lisibilité en thème clair ; implémenté le clic sur la carte pour ouvrir les détails DLL, résolvant un problème d’accessibilité en réutilisant le gestionnaire de dialogue existant plutôt qu’en ajoutant un nouveau point d’entrée. Vérifié sur les thèmes clair/sombre avec une latence de changement d’onglet maintenue sous 200 ms.', tag: 'Python', action: 'PR #256', href: 'https://github.com/Recol/DLSS-Updater/pull/256' }, { name: 'Recol/DLSS-Updater', desc: 'Corrigé l’alignement de l’image et du texte sur la carte du jeu et ajouté un dégradé d’arrière-plan pour la lisibilité en thème clair ; implémenté le clic sur la carte pour ouvrir les détails DLL, résolvant un problème d’accessibilité en réutilisant le gestionnaire de dialogue existant plutôt qu’en ajoutant un nouveau point d’entrée. Vérifié sur les thèmes clair/sombre avec une latence de changement d’onglet maintenue sous 200 ms.', tag: 'Python', action: 'PR #256', href: 'https://github.com/Recol/DLSS-Updater/pull/256' },
{ name: 'Sultech/simple-taskbar', desc: 'Ajout des traductions complètes en italien et en allemand (gettext .po) pour cette extension de barre des tâches GNOME Shell configurable, avec enregistrement des deux langues dans po/LINGUAS pour la build — environ 1 200 chaînes traduites par langue.', tag: 'JavaScript', action: 'PR #41', href: 'https://github.com/Sultech/simple-taskbar/pull/41' },
], ],
}, },
github: { github: {
@@ -878,6 +885,7 @@ const fr: Translations = {
{ name: 'Quinta0/Nargothrond', desc: 'Documentation pour le provisioning complet du homelab.', tag: 'documentation', isKind: true, href: 'https://github.com/Quinta0/Nargothrond' }, { name: 'Quinta0/Nargothrond', desc: 'Documentation pour le provisioning complet du homelab.', tag: 'documentation', isKind: true, href: 'https://github.com/Quinta0/Nargothrond' },
{ name: 'Quinta0/ObsidianSetup', desc: 'Installateur multiplateforme Obsidian + extensions, piloté par un manifeste plugins.json partagé. Auteur & mainteneur.', tag: 'PowerShell', star: '26', href: 'https://github.com/Quinta0/ObsidianSetup' }, { name: 'Quinta0/ObsidianSetup', desc: 'Installateur multiplateforme Obsidian + extensions, piloté par un manifeste plugins.json partagé. Auteur & mainteneur.', tag: 'PowerShell', star: '26', href: 'https://github.com/Quinta0/ObsidianSetup' },
{ name: 'Quinta0/BostonHousing', desc: 'Cours de Probabilités & Statistiques à l’USI : modèles de régression prédisant les prix des logements dans la région de Boston.', tag: 'Jupyter', href: 'https://github.com/Quinta0/BostonHousing' }, { name: 'Quinta0/BostonHousing', desc: 'Cours de Probabilités & Statistiques à l’USI : modèles de régression prédisant les prix des logements dans la région de Boston.', tag: 'Jupyter', href: 'https://github.com/Quinta0/BostonHousing' },
{ name: 'Quinta0/benthicbloom', desc: 'Extension GNOME Shell 50 pour la rotation du fond d’écran, avec fonds d’écran animés (vidéo/GIF en boucle) décodés via GStreamer et rendus directement sur le stage Clutter de Shell, plus une protection OLED contre le burn-in (décalage de pixels, assombrissement en inactivité, rotation forcée). Auteur & mainteneur.', tag: 'JavaScript', href: 'https://github.com/Quinta0/benthicbloom' },
], ],
repoAction: 'Dépôt', repoAction: 'Dépôt',
}, },
-4
View File
@@ -1,7 +1,3 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0} *,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
a:focus-visible,button:focus-visible,input:focus-visible{outline:2px solid var(--navy2);outline-offset:2px} a:focus-visible,button:focus-visible,input:focus-visible{outline:2px solid var(--navy2);outline-offset:2px}
:root{ :root{
+10
View File
@@ -0,0 +1,10 @@
import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import App from './App'
import './index.css'
createRoot(document.getElementById('root')!).render(
<StrictMode>
<App />
</StrictMode>,
)
+1
View File
@@ -0,0 +1 @@
/// <reference types="vite/client" />
-82
View File
@@ -1,82 +0,0 @@
import type { Config } from "tailwindcss";
const config: Config = {
darkMode: ["class"],
content: [
"./pages/**/*.{js,ts,jsx,tsx,mdx}",
"./components/**/*.{js,ts,jsx,tsx,mdx}",
"./app/**/*.{js,ts,jsx,tsx,mdx}",
],
theme: {
extend: {
colors: {
nord: {
'0': '#2E3440',
'1': '#3B4252',
'2': '#434C5E',
'3': '#4C566A',
'4': '#D8DEE9',
'5': '#E5E9F0',
'6': '#ECEFF4',
'7': '#8FBCBB',
'8': '#88C0D0',
'9': '#81A1C1',
'10': '#5E81AC',
'11': '#BF616A',
'12': '#D08770',
'13': '#EBCB8B',
'14': '#A3BE8C',
'15': '#B48EAD'
},
background: 'hsl(var(--background))',
foreground: 'hsl(var(--foreground))',
card: {
DEFAULT: 'hsl(var(--card))',
foreground: 'hsl(var(--card-foreground))'
},
popover: {
DEFAULT: 'hsl(var(--popover))',
foreground: 'hsl(var(--popover-foreground))'
},
primary: {
DEFAULT: 'hsl(var(--primary))',
foreground: 'hsl(var(--primary-foreground))'
},
secondary: {
DEFAULT: 'hsl(var(--secondary))',
foreground: 'hsl(var(--secondary-foreground))'
},
muted: {
DEFAULT: 'hsl(var(--muted))',
foreground: 'hsl(var(--muted-foreground))'
},
accent: {
DEFAULT: 'hsl(var(--accent))',
foreground: 'hsl(var(--accent-foreground))'
},
destructive: {
DEFAULT: 'hsl(var(--destructive))',
foreground: 'hsl(var(--destructive-foreground))'
},
border: 'hsl(var(--border))',
input: 'hsl(var(--input))',
ring: 'hsl(var(--ring))',
chart: {
'1': 'hsl(var(--chart-1))',
'2': 'hsl(var(--chart-2))',
'3': 'hsl(var(--chart-3))',
'4': 'hsl(var(--chart-4))',
'5': 'hsl(var(--chart-5))'
}
},
borderRadius: {
lg: 'var(--radius)',
md: 'calc(var(--radius) - 2px)',
sm: 'calc(var(--radius) - 4px)'
}
}
},
plugins: [require("tailwindcss-animate")],
};
export default config;
+9 -42
View File
@@ -1,50 +1,17 @@
{ {
"compilerOptions": { "compilerOptions": {
"lib": [ "target": "ES2020",
"dom", "useDefineForClassFields": true,
"dom.iterable", "lib": ["ES2020", "DOM", "DOM.Iterable"],
"es6" "module": "ESNext",
],
"allowJs": true,
"skipLibCheck": true, "skipLibCheck": true,
"strict": true,
"noEmit": true,
"esModuleInterop": true,
"module": "esnext",
"moduleResolution": "bundler", "moduleResolution": "bundler",
"resolveJsonModule": true, "resolveJsonModule": true,
"isolatedModules": true, "isolatedModules": true,
"jsx": "preserve", "noEmit": true,
"incremental": true, "jsx": "react-jsx",
"plugins": [ "strict": true,
{ "types": ["vite/client"]
"name": "next"
}
],
"baseUrl": ".",
"paths": {
"@/*": [
"./*"
],
"@/components/*": [
"./components/*"
],
"@/lib/*": [
"./lib/*"
],
"@/types/*": [
"./types/*"
]
}
}, },
"include": [ "include": ["src", "vite.config.ts"]
"next-env.d.ts",
"**/*.ts",
"**/*.tsx",
".next/types/**/*.ts",
"out/types/**/*.ts"
],
"exclude": [
"node_modules"
]
} }
+7
View File
@@ -0,0 +1,7 @@
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
export default defineConfig({
base: '/whoami/',
plugins: [react()],
})