@skillcdn/console 0.1.18 → 0.1.19
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/README.md +1 -1
- package/SKILLCDN.md +1 -1
- package/dist/api.d.ts +1 -1
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +1 -1
- package/dist/api.js.map +1 -1
- package/dist/cli/cli.d.ts +1 -1
- package/dist/cli/cli.d.ts.map +1 -1
- package/dist/cli/cli.js +353 -39
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/credentials.d.ts +102 -3
- package/dist/cli/credentials.d.ts.map +1 -1
- package/dist/cli/credentials.js +177 -8
- package/dist/cli/credentials.js.map +1 -1
- package/dist/cli/directory.d.ts +6 -0
- package/dist/cli/directory.d.ts.map +1 -1
- package/dist/cli/directory.js +37 -6
- package/dist/cli/directory.js.map +1 -1
- package/dist/cli/format.d.ts +10 -1
- package/dist/cli/format.d.ts.map +1 -1
- package/dist/cli/format.js +106 -2
- package/dist/cli/format.js.map +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +42 -20
- package/dist/cli/help.js.map +1 -1
- package/dist/client.d.ts +21 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +14 -1
- package/dist/client.js.map +1 -1
- package/dist/components/board.d.ts +9 -1
- package/dist/components/board.d.ts.map +1 -1
- package/dist/components/board.js +82 -5
- package/dist/components/board.js.map +1 -1
- package/dist/components/comments.d.ts.map +1 -1
- package/dist/components/comments.js +12 -4
- package/dist/components/comments.js.map +1 -1
- package/dist/components/event-feed.d.ts.map +1 -1
- package/dist/components/event-feed.js +4 -0
- package/dist/components/event-feed.js.map +1 -1
- package/dist/components/goals.d.ts +17 -1
- package/dist/components/goals.d.ts.map +1 -1
- package/dist/components/goals.js +34 -9
- package/dist/components/goals.js.map +1 -1
- package/dist/components/markdown.d.ts +6 -0
- package/dist/components/markdown.d.ts.map +1 -1
- package/dist/components/markdown.js +7 -0
- package/dist/components/markdown.js.map +1 -1
- package/dist/components/pictures.d.ts +68 -0
- package/dist/components/pictures.d.ts.map +1 -0
- package/dist/components/pictures.js +213 -0
- package/dist/components/pictures.js.map +1 -0
- package/dist/components/projects.d.ts +12 -0
- package/dist/components/projects.d.ts.map +1 -1
- package/dist/components/projects.js +15 -0
- package/dist/components/projects.js.map +1 -1
- package/dist/components/task-view.d.ts +3 -0
- package/dist/components/task-view.d.ts.map +1 -1
- package/dist/components/task-view.js +6 -4
- package/dist/components/task-view.js.map +1 -1
- package/dist/console.css +282 -3
- package/dist/console.d.ts.map +1 -1
- package/dist/console.js +124 -10
- package/dist/console.js.map +1 -1
- package/dist/data.d.ts +16 -1
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +47 -2
- package/dist/data.js.map +1 -1
- package/dist/i18n/en.d.ts +52 -0
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +50 -2
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/ko.d.ts.map +1 -1
- package/dist/i18n/ko.js +50 -2
- package/dist/i18n/ko.js.map +1 -1
- package/dist/index.d.ts +5 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- package/dist/router.d.ts +25 -6
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +38 -7
- package/dist/router.js.map +1 -1
- package/dist/rules.js +5 -5
- package/dist/rules.js.map +1 -1
- package/dist/schemas.d.ts +158 -0
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +78 -0
- package/dist/schemas.js.map +1 -1
- package/dist/vocabulary.d.ts +2 -2
- package/dist/vocabulary.d.ts.map +1 -1
- package/dist/vocabulary.js +3 -0
- package/dist/vocabulary.js.map +1 -1
- package/docs/specs/cli.md +17 -9
- package/docs/specs/rest.md +22 -4
- package/package.json +1 -1
- package/skills/working-the-board/SKILL.md +10 -4
- package/src/api.ts +13 -0
- package/src/cli/cli.ts +441 -42
- package/src/cli/credentials.ts +276 -14
- package/src/cli/directory.ts +43 -6
- package/src/cli/format.ts +138 -2
- package/src/cli/help.ts +44 -20
- package/src/client.ts +60 -0
- package/src/components/board.tsx +154 -8
- package/src/components/comments.tsx +20 -10
- package/src/components/event-feed.tsx +4 -0
- package/src/components/goals.tsx +173 -106
- package/src/components/markdown.tsx +19 -0
- package/src/components/pictures.tsx +389 -0
- package/src/components/projects.tsx +68 -0
- package/src/components/task-view.tsx +43 -2
- package/src/console.tsx +259 -4
- package/src/data.ts +72 -1
- package/src/i18n/en.ts +53 -2
- package/src/i18n/ko.ts +53 -2
- package/src/index.ts +27 -0
- package/src/router.ts +57 -9
- package/src/rules.ts +5 -5
- package/src/schemas.ts +97 -0
- package/src/styles/console.css +282 -3
- package/src/vocabulary.ts +3 -0
package/src/styles/console.css
CHANGED
|
@@ -2166,16 +2166,110 @@ table {
|
|
|
2166
2166
|
font-size: var(--sc-text-sm);
|
|
2167
2167
|
}
|
|
2168
2168
|
|
|
2169
|
-
/* A picture in a comment is
|
|
2170
|
-
|
|
2169
|
+
/* A picture in a comment is a thumbnail, no taller than a few lines, that opens large over the
|
|
2170
|
+
page; a picture that only comes over https stays where it is, as small. */
|
|
2171
|
+
.sc-picture-thumb {
|
|
2172
|
+
display: inline-block;
|
|
2173
|
+
padding: 0;
|
|
2174
|
+
border: 0;
|
|
2175
|
+
border-radius: var(--sc-radius-md);
|
|
2176
|
+
background: none;
|
|
2177
|
+
line-height: 0;
|
|
2178
|
+
cursor: zoom-in;
|
|
2179
|
+
}
|
|
2180
|
+
|
|
2181
|
+
.sc-picture-thumb:focus-visible {
|
|
2182
|
+
outline: 2px solid var(--sc-color-accent);
|
|
2183
|
+
outline-offset: 2px;
|
|
2184
|
+
}
|
|
2185
|
+
|
|
2186
|
+
.sc-picture-thumb img,
|
|
2171
2187
|
.sc-comment .sc-prose img {
|
|
2172
2188
|
display: block;
|
|
2189
|
+
width: auto;
|
|
2173
2190
|
max-width: 100%;
|
|
2174
|
-
|
|
2191
|
+
height: auto;
|
|
2192
|
+
max-height: 10rem;
|
|
2175
2193
|
border: var(--sc-border);
|
|
2176
2194
|
border-radius: var(--sc-radius-md);
|
|
2177
2195
|
}
|
|
2178
2196
|
|
|
2197
|
+
.sc-prose .sc-picture-thumb {
|
|
2198
|
+
margin: var(--sc-space-2) 0;
|
|
2199
|
+
}
|
|
2200
|
+
|
|
2201
|
+
/* The picture large, over the page: a bar with its name and the ways to zoom and to close, the
|
|
2202
|
+
stage it moves on, and a hint. The page under it is dimmed and does not scroll. */
|
|
2203
|
+
.sc-overlay {
|
|
2204
|
+
position: fixed;
|
|
2205
|
+
z-index: 100;
|
|
2206
|
+
display: grid;
|
|
2207
|
+
grid-template-rows: auto minmax(0, 1fr) auto;
|
|
2208
|
+
inset: 0;
|
|
2209
|
+
background: color-mix(in srgb, var(--sc-color-bg) 90%, transparent);
|
|
2210
|
+
backdrop-filter: blur(12px);
|
|
2211
|
+
}
|
|
2212
|
+
|
|
2213
|
+
.sc-overlay-bar {
|
|
2214
|
+
display: flex;
|
|
2215
|
+
align-items: center;
|
|
2216
|
+
justify-content: space-between;
|
|
2217
|
+
gap: var(--sc-space-3);
|
|
2218
|
+
padding: var(--sc-space-3) var(--sc-space-4);
|
|
2219
|
+
}
|
|
2220
|
+
|
|
2221
|
+
.sc-overlay-name {
|
|
2222
|
+
min-width: 0;
|
|
2223
|
+
overflow: hidden;
|
|
2224
|
+
color: var(--sc-color-text);
|
|
2225
|
+
font-size: var(--sc-text-sm);
|
|
2226
|
+
text-overflow: ellipsis;
|
|
2227
|
+
white-space: nowrap;
|
|
2228
|
+
}
|
|
2229
|
+
|
|
2230
|
+
.sc-overlay-actions {
|
|
2231
|
+
display: flex;
|
|
2232
|
+
flex-shrink: 0;
|
|
2233
|
+
gap: var(--sc-space-1);
|
|
2234
|
+
}
|
|
2235
|
+
|
|
2236
|
+
.sc-overlay-stage {
|
|
2237
|
+
position: relative;
|
|
2238
|
+
display: grid;
|
|
2239
|
+
place-items: center;
|
|
2240
|
+
overflow: hidden;
|
|
2241
|
+
cursor: grab;
|
|
2242
|
+
touch-action: none;
|
|
2243
|
+
user-select: none;
|
|
2244
|
+
}
|
|
2245
|
+
|
|
2246
|
+
.sc-overlay-stage[data-dragging="true"] {
|
|
2247
|
+
cursor: grabbing;
|
|
2248
|
+
}
|
|
2249
|
+
|
|
2250
|
+
.sc-overlay-picture {
|
|
2251
|
+
width: auto;
|
|
2252
|
+
max-width: 100%;
|
|
2253
|
+
height: auto;
|
|
2254
|
+
max-height: 100%;
|
|
2255
|
+
transform-origin: center center;
|
|
2256
|
+
will-change: transform;
|
|
2257
|
+
}
|
|
2258
|
+
|
|
2259
|
+
.sc-overlay-hint {
|
|
2260
|
+
margin: 0;
|
|
2261
|
+
padding: var(--sc-space-2) var(--sc-space-4) var(--sc-space-3);
|
|
2262
|
+
color: var(--sc-color-text-muted);
|
|
2263
|
+
font-size: var(--sc-text-xs);
|
|
2264
|
+
text-align: center;
|
|
2265
|
+
}
|
|
2266
|
+
|
|
2267
|
+
@media (max-width: 40rem) {
|
|
2268
|
+
.sc-overlay-hint {
|
|
2269
|
+
display: none;
|
|
2270
|
+
}
|
|
2271
|
+
}
|
|
2272
|
+
|
|
2179
2273
|
.sc-comment-files {
|
|
2180
2274
|
display: grid;
|
|
2181
2275
|
gap: var(--sc-space-2);
|
|
@@ -3680,3 +3774,188 @@ table {
|
|
|
3680
3774
|
grid-template-columns: minmax(6rem, 8rem) minmax(16rem, 1fr);
|
|
3681
3775
|
}
|
|
3682
3776
|
}
|
|
3777
|
+
|
|
3778
|
+
/* A card is dragged to another column by its grip, which shows on the card under the pointer
|
|
3779
|
+
and always to a finger; the column under the dragged card says it would take it, and a ghost
|
|
3780
|
+
of the card follows the pointer. The keyboard keeps the select. */
|
|
3781
|
+
.sc-card {
|
|
3782
|
+
position: relative;
|
|
3783
|
+
}
|
|
3784
|
+
|
|
3785
|
+
.sc-card-grip {
|
|
3786
|
+
position: absolute;
|
|
3787
|
+
top: var(--sc-space-1);
|
|
3788
|
+
right: var(--sc-space-1);
|
|
3789
|
+
display: inline-flex;
|
|
3790
|
+
align-items: center;
|
|
3791
|
+
justify-content: center;
|
|
3792
|
+
width: 1.5rem;
|
|
3793
|
+
height: 1.5rem;
|
|
3794
|
+
padding: 0;
|
|
3795
|
+
border: 0;
|
|
3796
|
+
border-radius: var(--sc-radius-sm);
|
|
3797
|
+
background: none;
|
|
3798
|
+
color: var(--sc-color-text-faint);
|
|
3799
|
+
font-size: var(--sc-text-sm);
|
|
3800
|
+
letter-spacing: -0.15em;
|
|
3801
|
+
cursor: grab;
|
|
3802
|
+
opacity: 0;
|
|
3803
|
+
touch-action: none;
|
|
3804
|
+
transition: opacity var(--sc-transition);
|
|
3805
|
+
}
|
|
3806
|
+
|
|
3807
|
+
.sc-card:hover .sc-card-grip,
|
|
3808
|
+
.sc-card:focus-within .sc-card-grip,
|
|
3809
|
+
.sc-card.sc-card-dragging .sc-card-grip {
|
|
3810
|
+
opacity: 1;
|
|
3811
|
+
}
|
|
3812
|
+
|
|
3813
|
+
@media (pointer: coarse) {
|
|
3814
|
+
.sc-card-grip {
|
|
3815
|
+
opacity: 1;
|
|
3816
|
+
}
|
|
3817
|
+
}
|
|
3818
|
+
|
|
3819
|
+
.sc-card:has(.sc-card-grip) .sc-card-title {
|
|
3820
|
+
padding-right: 1.75rem;
|
|
3821
|
+
}
|
|
3822
|
+
|
|
3823
|
+
.sc-card-dragging {
|
|
3824
|
+
opacity: 0.5;
|
|
3825
|
+
}
|
|
3826
|
+
|
|
3827
|
+
.sc-board-dragging {
|
|
3828
|
+
user-select: none;
|
|
3829
|
+
}
|
|
3830
|
+
|
|
3831
|
+
.sc-column-over {
|
|
3832
|
+
outline: 2px solid var(--sc-color-accent);
|
|
3833
|
+
outline-offset: -2px;
|
|
3834
|
+
}
|
|
3835
|
+
|
|
3836
|
+
.sc-drag-ghost {
|
|
3837
|
+
position: fixed;
|
|
3838
|
+
top: 0;
|
|
3839
|
+
left: 0;
|
|
3840
|
+
z-index: 50;
|
|
3841
|
+
max-width: 18rem;
|
|
3842
|
+
padding: var(--sc-space-2) var(--sc-space-3);
|
|
3843
|
+
border: 1px solid var(--sc-color-accent);
|
|
3844
|
+
border-radius: var(--sc-radius-lg);
|
|
3845
|
+
background: var(--sc-color-bg-raised);
|
|
3846
|
+
box-shadow: var(--sc-glow);
|
|
3847
|
+
color: var(--sc-color-text);
|
|
3848
|
+
font-size: var(--sc-text-sm);
|
|
3849
|
+
pointer-events: none;
|
|
3850
|
+
}
|
|
3851
|
+
|
|
3852
|
+
/* A goal's page reads as the board does: the facts in a row at its head, then a switch between
|
|
3853
|
+
the views of its tasks, then the view, which takes the rest of the height as the board does. */
|
|
3854
|
+
.sc-goal-page {
|
|
3855
|
+
display: flex;
|
|
3856
|
+
flex: 1 1 0;
|
|
3857
|
+
flex-direction: column;
|
|
3858
|
+
gap: var(--sc-space-4);
|
|
3859
|
+
min-height: 0;
|
|
3860
|
+
}
|
|
3861
|
+
|
|
3862
|
+
.sc-goal-header {
|
|
3863
|
+
display: grid;
|
|
3864
|
+
gap: var(--sc-space-3);
|
|
3865
|
+
}
|
|
3866
|
+
|
|
3867
|
+
.sc-goal-progress {
|
|
3868
|
+
display: grid;
|
|
3869
|
+
grid-template-columns: minmax(0, 20rem) auto;
|
|
3870
|
+
align-items: center;
|
|
3871
|
+
gap: var(--sc-space-3);
|
|
3872
|
+
font-size: var(--sc-text-sm);
|
|
3873
|
+
}
|
|
3874
|
+
|
|
3875
|
+
.sc-facts-row {
|
|
3876
|
+
display: flex;
|
|
3877
|
+
flex-wrap: wrap;
|
|
3878
|
+
align-items: center;
|
|
3879
|
+
gap: var(--sc-space-2) var(--sc-space-5);
|
|
3880
|
+
margin: 0;
|
|
3881
|
+
font-size: var(--sc-text-sm);
|
|
3882
|
+
}
|
|
3883
|
+
|
|
3884
|
+
.sc-facts-row > div {
|
|
3885
|
+
display: flex;
|
|
3886
|
+
align-items: center;
|
|
3887
|
+
gap: var(--sc-space-2);
|
|
3888
|
+
}
|
|
3889
|
+
|
|
3890
|
+
.sc-facts-row dt {
|
|
3891
|
+
color: var(--sc-color-text-muted);
|
|
3892
|
+
}
|
|
3893
|
+
|
|
3894
|
+
.sc-facts-row dd {
|
|
3895
|
+
margin: 0;
|
|
3896
|
+
}
|
|
3897
|
+
|
|
3898
|
+
.sc-goal-about-summary {
|
|
3899
|
+
color: var(--sc-color-text-muted);
|
|
3900
|
+
font-size: var(--sc-text-sm);
|
|
3901
|
+
cursor: pointer;
|
|
3902
|
+
}
|
|
3903
|
+
|
|
3904
|
+
.sc-goal-about .sc-prose {
|
|
3905
|
+
max-width: var(--sc-width-prose);
|
|
3906
|
+
margin-top: var(--sc-space-3);
|
|
3907
|
+
}
|
|
3908
|
+
|
|
3909
|
+
.sc-views {
|
|
3910
|
+
display: flex;
|
|
3911
|
+
flex-wrap: wrap;
|
|
3912
|
+
gap: var(--sc-space-1);
|
|
3913
|
+
}
|
|
3914
|
+
|
|
3915
|
+
.sc-view {
|
|
3916
|
+
padding: var(--sc-space-1) var(--sc-space-3);
|
|
3917
|
+
border-radius: var(--sc-radius-full);
|
|
3918
|
+
color: var(--sc-color-text-muted);
|
|
3919
|
+
font-size: var(--sc-text-sm);
|
|
3920
|
+
text-decoration: none;
|
|
3921
|
+
}
|
|
3922
|
+
|
|
3923
|
+
.sc-view:hover {
|
|
3924
|
+
background: var(--sc-color-bg-inset);
|
|
3925
|
+
color: var(--sc-color-text);
|
|
3926
|
+
}
|
|
3927
|
+
|
|
3928
|
+
.sc-view-current {
|
|
3929
|
+
background: var(--sc-color-bg-inset);
|
|
3930
|
+
color: var(--sc-color-text);
|
|
3931
|
+
font-weight: var(--sc-weight-medium);
|
|
3932
|
+
}
|
|
3933
|
+
|
|
3934
|
+
.sc-goal-tasks-view {
|
|
3935
|
+
display: flex;
|
|
3936
|
+
flex: 1 1 0;
|
|
3937
|
+
flex-direction: column;
|
|
3938
|
+
min-height: 0;
|
|
3939
|
+
}
|
|
3940
|
+
|
|
3941
|
+
.sc-goal-view-list {
|
|
3942
|
+
display: block;
|
|
3943
|
+
}
|
|
3944
|
+
|
|
3945
|
+
/* The done and dropped columns lead to the archive (ADR-0029), beside their count. */
|
|
3946
|
+
.sc-column-meta {
|
|
3947
|
+
display: inline-flex;
|
|
3948
|
+
align-items: center;
|
|
3949
|
+
gap: var(--sc-space-2);
|
|
3950
|
+
}
|
|
3951
|
+
|
|
3952
|
+
.sc-column-archive {
|
|
3953
|
+
color: var(--sc-color-text-muted);
|
|
3954
|
+
font-size: var(--sc-text-xs);
|
|
3955
|
+
text-decoration: none;
|
|
3956
|
+
}
|
|
3957
|
+
|
|
3958
|
+
.sc-column-archive:hover {
|
|
3959
|
+
color: var(--sc-color-text);
|
|
3960
|
+
text-decoration: underline;
|
|
3961
|
+
}
|
package/src/vocabulary.ts
CHANGED
|
@@ -127,6 +127,7 @@ export const SKILLS_STATUSES = [
|
|
|
127
127
|
"indexing",
|
|
128
128
|
"failed",
|
|
129
129
|
"not_found",
|
|
130
|
+
"token_invalid",
|
|
130
131
|
"unavailable",
|
|
131
132
|
] as const;
|
|
132
133
|
|
|
@@ -166,6 +167,8 @@ export const EVENT_KINDS = [
|
|
|
166
167
|
"task.updated",
|
|
167
168
|
"task.moved",
|
|
168
169
|
"task.commented",
|
|
170
|
+
"task.archived",
|
|
171
|
+
"task.restored",
|
|
169
172
|
"decision.raised",
|
|
170
173
|
"decision.answered",
|
|
171
174
|
"decision.updated",
|