@unbrained/pm-web 2026.6.14 → 2026.7.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +33 -12
- package/README.md +1 -1
- package/dist/app.d.ts +12 -0
- package/dist/app.js +103 -0
- package/dist/app.js.map +1 -0
- package/dist/auth.d.ts +8 -0
- package/dist/auth.js +6 -1
- package/dist/auth.js.map +1 -1
- package/dist/board.d.ts +15 -0
- package/dist/crypto.d.ts +2 -0
- package/dist/db.d.ts +11 -0
- package/dist/ical.d.ts +24 -0
- package/dist/index.d.ts +52 -0
- package/dist/index.js +18 -4
- package/dist/index.js.map +1 -1
- package/dist/middleware/auth.d.ts +8 -0
- package/dist/routes/admin.d.ts +2 -0
- package/dist/routes/auth.d.ts +2 -0
- package/dist/routes/github.d.ts +2 -0
- package/dist/routes/groups.d.ts +2 -0
- package/dist/routes/pm.d.ts +2 -0
- package/dist/routes/projects.d.ts +16 -0
- package/dist/routes/route-params.d.ts +2 -0
- package/dist/routes/sharing.d.ts +3 -0
- package/dist/server.d.ts +1 -0
- package/dist/server.js +2 -58
- package/dist/server.js.map +1 -1
- package/dist/services/pm-runner.d.ts +25 -0
- package/dist/services/sse.d.ts +28 -0
- package/manifest.json +1 -1
- package/package.json +5 -5
- package/public/cookie-consent.css +50 -0
- package/public/cookie-consent.js +43 -0
- package/public/cookie-settings.html +24 -0
- package/public/index.html +4 -4
- package/public/legal-common.css +150 -0
- package/public/legal-notice.html +35 -0
- package/public/privacy-policy.html +51 -0
- package/public/styles.css +42 -42
- package/public/terms.html +27 -0
package/public/styles.css
CHANGED
|
@@ -168,7 +168,7 @@
|
|
|
168
168
|
}
|
|
169
169
|
.theme-toggle:hover { border-color: var(--accent); color: var(--accent); }
|
|
170
170
|
|
|
171
|
-
html, body { height: 100%; font-family: '
|
|
171
|
+
html, body { height: 100%; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; background: var(--bg-base); color: var(--text-primary); font-size: 14px; line-height: 1.5; }
|
|
172
172
|
|
|
173
173
|
/* ── Scrollbars ── */
|
|
174
174
|
::-webkit-scrollbar { width: 6px; height: 6px; }
|
|
@@ -194,7 +194,7 @@ html, body { height: 100%; font-family: 'Inter', sans-serif; background: var(--b
|
|
|
194
194
|
}
|
|
195
195
|
.auth-brand { text-align: center; z-index: 1; }
|
|
196
196
|
.auth-logo {
|
|
197
|
-
font-family: '
|
|
197
|
+
font-family: 'SFMono-Regular', Monaco, 'Cascadia Code', 'Liberation Mono', monospace; font-size: 48px; font-weight: 500;
|
|
198
198
|
color: var(--accent); letter-spacing: -2px; margin-bottom: 16px;
|
|
199
199
|
}
|
|
200
200
|
.auth-logo span { color: var(--text-secondary); }
|
|
@@ -265,7 +265,7 @@ html, body { height: 100%; font-family: 'Inter', sans-serif; background: var(--b
|
|
|
265
265
|
display: flex; align-items: center; padding: 0 16px; gap: 12px; flex-shrink: 0;
|
|
266
266
|
z-index: 100;
|
|
267
267
|
}
|
|
268
|
-
.nav-logo { font-family: '
|
|
268
|
+
.nav-logo { font-family: 'SFMono-Regular', Monaco, 'Cascadia Code', 'Liberation Mono', monospace; font-size: 18px; color: var(--accent); font-weight: 500; letter-spacing: -1px; flex-shrink: 0; }
|
|
269
269
|
.nav-logo span { color: var(--text-muted); }
|
|
270
270
|
.nav-divider { width: 1px; height: 20px; background: var(--border-light); flex-shrink: 0; }
|
|
271
271
|
.project-selector-wrap { flex: 1; max-width: 320px; }
|
|
@@ -280,7 +280,7 @@ html, body { height: 100%; font-family: 'Inter', sans-serif; background: var(--b
|
|
|
280
280
|
.nav-search-hint {
|
|
281
281
|
font-size: 11px; color: var(--text-muted); background: var(--bg-input);
|
|
282
282
|
border: 1px solid var(--border); border-radius: 6px; padding: 4px 8px;
|
|
283
|
-
font-family: '
|
|
283
|
+
font-family: 'SFMono-Regular', Monaco, 'Cascadia Code', 'Liberation Mono', monospace; cursor: pointer; transition: var(--transition);
|
|
284
284
|
}
|
|
285
285
|
.nav-search-hint:hover { border-color: var(--accent); color: var(--text-secondary); }
|
|
286
286
|
.user-menu { display: flex; align-items: center; gap: 8px; }
|
|
@@ -315,7 +315,7 @@ html, body { height: 100%; font-family: 'Inter', sans-serif; background: var(--b
|
|
|
315
315
|
.sidebar-item-icon { font-size: 14px; width: 18px; text-align: center; flex-shrink: 0; }
|
|
316
316
|
.sidebar-badge {
|
|
317
317
|
margin-left: auto; font-size: 10px; background: var(--bg-card);
|
|
318
|
-
color: var(--text-muted); padding: 1px 6px; border-radius: 10px; font-family: '
|
|
318
|
+
color: var(--text-muted); padding: 1px 6px; border-radius: 10px; font-family: 'SFMono-Regular', Monaco, 'Cascadia Code', 'Liberation Mono', monospace;
|
|
319
319
|
}
|
|
320
320
|
.sidebar-item.active .sidebar-badge { background: var(--accent-dim); color: var(--accent); }
|
|
321
321
|
|
|
@@ -367,7 +367,7 @@ html, body { height: 100%; font-family: 'Inter', sans-serif; background: var(--b
|
|
|
367
367
|
}
|
|
368
368
|
.item-row:hover { border-color: var(--border-light); background: var(--bg-sidebar-hover); transform: translateX(2px); }
|
|
369
369
|
.item-type-icon { font-size: 14px; width: 20px; text-align: center; flex-shrink: 0; color: var(--text-muted); }
|
|
370
|
-
.item-id { font-family: '
|
|
370
|
+
.item-id { font-family: 'SFMono-Regular', Monaco, 'Cascadia Code', 'Liberation Mono', monospace; font-size: 11px; color: var(--text-muted); flex-shrink: 0; min-width: 70px; }
|
|
371
371
|
.item-title { flex: 1; font-size: 13px; font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
372
372
|
.item-meta { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }
|
|
373
373
|
.status-badge {
|
|
@@ -391,7 +391,7 @@ html, body { height: 100%; font-family: 'Inter', sans-serif; background: var(--b
|
|
|
391
391
|
.priority-5 { background: var(--priority-5); }
|
|
392
392
|
|
|
393
393
|
.item-tags { display: flex; gap: 4px; flex-wrap: wrap; }
|
|
394
|
-
.tag { font-size: 10px; background: rgba(45,212,191,0.1); color: var(--accent); padding: 1px 6px; border-radius: 4px; font-family: '
|
|
394
|
+
.tag { font-size: 10px; background: rgba(45,212,191,0.1); color: var(--accent); padding: 1px 6px; border-radius: 4px; font-family: 'SFMono-Regular', Monaco, 'Cascadia Code', 'Liberation Mono', monospace; }
|
|
395
395
|
|
|
396
396
|
/* ── Empty State ── */
|
|
397
397
|
.empty-state { padding: 48px; text-align: center; color: var(--text-muted); }
|
|
@@ -431,7 +431,7 @@ html, body { height: 100%; font-family: 'Inter', sans-serif; background: var(--b
|
|
|
431
431
|
|
|
432
432
|
/* ── Item Detail ── */
|
|
433
433
|
.item-detail-header { margin-bottom: 24px; }
|
|
434
|
-
.item-detail-id { font-family: '
|
|
434
|
+
.item-detail-id { font-family: 'SFMono-Regular', Monaco, 'Cascadia Code', 'Liberation Mono', monospace; font-size: 12px; color: var(--text-muted); margin-bottom: 6px; }
|
|
435
435
|
.item-detail-title { font-size: 20px; font-weight: 600; margin-bottom: 12px; line-height: 1.3; }
|
|
436
436
|
.item-detail-meta { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
|
|
437
437
|
.meta-chip {
|
|
@@ -467,13 +467,13 @@ html, body { height: 100%; font-family: 'Inter', sans-serif; background: var(--b
|
|
|
467
467
|
.stats-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 12px; margin-bottom: 24px; }
|
|
468
468
|
.stat-card { background: var(--bg-card2); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 16px; }
|
|
469
469
|
.stat-icon { font-size: 16px; color: var(--text-muted); margin-bottom: 6px; line-height: 1; }
|
|
470
|
-
.stat-value { font-size: 28px; font-weight: 700; font-family: '
|
|
470
|
+
.stat-value { font-size: 28px; font-weight: 700; font-family: 'SFMono-Regular', Monaco, 'Cascadia Code', 'Liberation Mono', monospace; color: var(--accent); line-height: 1; }
|
|
471
471
|
.stat-label { font-size: 11px; color: var(--text-muted); margin-top: 4px; text-transform: uppercase; letter-spacing: 0.5px; }
|
|
472
472
|
|
|
473
473
|
.breakdown-row { display: flex; align-items: center; gap: 10px; padding: 6px 0; border-bottom: 1px solid var(--border); }
|
|
474
474
|
.breakdown-row:last-child { border-bottom: none; }
|
|
475
475
|
.breakdown-label { flex: 1; font-size: 13px; color: var(--text-secondary); }
|
|
476
|
-
.breakdown-count { font-family: '
|
|
476
|
+
.breakdown-count { font-family: 'SFMono-Regular', Monaco, 'Cascadia Code', 'Liberation Mono', monospace; font-size: 13px; color: var(--text-primary); min-width: 30px; text-align: right; }
|
|
477
477
|
.breakdown-bar-wrap { width: 80px; height: 4px; background: var(--border); border-radius: 2px; overflow: hidden; }
|
|
478
478
|
.breakdown-bar { height: 100%; background: var(--accent); border-radius: 2px; transition: width 0.5s ease; }
|
|
479
479
|
|
|
@@ -482,12 +482,12 @@ html, body { height: 100%; font-family: 'Inter', sans-serif; background: var(--b
|
|
|
482
482
|
.calendar-event:hover { background: var(--bg-sidebar-hover); }
|
|
483
483
|
.calendar-event-title { font-size: 13px; font-weight: 500; }
|
|
484
484
|
.calendar-event-date { font-size: 11px; color: var(--text-muted); margin-top: 2px; }
|
|
485
|
-
.calendar-event-id { font-family: '
|
|
485
|
+
.calendar-event-id { font-family: 'SFMono-Regular', Monaco, 'Cascadia Code', 'Liberation Mono', monospace; font-size: 10px; color: var(--text-muted); }
|
|
486
486
|
|
|
487
487
|
/* ── Context ── */
|
|
488
488
|
.context-section { margin-bottom: 20px; }
|
|
489
489
|
.context-section-title { font-size: 13px; font-weight: 600; color: var(--accent); margin-bottom: 10px; display: flex; align-items: center; gap: 8px; }
|
|
490
|
-
.context-block { background: var(--bg-input); border: 1px solid var(--border); border-radius: var(--radius); padding: 12px 14px; font-family: '
|
|
490
|
+
.context-block { background: var(--bg-input); border: 1px solid var(--border); border-radius: var(--radius); padding: 12px 14px; font-family: 'SFMono-Regular', Monaco, 'Cascadia Code', 'Liberation Mono', monospace; font-size: 12px; color: var(--text-secondary); white-space: pre-wrap; overflow-x: auto; }
|
|
491
491
|
.context-item-row { display: flex; align-items: center; gap: 10px; padding: 6px 0; border-bottom: 1px solid var(--border); font-size: 13px; }
|
|
492
492
|
.context-item-row:last-child { border-bottom: none; }
|
|
493
493
|
|
|
@@ -553,7 +553,7 @@ body.graph-mode #app-body {
|
|
|
553
553
|
white-space: nowrap;
|
|
554
554
|
}
|
|
555
555
|
.graph-mode-chip {
|
|
556
|
-
font-family: '
|
|
556
|
+
font-family: 'SFMono-Regular', Monaco, 'Cascadia Code', 'Liberation Mono', monospace;
|
|
557
557
|
font-size: 9px;
|
|
558
558
|
font-weight: 500;
|
|
559
559
|
padding: 2px 7px;
|
|
@@ -608,7 +608,7 @@ body.graph-mode #app-body {
|
|
|
608
608
|
outline: none;
|
|
609
609
|
color: var(--text-primary);
|
|
610
610
|
font-size: 13px;
|
|
611
|
-
font-family: '
|
|
611
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
612
612
|
}
|
|
613
613
|
.graph-search-hud-input::placeholder { color: var(--text-muted); }
|
|
614
614
|
.graph-preset-rail {
|
|
@@ -656,7 +656,7 @@ body.graph-mode #app-body {
|
|
|
656
656
|
}
|
|
657
657
|
.graph-preset-btn strong {
|
|
658
658
|
color: var(--text-muted);
|
|
659
|
-
font-family: '
|
|
659
|
+
font-family: 'SFMono-Regular', Monaco, 'Cascadia Code', 'Liberation Mono', monospace;
|
|
660
660
|
font-size: 9px;
|
|
661
661
|
font-weight: 600;
|
|
662
662
|
text-transform: uppercase;
|
|
@@ -677,7 +677,7 @@ body.graph-mode #app-body {
|
|
|
677
677
|
border-radius: 6px;
|
|
678
678
|
color: var(--text-secondary);
|
|
679
679
|
font-size: 12px;
|
|
680
|
-
font-family: '
|
|
680
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
681
681
|
padding: 5px 10px;
|
|
682
682
|
cursor: pointer;
|
|
683
683
|
white-space: nowrap;
|
|
@@ -783,7 +783,7 @@ body.graph-mode #app-body {
|
|
|
783
783
|
cursor: pointer;
|
|
784
784
|
transition: background 0.15s;
|
|
785
785
|
text-align: center;
|
|
786
|
-
font-family: '
|
|
786
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
787
787
|
}
|
|
788
788
|
.graph-scope-btn:hover { background: rgba(45,212,191,0.18); }
|
|
789
789
|
.graph-dep-mode-btn {
|
|
@@ -800,7 +800,7 @@ body.graph-mode #app-body {
|
|
|
800
800
|
font-size: 12px;
|
|
801
801
|
padding: 7px 9px;
|
|
802
802
|
cursor: pointer;
|
|
803
|
-
font-family: '
|
|
803
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
804
804
|
}
|
|
805
805
|
.graph-dep-mode-btn:hover,
|
|
806
806
|
.graph-dep-mode-btn.active {
|
|
@@ -810,7 +810,7 @@ body.graph-mode #app-body {
|
|
|
810
810
|
}
|
|
811
811
|
.graph-dep-mode-btn strong {
|
|
812
812
|
color: #fb923c;
|
|
813
|
-
font-family: '
|
|
813
|
+
font-family: 'SFMono-Regular', Monaco, 'Cascadia Code', 'Liberation Mono', monospace;
|
|
814
814
|
font-size: 10px;
|
|
815
815
|
text-transform: uppercase;
|
|
816
816
|
}
|
|
@@ -986,12 +986,12 @@ body.graph-mode #app-body {
|
|
|
986
986
|
text-overflow: ellipsis;
|
|
987
987
|
}
|
|
988
988
|
.graph-rel-id {
|
|
989
|
-
font-family: '
|
|
989
|
+
font-family: 'SFMono-Regular', Monaco, 'Cascadia Code', 'Liberation Mono', monospace;
|
|
990
990
|
font-size: 11px;
|
|
991
991
|
color: var(--text-muted);
|
|
992
992
|
}
|
|
993
993
|
.graph-rel-type {
|
|
994
|
-
font-family: '
|
|
994
|
+
font-family: 'SFMono-Regular', Monaco, 'Cascadia Code', 'Liberation Mono', monospace;
|
|
995
995
|
font-size: 10px;
|
|
996
996
|
color: var(--accent);
|
|
997
997
|
border: 1px solid var(--border-light);
|
|
@@ -1006,7 +1006,7 @@ body.graph-mode #app-body {
|
|
|
1006
1006
|
margin-top: 4px;
|
|
1007
1007
|
font-size: 10px;
|
|
1008
1008
|
color: var(--text-muted);
|
|
1009
|
-
font-family: '
|
|
1009
|
+
font-family: 'SFMono-Regular', Monaco, 'Cascadia Code', 'Liberation Mono', monospace;
|
|
1010
1010
|
}
|
|
1011
1011
|
.graph-rel-props em {
|
|
1012
1012
|
color: var(--text-secondary);
|
|
@@ -1027,7 +1027,7 @@ body.graph-mode #app-body {
|
|
|
1027
1027
|
font-size: 13px;
|
|
1028
1028
|
color: var(--text-secondary);
|
|
1029
1029
|
}
|
|
1030
|
-
.graph-type-row strong { color: var(--text-primary); font-family: '
|
|
1030
|
+
.graph-type-row strong { color: var(--text-primary); font-family: 'SFMono-Regular', Monaco, 'Cascadia Code', 'Liberation Mono', monospace; }
|
|
1031
1031
|
.graph-node-list { display: flex; flex-direction: column; gap: 6px; }
|
|
1032
1032
|
.graph-node {
|
|
1033
1033
|
width: 100%;
|
|
@@ -1128,7 +1128,7 @@ body.graph-mode #app-body {
|
|
|
1128
1128
|
border-radius: 6px;
|
|
1129
1129
|
color: var(--text-secondary);
|
|
1130
1130
|
font-size: 12px;
|
|
1131
|
-
font-family: '
|
|
1131
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
1132
1132
|
padding: 5px 8px;
|
|
1133
1133
|
cursor: pointer;
|
|
1134
1134
|
outline: none;
|
|
@@ -1154,7 +1154,7 @@ body.graph-mode #app-body {
|
|
|
1154
1154
|
margin-bottom: 6px;
|
|
1155
1155
|
}
|
|
1156
1156
|
.graph-selected-title { font-size: 15px; font-weight: 700; color: var(--text-primary); line-height: 1.3; }
|
|
1157
|
-
.graph-selected-meta { margin-top: 4px; color: var(--text-muted); font-family: '
|
|
1157
|
+
.graph-selected-meta { margin-top: 4px; color: var(--text-muted); font-family: 'SFMono-Regular', Monaco, 'Cascadia Code', 'Liberation Mono', monospace; font-size: 11px; overflow-wrap: anywhere; }
|
|
1158
1158
|
.graph-selected-actions { display: flex; gap: 8px; margin-top: 12px; flex-wrap: wrap; }
|
|
1159
1159
|
.graph-selected-counts {
|
|
1160
1160
|
display: flex;
|
|
@@ -1166,7 +1166,7 @@ body.graph-mode #app-body {
|
|
|
1166
1166
|
border: 1px solid var(--border);
|
|
1167
1167
|
border-radius: 999px;
|
|
1168
1168
|
color: var(--text-secondary);
|
|
1169
|
-
font-family: '
|
|
1169
|
+
font-family: 'SFMono-Regular', Monaco, 'Cascadia Code', 'Liberation Mono', monospace;
|
|
1170
1170
|
font-size: 10px;
|
|
1171
1171
|
padding: 4px 8px;
|
|
1172
1172
|
}
|
|
@@ -1211,7 +1211,7 @@ body.graph-mode #app-body {
|
|
|
1211
1211
|
.graph-blocker-row:hover { border-color: rgba(251,146,60,0.42); }
|
|
1212
1212
|
.graph-blocker-row span {
|
|
1213
1213
|
color: #fb923c;
|
|
1214
|
-
font-family: '
|
|
1214
|
+
font-family: 'SFMono-Regular', Monaco, 'Cascadia Code', 'Liberation Mono', monospace;
|
|
1215
1215
|
font-size: 9px;
|
|
1216
1216
|
text-transform: uppercase;
|
|
1217
1217
|
}
|
|
@@ -1283,7 +1283,7 @@ body.graph-mode #app-body {
|
|
|
1283
1283
|
.graph-neighbor:hover strong { color: var(--text-primary); }
|
|
1284
1284
|
.graph-rel-badge {
|
|
1285
1285
|
display: inline-block;
|
|
1286
|
-
font-family: '
|
|
1286
|
+
font-family: 'SFMono-Regular', Monaco, 'Cascadia Code', 'Liberation Mono', monospace;
|
|
1287
1287
|
font-size: 9px;
|
|
1288
1288
|
color: var(--accent);
|
|
1289
1289
|
border: 1px solid var(--border-light);
|
|
@@ -1328,14 +1328,14 @@ body.graph-mode #app-body {
|
|
|
1328
1328
|
display: block;
|
|
1329
1329
|
margin-top: 2px;
|
|
1330
1330
|
color: var(--text-muted);
|
|
1331
|
-
font-family: '
|
|
1331
|
+
font-family: 'SFMono-Regular', Monaco, 'Cascadia Code', 'Liberation Mono', monospace;
|
|
1332
1332
|
font-size: 10px;
|
|
1333
1333
|
font-style: normal;
|
|
1334
1334
|
}
|
|
1335
1335
|
.graph-insight-row b {
|
|
1336
1336
|
align-self: center;
|
|
1337
1337
|
color: var(--accent);
|
|
1338
|
-
font-family: '
|
|
1338
|
+
font-family: 'SFMono-Regular', Monaco, 'Cascadia Code', 'Liberation Mono', monospace;
|
|
1339
1339
|
}
|
|
1340
1340
|
.graph-insight-row small {
|
|
1341
1341
|
grid-column: 1 / -1;
|
|
@@ -1385,7 +1385,7 @@ body.graph-mode #app-body {
|
|
|
1385
1385
|
}
|
|
1386
1386
|
.graph-chain-row i {
|
|
1387
1387
|
color: var(--text-muted);
|
|
1388
|
-
font-family: '
|
|
1388
|
+
font-family: 'SFMono-Regular', Monaco, 'Cascadia Code', 'Liberation Mono', monospace;
|
|
1389
1389
|
font-style: normal;
|
|
1390
1390
|
font-weight: 500;
|
|
1391
1391
|
}
|
|
@@ -1400,7 +1400,7 @@ body.graph-mode #app-body {
|
|
|
1400
1400
|
.graph-path-label {
|
|
1401
1401
|
margin-bottom: 6px;
|
|
1402
1402
|
color: var(--text-muted);
|
|
1403
|
-
font-family: '
|
|
1403
|
+
font-family: 'SFMono-Regular', Monaco, 'Cascadia Code', 'Liberation Mono', monospace;
|
|
1404
1404
|
font-size: 10px;
|
|
1405
1405
|
text-transform: uppercase;
|
|
1406
1406
|
}
|
|
@@ -1466,7 +1466,7 @@ body.graph-mode #app-body {
|
|
|
1466
1466
|
white-space: nowrap;
|
|
1467
1467
|
}
|
|
1468
1468
|
.graph-physics-val {
|
|
1469
|
-
font-family: '
|
|
1469
|
+
font-family: 'SFMono-Regular', Monaco, 'Cascadia Code', 'Liberation Mono', monospace;
|
|
1470
1470
|
font-size: 10px;
|
|
1471
1471
|
color: var(--accent);
|
|
1472
1472
|
text-align: right;
|
|
@@ -1512,7 +1512,7 @@ body.graph-mode #app-body {
|
|
|
1512
1512
|
gap: 6px;
|
|
1513
1513
|
}
|
|
1514
1514
|
.graph-depth-val {
|
|
1515
|
-
font-family: '
|
|
1515
|
+
font-family: 'SFMono-Regular', Monaco, 'Cascadia Code', 'Liberation Mono', monospace;
|
|
1516
1516
|
font-size: 10px;
|
|
1517
1517
|
color: var(--accent);
|
|
1518
1518
|
min-width: 14px;
|
|
@@ -1576,7 +1576,7 @@ body.graph-mode #app-body {
|
|
|
1576
1576
|
border: none;
|
|
1577
1577
|
width: 100%;
|
|
1578
1578
|
text-align: left;
|
|
1579
|
-
font-family: '
|
|
1579
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
1580
1580
|
}
|
|
1581
1581
|
.graph-ctx-item:hover {
|
|
1582
1582
|
background: rgba(148,163,184,0.08);
|
|
@@ -1634,7 +1634,7 @@ body.graph-mode #app-body {
|
|
|
1634
1634
|
display: block;
|
|
1635
1635
|
margin-top: 2px;
|
|
1636
1636
|
color: var(--text-muted);
|
|
1637
|
-
font-family: '
|
|
1637
|
+
font-family: 'SFMono-Regular', Monaco, 'Cascadia Code', 'Liberation Mono', monospace;
|
|
1638
1638
|
font-size: 11px;
|
|
1639
1639
|
}
|
|
1640
1640
|
.admin-pill {
|
|
@@ -1713,10 +1713,10 @@ body.graph-mode #app-body {
|
|
|
1713
1713
|
}
|
|
1714
1714
|
.project-card:hover { border-color: var(--accent); transform: translateY(-2px); box-shadow: 0 8px 24px rgba(0,0,0,0.3); }
|
|
1715
1715
|
.project-card-name { font-size: 16px; font-weight: 600; margin-bottom: 4px; }
|
|
1716
|
-
.project-card-slug { font-family: '
|
|
1716
|
+
.project-card-slug { font-family: 'SFMono-Regular', Monaco, 'Cascadia Code', 'Liberation Mono', monospace; font-size: 11px; color: var(--text-muted); margin-bottom: 8px; }
|
|
1717
1717
|
.project-card-desc { font-size: 13px; color: var(--text-secondary); line-height: 1.5; }
|
|
1718
1718
|
.project-card-meta { display: flex; justify-content: space-between; align-items: center; margin-top: 16px; }
|
|
1719
|
-
.project-card-prefix { font-family: '
|
|
1719
|
+
.project-card-prefix { font-family: 'SFMono-Regular', Monaco, 'Cascadia Code', 'Liberation Mono', monospace; font-size: 11px; background: var(--accent-glow); color: var(--accent); padding: 2px 8px; border-radius: 4px; }
|
|
1720
1720
|
.project-card-date { font-size: 11px; color: var(--text-muted); }
|
|
1721
1721
|
.project-card-del { position: absolute; top: 12px; right: 12px; opacity: 0; transition: var(--transition); }
|
|
1722
1722
|
.project-card:hover .project-card-del { opacity: 1; }
|
|
@@ -1743,7 +1743,7 @@ body.graph-mode #app-body {
|
|
|
1743
1743
|
hr.section-divider { border: none; border-top: 1px solid var(--border); margin: 20px 0; }
|
|
1744
1744
|
|
|
1745
1745
|
/* ── Code/mono snippets ── */
|
|
1746
|
-
.mono { font-family: '
|
|
1746
|
+
.mono { font-family: 'SFMono-Regular', Monaco, 'Cascadia Code', 'Liberation Mono', monospace; }
|
|
1747
1747
|
|
|
1748
1748
|
/* ── Two-col layout ── */
|
|
1749
1749
|
.two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
|
|
@@ -1763,7 +1763,7 @@ hr.section-divider { border: none; border-top: 1px solid var(--border); margin:
|
|
|
1763
1763
|
.notes-item-meta { font-size: 11px; color: var(--text-muted); margin-bottom: 4px; }
|
|
1764
1764
|
.test-item { padding: 10px 0; border-bottom: 1px solid var(--border); display: flex; align-items: flex-start; gap: 10px; }
|
|
1765
1765
|
.test-item:last-child { border-bottom: none; }
|
|
1766
|
-
.test-item-cmd { font-family: '
|
|
1766
|
+
.test-item-cmd { font-family: 'SFMono-Regular', Monaco, 'Cascadia Code', 'Liberation Mono', monospace; font-size: 12px; background: var(--bg-input); border-radius: 4px; padding: 2px 6px; }
|
|
1767
1767
|
.health-score-display { text-align: center; padding: 32px; }
|
|
1768
1768
|
.health-score-number { font-size: 72px; font-weight: 700; line-height: 1; }
|
|
1769
1769
|
.health-score-label { font-size: 14px; color: var(--text-secondary); margin-top: 8px; }
|
|
@@ -1773,7 +1773,7 @@ hr.section-divider { border: none; border-top: 1px solid var(--border); margin:
|
|
|
1773
1773
|
.dep-row { display: flex; align-items: center; gap: 10px; padding: 7px 0; border-bottom: 1px solid var(--border); font-size: 13px; }
|
|
1774
1774
|
.dep-row:last-child { border-bottom: none; }
|
|
1775
1775
|
.dep-rel { font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; background: var(--bg-input); color: var(--text-muted); padding: 2px 7px; border-radius: 4px; flex-shrink: 0; }
|
|
1776
|
-
.dep-id { font-family: '
|
|
1776
|
+
.dep-id { font-family: 'SFMono-Regular', Monaco, 'Cascadia Code', 'Liberation Mono', monospace; font-size: 11px; color: var(--accent); cursor: pointer; text-decoration: underline; text-underline-offset: 2px; }
|
|
1777
1777
|
.learning-row { padding: 8px 0; border-bottom: 1px solid var(--border); font-size: 13px; color: var(--text-secondary); line-height: 1.6; }
|
|
1778
1778
|
.learning-row:last-child { border-bottom: none; }
|
|
1779
1779
|
.share-row { display: flex; align-items: center; gap: 10px; padding: 8px 0; border-bottom: 1px solid var(--border); font-size: 13px; }
|
|
@@ -1898,7 +1898,7 @@ hr.section-divider { border: none; border-top: 1px solid var(--border); margin:
|
|
|
1898
1898
|
/* ── Files ── */
|
|
1899
1899
|
.file-row { display: flex; align-items: center; gap: 10px; padding: 7px 0; border-bottom: 1px solid var(--border); font-size: 13px; }
|
|
1900
1900
|
.file-row:last-child { border-bottom: none; }
|
|
1901
|
-
.file-path { font-family: '
|
|
1901
|
+
.file-path { font-family: 'SFMono-Regular', Monaco, 'Cascadia Code', 'Liberation Mono', monospace; font-size: 12px; color: var(--accent); flex: 1; }
|
|
1902
1902
|
|
|
1903
1903
|
/* ── SSE Real-time Indicator ── */
|
|
1904
1904
|
.sse-indicator {
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="de" data-theme="auto">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<meta name="description" content="Terms for pm-web.">
|
|
7
|
+
<title>Terms - pm-web</title>
|
|
8
|
+
<link rel="stylesheet" href="/styles.css?v=20">
|
|
9
|
+
<link rel="stylesheet" href="/legal-common.css?v=1">
|
|
10
|
+
</head>
|
|
11
|
+
<body class="legal-shell">
|
|
12
|
+
<nav class="legal-nav"><a class="legal-brand" href="/">pm-web</a><div class="legal-links"><a href="/legal-notice">Legal Notice</a><a href="/privacy-policy">Privacy Policy</a><a href="/cookie-settings">Cookies</a></div></nav>
|
|
13
|
+
<main class="legal-main">
|
|
14
|
+
<p class="legal-kicker">Legal</p>
|
|
15
|
+
<h1>Terms</h1>
|
|
16
|
+
<p class="legal-updated">Stand: 26. Juni 2026</p>
|
|
17
|
+
<section class="legal-section"><h2>Geltungsbereich</h2><p>Diese Bedingungen gelten fuer die Nutzung von pm-web.unbrained.dev. Abweichende Bedingungen gelten nur, wenn sie schriftlich bestaetigt wurden.</p></section>
|
|
18
|
+
<section class="legal-section"><h2>Nutzung und Verfuegbarkeit</h2><p>pm-web wird ohne kostenpflichtige Servicegarantie bereitgestellt. Funktionen koennen geaendert, eingeschraenkt oder eingestellt werden, soweit dies fuer Betrieb, Sicherheit oder Weiterentwicklung erforderlich ist.</p></section>
|
|
19
|
+
<section class="legal-section"><h2>Nutzerpflichten</h2><p>Nutzer muessen Zugangsdaten schuetzen, keine rechtswidrigen Inhalte speichern und keine Handlungen setzen, die Sicherheit oder Verfuegbarkeit der Anwendung beeintraechtigen.</p></section>
|
|
20
|
+
<section class="legal-section"><h2>Inhalte und Open Source</h2><p>pm-web ist eine Software- und Projektmanagement-Anwendung. Fuer Open-Source-Komponenten gelten die jeweiligen Lizenztexte in den verlinkten Repositories.</p></section>
|
|
21
|
+
<section class="legal-section"><h2>Haftung</h2><p>Eine Haftung besteht nur nach den gesetzlichen Bestimmungen. Fuer leichte Fahrlaessigkeit wird, soweit rechtlich zulaessig, nur bei Verletzung wesentlicher Vertragspflichten gehaftet.</p></section>
|
|
22
|
+
<section class="legal-section"><h2>Kontakt</h2><p>Fragen zu diesen Bedingungen bitte an <a href="mailto:stefan@preu.at">stefan@preu.at</a>.</p></section>
|
|
23
|
+
</main>
|
|
24
|
+
<div class="cookie-consent" id="cookie-consent" hidden><div class="cookie-consent-text"><strong>Cookie Settings</strong><span>We only use technically necessary storage for sign-in, security, and preferences. No optional tracking cookies.</span></div><div class="cookie-consent-actions"><a href="/privacy-policy">Privacy Policy</a><button type="button" class="btn btn-secondary btn-sm" data-cookie-decline>Necessary only</button><button type="button" class="btn btn-primary btn-sm" data-cookie-accept>Got it</button></div></div>
|
|
25
|
+
<script src="/cookie-consent.js?v=1"></script>
|
|
26
|
+
</body>
|
|
27
|
+
</html>
|