claude-code-kanban 3.2.0 → 3.2.2
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/install.js
CHANGED
|
@@ -159,7 +159,7 @@ async function runInstall() {
|
|
|
159
159
|
} else if (!settings.statusLine) {
|
|
160
160
|
console.log(`\n StatusLine: ${dim('not configured')}`);
|
|
161
161
|
if (await prompt(` Set up context tracking statusline? [Y/n] `)) {
|
|
162
|
-
settings.statusLine = { command: CTX_COMMAND };
|
|
162
|
+
settings.statusLine = { type: 'command', command: CTX_COMMAND };
|
|
163
163
|
fs.writeFileSync(SETTINGS_PATH, JSON.stringify(settings, null, 2) + '\n');
|
|
164
164
|
console.log(` ${green('✓')} StatusLine configured`);
|
|
165
165
|
} else {
|
|
@@ -169,6 +169,7 @@ async function runInstall() {
|
|
|
169
169
|
const existing = settings.statusLine.command;
|
|
170
170
|
console.log(`\n StatusLine: ${dim(`current: ${existing}`)}`);
|
|
171
171
|
if (await prompt(` Prepend context spy to existing statusline? [Y/n] `)) {
|
|
172
|
+
settings.statusLine.type = 'command';
|
|
172
173
|
settings.statusLine.command = `${CTX_COMMAND} | ${existing}`;
|
|
173
174
|
fs.writeFileSync(SETTINGS_PATH, JSON.stringify(settings, null, 2) + '\n');
|
|
174
175
|
console.log(` ${green('✓')} StatusLine updated`);
|
package/package.json
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-code-kanban",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "Agent activity tracking for claude-code-kanban dashboard"
|
|
5
|
-
"hooks": "./hooks/hooks.json"
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "Agent activity tracking for claude-code-kanban dashboard"
|
|
6
5
|
}
|
package/public/app.js
CHANGED
|
@@ -2110,6 +2110,8 @@ function renderSessions() {
|
|
|
2110
2110
|
// Update project dropdown
|
|
2111
2111
|
updateProjectDropdown();
|
|
2112
2112
|
|
|
2113
|
+
// Filter pipeline: active filter → force-include revealed/current (non-pinned) sessions →
|
|
2114
|
+
// project filter → search filter → ensure pinned/sticky sessions are always included
|
|
2113
2115
|
const LIVE_INDICATOR_MS = 10 * 1000;
|
|
2114
2116
|
let filteredSessions = sessions;
|
|
2115
2117
|
if (sessionFilter === 'active') {
|
|
@@ -2128,11 +2130,17 @@ function renderSessions() {
|
|
|
2128
2130
|
if (isActive) activeSessionIds.add(s.id);
|
|
2129
2131
|
return isActive;
|
|
2130
2132
|
});
|
|
2133
|
+
// Force-include revealed/current sessions that didn't pass the active filter.
|
|
2134
|
+
// Skip pinned sessions — they are prepended separately below (lines ~2180) to preserve stable position.
|
|
2131
2135
|
const filteredIds = new Set(filteredSessions.map((s) => s.id));
|
|
2132
2136
|
for (const id of [revealedPlanSessionId, revealedStorageSessionId, currentSessionId]) {
|
|
2133
|
-
if (id && !filteredIds.has(id)) {
|
|
2137
|
+
if (id && !filteredIds.has(id) && !isAnyPinned(id)) {
|
|
2134
2138
|
const session = sessions.find((s) => s.id === id);
|
|
2135
|
-
if (session)
|
|
2139
|
+
if (session) {
|
|
2140
|
+
const insertAt = filteredSessions.findIndex((s) => s.modifiedAt < session.modifiedAt);
|
|
2141
|
+
if (insertAt === -1) filteredSessions.push(session);
|
|
2142
|
+
else filteredSessions.splice(insertAt, 0, session);
|
|
2143
|
+
}
|
|
2136
2144
|
}
|
|
2137
2145
|
}
|
|
2138
2146
|
}
|