Skip to content

Improve queue listing and related tooling#303

Merged
htilly merged 1 commit into
masterfrom
codex/queue-listing-fix
Jun 23, 2026
Merged

Improve queue listing and related tooling#303
htilly merged 1 commit into
masterfrom
codex/queue-listing-fix

Conversation

@htilly

@htilly htilly commented Jun 23, 2026

Copy link
Copy Markdown
Owner

Summary

  • improve queue listing behavior and related command handling
  • update help/config/docs to match the new list behavior
  • add and expand command and integration test coverage

Notes

  • includes the local commit currently on this branch as approved

Copilot AI review requested due to automatic review settings June 23, 2026 21:35
@htilly htilly merged commit 4454467 into master Jun 23, 2026
6 checks passed

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates SlackONOS queue listing to provide a compact default list view (current track + next tracks), adds listall / list all for the full queue, and improves AI mention routing to reduce false “admin-only” rejections for song-title-like messages. It also introduces a configurable queueThreadThreshold to thread long queue outputs, updating docs and tests accordingly.

Changes:

  • Add listQueue handler and route list → compact view; add listall for the full queue with threaded overflow support.
  • Add queueThreadThreshold config surfaced via setconfig, admin API, and the web admin UI.
  • Refine AI routing for mentions to disambiguate ambiguous admin-looking parses and add regression/integration test coverage.

Reviewed changes

Copilot reviewed 18 out of 19 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
test/tools/integration-test-suite.mjs Adds transcript-based regression cases and optional mention tests for add/admin-only false positives.
test/setconfig.test.mjs Extends setconfig validation coverage for new queueThreadThreshold numeric config.
test/command-router.test.mjs Adds tests for AI mention disambiguation between admin intents and track-add fallbacks.
test/command-registry.test.mjs Updates registry expectations for list routing and new listall command.
test/command-handlers.test.mjs Adds unit coverage for listQueue behavior and threaded overflow for queue listing.
test/admin-api.test.mjs Verifies admin API can update queueThreadThreshold.
templates/help/helpTextAdmin.txt Minor help text formatting adjustment.
templates/help/helpText.txt Documents list (compact) and listall (full) behavior.
README.md Updates command descriptions to match the new queue listing semantics.
public/setup/admin.js Exposes queueThreadThreshold in the web admin configuration UI.
lib/command-router.js Adds explicit-admin-intent detection and AI coercion logic for ambiguous unauthorized admin parses.
lib/command-registry.js Routes list to listQueue and adds listall entry.
lib/command-handlers.js Implements compact queue listing, queue window retrieval, and threaded overflow helpers.
lib/ai-handler.js Allows and documents listall in AI command set and prompt rules.
lib/admin-api.js Permits reading/updating queueThreadThreshold via the admin API and treats it as numeric.
index.js Returns message send results (for thread TS usage) and wires queueThreadThreshold through config defaults and setconfig output.
docs/QUICK_START.md Updates quick start command list for list/listall.
docs/AI_FEATURE.md Adds listall to AI feature documentation examples.
config/config.json.example Adds queueThreadThreshold example configuration.

Comment thread lib/command-handlers.js
Comment on lines +104 to +116
function formatTrackTime(position, duration) {
if (!duration || !position) {
return null;
}

const remaining = Math.max(0, duration - position);
const remainingMin = Math.floor(remaining / 60);
const remainingSec = Math.floor(remaining % 60);
const durationMin = Math.floor(duration / 60);
const durationSec = Math.floor(duration % 60);

return `${remainingMin}:${remainingSec.toString().padStart(2, '0')} remaining (${durationMin}:${durationSec.toString().padStart(2, '0')} total)`;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants