@skillcdn/console 0.1.19 → 0.1.21
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/dist/cli/cli.d.ts.map +1 -1
- package/dist/cli/cli.js +6 -0
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +6 -8
- package/dist/cli/help.js.map +1 -1
- package/dist/components/board.d.ts +19 -9
- package/dist/components/board.d.ts.map +1 -1
- package/dist/components/board.js +210 -28
- package/dist/components/board.js.map +1 -1
- package/dist/components/comments.d.ts +0 -2
- package/dist/components/comments.d.ts.map +1 -1
- package/dist/components/comments.js +4 -39
- package/dist/components/comments.js.map +1 -1
- package/dist/components/documents.d.ts +2 -0
- package/dist/components/documents.d.ts.map +1 -1
- package/dist/components/documents.js +51 -5
- package/dist/components/documents.js.map +1 -1
- package/dist/components/files.d.ts +11 -0
- package/dist/components/files.d.ts.map +1 -0
- package/dist/components/files.js +44 -0
- package/dist/components/files.js.map +1 -0
- package/dist/components/runs.d.ts.map +1 -1
- package/dist/components/runs.js +34 -7
- package/dist/components/runs.js.map +1 -1
- package/dist/components/task-view.d.ts.map +1 -1
- package/dist/components/task-view.js +2 -4
- package/dist/components/task-view.js.map +1 -1
- package/dist/console.css +144 -80
- package/dist/console.d.ts.map +1 -1
- package/dist/console.js +3 -3
- package/dist/console.js.map +1 -1
- package/dist/docs-page.d.ts.map +1 -1
- package/dist/docs-page.js +14 -1
- package/dist/docs-page.js.map +1 -1
- package/dist/i18n/en.d.ts +6 -3
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +7 -4
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/ko.d.ts.map +1 -1
- package/dist/i18n/ko.js +7 -4
- package/dist/i18n/ko.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/rules.d.ts.map +1 -1
- package/dist/rules.js +2 -1
- package/dist/rules.js.map +1 -1
- package/docs/specs/cli.md +4 -4
- package/docs/specs/rest.md +3 -4
- package/package.json +1 -1
- package/skills/working-the-board/SKILL.md +4 -4
- package/src/cli/cli.ts +6 -0
- package/src/cli/help.ts +6 -8
- package/src/components/board.tsx +357 -77
- package/src/components/comments.tsx +10 -39
- package/src/components/documents.tsx +87 -4
- package/src/components/files.ts +49 -0
- package/src/components/runs.tsx +73 -15
- package/src/components/task-view.tsx +10 -12
- package/src/console.tsx +20 -8
- package/src/docs-page.tsx +18 -1
- package/src/i18n/en.ts +8 -4
- package/src/i18n/ko.ts +8 -4
- package/src/index.ts +1 -1
- package/src/rules.ts +2 -1
- package/src/styles/console.css +144 -80
package/src/index.ts
CHANGED
|
@@ -33,7 +33,6 @@ export {
|
|
|
33
33
|
type CommentDraft,
|
|
34
34
|
CommentForm,
|
|
35
35
|
type CommentFormProps,
|
|
36
|
-
isPicture,
|
|
37
36
|
TaskThread,
|
|
38
37
|
type TaskThreadProps,
|
|
39
38
|
type ThreadItem,
|
|
@@ -72,6 +71,7 @@ export {
|
|
|
72
71
|
type FolderViewProps,
|
|
73
72
|
} from "./components/documents.js";
|
|
74
73
|
export { describeEvent, EventFeed, type EventFeedProps } from "./components/event-feed.js";
|
|
74
|
+
export { isPicture } from "./components/files.js";
|
|
75
75
|
export {
|
|
76
76
|
GoalForm,
|
|
77
77
|
type GoalFormProps,
|
package/src/rules.ts
CHANGED
|
@@ -23,8 +23,9 @@ export const REFERENCE_RULES = [
|
|
|
23
23
|
"",
|
|
24
24
|
"## Start here, every time",
|
|
25
25
|
"",
|
|
26
|
-
"1. These rules come with the task: `console take` prints them under it, and `console rules` reads them any time. Read them before anything is made. The task says where the work is and what it links to; `console task <number>` shows a task in full, with its plan, its decisions, the runs on it and the discussion on it, without taking it. A task put away (archived)
|
|
26
|
+
"1. These rules come with the task: `console take` prints them under it, and `console rules` reads them any time. Read them before anything is made. The task says where the work is and what it links to; `console task <number>` shows a task in full, with its plan, its decisions, the runs on it and the discussion on it, without taking it. A task put away (archived) is out of the listings and the board, and opens by its number still. How the board is worked is the skill working-the-board, shipped with the command: read it before the first command of a run (`console skills` prints where it is); these rules say what this organization asks, not how the command works.",
|
|
27
27
|
"2. Act as the person whose token the command holds, and no further. What they may not do, the console refuses; that step goes back to them in a report, never around them.",
|
|
28
|
+
'3. Work given in chat, with no task on the board yet, goes on the board before it is done: write it (`console task new "<title>" --body <markdown>`), tell the person its number, take it (`console take <number>`) and work it as any task, without asking whether to. Until the task is written, the board is only read.',
|
|
28
29
|
"",
|
|
29
30
|
"## The organization's skills",
|
|
30
31
|
"",
|
package/src/styles/console.css
CHANGED
|
@@ -710,6 +710,42 @@ table {
|
|
|
710
710
|
letter-spacing: -0.02em;
|
|
711
711
|
}
|
|
712
712
|
|
|
713
|
+
/* The ways a page offers at its head, side by side. */
|
|
714
|
+
.sc-page-actions {
|
|
715
|
+
display: flex;
|
|
716
|
+
flex-wrap: wrap;
|
|
717
|
+
align-items: center;
|
|
718
|
+
gap: var(--sc-space-2);
|
|
719
|
+
}
|
|
720
|
+
|
|
721
|
+
/* A page's name with a word about it beside: on one line where the window is wide, so that the
|
|
722
|
+
head stays low over the board; under the name where it is not. */
|
|
723
|
+
.sc-page-heading {
|
|
724
|
+
display: flex;
|
|
725
|
+
flex: 1 1 auto;
|
|
726
|
+
flex-wrap: wrap;
|
|
727
|
+
align-items: baseline;
|
|
728
|
+
min-width: 0;
|
|
729
|
+
column-gap: var(--sc-space-4);
|
|
730
|
+
row-gap: var(--sc-space-1);
|
|
731
|
+
}
|
|
732
|
+
|
|
733
|
+
.sc-page-lead {
|
|
734
|
+
flex: 1 1 16rem;
|
|
735
|
+
min-width: 0;
|
|
736
|
+
margin: 0;
|
|
737
|
+
color: var(--sc-color-text-muted);
|
|
738
|
+
font-size: var(--sc-text-sm);
|
|
739
|
+
}
|
|
740
|
+
|
|
741
|
+
@media (min-width: 60rem) {
|
|
742
|
+
.sc-page-lead {
|
|
743
|
+
overflow: hidden;
|
|
744
|
+
text-overflow: ellipsis;
|
|
745
|
+
white-space: nowrap;
|
|
746
|
+
}
|
|
747
|
+
}
|
|
748
|
+
|
|
713
749
|
.sc-lead {
|
|
714
750
|
max-width: var(--sc-width-prose);
|
|
715
751
|
margin-bottom: var(--sc-space-5);
|
|
@@ -778,6 +814,12 @@ table {
|
|
|
778
814
|
pointer-events: none;
|
|
779
815
|
}
|
|
780
816
|
|
|
817
|
+
/* A column's frame stands in front of what scrolls within it: a card scrolling out goes under
|
|
818
|
+
the lit edge, never over it. The other panes do not scroll, and keep the rim under the content. */
|
|
819
|
+
.sc-column::before {
|
|
820
|
+
z-index: 1;
|
|
821
|
+
}
|
|
822
|
+
|
|
781
823
|
.sc-panel {
|
|
782
824
|
margin-bottom: var(--sc-space-5);
|
|
783
825
|
padding: var(--sc-space-5);
|
|
@@ -1342,28 +1384,6 @@ table {
|
|
|
1342
1384
|
flex: 1;
|
|
1343
1385
|
}
|
|
1344
1386
|
|
|
1345
|
-
/* Moving a task from its card: a quiet control, as wide as the card. */
|
|
1346
|
-
.sc-card-move select {
|
|
1347
|
-
width: 100%;
|
|
1348
|
-
min-height: 1.75rem;
|
|
1349
|
-
padding: 0 var(--sc-space-2);
|
|
1350
|
-
border: 1px solid transparent;
|
|
1351
|
-
border-radius: var(--sc-radius-sm);
|
|
1352
|
-
background: transparent;
|
|
1353
|
-
color: var(--sc-color-text-faint);
|
|
1354
|
-
font-size: var(--sc-text-xs);
|
|
1355
|
-
transition:
|
|
1356
|
-
border-color var(--sc-transition),
|
|
1357
|
-
color var(--sc-transition);
|
|
1358
|
-
}
|
|
1359
|
-
|
|
1360
|
-
.sc-card-move select:hover,
|
|
1361
|
-
.sc-card-move select:focus {
|
|
1362
|
-
border-color: var(--sc-color-border-strong);
|
|
1363
|
-
background: var(--sc-color-field);
|
|
1364
|
-
color: var(--sc-color-text);
|
|
1365
|
-
}
|
|
1366
|
-
|
|
1367
1387
|
/* One task, and a page of the documents: the text in a column for reading, the facts beside it
|
|
1368
1388
|
where the window is wide enough, under it where it is not. */
|
|
1369
1389
|
|
|
@@ -2166,8 +2186,9 @@ table {
|
|
|
2166
2186
|
font-size: var(--sc-text-sm);
|
|
2167
2187
|
}
|
|
2168
2188
|
|
|
2169
|
-
/* A picture in a comment is a thumbnail, no taller than a few lines, that
|
|
2170
|
-
page; a picture that only comes over https
|
|
2189
|
+
/* A picture in a comment, or handed in on a run, is a thumbnail, no taller than a few lines, that
|
|
2190
|
+
opens large over the page; a picture that only comes over https, or one on a page of the
|
|
2191
|
+
documents, stays where it is, as the text has it. */
|
|
2171
2192
|
.sc-picture-thumb {
|
|
2172
2193
|
display: inline-block;
|
|
2173
2194
|
padding: 0;
|
|
@@ -2279,7 +2300,8 @@ table {
|
|
|
2279
2300
|
font-size: var(--sc-text-sm);
|
|
2280
2301
|
}
|
|
2281
2302
|
|
|
2282
|
-
.sc-comment-picture
|
|
2303
|
+
.sc-comment-picture,
|
|
2304
|
+
.sc-artifact-picture {
|
|
2283
2305
|
display: grid;
|
|
2284
2306
|
gap: var(--sc-space-1);
|
|
2285
2307
|
justify-items: start;
|
|
@@ -2290,7 +2312,8 @@ table {
|
|
|
2290
2312
|
gap: var(--sc-space-2);
|
|
2291
2313
|
}
|
|
2292
2314
|
|
|
2293
|
-
.sc-comment-chosen
|
|
2315
|
+
.sc-comment-chosen,
|
|
2316
|
+
.sc-chosen-files {
|
|
2294
2317
|
display: flex;
|
|
2295
2318
|
flex-wrap: wrap;
|
|
2296
2319
|
gap: var(--sc-space-2);
|
|
@@ -2300,7 +2323,8 @@ table {
|
|
|
2300
2323
|
font-size: var(--sc-text-sm);
|
|
2301
2324
|
}
|
|
2302
2325
|
|
|
2303
|
-
.sc-comment-chosen-file
|
|
2326
|
+
.sc-comment-chosen-file,
|
|
2327
|
+
.sc-chosen-file {
|
|
2304
2328
|
display: inline-flex;
|
|
2305
2329
|
align-items: center;
|
|
2306
2330
|
gap: var(--sc-space-1);
|
|
@@ -2318,13 +2342,15 @@ table {
|
|
|
2318
2342
|
gap: var(--sc-space-2);
|
|
2319
2343
|
}
|
|
2320
2344
|
|
|
2321
|
-
.sc-comment-form-actions label
|
|
2345
|
+
.sc-comment-form-actions label,
|
|
2346
|
+
.sc-file-choice {
|
|
2322
2347
|
position: relative;
|
|
2323
2348
|
cursor: pointer;
|
|
2324
2349
|
}
|
|
2325
2350
|
|
|
2326
2351
|
/* The file input is the label's: there for the keyboard and the screen reader, not seen. */
|
|
2327
|
-
.sc-comment-file-input
|
|
2352
|
+
.sc-comment-file-input,
|
|
2353
|
+
.sc-file-input {
|
|
2328
2354
|
position: absolute;
|
|
2329
2355
|
width: 1px;
|
|
2330
2356
|
height: 1px;
|
|
@@ -2520,6 +2546,14 @@ table {
|
|
|
2520
2546
|
opacity: 0.85;
|
|
2521
2547
|
}
|
|
2522
2548
|
|
|
2549
|
+
/* The pictures for a page, under its body: the way to add one, and what becomes of it. */
|
|
2550
|
+
.sc-doc-form-pictures {
|
|
2551
|
+
display: flex;
|
|
2552
|
+
flex-wrap: wrap;
|
|
2553
|
+
align-items: center;
|
|
2554
|
+
gap: var(--sc-space-2);
|
|
2555
|
+
}
|
|
2556
|
+
|
|
2523
2557
|
.sc-doc-attach {
|
|
2524
2558
|
display: flex;
|
|
2525
2559
|
flex-wrap: wrap;
|
|
@@ -2600,13 +2634,6 @@ table {
|
|
|
2600
2634
|
}
|
|
2601
2635
|
}
|
|
2602
2636
|
|
|
2603
|
-
/* Where there is no pointer to hover with, the control on a card is as tall as a finger needs. */
|
|
2604
|
-
@media (hover: none) {
|
|
2605
|
-
.sc-card-move select {
|
|
2606
|
-
min-height: 2rem;
|
|
2607
|
-
}
|
|
2608
|
-
}
|
|
2609
|
-
|
|
2610
2637
|
/* The schedule, the roadmap and the categories (ADR-0019). */
|
|
2611
2638
|
|
|
2612
2639
|
/* The colours a category may be shown in: names, painted here and nowhere else. Each is a
|
|
@@ -3775,14 +3802,40 @@ table {
|
|
|
3775
3802
|
}
|
|
3776
3803
|
}
|
|
3777
3804
|
|
|
3778
|
-
/* A card is dragged to another column
|
|
3779
|
-
|
|
3780
|
-
|
|
3805
|
+
/* A card is dragged to another column from anywhere on it but its menu, its title included: with
|
|
3806
|
+
a mouse at once, under a finger once it has rested a moment, so that a finger that moves
|
|
3807
|
+
scrolls. The column under the dragged card says it would take it, and the card itself, whole,
|
|
3808
|
+
follows the pointer while a faded one keeps its place. */
|
|
3781
3809
|
.sc-card {
|
|
3782
3810
|
position: relative;
|
|
3783
3811
|
}
|
|
3784
3812
|
|
|
3785
|
-
.sc-card-
|
|
3813
|
+
.sc-card-movable {
|
|
3814
|
+
cursor: grab;
|
|
3815
|
+
}
|
|
3816
|
+
|
|
3817
|
+
/* A finger resting on a card is neither selecting its words nor asking for the page's menu. */
|
|
3818
|
+
@media (pointer: coarse) {
|
|
3819
|
+
.sc-card-movable {
|
|
3820
|
+
-webkit-touch-callout: none;
|
|
3821
|
+
user-select: none;
|
|
3822
|
+
}
|
|
3823
|
+
}
|
|
3824
|
+
|
|
3825
|
+
.sc-card-dragging {
|
|
3826
|
+
opacity: 0.4;
|
|
3827
|
+
}
|
|
3828
|
+
|
|
3829
|
+
.sc-board-dragging,
|
|
3830
|
+
.sc-board-dragging .sc-card,
|
|
3831
|
+
.sc-board-dragging .sc-card * {
|
|
3832
|
+
cursor: grabbing;
|
|
3833
|
+
user-select: none;
|
|
3834
|
+
}
|
|
3835
|
+
|
|
3836
|
+
/* The card's menu: three dots in the corner, seen on the card under the pointer or with the
|
|
3837
|
+
focus, and always to a finger; the menu itself stands over the page, clipped by no column. */
|
|
3838
|
+
.sc-card-menu-button {
|
|
3786
3839
|
position: absolute;
|
|
3787
3840
|
top: var(--sc-space-1);
|
|
3788
3841
|
right: var(--sc-space-1);
|
|
@@ -3796,36 +3849,66 @@ table {
|
|
|
3796
3849
|
border-radius: var(--sc-radius-sm);
|
|
3797
3850
|
background: none;
|
|
3798
3851
|
color: var(--sc-color-text-faint);
|
|
3799
|
-
|
|
3800
|
-
letter-spacing: -0.15em;
|
|
3801
|
-
cursor: grab;
|
|
3852
|
+
cursor: pointer;
|
|
3802
3853
|
opacity: 0;
|
|
3803
|
-
|
|
3804
|
-
|
|
3854
|
+
transition:
|
|
3855
|
+
opacity var(--sc-transition),
|
|
3856
|
+
background var(--sc-transition),
|
|
3857
|
+
color var(--sc-transition);
|
|
3805
3858
|
}
|
|
3806
3859
|
|
|
3807
|
-
.sc-card
|
|
3808
|
-
|
|
3809
|
-
|
|
3860
|
+
.sc-card-menu-button svg {
|
|
3861
|
+
width: 1rem;
|
|
3862
|
+
height: 1rem;
|
|
3863
|
+
}
|
|
3864
|
+
|
|
3865
|
+
/* Shown on the card under the pointer or with the focus, while the menu is open, and on the card
|
|
3866
|
+
in hand, which is the card as it was hovered: its menu's dots, and the room they take. */
|
|
3867
|
+
.sc-drag-ghost .sc-card-menu-button,
|
|
3868
|
+
.sc-card:hover .sc-card-menu-button,
|
|
3869
|
+
.sc-card:focus-within .sc-card-menu-button,
|
|
3870
|
+
.sc-card-menu-button[aria-expanded="true"] {
|
|
3810
3871
|
opacity: 1;
|
|
3811
3872
|
}
|
|
3812
3873
|
|
|
3874
|
+
.sc-card-menu-button:hover,
|
|
3875
|
+
.sc-card-menu-button[aria-expanded="true"] {
|
|
3876
|
+
background: var(--sc-color-bg-inset);
|
|
3877
|
+
color: var(--sc-color-text);
|
|
3878
|
+
}
|
|
3879
|
+
|
|
3880
|
+
.sc-card-menu-button:focus-visible {
|
|
3881
|
+
outline: 2px solid var(--sc-color-accent);
|
|
3882
|
+
outline-offset: 1px;
|
|
3883
|
+
}
|
|
3884
|
+
|
|
3813
3885
|
@media (pointer: coarse) {
|
|
3814
|
-
.sc-card-
|
|
3886
|
+
.sc-card-menu-button {
|
|
3815
3887
|
opacity: 1;
|
|
3816
3888
|
}
|
|
3817
3889
|
}
|
|
3818
3890
|
|
|
3819
|
-
.sc-card:has(.sc-card-
|
|
3891
|
+
.sc-card:has(.sc-card-menu-button) .sc-card-title {
|
|
3820
3892
|
padding-right: 1.75rem;
|
|
3821
3893
|
}
|
|
3822
3894
|
|
|
3823
|
-
.sc-card-
|
|
3824
|
-
|
|
3895
|
+
.sc-card-menu {
|
|
3896
|
+
position: fixed;
|
|
3897
|
+
z-index: 60;
|
|
3898
|
+
display: flex;
|
|
3899
|
+
flex-direction: column;
|
|
3900
|
+
min-width: 8rem;
|
|
3901
|
+
padding: var(--sc-space-1);
|
|
3902
|
+
border: var(--sc-border);
|
|
3903
|
+
border-radius: var(--sc-radius-md);
|
|
3904
|
+
background: var(--sc-color-bg-inset);
|
|
3905
|
+
box-shadow: var(--sc-shadow-stage);
|
|
3906
|
+
font-size: var(--sc-text-sm);
|
|
3825
3907
|
}
|
|
3826
3908
|
|
|
3827
|
-
.sc-
|
|
3828
|
-
|
|
3909
|
+
.sc-card-menu .sc-menu-link {
|
|
3910
|
+
padding: calc(var(--sc-space-1) + 1px) var(--sc-space-2);
|
|
3911
|
+
border-radius: var(--sc-radius-sm);
|
|
3829
3912
|
}
|
|
3830
3913
|
|
|
3831
3914
|
.sc-column-over {
|
|
@@ -3838,17 +3921,16 @@ table {
|
|
|
3838
3921
|
top: 0;
|
|
3839
3922
|
left: 0;
|
|
3840
3923
|
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
3924
|
pointer-events: none;
|
|
3850
3925
|
}
|
|
3851
3926
|
|
|
3927
|
+
.sc-drag-ghost .sc-card {
|
|
3928
|
+
border-color: var(--sc-color-accent);
|
|
3929
|
+
background: var(--sc-color-bg-raised);
|
|
3930
|
+
box-shadow: var(--sc-shadow-stage);
|
|
3931
|
+
transform: scale(1.02);
|
|
3932
|
+
}
|
|
3933
|
+
|
|
3852
3934
|
/* A goal's page reads as the board does: the facts in a row at its head, then a switch between
|
|
3853
3935
|
the views of its tasks, then the view, which takes the rest of the height as the board does. */
|
|
3854
3936
|
.sc-goal-page {
|
|
@@ -3941,21 +4023,3 @@ table {
|
|
|
3941
4023
|
.sc-goal-view-list {
|
|
3942
4024
|
display: block;
|
|
3943
4025
|
}
|
|
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
|
-
}
|