The earlier exercise already gave the workshop a working form and itinerary; this starter includes that completed state plus an unwired filter field and an empty count paragraph. The existing itinerary, form, and accessibility attributes are setup, not steps to redo. Finish the project without discarding the previous behavior.
Another page might announce only visible reading-list entries:
const visible = Array.from(document.querySelectorAll("#books li"))
.filter(book => !book.hidden).length;
document.querySelector("#books-count").textContent = `${visible} books shown`;
Your count needs to stay correct after typing, adding, updating, and removing. Keep the data in sessions and have the UI rerender from it. Use native buttons for Remove actions rather than clickable spans.
button.remove-session, including rows added through the form.#sessions to delete the matching object from sessions and rerender.No sessions to update. rather than accessing a missing object.#session-count a polite live status region and update its visible-row count on load, filtering, adding, and removal, including zero.Add a session, filter for its title, remove it with the button, and clear the search. The other sessions should still be available. The workshop planner is complete.