@kitkat-vn/kitcode 0.2.0-staging.13 → 0.2.0-staging.14

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 CHANGED
@@ -189,22 +189,22 @@ The time targets are fixed, each milestone's own (below): no flag or variable ch
189
189
  Each milestone needs both enough active time and enough counted `=`, each counted from the moment the milestone before it
190
190
  was reached: `30%` from install, `50%` from the moment `30%` was reached, `100%` from the moment `50%` was. Nothing earned
191
191
  before that moment counts toward it, neither time earned while waiting for `=` nor `=` while waiting for time, so `100%`
192
- takes 16 hours and 1,800 `=` in all. What was reached stays reached.
192
+ takes 108 minutes and 36 `=` in all in a tester build. What was reached stays reached.
193
193
 
194
194
  ### Milestones
195
195
 
196
196
  | Milestone | Active time, from the milestone before | Counted `=`, from the milestone before |
197
197
  | ---: | ---: | ---: |
198
- | `30%` | 3 hours (10800 s), from install | 300, from install |
199
- | `50%` | 5 hours (18000 s) | 500 |
200
- | `100%` | 8 hours (28800 s) | 1,000 |
201
-
202
- Every build counts by these numbers: the tester table, which every tester build counts by, and the production table, which
203
- a production release counts by, hold the same ones. `MILESTONE_TABLE` in `src/integration-spec.mjs` says which this package
204
- counts by, and `kitcode summary` names what the next milestone still needs.
205
- Until 2026-10-08 there were 10% and 20% milestones too, and until 2026-10-20 every milestone counted from install. Until
206
- 2026-10-21 a tester build counted 18 minutes and 9 `=`, 30 minutes and 12, and 60 minutes and 15: 108 minutes and 36 `=` to
207
- `100%`.
198
+ | `30%` | 18 minutes (1080 s), from install | 9, from install |
199
+ | `50%` | 30 minutes (1800 s) | 12 |
200
+ | `100%` | 60 minutes (3600 s) | 15 |
201
+
202
+ This is the tester table, which every tester build counts by. A production release counts by the production table: 3 hours
203
+ (10800 s) and 300 `=`, 5 hours (18000 s) and 500, 8 hours (28800 s) and 1,000, so 16 hours and 1,800 `=` to `100%`.
204
+ `MILESTONE_TABLE` in `src/integration-spec.mjs` says which this package counts by, and `kitcode summary` names what the next
205
+ milestone still needs.
206
+ Until 2026-10-08 there were 10% and 20% milestones too, and until 2026-10-20 every milestone counted from install. From
207
+ 2026-10-21 to 2026-10-22 the tester table held the production table's numbers; since 2026-10-22 it is the short one again.
208
208
 
209
209
  Once a milestone is reached, the dashboard shows its message: the campaign's own words, which the campaign's server gives each milestone. The prompt hook and the desktop notification say only that a milestone was reached. `summary` and `awards` show which are ready.
210
210
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kitkat-vn/kitcode",
3
- "version": "0.2.0-staging.13",
3
+ "version": "0.2.0-staging.14",
4
4
  "description": "Local aggregate activity server for KitCode.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -37,5 +37,5 @@
37
37
  "optionalDependencies": {
38
38
  "electron": "^43.0.0"
39
39
  },
40
- "gitHead": "ba4547df17d044bcf364625e341afe590b0453fe"
40
+ "gitHead": "9bb9ffad62d8fc739287dbf8b76e0505f412b7c2"
41
41
  }
@@ -48,11 +48,17 @@ export const RUNNER_DISPLAY_PATH = `~/${RUNNER_PATH_PARTS.join('/')}`;
48
48
  // decision 4 for the tester table; the production table's numbers are no longer drafts, and its 100 % is 8 h where the
49
49
  // draft said 10. The two tables stay two, equal, so that production's can differ again by one table's edit (a ruling,
50
50
  // docs/reward-rules.md §2). Until then the tester table was 1080 s and 9 =, 1800 s and 12 =, 3600 s and 15 =.
51
+ //
52
+ // Since 2026-10-22 the tester table is that short one again (the operator: "scale down the focus time and = requirements as
53
+ // the previous time for staging for testing easier, keep the same for production"): 18 minutes and 9 =, 30 and 12, 60 and
54
+ // 15, so 108 minutes and 36 = in all to reach 100 %, each still counted fresh. The production table keeps the operator's
55
+ // numbers of 2026-10-21, and the two differ again. The claim backend holds a claim to its own MILESTONE_* settings, which
56
+ // staging's server sets to the tester table by hand (docs/deployment-target.md).
51
57
  export const MILESTONE_TABLES = Object.freeze({
52
58
  tester: Object.freeze([
53
- Object.freeze({percent: 30, requiredSeconds: 10800, requiredEquals: 300}),
54
- Object.freeze({percent: 50, requiredSeconds: 18000, requiredEquals: 500}),
55
- Object.freeze({percent: 100, requiredSeconds: 28800, requiredEquals: 1000}),
59
+ Object.freeze({percent: 30, requiredSeconds: 1080, requiredEquals: 9}),
60
+ Object.freeze({percent: 50, requiredSeconds: 1800, requiredEquals: 12}),
61
+ Object.freeze({percent: 100, requiredSeconds: 3600, requiredEquals: 15}),
56
62
  ]),
57
63
  production: Object.freeze([
58
64
  Object.freeze({percent: 30, requiredSeconds: 10800, requiredEquals: 300}),
@@ -269,7 +275,8 @@ function targetTime(seconds) {
269
275
 
270
276
  // Since 2026-10-20 each line says where its milestone counts from: install for the first, and for each other the moment the
271
277
  // one before it was reached (docs/reward-rules.md §2). Since 2026-10-21 each names its time, "3h of tracked time", where it
272
- // said "enough tracked time": with the operator's targets of that day a milestone's time is 3 to 8 hours.
278
+ // said "enough tracked time": with the operator's targets of that day a milestone's time is 3 to 8 hours. Since 2026-10-22
279
+ // the tester table's times read "18m", "30m" and "1h", the production table's still "3h", "5h" and "8h".
273
280
  function milestoneLines() {
274
281
  const milestones = [...KITCODE_REWARD_TIERS, ...KITCODE_DISPLAY_MILESTONES];
275
282
 
package/src/reward.mjs CHANGED
@@ -17,8 +17,8 @@ export const MILESTONE_PERCENTS = REWARD_MILESTONES.map((milestone) => milestone
17
17
  // §3). Until then it was a setting, down to 1 s: --reward-seconds, KITCODE_REWARD_SECONDS, and
18
18
  // rewardSettings.requiredSeconds in state.json. A requiredSeconds an older KitCode stored stays in the
19
19
  // file, unread, as the removed requiredEquals does. Since 2026-10-20 each milestone names its own time in the table
20
- // (integration-spec.mjs), where it was this × its percent: the same numbers in the tester table until 2026-10-21, and since
21
- // then the operator's, 100 %'s 8 h, 28800 s.
20
+ // (integration-spec.mjs), where it was this × its percent: the same numbers in the tester table, which held the operator's
21
+ // from 2026-10-21 to 2026-10-22, 100 %'s 8 h, and since then its own again, 100 %'s 3600 s.
22
22
  const LAST_MILESTONE = REWARD_MILESTONES[REWARD_MILESTONES.length - 1];
23
23
  export const REWARD_SECONDS = LAST_MILESTONE.requiredSeconds;
24
24
  // The = the last milestone needs. The = targets are the table's; no setting changes them (the