Conversation
Deletes the prefix field and bold/italic/highlighted formatting fields from the schema, API, toolbar, and templates. These features added complexity without being used in practice. Two reversible migrations drop the columns from the database. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Phase 3: Add priority field (❶❷❸⭐🔥) to list items. Priority character replaces the drag handle and is always visible. Toolbar group lets users assign priority to selected items; remove-formats clears it. Arrow copies do not inherit priority. Phase 4: Sort-active button in toolbar reorders the current day so all active items come first, preserving within-group order, via the existing reorder_items/PubSub path. CSS fixes: priority characters always visible on desktop (specificity fix), correct sizing and tight spacing on both desktop and mobile. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
After applying a status, priority, color, or remove-formats action, deselect all items automatically. Previously selection persisted until the user manually deselected, which felt sticky after an action was complete. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
On mobile (pointer: coarse), desktop color swatches and priority buttons are hidden and replaced with single-button triggers that open bottom sheets with large tap targets. Desktop experience is unchanged. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds POST /api/v1/mcp behind existing AGENT_TOKEN auth. Exposes seven tools: get_today, list_items, list_items_range, add_item, update_item, arrow_item, search_items. No new infrastructure — routes through existing Lists context. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
notifications/initialized has no id field — none of the existing handlers matched, causing Phoenix to return 400. This broke the MCP handshake after initialize. Add a catch-all that returns 204 No Content for all notifications. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude Code sends Accept: text/event-stream per the MCP Streamable HTTP spec. The old :api_auth pipeline rejected this with 406. Fix: - New :mcp_auth pipeline that accepts both json and event-stream - MCP route moved to its own scope using :mcp_auth - respond/2 helper branches on Accept header: returns SSE (event: message\ndata:...) when client requests it, plain JSON otherwise Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
event-stream isn't in Phoenix's MIME registry so plug :accepts rejected SSE requests. The MCP controller handles content negotiation itself via the Accept header, so the pipeline doesn't need a MIME guard. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Mirror the LiveView behaviour: 🔥 → 🔥 etc. before storing. Body-absent update_item calls (status/color-only) are unaffected. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…fications Previously untested paths: - list_items_range (basic + status filter) - SSE response format when Accept: text/event-stream - notifications/initialized returning 204 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Mic button in the add-item area uses the Web Speech API on Android Chrome. Button is hidden on unsupported browsers via JS hook; phx-update="ignore" keeps LiveView from resetting its visibility on DOM patches. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Removes the toolbar select-all circle button, toggle_all event handler, .select-btn CSS block, and its single test. The per-item select circles and all toolbar actions are unaffected. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Replace text label with fisheye character ◉ and title="Goto Today" - Move button to first position in toolbar-left (before search) - Restyle to match search/sort buttons: neutral grey, bg-2, border-color - Narrow width (26px) to fit icon without excess padding - Fix MCP shortcode test to use shortcodes that exist in the emoji map Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…etch_item - ListItem.colors/0 and color_strings/0 derive from the Ecto.Enum field; all callers (LiveView guards, template loops, MCP schema) now use these - Emoji.convert moved into Lists.create_items/update_item — no entry point can forget it; removed 4 scattered call sites - fetch_item extracted to ElixdoWeb.Api.Helpers — shared by both API controllers - Today button: ◉ icon, toolbar-left, neutral style matching search/sort buttons - Placeholder text changed to "New task..." - Text entry box background set to black; font-size 20px desktop and mobile Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
get_today,list_items,list_items_range,add_item,update_item,arrow_item,search_itemsfetch_itemextracted to shared helper,selected_itemshelper in LiveView,@moduledocon domain modules,@moduledoc falseon web modulesTest plan
mix test— full suite passesclaude mcpintegration🤖 Generated with Claude Code