kireji 0.9.0 → 0.10.0
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 +3 -3
- package/package.json +1 -1
- package/src/app/kireji/description +1 -1
- package/src/app/kireji/issue-tracker/filters/apply.js +29 -0
- package/src/app/kireji/issue-tracker/filters/boolean/part.json +10 -0
- package/src/app/kireji/issue-tracker/filters/boolean/point.js +7 -0
- package/src/app/kireji/issue-tracker/filters/boolean/view-update.js +1 -0
- package/src/app/kireji/issue-tracker/filters/constants.js +2 -0
- package/src/app/kireji/issue-tracker/filters/dropdown/constants.js +2 -0
- package/src/app/kireji/issue-tracker/filters/dropdown/none/part.json +1 -0
- package/src/app/kireji/issue-tracker/filters/dropdown/part.html_.js +15 -0
- package/src/app/kireji/issue-tracker/filters/dropdown/part.json +3 -0
- package/src/app/kireji/issue-tracker/filters/dropdown/priority/part.json +1 -0
- package/src/app/kireji/issue-tracker/filters/dropdown/status/part.json +1 -0
- package/src/app/kireji/issue-tracker/filters/dropdown/type.d.ts +12 -0
- package/src/app/kireji/issue-tracker/filters/dropdown/view-update.js +10 -0
- package/src/app/kireji/issue-tracker/filters/order/by/date/part.json +1 -0
- package/src/app/kireji/issue-tracker/filters/order/by/part.json +9 -0
- package/src/app/kireji/issue-tracker/filters/order/by/priority/part.json +1 -0
- package/src/app/kireji/issue-tracker/filters/order/by/status/part.json +1 -0
- package/src/app/kireji/issue-tracker/filters/order/by/title/part.json +1 -0
- package/src/app/kireji/issue-tracker/filters/order/by/type.d.ts +11 -0
- package/src/app/kireji/issue-tracker/filters/order/by/view-update.js +2 -0
- package/src/app/kireji/issue-tracker/filters/order/descending/part.json +3 -0
- package/src/app/kireji/issue-tracker/filters/order/descending/view-update.js +6 -0
- package/src/app/kireji/issue-tracker/filters/order/part.json +3 -0
- package/src/app/kireji/issue-tracker/filters/order/type.d.ts +10 -0
- package/src/app/kireji/issue-tracker/filters/part.css +149 -0
- package/src/app/kireji/issue-tracker/filters/part.html_.js +10 -3
- package/src/app/kireji/issue-tracker/filters/part.json +10 -1
- package/src/app/kireji/issue-tracker/filters/point.js +27 -0
- package/src/app/kireji/issue-tracker/filters/priority/a/part.json +3 -0
- package/src/app/kireji/issue-tracker/filters/priority/b/part.json +3 -0
- package/src/app/kireji/issue-tracker/filters/priority/c/part.json +3 -0
- package/src/app/kireji/issue-tracker/filters/priority/part.json +3 -0
- package/src/app/kireji/issue-tracker/filters/priority/type.d.ts +11 -0
- package/src/app/kireji/issue-tracker/filters/status/doing/part.json +3 -0
- package/src/app/kireji/issue-tracker/filters/status/done/part.json +3 -0
- package/src/app/kireji/issue-tracker/filters/status/part.json +8 -0
- package/src/app/kireji/issue-tracker/filters/status/to-do/part.json +3 -0
- package/src/app/kireji/issue-tracker/filters/status/type.d.ts +11 -0
- package/src/app/kireji/issue-tracker/filters/type.d.ts +13 -2
- package/src/app/kireji/issue-tracker/filters/view-hydrate.js +15 -0
- package/src/app/kireji/issue-tracker/filters/view-update.js +1 -0
- package/src/app/kireji/issue-tracker/issues.html_.js +1 -0
- package/src/app/kireji/issue-tracker/part.css_.js +1 -1
- package/src/app/kireji/issue-tracker/part.html_.js +1 -2
- package/src/app/kireji/issue-tracker/pathname-translate-canonical.js +0 -3
- package/src/app/kireji/issue-tracker/sections/issues/1776193480/title +1 -1
- package/src/app/kireji/issue-tracker/sections/issues/1776205544/links_.js +1 -0
- package/src/app/kireji/issue-tracker/sections/issues/1776208669/links_.js +1 -0
- package/src/app/kireji/issue-tracker/sections/issues/1776209115/links_.js +3 -0
- package/src/app/kireji/issue-tracker/sections/issues/1776211364/description +1 -1
- package/src/app/kireji/issue-tracker/sections/issues/1776211364/links_.js +5 -1
- package/src/app/kireji/issue-tracker/sections/issues/1776212048/links_.js +3 -0
- package/src/app/kireji/issue-tracker/sections/issues/1776212294/links_.js +3 -0
- package/src/app/kireji/issue-tracker/sections/issues/1776212412/links_.js +3 -0
- package/src/app/kireji/issue-tracker/sections/issues/1776212585/links_.js +3 -0
- package/src/app/kireji/issue-tracker/sections/issues/1776212811/links_.js +3 -0
- package/src/app/kireji/issue-tracker/sections/issues/1776262432/description +1 -0
- package/src/app/kireji/issue-tracker/sections/issues/1776262432/links_.js +8 -0
- package/src/app/kireji/issue-tracker/sections/issues/1776262432/part.json +3 -0
- package/src/app/kireji/issue-tracker/sections/issues/1776262432/priority +1 -0
- package/src/app/kireji/issue-tracker/sections/issues/1776262432/status +1 -0
- package/src/app/kireji/issue-tracker/sections/issues/1776262432/title +1 -0
- package/src/app/kireji/issue-tracker/sections/issues/1776263309/description +3 -0
- package/src/app/kireji/issue-tracker/sections/issues/1776263309/links_.js +3 -0
- package/src/app/kireji/issue-tracker/sections/issues/1776263309/part.json +3 -0
- package/src/app/kireji/issue-tracker/sections/issues/1776263309/priority +1 -0
- package/src/app/kireji/issue-tracker/sections/issues/1776263309/status +1 -0
- package/src/app/kireji/issue-tracker/sections/issues/1776263309/title +1 -0
- package/src/app/kireji/issue-tracker/sections/issues/1776282415/description +1 -0
- package/src/app/kireji/issue-tracker/sections/issues/1776282415/links_.js +3 -0
- package/src/app/kireji/issue-tracker/sections/issues/1776282415/part.json +3 -0
- package/src/app/kireji/issue-tracker/sections/issues/1776282415/priority +1 -0
- package/src/app/kireji/issue-tracker/sections/issues/1776282415/status +1 -0
- package/src/app/kireji/issue-tracker/sections/issues/1776282415/title +1 -0
- package/src/app/kireji/issue-tracker/sections/issues/1776307785/affects_.js +3 -0
- package/src/app/kireji/issue-tracker/sections/issues/1776307785/description +1 -0
- package/src/app/kireji/issue-tracker/sections/issues/1776307785/part.json +3 -0
- package/src/app/kireji/issue-tracker/sections/issues/1776307785/priority +1 -0
- package/src/app/kireji/issue-tracker/sections/issues/1776307785/status +1 -0
- package/src/app/kireji/issue-tracker/sections/issues/1776307785/title +1 -0
- package/src/app/kireji/issue-tracker/sections/issues/issue/card.html_.js +2 -2
- package/src/app/kireji/issue-tracker/sections/issues/issue/date-nice.js +1 -0
- package/src/app/kireji/issue-tracker/sections/issues/issue/part.html_.js +3 -2
- package/src/app/kireji/issue-tracker/sections/issues/issue/part.json +3 -0
- package/src/app/kireji/issue-tracker/sections/issues/issue/type.d.ts +2 -0
- package/src/app/kireji/issue-tracker/static.css +125 -33
- package/src/app/kireji/issue-tracker/type.d.ts +3 -0
- package/src/app/kireji/meta-description +1 -1
- package/src/description +1 -1
- package/src/landing-model.json +19 -1
- package/src/parts/abstract/part/build.js +20 -12
- package/src/parts/abstract/part/type.d.ts +5 -3
- package/src/parts/desktop/color/part.html_.js +1 -1
- package/src/parts/desktop/era/modern/part.css +5 -10
- package/src/parts/desktop/era/part.html_.js +1 -1
- package/src/parts/desktop/era/vintage/static.css +5 -7
- package/src/schema.kireji.json +2 -2
- package/src/schema.part.json +8 -1
- package/src/static.css +2 -1
- package/src/type.d.ts +4 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Implement the full operating system experience for the Demo Ecosystem. This issue links together a collection of smaller issues that relate to various features of the operating system that need to be completed in order to make it feel well-rounded.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
B
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
doing
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Complete Operating System
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
Mobile user interface/usability requires some additional feature support on top of the desktop architecture. This means making special consideration for the lack of a keyboard and the tap feature. Where possible, employ the same usability solutions across both platforms for a consistent look-and-feel across devices. For example, a tall and narrow browser window should look the same as the equivalent portrait layout on a mobile device. Where possible, let click-and-drag on screen feel and behave like tab-and-drag on mobile.
|
|
2
|
+
|
|
3
|
+
This is an overall issue that links together all mobile-specific issues.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
A
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
doing
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Improve Mobile Usability
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
In the Issue Tracker app, implement filters over the issue list. Make sure that the filters and list look and feel good in both vintage and modern era for both light and dark color modes on both mobile and desktop.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
A
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
done
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Issue Filtering
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
In both vintage and modern modes, the issue modal of the issue tracker doesn't look finished. It's especially clear in vintage, though; the exit button in the top right can lead to accidentally clicking the actual exit button, closing the tracker app completely. Tidy up the UI and make the modal feel like a complete feature.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
B
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
doing
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Improve Issue Modal
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
return (
|
|
2
2
|
`<a ${_.pointAttr()} href=${kirejiIssue.canonicalURL} class="issue-row" data-id="${kirejiIssue.key}" data-priority="${kirejiIssue.priority}" data-status="${kirejiIssue.status}">` + (
|
|
3
|
-
// `<span class="issue-id">${issue.key}</span>` +
|
|
4
3
|
`<span class="issue-title">${kirejiIssue.title}</span>` +
|
|
5
4
|
`<span class="issue-priority">${kirejiIssue.priority}</span>` +
|
|
6
|
-
`<span class="issue-status">${kirejiIssue.status}</span>`
|
|
5
|
+
`<span class="issue-status">${kirejiIssue.status}</span>` +
|
|
6
|
+
`<span class="issue-date">${kirejiIssue.niceDate(kirejiIssue.key)}</span>`
|
|
7
7
|
) + "</a>"
|
|
8
8
|
)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
return new Date(UNIX_TIMESTAMP * 1000).toLocaleString("en-US", { dateStyle: "medium" })
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
const linkedIssues = kirejiIssue.links.map(linked => linked["card.html"]).join("")
|
|
1
2
|
return (
|
|
2
3
|
`<h1>${kirejiIssue.title}</h1>` +
|
|
3
4
|
`<button ${kirejiIssue.pointAttr("close")} class=exit-button>✕</button>` +
|
|
@@ -6,7 +7,7 @@ return (
|
|
|
6
7
|
`<b>Priority:</b> <span class="issue-priority">${kirejiIssue.priority}</span>\n\n` +
|
|
7
8
|
`<b>Status:</b> <span class="issue-status">${kirejiIssue.status}</span>\n\n` +
|
|
8
9
|
`<b>Description:</b>\n${kirejiIssue.description}\n\n` +
|
|
9
|
-
`<b>Affected Parts:</b>\n<span class="issue-affects">${kirejiIssue.affects.map(affected => affected.host).join(", ") || "None"}</span>\n\n` +
|
|
10
|
-
`<b>Linked Issues:</b
|
|
10
|
+
`<b>Affected Parts:</b>\n<span class="issue-affects">${kirejiIssue.affects.map(affected => affected === _ ? "ecosystem" : affected.host).join(", ") || "None"}</span>\n\n` +
|
|
11
|
+
`<b>Linked Issues:</b>${linkedIssues ? `\n<span class="issue-links">${linkedIssues}</span>` : " None"}`
|
|
11
12
|
) + "</p>"
|
|
12
13
|
)
|
|
@@ -8,6 +8,8 @@ declare interface IKirejiIssue
|
|
|
8
8
|
readonly affects: IPartAny[]
|
|
9
9
|
readonly links: IKirejiIssue[]
|
|
10
10
|
readonly "card.html": string
|
|
11
|
+
/** Outputs unix timestamps as a human-readable date, for consistent date formats across the notebook. */
|
|
12
|
+
readonly niceDate(UNIX_TIMESTAMP: string | number): string
|
|
11
13
|
}
|
|
12
14
|
|
|
13
15
|
declare const kirejiIssue: IKirejiIssue
|
|
@@ -1,22 +1,18 @@
|
|
|
1
|
-
body:not(.dark) #issue-tracker_kireji_app {
|
|
1
|
+
body.modern:not(.dark) #issue-tracker_kireji_app {
|
|
2
2
|
background-color: white;
|
|
3
3
|
}
|
|
4
4
|
|
|
5
5
|
#issue-tracker_kireji_app {
|
|
6
|
-
--max-width: 696px;
|
|
7
|
-
--outer-pad: calc((var(--app-width) - var(--rounded-width)) / 2);
|
|
8
|
-
--rounded-width: calc(min(calc(round(down, var(--app-width), var(--spacing)) - (2 * var(--spacing))), var(--max-width)) - 4px);
|
|
9
|
-
padding: var(--padding) var(--outer-pad);
|
|
10
6
|
display: flex;
|
|
11
7
|
flex-flow: column nowrap;
|
|
12
8
|
}
|
|
13
9
|
|
|
10
|
+
body.modern #issue-tracker_kireji_app {
|
|
11
|
+
padding: var(--spacing);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
14
|
#kireji-issue-modal {
|
|
15
15
|
position: absolute;
|
|
16
|
-
left: calc(3 * var(--spacing));
|
|
17
|
-
right: calc(3 * var(--spacing));
|
|
18
|
-
top: calc(2 * var(--spacing));
|
|
19
|
-
bottom: calc(2 * var(--spacing));
|
|
20
16
|
background-color: var(--bg);
|
|
21
17
|
padding: var(--spacing);
|
|
22
18
|
display: flex;
|
|
@@ -24,6 +20,20 @@ body:not(.dark) #issue-tracker_kireji_app {
|
|
|
24
20
|
flex-flow: column nowrap;
|
|
25
21
|
}
|
|
26
22
|
|
|
23
|
+
body.modern #kireji-issue-modal {
|
|
24
|
+
left: calc(3 * var(--spacing));
|
|
25
|
+
right: calc(3 * var(--spacing));
|
|
26
|
+
top: calc(2 * var(--spacing));
|
|
27
|
+
bottom: calc(2 * var(--spacing));
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
body.vintage #kireji-issue-modal {
|
|
31
|
+
left: 0;
|
|
32
|
+
right: 0;
|
|
33
|
+
top: 0;
|
|
34
|
+
bottom: 0;
|
|
35
|
+
}
|
|
36
|
+
|
|
27
37
|
#kireji-issue-modal .exit-button {
|
|
28
38
|
position: absolute;
|
|
29
39
|
right: var(--spacing);
|
|
@@ -41,10 +51,14 @@ body.modern #kireji-issue-modal {
|
|
|
41
51
|
border-radius: calc(var(--spacing) / 2);
|
|
42
52
|
}
|
|
43
53
|
|
|
44
|
-
body:not(.dark) #kireji-issue-modal {
|
|
54
|
+
body.modern:not(.dark) #kireji-issue-modal {
|
|
45
55
|
background-color: white;
|
|
46
56
|
}
|
|
47
57
|
|
|
58
|
+
body.vintage #kireji-issue-modal {
|
|
59
|
+
background-color: var(--bg);
|
|
60
|
+
}
|
|
61
|
+
|
|
48
62
|
#issue-tracker_kireji_app:has(#kireji-issue-modal:not(:empty)) {
|
|
49
63
|
pointer-events: none;
|
|
50
64
|
color: var(--fg-mode);
|
|
@@ -75,10 +89,13 @@ body:not(.dark) #kireji-issue-modal {
|
|
|
75
89
|
overflow: hidden;
|
|
76
90
|
text-overflow: ellipsis;
|
|
77
91
|
white-space: pre;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
body.modern #issue-tracker_kireji_app .issue-title {
|
|
78
95
|
font-weight: 500;
|
|
79
96
|
}
|
|
80
97
|
|
|
81
|
-
#issue-tracker_kireji_app .issue-table>scroller->scroll-content {
|
|
98
|
+
#issue-tracker_kireji_app :is(.issue-table>scroller->scroll-content, .issue-links) {
|
|
82
99
|
display: flex;
|
|
83
100
|
flex-flow: column nowrap;
|
|
84
101
|
width: 100%;
|
|
@@ -87,68 +104,124 @@ body:not(.dark) #kireji-issue-modal {
|
|
|
87
104
|
#issue-tracker_kireji_app .issue-row {
|
|
88
105
|
position: relative;
|
|
89
106
|
display: flex;
|
|
90
|
-
gap: var(--spacing);
|
|
91
|
-
cursor: pointer;
|
|
92
107
|
text-decoration: none;
|
|
93
108
|
color: inherit;
|
|
94
|
-
padding: calc(var(--spacing) / 2);
|
|
95
109
|
}
|
|
96
110
|
|
|
97
|
-
#issue-tracker_kireji_app .issue-row
|
|
98
|
-
|
|
111
|
+
body.modern #issue-tracker_kireji_app .issue-row {
|
|
112
|
+
padding: calc(var(--spacing) / 2) 0;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
body.modern #issue-tracker_kireji_app .issue-row:not(.header) {
|
|
99
116
|
border-radius: calc(var(--spacing) / 3);
|
|
117
|
+
cursor: pointer;
|
|
100
118
|
}
|
|
101
119
|
|
|
102
|
-
#issue-tracker_kireji_app
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
120
|
+
body.modern #issue-tracker_kireji_app .issue-row:not(.header):hover {
|
|
121
|
+
background-color: var(--accent-mode-est);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
body.vintage #issue-tracker_kireji_app .issue-row>* {
|
|
125
|
+
padding: 4px;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
#issue-tracker_kireji_app .issue-row>* {
|
|
129
|
+
line-height: var(--spacing);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
body.vintage #issue-tracker_kireji_app .issue-row:not(.header):hover {
|
|
133
|
+
background-color: var(--accent);
|
|
134
|
+
color: white;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
body.vintage.dark #issue-tracker_kireji_app .issue-row:not(.header):hover {
|
|
138
|
+
color: black;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
#issue-tracker_kireji_app :is(.issue-status, .issue-priority, .issue-date) {
|
|
142
|
+
width: var(--column-width);
|
|
107
143
|
display: inline-block;
|
|
108
144
|
}
|
|
109
145
|
|
|
110
|
-
#issue-tracker_kireji_app .issue-
|
|
146
|
+
#issue-tracker_kireji_app .issue-row>span {
|
|
147
|
+
position: relative;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
body.vintage #issue-tracker_kireji_app .issue-date {
|
|
151
|
+
--column-width: calc(7 * var(--spacing));
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
body.modern #issue-tracker_kireji_app .issue-date {
|
|
155
|
+
--column-width: calc(7 * var(--spacing));
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
body.vintage #issue-tracker_kireji_app .issue-status {
|
|
159
|
+
--column-width: 76px;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
body.modern #issue-tracker_kireji_app .issue-status {
|
|
163
|
+
--column-width: calc(6 * var(--spacing));
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
body.vintage #issue-tracker_kireji_app .issue-priority {
|
|
167
|
+
--column-width: 42px;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
body.modern #issue-tracker_kireji_app .issue-priority {
|
|
171
|
+
--column-width: calc(4 * var(--spacing));
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
body.modern #issue-tracker_kireji_app :not(.header)>:is(.issue-status, .issue-priority, .issue-date) {
|
|
175
|
+
border-radius: calc(var(--spacing) / 4);
|
|
176
|
+
font-weight: 600;
|
|
177
|
+
font-size: calc(var(--spacing) * .7);
|
|
178
|
+
text-align: center;
|
|
179
|
+
line-height: inherit;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
#issue-tracker_kireji_app :is(.issue-status, .issue-date) {
|
|
183
|
+
white-space: nowrap;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
body.modern #issue-tracker_kireji_app :not(.header)>.issue-status {
|
|
111
187
|
color: steelblue;
|
|
112
188
|
background-color: powderblue;
|
|
113
|
-
width: calc(5 * var(--spacing));
|
|
114
|
-
font-size: calc(var(--spacing) * .7);
|
|
115
|
-
line-height: var(--spacing);
|
|
116
189
|
}
|
|
117
190
|
|
|
118
|
-
body.dark #issue-tracker_kireji_app .issue-status {
|
|
191
|
+
body.modern.dark #issue-tracker_kireji_app :not(.header)>.issue-status {
|
|
119
192
|
color: powderblue;
|
|
120
193
|
background-color: steelblue;
|
|
121
194
|
}
|
|
122
195
|
|
|
123
|
-
#issue-tracker_kireji_app [data-status="doing"]
|
|
196
|
+
body.modern #issue-tracker_kireji_app :not(.header)[data-status="doing"]>.issue-status {
|
|
124
197
|
color: brown;
|
|
125
198
|
background-color: wheat;
|
|
126
199
|
}
|
|
127
200
|
|
|
128
|
-
body.dark #issue-tracker_kireji_app [data-status="doing"]
|
|
201
|
+
body.modern.dark #issue-tracker_kireji_app :not(.header)[data-status="doing"]>.issue-status {
|
|
129
202
|
color: wheat;
|
|
130
203
|
background-color: peru;
|
|
131
204
|
}
|
|
132
205
|
|
|
133
|
-
#issue-tracker_kireji_app [data-status="done"]
|
|
206
|
+
body.modern #issue-tracker_kireji_app :not(.header)[data-status="done"]>.issue-status {
|
|
134
207
|
color: seagreen;
|
|
135
208
|
background-color: palegreen;
|
|
136
209
|
}
|
|
137
210
|
|
|
138
|
-
body.dark #issue-tracker_kireji_app [data-status="done"]
|
|
211
|
+
body.modern.dark #issue-tracker_kireji_app :not(.header)[data-status="done"]>.issue-status {
|
|
139
212
|
color: palegreen;
|
|
140
213
|
background-color: seagreen;
|
|
141
214
|
}
|
|
142
215
|
|
|
143
|
-
#issue-tracker_kireji_app [data-priority="A"]
|
|
216
|
+
body.modern #issue-tracker_kireji_app :not(.header)[data-priority="A"]>.issue-priority {
|
|
144
217
|
color: red;
|
|
145
218
|
}
|
|
146
219
|
|
|
147
|
-
#issue-tracker_kireji_app [data-priority="B"]
|
|
220
|
+
body.modern #issue-tracker_kireji_app :not(.header)[data-priority="B"]>.issue-priority {
|
|
148
221
|
color: orange;
|
|
149
222
|
}
|
|
150
223
|
|
|
151
|
-
#issue-tracker_kireji_app [data-priority="C"]
|
|
224
|
+
body.modern #issue-tracker_kireji_app :not(.header)[data-priority="C"]>.issue-priority {
|
|
152
225
|
color: green;
|
|
153
226
|
}
|
|
154
227
|
|
|
@@ -156,8 +229,27 @@ body.dark #issue-tracker_kireji_app [data-status="done"] .issue-status {
|
|
|
156
229
|
min-height: 0;
|
|
157
230
|
position: relative;
|
|
158
231
|
overflow: hidden;
|
|
232
|
+
flex: 1;
|
|
159
233
|
}
|
|
160
234
|
|
|
161
235
|
#kireji-issue-modal .issue-row {
|
|
162
236
|
pointer-events: all;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
body.vintage #issue-tracker_kireji_app {
|
|
240
|
+
padding: 2px;
|
|
241
|
+
box-shadow: var(--deep-inset);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
body.vintage #issue-tracker_kireji_app :is(.issue-table, .issue-links) {
|
|
245
|
+
background: white;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
body.vintage.dark #issue-tracker_kireji_app :is(.issue-table, .issue-links) {
|
|
249
|
+
background: black;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
body.vintage #issue-tracker_kireji_app .issue-links {
|
|
253
|
+
padding: 2px;
|
|
254
|
+
box-shadow: var(--deep-inset);
|
|
163
255
|
}
|
|
@@ -5,6 +5,9 @@ declare interface IKirejiIssueTrackerApp
|
|
|
5
5
|
readonly scroller: IScroller<IKirejiIssueTrackerApp>
|
|
6
6
|
readonly sections: IKirejiIssueSections
|
|
7
7
|
readonly filters: IKirejiIssueFilters
|
|
8
|
+
|
|
9
|
+
// Serialized Properties.
|
|
10
|
+
readonly "issues.html": string
|
|
8
11
|
}
|
|
9
12
|
|
|
10
13
|
declare const kirejiIssueTracker: IKirejiIssueTrackerApp
|
|
@@ -1 +1 @@
|
|
|
1
|
-
This is a work-in-progress IDE. Everything is currently read-only. Explore the component model and hash function that power the Kireji Demo
|
|
1
|
+
This is a work-in-progress IDE. Everything is currently read-only. Explore the component model and hash function that power the Kireji Demo Ecosystem.
|
package/src/description
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
This part represents the root of the Kireji Demo
|
|
1
|
+
This part represents the root of the Kireji Demo Ecosystem. Its domain name is the empty string ("", representing the DNS root), and all of its subparts represent top-level domains (TLDs) like ".com" and ".io".
|
|
2
2
|
|
|
3
3
|
It forms the root of the runtime state space used to compute a two-way minimal perfect hash function (MPHF) across all hosted applications. When serialized, it inlines all metadata and file structure compiled from the repository at build time.
|
|
4
4
|
|
package/src/landing-model.json
CHANGED
|
@@ -16,7 +16,25 @@
|
|
|
16
16
|
}
|
|
17
17
|
},
|
|
18
18
|
"issue-tracker": {
|
|
19
|
-
"sections": "summary"
|
|
19
|
+
"sections": "summary",
|
|
20
|
+
"filters": {
|
|
21
|
+
"dropdown": "none",
|
|
22
|
+
"order": {
|
|
23
|
+
"descending": true,
|
|
24
|
+
"by": "date"
|
|
25
|
+
},
|
|
26
|
+
"priority": {
|
|
27
|
+
"a": true,
|
|
28
|
+
"b": true,
|
|
29
|
+
"c": true
|
|
30
|
+
},
|
|
31
|
+
"status": {
|
|
32
|
+
"doing": true,
|
|
33
|
+
"done": false,
|
|
34
|
+
"to-do": true
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"scroller": 0
|
|
20
38
|
},
|
|
21
39
|
"sidebar": {
|
|
22
40
|
"outliner-domains": {
|
|
@@ -1,15 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
part.subparts.sort((() => {
|
|
2
|
+
|
|
3
|
+
if (Array.isArray(part.manifest.order)) {
|
|
4
|
+
// If there is a custom order defined, just used that.
|
|
5
|
+
return (a, b) => part.manifest.order.indexOf(a.key) - part.manifest.order.indexOf(b.key)
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
/* Otherwise, sort ascending by cardinality to optimize Route ID encoding:
|
|
9
|
+
1. In mix parts, using the largest factor as the most significant digit
|
|
10
|
+
prevents its large cardinality from being a multiplier for other factors.
|
|
11
|
+
2. In match parts, placing larger arms at the end of the address space
|
|
12
|
+
prevents their large cardinalities from being offsets for smaller arms. */
|
|
13
|
+
return (a, b) => {
|
|
14
|
+
/* Relational comparisons are used to avoid BigInt subtraction which
|
|
15
|
+
would unnecessarily compute and store a third BigInt. */
|
|
16
|
+
if (a.cardinality < b.cardinality) return -1
|
|
17
|
+
if (a.cardinality > b.cardinality) return 1
|
|
18
|
+
return 0
|
|
19
|
+
}
|
|
20
|
+
})())
|
|
13
21
|
|
|
14
22
|
part.define({
|
|
15
23
|
dirty: { value: false, writable: true },
|
|
@@ -201,10 +201,12 @@ declare type IRuntimePropertyDefinition<TOwner, TValue> = {
|
|
|
201
201
|
declare interface IPartManifest {
|
|
202
202
|
/** Whether or not the part should be considered a subpart of its parent part (abstract = false) or an uninstanceable prototype for other parts (abstract = true). */
|
|
203
203
|
readonly abstract?: boolean
|
|
204
|
-
/** Whether or not the part will be instanced (inherit = false) or retained (inherit = true) during the create step. */
|
|
205
|
-
readonly inherit?: boolean
|
|
206
204
|
/** The list of methods that the part adds. The prototype of the methods object is set to the part's prototype's manifest methods object. If no object is defined in a manifest, the empty object will be created automatically. */
|
|
207
|
-
readonly methods
|
|
205
|
+
readonly methods?: Record<string, string[]>
|
|
206
|
+
/** The relative or absolute host name of the part that this part inherits from. The default value is `part`. */
|
|
207
|
+
readonly extends?: string
|
|
208
|
+
/** An optional string array of subpart keys representing the explicit order that the subparts should take in the part's subpart array. This affects how parts are iterated over and how they are integrated into the hash function. */
|
|
209
|
+
readonly order?: string[]
|
|
208
210
|
}
|
|
209
211
|
|
|
210
212
|
declare type IPartAny =
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
return `<span ${color.pointAttr()} id="color-control" tabIndex=0 data-state="${color.arm.stateData}">
|
|
1
|
+
return `<span ${color.pointAttr()} id="color-control" tabIndex=0 data-state="${color.arm.stateData}" class="toggle-control">
|
|
2
2
|
<span class="label">${color.title}:</span><flex-spacer></flex-spacer>
|
|
3
3
|
<span class="base"><span class="handle"></span></span>
|
|
4
4
|
</span>`
|
|
@@ -28,14 +28,12 @@ title-bar>.part-icon {
|
|
|
28
28
|
margin: calc(var(--spacing) / 2);
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
#era-control {
|
|
31
|
+
.toggle-control {
|
|
33
32
|
cursor: pointer;
|
|
34
33
|
position: relative;
|
|
35
34
|
}
|
|
36
35
|
|
|
37
|
-
|
|
38
|
-
#era-control .base {
|
|
36
|
+
.toggle-control .base {
|
|
39
37
|
width: 100%;
|
|
40
38
|
border-radius: var(--spacing);
|
|
41
39
|
background: var(--light-bg);
|
|
@@ -149,7 +147,8 @@ task-menu>* {
|
|
|
149
147
|
background-color: var(--bg-dark);
|
|
150
148
|
}
|
|
151
149
|
|
|
152
|
-
#settings>span
|
|
150
|
+
#settings>span,
|
|
151
|
+
.toggle-control {
|
|
153
152
|
gap: 1ch;
|
|
154
153
|
height: var(--spacing);
|
|
155
154
|
box-sizing: content-box;
|
|
@@ -174,14 +173,10 @@ task-menu>* {
|
|
|
174
173
|
}
|
|
175
174
|
|
|
176
175
|
|
|
177
|
-
|
|
176
|
+
.toggle-control[data-state="enabled"] .handle {
|
|
178
177
|
left: calc(var(--spacing) + 2px);
|
|
179
178
|
}
|
|
180
179
|
|
|
181
|
-
#settings>span[data-state="partial"] .handle {
|
|
182
|
-
left: calc(.5 * var(--spacing) + 2px);
|
|
183
|
-
}
|
|
184
|
-
|
|
185
180
|
.task-link[data-here]>a::before {
|
|
186
181
|
content: "";
|
|
187
182
|
position: absolute;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
return `<span ${era.pointAttr()} id="era-control" tabIndex=0 data-state="${era.arm.stateData}">
|
|
1
|
+
return `<span ${era.pointAttr()} id="era-control" tabIndex=0 data-state="${era.arm.stateData}" class="toggle-control">
|
|
2
2
|
<span class="label">${era.title}:</span><flex-spacer></flex-spacer>
|
|
3
3
|
<span class="base"><span class="handle"></span></span>
|
|
4
4
|
</span>`
|
|
@@ -60,16 +60,14 @@ scroll-bar>thumb- {
|
|
|
60
60
|
--thumb-start: var(--scrollbar-width);
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
|
|
64
|
-
#era-control .base {
|
|
63
|
+
.toggle-control .base {
|
|
65
64
|
background: white;
|
|
66
65
|
width: 16px;
|
|
67
66
|
height: 16px;
|
|
68
67
|
box-shadow: var(--deep-inset);
|
|
69
68
|
}
|
|
70
69
|
|
|
71
|
-
|
|
72
|
-
#era-control .base::after {
|
|
70
|
+
.toggle-control .base::after {
|
|
73
71
|
content: "";
|
|
74
72
|
display: block;
|
|
75
73
|
width: 16px;
|
|
@@ -81,11 +79,11 @@ scroll-bar>thumb- {
|
|
|
81
79
|
color: black;
|
|
82
80
|
}
|
|
83
81
|
|
|
84
|
-
|
|
82
|
+
.toggle-control[data-state="enabled"] .base::after {
|
|
85
83
|
content: "✓";
|
|
86
84
|
}
|
|
87
85
|
|
|
88
|
-
|
|
86
|
+
.toggle-control[data-state="partial"] .base::after {
|
|
89
87
|
content: "–";
|
|
90
88
|
}
|
|
91
89
|
|
|
@@ -190,7 +188,7 @@ body {
|
|
|
190
188
|
inset 2px 2px var(--bg-light-est);
|
|
191
189
|
--default-font-size: 11px;
|
|
192
190
|
font: var(--default-font-size) var(--system-ui);
|
|
193
|
-
image-rendering: pixelated
|
|
191
|
+
/*image-rendering: pixelated;*/
|
|
194
192
|
}
|
|
195
193
|
|
|
196
194
|
body,
|
package/src/schema.kireji.json
CHANGED
|
@@ -109,7 +109,7 @@
|
|
|
109
109
|
},
|
|
110
110
|
{
|
|
111
111
|
"const": "demo",
|
|
112
|
-
"description": "kireji.app will always be included (used only for Demo
|
|
112
|
+
"description": "kireji.app will always be included (used only for Demo Ecosystem)."
|
|
113
113
|
}
|
|
114
114
|
]
|
|
115
115
|
},
|
|
@@ -134,7 +134,7 @@
|
|
|
134
134
|
},
|
|
135
135
|
{
|
|
136
136
|
"const": "demo",
|
|
137
|
-
"description": "The full desktop experience will always be included (used only for Demo
|
|
137
|
+
"description": "The full desktop experience will always be included (used only for Demo Ecosystem)."
|
|
138
138
|
}
|
|
139
139
|
]
|
|
140
140
|
},
|
package/src/schema.part.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"type": "object",
|
|
6
6
|
"properties": {
|
|
7
7
|
"abstract": {
|
|
8
|
-
"description": "
|
|
8
|
+
"description": "Whether or not the part should be considered a subpart of its parent part (abstract = false) or an uninstanceable prototype for other parts (abstract = true).",
|
|
9
9
|
"type": "boolean"
|
|
10
10
|
},
|
|
11
11
|
"extends": {
|
|
@@ -22,6 +22,13 @@
|
|
|
22
22
|
"type": "string"
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
|
+
},
|
|
26
|
+
"order": {
|
|
27
|
+
"description": "An optional string array of subpart keys representing the explicit order that the subparts should take in the part's subpart array.\nThis affects how parts are iterated over and how they are integrated into the hash function.",
|
|
28
|
+
"type": "array",
|
|
29
|
+
"items": {
|
|
30
|
+
"type": "string"
|
|
31
|
+
}
|
|
25
32
|
}
|
|
26
33
|
},
|
|
27
34
|
"additionalProperties": {
|