diff --git a/src/status-box.js b/src/status-box.js index 26eb1e4..b1dc86e 100644 --- a/src/status-box.js +++ b/src/status-box.js @@ -90,6 +90,15 @@ class StatusBox { const post = await this._apiCall('POST', '/api/v4/posts', body); if (this.logger) this.logger.debug({ postId: post.id, channelId }, 'Created status post'); this.metrics.updatesSent++; + + // Pin the status post so it's always visible + try { + await this._apiCall('POST', `/api/v4/posts/${post.id}/pin`, null); + if (this.logger) this.logger.debug({ postId: post.id }, 'Status post pinned'); + } catch (pinErr) { + if (this.logger) this.logger.warn({ postId: post.id, err: pinErr }, 'Failed to pin status post'); + } + return post.id; } diff --git a/src/watcher-manager.js b/src/watcher-manager.js index f129011..b5a86e0 100644 --- a/src/watcher-manager.js +++ b/src/watcher-manager.js @@ -331,6 +331,14 @@ async function startDaemon() { logger.error({ sessionKey, err }, 'Failed to update final status'); } + // Unpin the status post when session is done + try { + await sharedStatusBox._apiCall('POST', `/api/v4/posts/${box.postId}/unpin`, null); + logger.debug({ sessionKey, postId: box.postId }, 'Status post unpinned'); + } catch (unpinErr) { + logger.warn({ sessionKey, err: unpinErr }, 'Failed to unpin status post'); + } + // Clean up activeBoxes.delete(sessionKey); watcher.removeSession(sessionKey);