@maka/maka-cli 5.148.0 → 5.149.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.
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@maka/maka-cli",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.149.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"summary": "A command line tool for scaffolding Meteor 3.x applications using either React.",
|
|
6
6
|
"description": "A command line tool for scaffolding Meteor 3.x applications using React.",
|
|
@@ -38,10 +38,11 @@ export class BacklogCommand extends Command {
|
|
|
38
38
|
static verb = "backlog";
|
|
39
39
|
// Writes to the player OWN board over their auth token -- never an NPC.
|
|
40
40
|
static humanOnly = true;
|
|
41
|
-
static description = 'File a play-tester item that somebody acts on -- it goes to maka-cli.com, keeps a link to this session, and comes back checked against the rulebooks. "backlog <what you noticed>" files one; "backlog list [status]" reads the board. For private scribbles, use "note".';
|
|
41
|
+
static description = 'File a play-tester item that somebody acts on -- it goes to maka-cli.com, keeps a link to this session, and comes back checked against the rulebooks. "backlog <what you noticed>" files one; "backlog list [status]" reads the board; "backlog web" opens the live board in your browser. For private scribbles, use "note".';
|
|
42
42
|
static subcommands = [
|
|
43
43
|
{ usage: 'backlog <text>', short: 'File an item against this session.' },
|
|
44
44
|
{ usage: 'backlog list', short: 'The whole board, what needs you last.' },
|
|
45
|
+
{ usage: 'backlog web', short: 'Open the live backlog board in your browser.' },
|
|
45
46
|
{ usage: 'backlog <n>', short: 'Read board item n in full.' },
|
|
46
47
|
{ usage: 'backlog repro <n>', short: 'Play the repro bench for board item n.' },
|
|
47
48
|
{ usage: 'backlog close <n> [why]', short: 'Close item n outright -- filed in error, duplicate, no longer real.' },
|
|
@@ -71,6 +72,12 @@ export class BacklogCommand extends Command {
|
|
|
71
72
|
if (args.length === 0 || sub === 'list') {
|
|
72
73
|
return this.list(args[1]);
|
|
73
74
|
}
|
|
75
|
+
// Claimed here, same reason "accept"/"reject"/"repro"/"close" are:
|
|
76
|
+
// every unclaimed word past this point is report text, and "backlog
|
|
77
|
+
// web" must open the board, not file an item whose text is "web".
|
|
78
|
+
if (sub === 'web') {
|
|
79
|
+
return this.webBoard();
|
|
80
|
+
}
|
|
74
81
|
// A BARE NUMBER READS THAT ROW OF THE BOARD, and it has to be caught
|
|
75
82
|
// here for the same reason `list` and `review` are: everything that
|
|
76
83
|
// reaches the bottom of this method FILES AN ITEM. Without this,
|
|
@@ -118,6 +125,23 @@ export class BacklogCommand extends Command {
|
|
|
118
125
|
}
|
|
119
126
|
return this.file(args.join(' '));
|
|
120
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* "backlog web" (user request, 2026-09-10): the same /cli-login
|
|
130
|
+
* handoff as "sheet web" (sheet.ts), landing on the shared board --
|
|
131
|
+
* /backlog, already on the NEXT_ALLOWLIST. The token is guaranteed
|
|
132
|
+
* present here: execute() already refused above if authToken() was
|
|
133
|
+
* empty, before any subcommand (this one included) could be reached.
|
|
134
|
+
*/
|
|
135
|
+
async webBoard() {
|
|
136
|
+
const { buildBacklogBoardUrl } = await import('../utilities/web-character-generator.js');
|
|
137
|
+
const url = buildBacklogBoardUrl(authToken());
|
|
138
|
+
const { openBrowser } = await import('../../../../tools/browser/open-browser.js');
|
|
139
|
+
openBrowser(url);
|
|
140
|
+
return [
|
|
141
|
+
`Your backlog board is opening in the browser -- the game keeps running right here.`,
|
|
142
|
+
` ${url}`,
|
|
143
|
+
].join('\n');
|
|
144
|
+
}
|
|
121
145
|
async file(text) {
|
|
122
146
|
const game = this.game;
|
|
123
147
|
// LAZY, and not for speed: shared-run.ts pulls in tools/version/
|
|
@@ -82,6 +82,18 @@ export function buildCharacterSheetUrl(resumeToken, slug) {
|
|
|
82
82
|
const next = `${CHARACTERS_PAGE}/${encodeURIComponent(slug)}`;
|
|
83
83
|
return `${cliLoginUrl()}?t=${Date.now()}#token=${encodeURIComponent(resumeToken)}&next=${next}`;
|
|
84
84
|
}
|
|
85
|
+
const BACKLOG_PAGE = '/backlog';
|
|
86
|
+
/**
|
|
87
|
+
* "backlog web" (user request, 2026-09-10): the same /cli-login handoff
|
|
88
|
+
* as the live sheet, landing on the shared backlog board -- /backlog,
|
|
89
|
+
* already on cli-login-next.ts's NEXT_ALLOWLIST as a bare path. Unlike
|
|
90
|
+
* buildCharacterSheetUrl/buildDossierUrl there is no per-item deep link
|
|
91
|
+
* to validate here: the board itself is the destination, not a row on
|
|
92
|
+
* it.
|
|
93
|
+
*/
|
|
94
|
+
export function buildBacklogBoardUrl(resumeToken) {
|
|
95
|
+
return `${cliLoginUrl()}?t=${Date.now()}#token=${encodeURIComponent(resumeToken)}&next=${BACKLOG_PAGE}`;
|
|
96
|
+
}
|
|
85
97
|
/**
|
|
86
98
|
* WHAT THE CLI SAYS ON ITS WAY OUT of the chargen handoff. Extracted
|
|
87
99
|
* from the command handler so the two things that matter about it are
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@maka/maka-cli",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.149.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"summary": "A command line tool for scaffolding Meteor 3.x applications using either React.",
|
|
6
6
|
"description": "A command line tool for scaffolding Meteor 3.x applications using React.",
|