╭──────────╮ │← previous│ ╰──────────╯ ╭ changed ───────────────╮ │src/ui/widget/thread.zig│ ╰────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │2702 if (text.len == 0 and self.data.search == null) return; │ │2703 const selected = self.header().getSelectedIndex() orelse 0; │ │2704 const status: Status = if (selected < status_count) splitStatus(selected) else @fromBackingInt(@intCast(0)); │ │2646 - const route = listRoute(self.data.identity, status, self.data.label, "") orelse return; │ │2705 + var route = listRoute(self.data.identity, status, self.data.label, "") orelse return; │ │2706 + const assignee = assigneeFilter(self.data); │ │2707 + if (assignee.len != 0) route = route.withEncodedAssignee(assignee) orelse return; │ │2708 try self.session.navigate(route.withSearch(text) orelse return); │ │2709 + } │ │2710 + │ │2711 + // navigate to the issues assigned to the typed name or email, keeping │ │2712 + // the label, the search and the status list. an empty box clears the │ │2713 + // filter and does nothing on an unfiltered page. │ │2714 + fn submitAssignee(self: *This, typed: []const u8) !void { │ │2715 + const text = std.mem.trim(u8, typed, " \t"); │ │2716 + if (text.len == 0 and assigneeFilter(self.data).len == 0) return; │ │2717 + const selected = self.header().getSelectedIndex() orelse 0; │ │2718 + const status: Status = if (selected < status_count) splitStatus(selected) else @fromBackingInt(@intCast(0)); │ │2719 + var route = listRoute(self.data.identity, status, self.data.label, "") orelse return; │ │2720 + if (self.data.search) |search| route = route.withSearch(search) orelse return; │ │2721 + try self.session.navigate(route.withEncodedAssignee(try ui.urlEncodeRef(self.session.page_arena.allocator(), text)) orelse return);│ │2722 } │ │2723 │ │2724 // arrow keys move the label selection; up from the top row crosses to the │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