remade in Vitejs
This commit is contained in:
@@ -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"
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
@@ -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
@@ -9,12 +9,8 @@
|
||||
# testing
|
||||
/coverage
|
||||
|
||||
# next.js
|
||||
/.next/
|
||||
/out/
|
||||
|
||||
# production
|
||||
/build
|
||||
# vite
|
||||
/dist/
|
||||
|
||||
# misc
|
||||
.DS_Store
|
||||
@@ -28,11 +24,7 @@ yarn-error.log*
|
||||
# local env files
|
||||
.env*.local
|
||||
|
||||
# vercel
|
||||
.vercel
|
||||
|
||||
# typescript
|
||||
*.tsbuildinfo
|
||||
next-env.d.ts
|
||||
|
||||
/resume
|
||||
/resume
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -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>
|
||||
)
|
||||
}
|
||||
@@ -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’re looking for doesn’t exist or has moved.</p>
|
||||
<div className="btns">
|
||||
<a href="/" className="btn btn-d">Back to home</a>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
-1292
File diff suppressed because it is too large
Load Diff
@@ -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
@@ -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>
|
||||
@@ -1,6 +0,0 @@
|
||||
import { clsx, type ClassValue } from "clsx"
|
||||
import { twMerge } from "tailwind-merge"
|
||||
|
||||
export function cn(...inputs: ClassValue[]) {
|
||||
return twMerge(clsx(inputs))
|
||||
}
|
||||
@@ -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
|
||||
Generated
+534
-7867
File diff suppressed because it is too large
Load Diff
+8
-19
@@ -2,33 +2,22 @@
|
||||
"name": "pietro-portfolio",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
"build": "next build",
|
||||
"start": "next start",
|
||||
"lint": "next lint",
|
||||
"dev": "vite",
|
||||
"build": "tsc --noEmit && vite build",
|
||||
"preview": "vite preview",
|
||||
"type-check": "tsc --noEmit"
|
||||
},
|
||||
"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-dom": "^18.3.1",
|
||||
"tailwind-merge": "^2.6.0",
|
||||
"tailwindcss-animate": "^1.0.7"
|
||||
"react-dom": "^18.3.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^20.16.5",
|
||||
"@types/react": "^18.3.8",
|
||||
"@types/react-dom": "^18.3.0",
|
||||
"eslint": "^10.6.0",
|
||||
"eslint-config-next": "16.2.10",
|
||||
"postcss": "^8.5.18",
|
||||
"tailwindcss": "^3.4.12",
|
||||
"typescript": "^5.6.2"
|
||||
"@vitejs/plugin-react": "^6.0.5",
|
||||
"typescript": "^5.6.2",
|
||||
"vite": "^8.2.1"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
/** @type {import('postcss-load-config').Config} */
|
||||
const config = {
|
||||
plugins: {
|
||||
tailwindcss: {},
|
||||
},
|
||||
};
|
||||
|
||||
export default config;
|
||||
@@ -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’re looking for doesn’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,5 +1,3 @@
|
||||
"use client"
|
||||
|
||||
import { useEffect, useState } from 'react'
|
||||
import BootSequence from './components/boot-sequence'
|
||||
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 }} />
|
||||
}
|
||||
|
||||
export default function Home() {
|
||||
export default function App() {
|
||||
return (
|
||||
<LangProvider>
|
||||
<Page />
|
||||
@@ -1,5 +1,3 @@
|
||||
"use client"
|
||||
|
||||
import { useEffect, useRef, useState } from 'react'
|
||||
|
||||
const BOOT_LINES = [
|
||||
@@ -1,5 +1,3 @@
|
||||
"use client"
|
||||
|
||||
import { useState, useRef, useEffect } from 'react'
|
||||
import { useLang } from '../i18n/lang-context'
|
||||
import { LANGS } from '../i18n/translations'
|
||||
@@ -1,5 +1,3 @@
|
||||
"use client"
|
||||
|
||||
import { createContext, useContext, useEffect, useState } from 'react'
|
||||
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: '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: '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: {
|
||||
@@ -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/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/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',
|
||||
},
|
||||
@@ -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: '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: '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: {
|
||||
@@ -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/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/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',
|
||||
},
|
||||
@@ -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: '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: '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: {
|
||||
@@ -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/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/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',
|
||||
},
|
||||
@@ -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: '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: '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: {
|
||||
@@ -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/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/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',
|
||||
},
|
||||
@@ -1,7 +1,3 @@
|
||||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
|
||||
*,*::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}
|
||||
:root{
|
||||
@@ -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>,
|
||||
)
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
/// <reference types="vite/client" />
|
||||
@@ -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
@@ -1,50 +1,17 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"lib": [
|
||||
"dom",
|
||||
"dom.iterable",
|
||||
"es6"
|
||||
],
|
||||
"allowJs": true,
|
||||
"target": "ES2020",
|
||||
"useDefineForClassFields": true,
|
||||
"lib": ["ES2020", "DOM", "DOM.Iterable"],
|
||||
"module": "ESNext",
|
||||
"skipLibCheck": true,
|
||||
"strict": true,
|
||||
"noEmit": true,
|
||||
"esModuleInterop": true,
|
||||
"module": "esnext",
|
||||
"moduleResolution": "bundler",
|
||||
"resolveJsonModule": true,
|
||||
"isolatedModules": true,
|
||||
"jsx": "preserve",
|
||||
"incremental": true,
|
||||
"plugins": [
|
||||
{
|
||||
"name": "next"
|
||||
}
|
||||
],
|
||||
"baseUrl": ".",
|
||||
"paths": {
|
||||
"@/*": [
|
||||
"./*"
|
||||
],
|
||||
"@/components/*": [
|
||||
"./components/*"
|
||||
],
|
||||
"@/lib/*": [
|
||||
"./lib/*"
|
||||
],
|
||||
"@/types/*": [
|
||||
"./types/*"
|
||||
]
|
||||
}
|
||||
"noEmit": true,
|
||||
"jsx": "react-jsx",
|
||||
"strict": true,
|
||||
"types": ["vite/client"]
|
||||
},
|
||||
"include": [
|
||||
"next-env.d.ts",
|
||||
"**/*.ts",
|
||||
"**/*.tsx",
|
||||
".next/types/**/*.ts",
|
||||
"out/types/**/*.ts"
|
||||
],
|
||||
"exclude": [
|
||||
"node_modules"
|
||||
]
|
||||
"include": ["src", "vite.config.ts"]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
import { defineConfig } from 'vite'
|
||||
import react from '@vitejs/plugin-react'
|
||||
|
||||
export default defineConfig({
|
||||
base: '/whoami/',
|
||||
plugins: [react()],
|
||||
})
|
||||
Reference in New Issue
Block a user