Skip to content

Commit f8c91ca

Browse files
committed
multiple fixes
1 parent 5b72b63 commit f8c91ca

23 files changed

Lines changed: 1667 additions & 653 deletions

package-lock.json

Lines changed: 8 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,9 @@
6565
"ts-custom-error": "^3.3.1",
6666
"unzip-stream": "^0.3.1"
6767
},
68+
"overrides": {
69+
"msgpackr": "^1.11.12"
70+
},
6871
"devDependencies": {
6972
"@eslint/js": "^10.0.1",
7073
"@types/archiver": "^5.3.4",

public/css/all.min.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/css/style.css

Lines changed: 230 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2438,36 +2438,36 @@ code {
24382438
}
24392439
}
24402440

2441-
/* Admin stat cards */
2441+
/* Admin stat cards — compact, denser packing for many KPIs */
24422442
.admin-stats {
24432443
display: grid;
2444-
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
2445-
gap: 12px;
2446-
margin-bottom: 20px;
2444+
grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
2445+
gap: 8px;
2446+
margin-bottom: 16px;
24472447
}
24482448

24492449
.admin-stat-card {
24502450
background: var(--paper-card);
24512451
border: 1px solid var(--border-color);
2452-
border-radius: 10px;
2453-
padding: 16px 18px;
2452+
border-radius: 8px;
2453+
padding: 10px 12px;
24542454
}
24552455

24562456
.admin-stat-card .stat-value {
24572457
font-family: var(--font-serif);
2458-
font-size: 1.9rem;
2458+
font-size: 1.4rem;
24592459
font-weight: 400;
24602460
line-height: 1.1;
24612461
color: var(--color);
24622462
}
24632463

24642464
.admin-stat-card .stat-label {
24652465
font-family: var(--font-mono);
2466-
font-size: 10.5px;
2466+
font-size: 9.5px;
24672467
color: var(--ink-muted);
24682468
text-transform: uppercase;
24692469
letter-spacing: 0.08em;
2470-
margin-top: 6px;
2470+
margin-top: 4px;
24712471
}
24722472

