updated stuff

This commit is contained in:
2026-01-23 19:07:05 +11:00
parent 1667423db6
commit af6bec983b
33 changed files with 1186 additions and 222 deletions

View File

@@ -1,8 +0,0 @@
package contexts
import (
"git.haelnorr.com/h/golib/hwsauth"
"git.haelnorr.com/h/oslstats/internal/db"
)
var CurrentUser hwsauth.ContextLoader[*db.User]

View File

@@ -1,7 +1,7 @@
package contexts
type contextKey string
type Key string
func (c contextKey) String() string {
func (c Key) String() string {
return "oslstats context key " + string(c)
}

View File

@@ -11,7 +11,10 @@
--spacing: 0.25rem;
--breakpoint-xl: 80rem;
--container-md: 28rem;
--container-2xl: 42rem;
--container-7xl: 80rem;
--text-xs: 0.75rem;
--text-xs--line-height: calc(1 / 0.75);
--text-sm: 0.875rem;
--text-sm--line-height: calc(1.25 / 0.875);
--text-lg: 1.125rem;
@@ -29,11 +32,13 @@
--text-9xl: 8rem;
--text-9xl--line-height: 1;
--font-weight-medium: 500;
--font-weight-semibold: 600;
--font-weight-bold: 700;
--tracking-tight: -0.025em;
--leading-relaxed: 1.625;
--radius-sm: 0.25rem;
--radius-lg: 0.5rem;
--radius-xl: 0.75rem;
--default-transition-duration: 150ms;
--default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
--default-font-family: var(--font-sans);
@@ -189,6 +194,9 @@
}
}
@layer utilities {
.pointer-events-none {
pointer-events: none;
}
.visible {
visibility: visible;
}
@@ -212,6 +220,9 @@
.static {
position: static;
}
.inset-y-0 {
inset-block: calc(var(--spacing) * 0);
}
.end-0 {
inset-inline-end: calc(var(--spacing) * 0);
}
@@ -221,12 +232,18 @@
.top-0 {
top: calc(var(--spacing) * 0);
}
.top-2 {
top: calc(var(--spacing) * 2);
}
.top-4 {
top: calc(var(--spacing) * 4);
}
.right-0 {
right: calc(var(--spacing) * 0);
}
.right-2 {
right: calc(var(--spacing) * 2);
}
.bottom-0 {
bottom: calc(var(--spacing) * 0);
}
@@ -236,9 +253,18 @@
.z-10 {
z-index: 10;
}
.float-left {
float: left;
}
.m-0 {
margin: calc(var(--spacing) * 0);
}
.mx-auto {
margin-inline: auto;
}
.mt-1 {
margin-top: calc(var(--spacing) * 1);
}
.mt-1\.5 {
margin-top: calc(var(--spacing) * 1.5);
}
@@ -248,9 +274,18 @@
.mt-4 {
margin-top: calc(var(--spacing) * 4);
}
.mt-5 {
margin-top: calc(var(--spacing) * 5);
}
.mt-6 {
margin-top: calc(var(--spacing) * 6);
}
.mt-7 {
margin-top: calc(var(--spacing) * 7);
}
.mt-8 {
margin-top: calc(var(--spacing) * 8);
}
.mt-10 {
margin-top: calc(var(--spacing) * 10);
}
@@ -263,12 +298,24 @@
.mt-24 {
margin-top: calc(var(--spacing) * 24);
}
.mr-0 {
margin-right: calc(var(--spacing) * 0);
}
.mr-2 {
margin-right: calc(var(--spacing) * 2);
}
.mr-5 {
margin-right: calc(var(--spacing) * 5);
}
.mb-auto {
margin-bottom: auto;
}
.ml-0 {
margin-left: calc(var(--spacing) * 0);
}
.ml-2 {
margin-left: calc(var(--spacing) * 2);
}
.ml-auto {
margin-left: auto;
}
@@ -331,9 +378,15 @@
.w-full {
width: 100%;
}
.max-w-2xl {
max-width: var(--container-2xl);
}
.max-w-7xl {
max-width: var(--container-7xl);
}
.max-w-100 {
max-width: calc(var(--spacing) * 100);
}
.max-w-md {
max-width: var(--container-md);
}
@@ -343,6 +396,9 @@
.flex-1 {
flex: 1;
}
.border-collapse {
border-collapse: collapse;
}
.translate-x-0 {
--tw-translate-x: calc(var(--spacing) * 0);
translate: var(--tw-translate-x) var(--tw-translate-y);
@@ -354,6 +410,12 @@
.transform {
transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);
}
.cursor-pointer {
cursor: pointer;
}
.resize {
resize: both;
}
.flex-col {
flex-direction: column;
}
@@ -391,6 +453,12 @@
margin-block-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)));
}
}
.gap-x-2 {
column-gap: calc(var(--spacing) * 2);
}
.gap-y-4 {
row-gap: calc(var(--spacing) * 4);
}
.divide-y {
:where(& > :not(:last-child)) {
--tw-divide-y-reverse: 0;
@@ -408,9 +476,15 @@
.overflow-hidden {
overflow: hidden;
}
.overflow-x-auto {
overflow-x: auto;
}
.overflow-x-hidden {
overflow-x: hidden;
}
.rounded {
border-radius: 0.25rem;
}
.rounded-full {
border-radius: calc(infinity * 1px);
}
@@ -420,6 +494,9 @@
.rounded-sm {
border-radius: var(--radius-sm);
}
.rounded-xl {
border-radius: var(--radius-xl);
}
.border {
border-style: var(--tw-border-style);
border-width: 1px;
@@ -427,6 +504,9 @@
.border-surface1 {
border-color: var(--surface1);
}
.border-transparent {
border-color: transparent;
}
.bg-base {
background-color: var(--base);
}
@@ -463,12 +543,21 @@
.p-4 {
padding: calc(var(--spacing) * 4);
}
.px-2 {
padding-inline: calc(var(--spacing) * 2);
}
.px-3 {
padding-inline: calc(var(--spacing) * 3);
}
.px-4 {
padding-inline: calc(var(--spacing) * 4);
}
.px-5 {
padding-inline: calc(var(--spacing) * 5);
}
.py-1 {
padding-block: calc(var(--spacing) * 1);
}
.py-2 {
padding-block: calc(var(--spacing) * 2);
}
@@ -481,12 +570,27 @@
.py-8 {
padding-block: calc(var(--spacing) * 8);
}
.pe-3 {
padding-inline-end: calc(var(--spacing) * 3);
}
.pt-3 {
padding-top: calc(var(--spacing) * 3);
}
.pb-6 {
padding-bottom: calc(var(--spacing) * 6);
}
.text-center {
text-align: center;
}
.text-left {
text-align: left;
}
.text-right {
text-align: right;
}
.font-mono {
font-family: var(--font-mono);
}
.text-2xl {
font-size: var(--text-2xl);
line-height: var(--tw-leading, var(--text-2xl--line-height));
@@ -515,6 +619,10 @@
font-size: var(--text-xl);
line-height: var(--tw-leading, var(--text-xl--line-height));
}
.text-xs {
font-size: var(--text-xs);
line-height: var(--tw-leading, var(--text-xs--line-height));
}
.leading-relaxed {
--tw-leading: var(--leading-relaxed);
line-height: var(--leading-relaxed);
@@ -527,10 +635,20 @@
--tw-font-weight: var(--font-weight-medium);
font-weight: var(--font-weight-medium);
}
.font-semibold {
--tw-font-weight: var(--font-weight-semibold);
font-weight: var(--font-weight-semibold);
}
.tracking-tight {
--tw-tracking: var(--tracking-tight);
letter-spacing: var(--tracking-tight);
}
.break-all {
word-break: break-all;
}
.whitespace-pre-wrap {
white-space: pre-wrap;
}
.text-crust {
color: var(--crust);
}
@@ -552,6 +670,9 @@
.text-text {
color: var(--text);
}
.underline {
text-decoration-line: underline;
}
.opacity-0 {
opacity: 0%;
}
@@ -579,6 +700,10 @@
--tw-duration: 200ms;
transition-duration: 200ms;
}
.select-none {
-webkit-user-select: none;
user-select: none;
}
.hover\:cursor-pointer {
&:hover {
@media (hover: hover) {
@@ -674,6 +799,46 @@
}
}
}
.hover\:text-text {
&:hover {
@media (hover: hover) {
color: var(--text);
}
}
}
.focus\:border-blue {
&:focus {
border-color: var(--blue);
}
}
.focus\:ring-blue {
&:focus {
--tw-ring-color: var(--blue);
}
}
.disabled\:pointer-events-none {
&:disabled {
pointer-events: none;
}
}
.disabled\:cursor-default {
&:disabled {
cursor: default;
}
}
.disabled\:bg-green\/60 {
&:disabled {
background-color: var(--green);
@supports (color: color-mix(in lab, red, red)) {
background-color: color-mix(in oklab, var(--green) 60%, transparent);
}
}
}
.disabled\:opacity-50 {
&:disabled {
opacity: 50%;
}
}
.sm\:end-6 {
@media (width >= 40rem) {
inset-inline-end: calc(var(--spacing) * 6);
@@ -704,6 +869,11 @@
gap: calc(var(--spacing) * 2);
}
}
.sm\:p-7 {
@media (width >= 40rem) {
padding: calc(var(--spacing) * 7);
}
}
.sm\:px-6 {
@media (width >= 40rem) {
padding-inline: calc(var(--spacing) * 6);

View File

@@ -465,7 +465,7 @@ func TestConcurrentGeneration(t *testing.T) {
errors := make(chan error, numGoroutines)
// Generate states concurrently
for i := 0; i < numGoroutines; i++ {
for range numGoroutines {
go func() {
state, userAgentKey, err := GenerateState(cfg, data)
if err != nil {
@@ -486,7 +486,7 @@ func TestConcurrentGeneration(t *testing.T) {
// Collect results
states := make(map[string]bool)
for i := 0; i < numGoroutines; i++ {
for range numGoroutines {
select {
case state := <-results:
if states[state] {