╭──────────╮ │← previous│ ╰──────────╯ ╭ changed ─╮ │src/ui.zig│ ╰──────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1635 } │ │1636 return null; │ │1637 } │ │1685 - if (!params.only(&.{ .start, .label, .search })) return null; │ │1686 - return withEncodedFilters(repoThreadCommentsRoute(.patch, pair, patch_id, params.start() orelse return null), params.values.get(.label) orelse "", params.values.get(.search) orelse "");│ │1638 + if (!params.only(&.{ .start, .search })) return null; │ │1639 + return withEncodedSearch(repoThreadCommentsRoute(.patch, pair, patch_id, params.start() orelse return null), params.values.get(.search) orelse ""); │ │1640 } │ │1641 if (std.mem.startsWith(u8, tab, discuss_seg)) { │ │1642 const discussion_id = tab[discuss_seg.len..]; │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1666 if (std.mem.eql(u8, tail, "description")) return if (params.only(&.{})) repoThreadDescriptionRoute(.discuss, pair, discussion_id) else null; │ │1667 return null; │ │1668 } │ │1716 - if (!params.only(&.{ .start, .label, .search })) return null; │ │1717 - return withEncodedFilters(repoThreadCommentsRoute(.discuss, pair, discussion_id, params.start() orelse return null), params.values.get(.label) orelse "", params.values.get(.search) orelse "");│ │1669 + if (!params.only(&.{ .start, .search })) return null; │ │1670 + return withEncodedSearch(repoThreadCommentsRoute(.discuss, pair, discussion_id, params.start() orelse return null), params.values.get(.search) orelse ""); │ │1671 } │ │1672 if (std.mem.eql(u8, tab, "issues")) { │ │1673 // the word is a list view; a filter with neither is never emitted. │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1674 const word = params.scanTail(&segments) catch return null; │ │1722 - const label_value = params.values.get(.label) orelse ""; │ │1723 - const w = word orelse return if (params.only(&.{})) repoIssuesRoute(pair, .open, "", "") else null;│ │1675 + const w = word orelse return if (params.only(&.{})) repoIssuesRoute(pair, .open, "") else null; │ │1676 // the conflicts list windows by an issue id, not a number, so it │ │1677 // reads the start param raw │ │1678 if (std.mem.eql(u8, w, "conflicts")) { │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1679 if (!params.only(&.{.start})) return null; │ │1680 return repoIssuesConflictsRoute(pair, params.values.get(.start) orelse ""); │ │1681 } │ │1730 - if (!params.only(&.{ .label, .assignee, .search })) return null; │ │1682 + if (!params.only(&.{.search})) return null; │ │1683 const search_value = params.values.get(.search) orelse ""; │ │1732 - const assignee_value = params.values.get(.assignee) orelse ""; │ │1733 - if (std.meta.stringToEnum(evt.Issue.Status, w)) |status| return withEncodedAssignee(withEncodedSearch(repoIssuesRoute(pair, status, label_value, ""), search_value), assignee_value);│ │1734 - if (std.mem.eql(u8, w, "labels")) return withEncodedAssignee(withEncodedSearch(repoThreadLabelsRoute(.issue, pair, label_value), search_value), assignee_value); │ │1735 - if (std.mem.eql(u8, w, "new")) return if (label_value.len == 0 and assignee_value.len == 0 and search_value.len == 0) repoThreadNewRoute(.issue, pair) else null; │ │1684 + if (std.meta.stringToEnum(evt.Issue.Status, w)) |status| return withEncodedSearch(repoIssuesRoute(pair, status, ""), search_value); │ │1685 + if (std.mem.eql(u8, w, "labels")) return withEncodedSearch(repoThreadLabelsRoute(.issue, pair), search_value); │ │1686 + if (std.mem.eql(u8, w, "new")) return if (search_value.len == 0) repoThreadNewRoute(.issue, pair) else null; │ │1687 return null; │ │1688 } │ │1689 if (std.mem.eql(u8, tab, "patches")) { │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1690 const word = params.scanTail(&segments) catch return null; │ │1740 - const label_value = params.values.get(.label) orelse ""; │ │1741 - const view = word orelse return if (params.only(&.{})) repoPatchesRoute(pair, .open, "", "") else null;│ │1691 + const view = word orelse return if (params.only(&.{})) repoPatchesRoute(pair, .open, "") else null; │ │1692 if (std.mem.eql(u8, view, "conflicts")) { │ │1693 if (!params.only(&.{.start})) return null; │ │1694 return repoPatchesConflictsRoute(pair, params.values.get(.start) orelse ""); │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1695 } │ │1746 - if (!params.only(&.{ .label, .search })) return null; │ │1696 + if (!params.only(&.{.search})) return null; │ │1697 const search_value = params.values.get(.search) orelse ""; │ │1748 - if (std.meta.stringToEnum(evt.Patch.StatusKind, view)) |status| return withEncodedSearch(repoPatchesRoute(pair, status, label_value, ""), search_value);│ │1749 - if (std.mem.eql(u8, view, "labels")) return withEncodedSearch(repoThreadLabelsRoute(.patch, pair, label_value), search_value); │ │1750 - if (std.mem.eql(u8, view, "new")) return if (label_value.len == 0 and search_value.len == 0) repoThreadNewRoute(.patch, pair) else null; │ │1751 - if (std.mem.eql(u8, view, "drafts")) return if (label_value.len == 0 and search_value.len == 0) repoPatchesDraftsRoute(pair) else null; │ │1698 + if (std.meta.stringToEnum(evt.Patch.StatusKind, view)) |status| return withEncodedSearch(repoPatchesRoute(pair, status, ""), search_value); │ │1699 + if (std.mem.eql(u8, view, "labels")) return withEncodedSearch(repoThreadLabelsRoute(.patch, pair), search_value); │ │1700 + if (std.mem.eql(u8, view, "new")) return if (search_value.len == 0) repoThreadNewRoute(.patch, pair) else null; │ │1701 + if (std.mem.eql(u8, view, "drafts")) return if (search_value.len == 0) repoPatchesDraftsRoute(pair) else null; │ │1702 return null; │ │1703 } │ │1704 if (std.mem.eql(u8, tab, "discussions")) { │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1705 const word = params.scanTail(&segments) catch return null; │ │1756 - const label_value = params.values.get(.label) orelse ""; │ │1757 - const view = word orelse return if (params.only(&.{})) repoDiscussionsRoute(pair, "", "") else null; │ │1758 - if (!params.only(&.{ .label, .search })) return null; │ │1706 + const view = word orelse return if (params.only(&.{})) repoDiscussionsRoute(pair, "") else null; │ │1707 + if (!params.only(&.{.search})) return null; │ │1708 const search_value = params.values.get(.search) orelse ""; │ │1760 - if (std.mem.eql(u8, view, "recent")) return withEncodedSearch(repoDiscussionsRoute(pair, label_value, ""), search_value); │ │1761 - if (std.mem.eql(u8, view, "labels")) return withEncodedSearch(repoThreadLabelsRoute(.discuss, pair, label_value), search_value); │ │1762 - if (std.mem.eql(u8, view, "new")) return if (label_value.len == 0 and search_value.len == 0) repoThreadNewRoute(.discuss, pair) else null;│ │1709 + if (std.mem.eql(u8, view, "recent")) return withEncodedSearch(repoDiscussionsRoute(pair, ""), search_value); │ │1710 + if (std.mem.eql(u8, view, "labels")) return withEncodedSearch(repoThreadLabelsRoute(.discuss, pair), search_value); │ │1711 + if (std.mem.eql(u8, view, "new")) return if (search_value.len == 0) repoThreadNewRoute(.discuss, pair) else null; │ │1712 return null; │ │1713 } │ │1714 if (std.mem.eql(u8, tab, "undo")) { │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1835 a_d.start == b.repo_diff.start and std.mem.eql(u8, a_d.path.slice(), b.repo_diff.path.slice()), │ │1836 .repo_refs => |a_r| std.mem.eql(u8, a_r.name.slice(), b.repo_refs.name.slice()) and a_r.kind == b.repo_refs.kind and std.mem.eql(u8, a_r.from.slice(), b.repo_refs.from.slice()) and std.mem.eql(u8, a_r.search.slice(), b.repo_refs.search.slice()),│ │1837 .repo_issues => |a_i| std.mem.eql(u8, a_i.name.slice(), b.repo_issues.name.slice()) and │ │1889 - std.mem.eql(u8, a_i.label.slice(), b.repo_issues.label.slice()) and │ │1890 - std.mem.eql(u8, a_i.assignee.slice(), b.repo_issues.assignee.slice()) and │ │1838 std.mem.eql(u8, a_i.search.slice(), b.repo_issues.search.slice()) and │ │1839 std.mem.eql(u8, a_i.selected.slice(), b.repo_issues.selected.slice()) and │ │1840 std.mem.eql(u8, a_i.theirs.slice(), b.repo_issues.theirs.slice()) and │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1842 a_i.comments_start == b.repo_issues.comments_start and │ │1843 std.mem.eql(u8, a_i.comment.slice(), b.repo_issues.comment.slice()), │ │1844 .repo_discussions => |a_t| std.mem.eql(u8, a_t.name.slice(), b.repo_discussions.name.slice()) and│ │1898 - std.mem.eql(u8, a_t.label.slice(), b.repo_discussions.label.slice()) and │ │1845 std.mem.eql(u8, a_t.search.slice(), b.repo_discussions.search.slice()) and │ │1846 std.mem.eql(u8, a_t.selected.slice(), b.repo_discussions.selected.slice()) and │ │1847 a_t.view == b.repo_discussions.view and │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1848 a_t.comments_start == b.repo_discussions.comments_start and │ │1849 std.mem.eql(u8, a_t.comment.slice(), b.repo_discussions.comment.slice()), │ │1850 .repo_patches => |a_p| std.mem.eql(u8, a_p.name.slice(), b.repo_patches.name.slice()) and│ │1905 - std.mem.eql(u8, a_p.label.slice(), b.repo_patches.label.slice()) and │ │1851 std.mem.eql(u8, a_p.search.slice(), b.repo_patches.search.slice()) and │ │1852 std.mem.eql(u8, a_p.selected.slice(), b.repo_patches.selected.slice()) and │ │1853 std.mem.eql(u8, a_p.theirs.slice(), b.repo_patches.theirs.slice()) and │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────╮ │next →│ ╰──────╯