24732473
/* Admin toolbar — kept as alias to dashboard filter row */
@@ -2679,8 +2679,9 @@ code {
26792679
/* Admin section headers */
26802680
.admin-section-header {
26812681
display: flex;
2682-
align-items: baseline;
2683-
justify-content: space-between;
2682+
align-items: center;
2683+
flex-wrap: wrap;
2684+
gap: 8px;
26842685
margin: 24px 0 12px;
26852686
padding-bottom: 8px;
26862687
border-bottom: 1px solid var(--border-color);
@@ -3966,10 +3967,16 @@ textarea::selection {
39663967
}
39673968
.paper-table.paper-table-repos .paper-table-head,
39683969
.paper-table.paper-table-repos .paper-table-row {
3969-
grid-template-columns: minmax(280px, 2.4fr) 140px 90px 140px 52px;
3970+
grid-template-columns: minmax(280px, 2.4fr) minmax(140px, 1fr) 90px 140px 52px;
3971+
}
3972+
.paper-table.paper-table-repos.has-bulk .paper-table-head,
3973+
.paper-table.paper-table-repos.has-bulk .paper-table-row {
3974+
grid-template-columns: 28px minmax(280px, 2.4fr) minmax(140px, 1fr) 90px 140px 52px;
3975+
gap: 12px;
39703976
}
39713977
.paper-table .admin-users-row {
3972-
grid-template-columns: minmax(280px, 2.4fr) 140px 140px 52px !important;
3978+
grid-template-columns: 28px minmax(280px, 2.4fr) 90px 120px 100px 52px !important;
3979+
gap: 12px !important;
39733980
}
39743981
.paper-table .paper-table-head {
39753982
background: transparent;
@@ -3982,6 +3989,16 @@ textarea::selection {
39823989
padding-top: 8px;
39833990
padding-bottom: 8px;
39843991
}
3992+
.paper-table .paper-table-head .sortable {
3993+
cursor: pointer;
3994+
user-select: none;
3995+
display: inline-flex;
3996+
align-items: center;
3997+
gap: 4px;
3998+
}
3999+
.paper-table .paper-table-head .sortable:hover { color: var(--color); }
4000+
.paper-table .paper-table-head .sortable.active { color: var(--color); }
4001+
.paper-table .paper-table-head .sortable i { font-size: 10px; }
39854002
.paper-table .paper-table-head .num,
39864003
.paper-table .paper-table-row .num { text-align: left; }
39874004
.paper-table .paper-table-row {
@@ -4046,6 +4063,206 @@ textarea::selection {
40464063
.status-dot.status-preparing { background: #C48A2E; }
40474064
.status-dot.status-removed { background: #9A8F7B; }
40484065

4066+
.bulk-bar {
4067+
display: flex;
4068+
align-items: center;
4069+
gap: 8px;
4070+
background: var(--paper-card);
4071+
border: 1px solid var(--border-color);
4072+
border-radius: 8px;
4073+
padding: 8px 12px;
4074+
margin: 8px 0;
4075+
}
4076+
4077+
/* Tighter admin page header — admin is power-user UI, no need for huge title + lede */
4078+
.paper-page.admin-page .paper-page-title { font-size: 1.6rem; margin: 4px 0; }
4079+
.paper-page.admin-page .paper-page-lede { display: none; }
4080+
.paper-page.admin-page .paper-crumbs { margin-bottom: 4px; }
4081+
.paper-page.admin-page .admin-nav { margin: 6px 0 12px; }
4082+
4083+
/* Admin filter toolbar — single compact line, inline labels (no boxed groups) */
4084+
.admin-filter-toolbar {
4085+
display: flex;
4086+
flex-direction: column;
4087+
gap: 6px;
4088+
margin: 8px 0 12px;
4089+
position: sticky;
4090+
top: 0;
4091+
z-index: 4;
4092+
background: var(--paper-bg, #faf8f3);
4093+
padding: 6px 0;
4094+
border-bottom: 1px solid var(--border-soft, var(--border-color));
4095+
box-shadow: 0 1px 0 var(--paper-bg, #faf8f3); /* paint over content peeking under bottom border on Safari */
4096+
}
4097+
@media (max-width: 900px) {
4098+
.admin-filter-toolbar { position: static; box-shadow: none; }
4099+
}
4100+
.admin-filter-row {
4101+
display: flex;
4102+
flex-wrap: wrap;
4103+
gap: 6px;
4104+
align-items: center;
4105+
}
4106+
.admin-filter-row .search-wrap { flex: 1; min-width: 220px; }
4107+
.admin-filter-row .search-wrap .form-control { height: 34px; }
4108+
4109+
.admin-filter-inline {
4110+
display: inline-flex;
4111+
align-items: center;
4112+
gap: 4px;
4113+
font-size: 12px;
4114+
color: var(--ink-muted);
4115+
}
4116+
.admin-filter-inline > label {
4117+
font-family: var(--font-mono);
4118+
font-size: 10px;
4119+
text-transform: uppercase;
4120+
letter-spacing: 0.06em;
4121+
color: var(--ink-muted);
4122+
margin: 0;
4123+
white-space: nowrap;
4124+
}
4125+
.admin-filter-inline .form-control-sm {
4126+
height: 28px;
4127+
padding: 2px 8px;
4128+
font-size: 12px;
4129+
}
4130+
.admin-filter-inline input[type="text"].form-control-sm,
4131+
.admin-filter-inline input[type="search"].form-control-sm { width: 130px; }
4132+
.admin-filter-inline input[type="date"].form-control-sm { width: 130px; }
4133+
.admin-filter-inline select.form-control-sm { width: auto; min-width: 88px; }
4134+
.admin-filter-inline .arrow { color: var(--ink-muted); font-size: 11px; }
4135+
4136+
.admin-filter-spacer { flex: 1; }
4137+
4138+
/* Active-filter chips — visually surface what's currently constraining the view */
4139+
.admin-active-chips {
4140+
display: flex;
4141+
flex-wrap: wrap;
4142+
gap: 6px;
4143+
align-items: center;
4144+
font-size: 12px;
4145+
color: var(--ink-muted);
4146+
}
4147+
.admin-active-chip {
4148+
display: inline-flex;
4149+
align-items: center;
4150+
gap: 4px;
4151+
padding: 2px 4px 2px 10px;
4152+
border: 1px solid var(--border-color);
4153+
border-radius: 999px;
4154+
background: var(--hover-bg-color);
4155+
font-size: 12px;
4156+
color: var(--color);
4157+
}
4158+
.admin-active-chip .key { color: var(--ink-muted); font-family: var(--font-mono); font-size: 10px; text-transform: uppercase; letter-spacing: 0.06em; }
4159+
.admin-active-chip button {
4160+
background: none;
4161+
border: none;
4162+
cursor: pointer;
4163+
padding: 0 4px;
4164+
color: var(--ink-muted);
4165+
font-size: 12px;
4166+
border-radius: 50%;
4167+
}
4168+
.admin-active-chip button:hover { color: #B42318; }
4169+
4170+
.admin-search-hint {
4171+
position: absolute;
4172+
right: 10px;
4173+
top: 50%;
4174+
transform: translateY(-50%);
4175+
font-family: var(--font-mono);
4176+
font-size: 11px;
4177+
color: var(--ink-muted);
4178+
pointer-events: none;
4179+
border: 1px solid var(--border-color);
4180+
border-radius: 4px;
4181+
padding: 1px 5px;
4182+
background: var(--paper-card);
4183+
}
4184+
.admin-filter-row .search-wrap { position: relative; }
4185+
.admin-filter-row .search-wrap .form-control { padding-right: 40px; }
4186+
.paper-table-row.row-selected {
4187+
background: rgba(47, 122, 68, 0.06);
4188+
}
4189+
4190+
.queue-state-pills { display: inline-flex; gap: 6px; margin-left: 8px; flex-wrap: wrap; }
4191+
.queue-state-pills .pill {
4192+
font-size: 11px;
4193+
padding: 2px 8px;
4194+
border-radius: 999px;
4195+
border: 1px solid var(--border-color);
4196+
background: var(--paper-card);
4197+
color: var(--ink-muted);
4198+
}
4199+
.queue-state-pills .pill-active { color: #C48A2E; border-color: rgba(196,138,46,0.4); }
4200+
.queue-state-pills .pill-failed { color: #B42318; border-color: rgba(180,35,24,0.4); }
4201+
.queue-state-pills .pill-completed { color: #2F7A44; border-color: rgba(47,122,68,0.3); }
4202+
.queue-state-pills .pill-waiting { color: var(--ink-soft); }
4203+
.queue-state-pills .pill-delayed { color: var(--ink-muted); }
4204+
4205+
/* Compact summary bar — replaces stat cards. Each pill is also a filter shortcut. */
4206+
.admin-summary {
4207+
display: flex;
4208+
flex-wrap: wrap;
4209+
align-items: center;
4210+
gap: 6px;
4211+
margin: 8px 0 12px;
4212+
font-size: 13px;
4213+
}
4214+
.admin-summary .summary-total {
4215+
font-family: var(--font-serif);
4216+
font-size: 1.05rem;
4217+
color: var(--color);
4218+
margin-right: 8px;
4219+
}
4220+
.admin-summary .summary-meta {
4221+
color: var(--ink-muted);
4222+
font-size: 12px;
4223+
margin-right: 8px;
4224+
}
4225+
.admin-summary .summary-pill {
4226+
display: inline-flex;
4227+
align-items: center;
4228+
gap: 6px;
4229+
padding: 3px 10px;
4230+
border-radius: 999px;
4231+
border: 1px solid var(--border-color);
4232+
background: var(--paper-card);
4233+
color: var(--ink-muted);
4234+
cursor: pointer;
4235+
font-size: 12px;
4236+
user-select: none;
4237+
transition: background-color 0.1s, border-color 0.1s;
4238+
}
4239+
.admin-summary .summary-pill:hover { background: var(--hover-bg-color); }
4240+
.admin-summary .summary-pill .count {
4241+
font-family: var(--font-mono);
4242+
font-variant-numeric: tabular-nums;
4243+
color: var(--color);
4244+
}
4245+
.admin-summary .summary-pill.active {
4246+
background: var(--color);
4247+
color: var(--paper-bg, #fff);
4248+
border-color: var(--color);
4249+
}
4250+
.admin-summary .summary-pill.active .count { color: inherit; }
4251+
.admin-summary .summary-pill.error .count { color: #B42318; }
4252+
.admin-summary .summary-pill.warn .count { color: #C48A2E; }
4253+
.admin-summary .summary-pill.ok .count { color: #2F7A44; }
4254+
4255+
.job-progress {
4256+
flex: 1;
4257+
height: 6px;
4258+
background: var(--border-soft, var(--border-color));
4259+
border-radius: 999px;
4260+
overflow: hidden;
4261+
margin-left: 12px;
4262+
max-width: 200px;
4263+
}
4264+
.job-progress-bar { height: 100%; background: #2F7A44; transition: width 0.3s; }
4265+
40494266
.paper-table-empty {
40504267
padding: 48px 4px;
40514268
text-align: center;

0 commit comments

Comments
 (0)