╭ changed ───────────────╮ │src/ui/widget/thread.zig│ ╰────────────────────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭──────────╮ │← previous│ ╰──────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │2406 if (text.len == 0 and self.data.search == null) return; │ │2407 const selected = self.header().getSelectedIndex() orelse 0; │ │2408 const status: Status = if (selected < status_count) splitStatus(selected) else @enumFromInt(0);│ │2409 - const route = listRoute(self.data.identity, status, self.data.tag, "") orelse return; │ │2409 + const route = listRoute(self.data.identity, status, self.data.label, "") orelse return; │ │2410 try self.session.navigate(route.withSearch(text) orelse return); │ │2411 } │ │2412 │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────╮ │2413 - // arrow keys move the tag selection; up from the top row crosses to the │ │2413 + // arrow keys move the label selection; up from the top row crosses to the│ │2414 // header tabs. │ │2415 - fn tagsViewInput(self: *This, key: Key, root_focus: *Focus) void { │ │2416 - const tf = self.tagsView(); │ │2415 + fn labelsViewInput(self: *This, key: Key, root_focus: *Focus) void { │ │2416 + const tf = self.labelsView(); │ │2417 const cid = tf.focus.child_id orelse return; │ │2418 const cur = tf.indexOfFocusId(cid) orelse return; │ │2419 const count = tf.text_boxes.items.len; │ ╰────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────╮ │2584 │ │2585 // gather the inputs by name; the d<n> hunk inputs appear in chunk order│ │2586 var title: ?[]u8 = null; │ │2587 - var tags: ?[]u8 = null; │ │2587 + var labels: ?[]u8 = null; │ │2588 var hunks: std.ArrayList([]const u8) = .empty; │ │2589 defer { │ │2590 if (title) |t| allocator.free(t); │ ╰──────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────╮ │2591 - if (tags) |t| allocator.free(t); │ │2591 + if (labels) |t| allocator.free(t); │ │2592 for (hunks.items) |h| allocator.free(h);│ │2593 hunks.deinit(allocator); │ │2594 } │ ╰──────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────╮ │2598 errdefer allocator.free(text); │ │2599 if (std.mem.eql(u8, ti.options.name, "title")) { │ │2600 title = text; │ │2601 - } else if (std.mem.eql(u8, ti.options.name, "tags")) { │ │2602 - tags = text; │ │2601 + } else if (std.mem.eql(u8, ti.options.name, "labels")) {│ │2602 + labels = text; │ │2603 } else { │ │2604 try hunks.append(allocator, text); │ │2605 } │ ╰──────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │2617 inline else => |*repo| { │ │2618 var resolution: Event.Resolve = .{ │ │2619 .title = title, │ │2620 - .tags = tags, │ │2620 + .labels = labels, │ │2621 .hunks = hunks.items, │ │2622 }; │ │2623 if (comptime @hasField(Event.Resolve, "theirs")) resolution.theirs = self.data.theirs_picks;│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────╮ │2704 │ │2705 const form = self.threadForm() orelse return; │ │2706 const title_input = try formField(form, "title"); │ │2707 - const tags_input = try formField(form, "tags"); │ │2707 + const labels_input = try formField(form, "labels"); │ │2708 const description_input = try formField(form, "description");│ │2709 │ │2710 const title = try title_input.text(allocator); │ ╰───────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │2711 defer allocator.free(title); │ │2712 - const tags = try tags_input.text(allocator); │ │2713 - defer allocator.free(tags); │ │2712 + const labels = try labels_input.text(allocator); │ │2713 + defer allocator.free(labels); │ │2714 const description = try description_input.text(allocator); │ │2715 defer allocator.free(description); │ │2716 const target_branch = if (comptime supports_drafts) try (try formField(form, "target_branch")).text(allocator) else "";│ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │2717 defer if (comptime supports_drafts) allocator.free(target_branch); │ │2718 │ │2719 - if (!Event.fieldsValid(title, tags)) { │ │2720 - if (!evt.titleValid(title)) try self.rememberThreadFeedback(.required_title, title, tags, description, target_branch); │ │2719 + if (!Event.fieldsValid(title, labels)) { │ │2720 + if (!evt.titleValid(title)) try self.rememberThreadFeedback(.required_title, title, labels, description, target_branch);│ │2721 return; │ │2722 } │ │2723 │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │2728 .branch => try source.field().text(allocator), │ │2729 }; │ │2730 defer if (source_branch) |branch| allocator.free(branch); │ │2731 - const event_id_hex = Data.create(self.data, self.session, allocator, author, title, tags, description, target_branch, source_branch) catch |err| { │ │2731 + const event_id_hex = Data.create(self.data, self.session, allocator, author, title, labels, description, target_branch, source_branch) catch |err| {│ │2732 const failure = FeedbackFailure.fromError(err) orelse return err; │ │2733 - try self.rememberThreadFeedback(failure, title, tags, description, target_branch); │ │2733 + try self.rememberThreadFeedback(failure, title, labels, description, target_branch); │ │2734 return; │ │2735 }; │ │2736 title_input.clear(allocator); │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────╮ │next →│ ╰──────╯