diff --git a/app/assets/stylesheets/card-columns.css b/app/assets/stylesheets/card-columns.css index 569ee3fd8..1f1c7dd68 100644 --- a/app/assets/stylesheets/card-columns.css +++ b/app/assets/stylesheets/card-columns.css @@ -92,29 +92,25 @@ display: none; } - .card__background { - .card:has(& img:not([src=""])) { - .card__content, - .card__meta, - .workflow-stage:not(.workflow-stage--current) { - opacity: 0; - transition: opacity 0.2s ease-in-out; + .card:has(.card__background img:not([src=""])) { + .card__content, + .card__meta, + .workflow-stage:not(.workflow-stage--current) { + opacity: 0; + transition: opacity 0.2s ease-in-out; - @media (any-hover: hover) { - .card:hover & { + @media (any-hover: hover) { + .card:hover & { opacity: 1; } - } } } + } - @media (any-hover: hover) { - .card:hover & { - img:not([src=""]) { - filter: blur(3px) brightness(1.2); - opacity: 0.2; - } - } + @media (any-hover: hover) { + .card:has(.card__background img:not([src=""])):hover .card__background img:not([src=""]) { + filter: blur(3px) brightness(1.2); + opacity: 0.2; } } diff --git a/app/assets/stylesheets/cards.css b/app/assets/stylesheets/cards.css index 1f2c4b84b..1efff8c97 100644 --- a/app/assets/stylesheets/cards.css +++ b/app/assets/stylesheets/cards.css @@ -308,11 +308,11 @@ position: absolute; rotate: 5deg; transform-origin: top right; + } - .card:has(&), - .card-perma:has(&) { - --card-color: var(--color-card-complete) !important; - } + .card:has(.card__closed), + .card-perma:has(.card__closed) { + --card-color: var(--color-card-complete) !important; } .card__closed-title { diff --git a/app/assets/stylesheets/filters.css b/app/assets/stylesheets/filters.css index 5b621bbf9..298c2744b 100644 --- a/app/assets/stylesheets/filters.css +++ b/app/assets/stylesheets/filters.css @@ -3,11 +3,14 @@ position: relative; view-transition-name: "filters"; z-index: var(--z-popup); + } - #header:has(&) { - position: relative; - z-index: var(--z-popup); - } + #header:has(.filters) { + position: relative; + z-index: var(--z-popup); + } + + .filters { .btn { --btn-border-color: var(--color-ink-medium); @@ -114,5 +117,17 @@ display: none; } } + + .filters:not(.filters--expanded) { + .quick-filter:not([data-filter-show=true]) { + display: none; + } + } + + .filters.filters--expanded { + .quick-filter { + display: block; + } + } } diff --git a/app/assets/stylesheets/header.css b/app/assets/stylesheets/header.css index 2d5bc40a9..d8b5a2a43 100644 --- a/app/assets/stylesheets/header.css +++ b/app/assets/stylesheets/header.css @@ -14,7 +14,6 @@ "actions-start title actions-end"; max-inline-size: 100dvw; padding: calc(var(--block-space-half) + env(safe-area-inset-top)) var(--main-padding); - view-transition-name: header; /* Change the grid size depending on how many buttons are present */ &:has(.header__actions > *:nth-child(1)) { --header-button-count: 1; } diff --git a/app/assets/stylesheets/inputs.css b/app/assets/stylesheets/inputs.css index 1a9afd70a..e0ca57536 100644 --- a/app/assets/stylesheets/inputs.css +++ b/app/assets/stylesheets/inputs.css @@ -60,13 +60,11 @@ cursor: pointer; opacity: 0; } + } - &:focus, - &:focus-visible { - .input--file:has(&) { - outline: 0.15rem solid var(--color-selected-dark); - } - } + &:has(input[type="file"]:focus), + &:has(input[type="file"]:focus-visible) { + outline: 0.15rem solid var(--color-selected-dark); } &:is(.avatar) { diff --git a/app/assets/stylesheets/popup.css b/app/assets/stylesheets/popup.css index e9c3bcbaf..186bfa53e 100644 --- a/app/assets/stylesheets/popup.css +++ b/app/assets/stylesheets/popup.css @@ -31,16 +31,16 @@ --panel-padding: var(--block-space) var(--block-space) 0 var(--block-space); } - #header:has(&) { - position: relative; - z-index: var(--z-nav); - } - .card & { inline-size: 260px; } } + #header:has(.popup) { + position: relative; + z-index: var(--z-nav); + } + .popup__footer { background-color: var(--color-canvas); border-block-start: 1px solid var(--color-ink-lighter); diff --git a/app/assets/stylesheets/rich-text-content.css b/app/assets/stylesheets/rich-text-content.css index b5ca20116..f1e0fc6d4 100644 --- a/app/assets/stylesheets/rich-text-content.css +++ b/app/assets/stylesheets/rich-text-content.css @@ -50,11 +50,12 @@ margin-inline: auto; max-block-size: 32rem; object-fit: contain; + } - /* Links should hug media contained within */ - a:has(&) { - display: inline-block; - } + /* Links should hug media contained within */ + a:has(img), + a:has(video) { + display: inline-block; } /* Avoid extra space due to empty paragraphs */ diff --git a/app/controllers/cards_controller.rb b/app/controllers/cards_controller.rb index 8c7af5074..7296e34d9 100644 --- a/app/controllers/cards_controller.rb +++ b/app/controllers/cards_controller.rb @@ -8,7 +8,7 @@ class CardsController < ApplicationController enable_collection_filtering only: :index - PAGE_SIZE = 50 + PAGE_SIZE = 25 def index @considering = page_and_filter_for @filter.with(engagement_status: "considering"), per_page: PAGE_SIZE @@ -17,7 +17,7 @@ class CardsController < ApplicationController @closed = page_and_filter_for_closed_cards @cache_key = [ @considering, @on_deck, @doing, @closed ].collect { it.page.records }.including([ Workflow.all ]) - fresh_when etag: @cache_key + fresh_when etag: [ @cache_key, @user_filtering ] end def create diff --git a/app/controllers/concerns/filter_scoped.rb b/app/controllers/concerns/filter_scoped.rb index 6f2dd87de..f191939b9 100644 --- a/app/controllers/concerns/filter_scoped.rb +++ b/app/controllers/concerns/filter_scoped.rb @@ -24,7 +24,11 @@ module FilterScoped end def set_user_filtering - @user_filtering = User::Filtering.new(Current.user, @filter, expanded: params[:expand_all]) + @user_filtering = User::Filtering.new(Current.user, @filter, expanded: expanded_param) + end + + def expanded_param + ActiveRecord::Type::Boolean.new.cast(params[:expand_all]) end def enable_collection_filtering diff --git a/app/controllers/my/menus_controller.rb b/app/controllers/my/menus_controller.rb new file mode 100644 index 000000000..a81705df3 --- /dev/null +++ b/app/controllers/my/menus_controller.rb @@ -0,0 +1,7 @@ +class My::MenusController < ApplicationController + include FilterScoped + + def show + fresh_when @user_filtering + end +end diff --git a/app/helpers/time_helper.rb b/app/helpers/time_helper.rb index 99ece604c..53fa055b5 100644 --- a/app/helpers/time_helper.rb +++ b/app/helpers/time_helper.rb @@ -1,6 +1,6 @@ module TimeHelper def local_datetime_tag(datetime, style: :time, **attributes) # Render empty space to ensure it takes height until the local time is loaded via JS - tag.time " ".html_safe, **attributes, datetime: datetime.iso8601, data: { local_time_target: style, action: "turbo:morph-element->local-time#refreshTarget" } + tag.time " ".html_safe, **attributes, datetime: datetime.to_i, data: { local_time_target: style, action: "turbo:morph-element->local-time#refreshTarget" } end end diff --git a/app/javascript/controllers/form_controller.js b/app/javascript/controllers/form_controller.js index 64fc6fad6..eaf246fea 100644 --- a/app/javascript/controllers/form_controller.js +++ b/app/javascript/controllers/form_controller.js @@ -1,12 +1,30 @@ import { Controller } from "@hotwired/stimulus" +import { debounce } from "helpers/timing_helpers"; export default class extends Controller { static targets = [ "cancel" ] + static values = { + debounceTimeout: { type: Number, default: 300 } + } + + initialize() { + this.debouncedSubmit = debounce(this.debouncedSubmit.bind(this), this.debounceTimeoutValue) + } + submit() { this.element.requestSubmit() } + debouncedSubmit(event) { + this.submit(event) + } + + submitToTopTarget(event) { + this.element.setAttribute("data-turbo-frame", "_top") + this.submit() + } + cancel() { this.cancelTarget?.click() } diff --git a/app/javascript/controllers/local_time_controller.js b/app/javascript/controllers/local_time_controller.js index 69693a107..d38420332 100644 --- a/app/javascript/controllers/local_time_controller.js +++ b/app/javascript/controllers/local_time_controller.js @@ -1,5 +1,5 @@ import { Controller } from "@hotwired/stimulus" -import { differenceInDays } from "helpers/date_helpers" +import { differenceInDays, secondsToDate } from "helpers/date_helpers" const DEFAULT_LOCALE = "en-US" @@ -89,7 +89,7 @@ export default class extends Controller { } #formatTime(formatter, target) { - const dt = new Date(target.getAttribute("datetime")) + const dt = secondsToDate(parseInt(target.getAttribute("datetime"))) target.innerHTML = formatter.format(dt) target.title = this.datetimeFormatter.format(dt) } diff --git a/app/javascript/controllers/toggle_enable_controller.js b/app/javascript/controllers/toggle_enable_controller.js new file mode 100644 index 000000000..b65ea57d4 --- /dev/null +++ b/app/javascript/controllers/toggle_enable_controller.js @@ -0,0 +1,11 @@ +import { Controller } from "@hotwired/stimulus" + +export default class extends Controller { + static targets = [ "element" ] + + toggle() { + this.elementTargets.forEach((element) => { + element.toggleAttribute("disabled") + }) + } +} diff --git a/app/javascript/helpers/date_helpers.js b/app/javascript/helpers/date_helpers.js index 529b2968e..b8d9855f4 100644 --- a/app/javascript/helpers/date_helpers.js +++ b/app/javascript/helpers/date_helpers.js @@ -9,3 +9,7 @@ export function signedDifferenceInDays(fromDate, toDate) { export function beginningOfDay(date) { return new Date(date.getFullYear(), date.getMonth(), date.getDate()) } + +export function secondsToDate(seconds) { + return new Date(seconds * 1000) +} diff --git a/app/models/event/summarizer.rb b/app/models/event/summarizer.rb index 5d5470d55..c46ff2c08 100644 --- a/app/models/event/summarizer.rb +++ b/app/models/event/summarizer.rb @@ -4,7 +4,7 @@ class Event::Summarizer attr_reader :events - LLM_MODEL = "chatgpt-4o-latest" + LLM_MODEL = "gpt-5-chat-latest" PROMPT = <<~PROMPT Help me make sense of the week’s activity in a news style format with bold headlines and short summaries. diff --git a/app/models/filter.rb b/app/models/filter.rb index 4748e54a4..6bef679e5 100644 --- a/app/models/filter.rb +++ b/app/models/filter.rb @@ -34,7 +34,7 @@ class Filter < ApplicationRecord result = result.closed_at_window(closure_window) if closure_window result = result.closed_by(closers) if closers.present? result = terms.reduce(result) do |result, term| - result.similar_to(term) + result.mentioning(term) end result diff --git a/app/models/filter/fields.rb b/app/models/filter/fields.rb index a261a23f4..af0966d2a 100644 --- a/app/models/filter/fields.rb +++ b/app/models/filter/fields.rb @@ -47,6 +47,10 @@ module Filter::Fields def terms Array(super) end + + def terms=(value) + super(Array(value).filter(&:present?)) + end end def with(**fields) diff --git a/app/models/user/filtering.rb b/app/models/user/filtering.rb index 1781e356d..f8186ed0e 100644 --- a/app/models/user/filtering.rb +++ b/app/models/user/filtering.rb @@ -47,28 +47,28 @@ class User::Filtering end def show_indexed_by? - expanded? || !filter.indexed_by.all? + !filter.indexed_by.all? end def show_sorted_by? - expanded? || !filter.sorted_by.latest? + !filter.sorted_by.latest? end def show_tags? return unless Tag.any? - expanded? || filter.tags.any? + filter.tags.any? end def show_assignees? - expanded? || filter.assignees.any? + filter.assignees.any? end def show_creators? - expanded? || filter.creators.any? + filter.creators.any? end def show_closers? - expanded? || filter.closers.any? + filter.closers.any? end def enable_collection_filtering(&block) diff --git a/app/views/cards/index.html.erb b/app/views/cards/index.html.erb index 34b6e01d0..59128e22e 100644 --- a/app/views/cards/index.html.erb +++ b/app/views/cards/index.html.erb @@ -1,4 +1,5 @@ <% @page_title = @user_filtering.selected_collections_label %> +<% turbo_exempts_page_from_cache %> <%= render "filters/broadcasts", filter: @filter %> diff --git a/app/views/cards/index/_add_card_button.html.erb b/app/views/cards/index/_add_card_button.html.erb index 1d5578caf..196af6bab 100644 --- a/app/views/cards/index/_add_card_button.html.erb +++ b/app/views/cards/index/_add_card_button.html.erb @@ -1,10 +1,10 @@ <% if collection = user_filtering.single_collection %> -
- <%= button_to collection_cards_path(collection), method: :post, class: "btn btn--link" do %> +
+ <%= button_to collection_cards_path(collection), method: :post, class: "btn", form: { data: { turbo_frame: "_top" } } do %> <%= icon_tag "add" %> Add a card <% end %> - +
diff --git a/app/views/cards/index/_collections_filter.html.erb b/app/views/cards/index/_collections_filter.html.erb deleted file mode 100644 index 3b3b6580f..000000000 --- a/app/views/cards/index/_collections_filter.html.erb +++ /dev/null @@ -1,52 +0,0 @@ -<%= form_with url: cards_path, method: :get, class: "display-contents", - data: { controller: "form" } do |form| %> - <% filter.as_params.except(:collection_ids).each do |key, value| %> - <%= filter_hidden_field_tag key, value %> - <% end %> - - <% if Current.user.collections.one? %> - <%= link_to cards_path(filter.as_params.except(:collection_ids)), class: "popup__group", id: "filter-collection-init", data: { filter_target: "item", navigable_list_target: "item" } do %> - <%= tag.div class: "popup__item btn" do %> - <%= Current.user.collections.first.name %> - GO TO - <% end %> - <% end %> - <% elsif Current.user.collections.many? %> - <%= link_to cards_path(filter.as_params.except(:collection_ids)), class: "popup__group", id: "filter-collections-all", data: { filter_target: "item", navigable_list_target: "item" } do %> - - <%= tag.div class: "popup__item btn" do %> - All collections - GO TO - <% end %> - <% end %> - - <% Current.user.collections.ordered_by_recently_accessed.each do |collection| %> - - <% end %> - <% end %> -<% end %> diff --git a/app/views/cards/index/_columns.html.erb b/app/views/cards/index/_columns.html.erb index a008d1513..9104145fc 100644 --- a/app/views/cards/index/_columns.html.erb +++ b/app/views/cards/index/_columns.html.erb @@ -1,11 +1,13 @@ <% cache @cache_key do %> -
- <% unless user_filtering.only_closed? %> - <%= render "cards/index/engagement/on_deck", user_filtering: user_filtering, **on_deck.to_h %> - <%= render "cards/index/engagement/considering", user_filtering: user_filtering, **considering.to_h %> - <%= render "cards/index/engagement/doing", user_filtering: user_filtering, **doing.to_h %> - <% end %> -
+ <%= turbo_frame_tag :card_columns do %> +
+ <% unless user_filtering.only_closed? %> + <%= render "cards/index/engagement/on_deck", user_filtering: user_filtering, **on_deck.to_h %> + <%= render "cards/index/engagement/considering", user_filtering: user_filtering, **considering.to_h %> + <%= render "cards/index/engagement/doing", user_filtering: user_filtering, **doing.to_h %> + <% end %> +
- <%= render "cards/index/engagement/closed", user_filtering: user_filtering, **closed.to_h %> + <%= render "cards/index/engagement/closed", user_filtering: user_filtering, **closed.to_h %> + <% end %> <% end %> diff --git a/app/views/cards/show/_collections.html.erb b/app/views/cards/show/_collections.html.erb deleted file mode 100644 index 41aba2c1c..000000000 --- a/app/views/cards/show/_collections.html.erb +++ /dev/null @@ -1,51 +0,0 @@ - -<%= form_with url: cards_path, method: :get, class: "display-contents", - data: { controller: "form" } do |form| %> - <% if Current.user.collections.one? %> - <%= link_to cards_path, class: "popup__group", data: { filter_target: "item", navigable_list_target: "item" } do %> - <%= tag.div class: "popup__item btn" do %> - <%= Current.user.collections.first.name %> - GO TO - <% end %> - <% end %> - <% elsif Current.user.collections.many? %> -
  • - <%= link_to cards_path, class: "popup__group", data: { filter_target: "item", navigable_list_target: "item" } do %> - - <%= tag.div class: "popup__item btn" do %> - All collections - GO TO - <% end %> - <% end %> -
  • - - <% Current.user.collections.ordered_by_recently_accessed.each do |collection| %> - - <% end %> - <% end %> -<% end %> diff --git a/app/views/filters/_menu.html.erb b/app/views/filters/_menu.html.erb index ec8920940..87ee55f10 100644 --- a/app/views/filters/_menu.html.erb +++ b/app/views/filters/_menu.html.erb @@ -1,43 +1,13 @@ -<% cache user_filtering do %> - diff --git a/app/views/filters/_settings.html.erb b/app/views/filters/_settings.html.erb index a8e875c3e..6b2278817 100644 --- a/app/views/filters/_settings.html.erb +++ b/app/views/filters/_settings.html.erb @@ -1,17 +1,13 @@ <% cache user_filtering do %> - + <% end %> <% end %> diff --git a/app/views/filters/menu/_collections.html.erb b/app/views/filters/menu/_collections.html.erb index 0375ff705..8a3e0402a 100644 --- a/app/views/filters/menu/_collections.html.erb +++ b/app/views/filters/menu/_collections.html.erb @@ -1,7 +1,7 @@ -<%= form_with url: user_filtering.self_filter_path, method: :get, class: "display-contents", +<% # Using method: :get inside Turbo frame triggers some special Turbo handling where the script_name is lost %> +<%= form_with url: user_filtering.self_filter_path(script_name: Account.sole.slug), method: :get, class: "display-contents", data: { controller: "form" } do |form| %> <% if user_filtering.collections.any? %> - <% end %> -
    <% end %> diff --git a/app/views/filters/settings/_closers.html.erb b/app/views/filters/settings/_closers.html.erb index fb8d723b2..d52ce7e24 100644 --- a/app/views/filters/settings/_closers.html.erb +++ b/app/views/filters/settings/_closers.html.erb @@ -1,8 +1,7 @@ <% filter = user_filtering.filter %> -<% if user_filtering.show_closers? %> -
    +<%= tag.div class: "quick-filter position-relative", + data: { controller: "dialog", action: "keydown.esc->dialog#close click@document->dialog#closeOnClickOutside", filter_show: user_filtering.show_closers? } do %>
    <% end %> diff --git a/app/views/filters/settings/_controls.html.erb b/app/views/filters/settings/_controls.html.erb index 0e1d5f096..755ad1e18 100644 --- a/app/views/filters/settings/_controls.html.erb +++ b/app/views/filters/settings/_controls.html.erb @@ -1,21 +1,6 @@ -<% filter = user_filtering.filter %> - -<% if user_filtering.any? %> - <% if filter.persisted? %> - <%= button_to filter_path(filter), method: :delete, class: "btn txt-x-small btn--reversed", form_class: "inline" do %> - <%= icon_tag "bookmark-outline" %> - Remove saved filter - <% end %> - <% else %> - <% filter_params = filter.as_params.transform_values { |v| v.respond_to?(:to_str) ? v.to_str : v } %> - <%= button_to filters_path, method: :post, params: filter_params, class: "btn txt-x-small", form_class: "inline" do %> - <%= icon_tag "bookmark-outline" %> - Save filter - <% end %> - <% end %> - - <%= link_to cards_path(filter.as_params.except(:assignee_ids, :assignment_status, :card_ids, :creator_ids, :closer_ids, :stage_ids, :tag_ids, :terms, :indexed_by, :sorted_by, :creation, :closure)), class: "btn btn--remove txt-x-small" do %> - <%= icon_tag "close" %> - Clear all - <% end %> -<% end %> +<%= render "filters/settings/sorted_by", user_filtering: user_filtering %> +<%= render "filters/settings/indexed_by", user_filtering: user_filtering %> +<%= render "filters/settings/tags", user_filtering: user_filtering %> +<%= render "filters/settings/assignees", user_filtering: user_filtering %> +<%= render "filters/settings/creators", user_filtering: user_filtering %> +<%= render "filters/settings/closers", user_filtering: user_filtering %> diff --git a/app/views/filters/settings/_creators.html.erb b/app/views/filters/settings/_creators.html.erb index 6546ffdf1..7e7b0867e 100644 --- a/app/views/filters/settings/_creators.html.erb +++ b/app/views/filters/settings/_creators.html.erb @@ -1,8 +1,7 @@ <% filter = user_filtering.filter %> -<% if user_filtering.show_creators? %> -
    +<%= tag.div class: "quick-filter position-relative", + data: { controller: "dialog", action: "keydown.esc->dialog#close click@document->dialog#closeOnClickOutside", filter_show: user_filtering.show_creators? } do %>
    <% end %> diff --git a/app/views/filters/settings/_indexed_by.html.erb b/app/views/filters/settings/_indexed_by.html.erb index 085e85fca..1bb2ea81d 100644 --- a/app/views/filters/settings/_indexed_by.html.erb +++ b/app/views/filters/settings/_indexed_by.html.erb @@ -1,7 +1,7 @@ <% filter = user_filtering.filter %> -<% if user_filtering.show_indexed_by? %> -
    " data-controller="dialog" data-action="keydown.esc->dialog#close click@document->dialog#closeOnClickOutside"> +<%= tag.div class: class_names("quick-filter position-relative", "default-value": filter.indexed_by.all?), + data: { controller: "dialog", action: "keydown.esc->dialog#close click@document->dialog#closeOnClickOutside", filter_show: user_filtering.show_indexed_by? } do %>
    <% end %> diff --git a/app/views/filters/settings/_manage.html.erb b/app/views/filters/settings/_manage.html.erb new file mode 100644 index 000000000..0e1d5f096 --- /dev/null +++ b/app/views/filters/settings/_manage.html.erb @@ -0,0 +1,21 @@ +<% filter = user_filtering.filter %> + +<% if user_filtering.any? %> + <% if filter.persisted? %> + <%= button_to filter_path(filter), method: :delete, class: "btn txt-x-small btn--reversed", form_class: "inline" do %> + <%= icon_tag "bookmark-outline" %> + Remove saved filter + <% end %> + <% else %> + <% filter_params = filter.as_params.transform_values { |v| v.respond_to?(:to_str) ? v.to_str : v } %> + <%= button_to filters_path, method: :post, params: filter_params, class: "btn txt-x-small", form_class: "inline" do %> + <%= icon_tag "bookmark-outline" %> + Save filter + <% end %> + <% end %> + + <%= link_to cards_path(filter.as_params.except(:assignee_ids, :assignment_status, :card_ids, :creator_ids, :closer_ids, :stage_ids, :tag_ids, :terms, :indexed_by, :sorted_by, :creation, :closure)), class: "btn btn--remove txt-x-small" do %> + <%= icon_tag "close" %> + Clear all + <% end %> +<% end %> diff --git a/app/views/filters/settings/_sorted_by.html.erb b/app/views/filters/settings/_sorted_by.html.erb index ccd7ef853..d344028ae 100644 --- a/app/views/filters/settings/_sorted_by.html.erb +++ b/app/views/filters/settings/_sorted_by.html.erb @@ -1,7 +1,7 @@ <% filter = user_filtering.filter %> -<% if user_filtering.show_sorted_by? %> -
    " data-controller="dialog" data-action="keydown.esc->dialog#close click@document->dialog#closeOnClickOutside"> +<%= tag.div class: class_names("quick-filter position-relative", "default-value": filter.sorted_by.latest?), + data: { controller: "dialog", action: "keydown.esc->dialog#close click@document->dialog#closeOnClickOutside", filter_show: user_filtering.show_sorted_by? } do %>
    <% end %> \ No newline at end of file diff --git a/app/views/filters/settings/_tags.html.erb b/app/views/filters/settings/_tags.html.erb index d5e5c0a54..5953cab57 100644 --- a/app/views/filters/settings/_tags.html.erb +++ b/app/views/filters/settings/_tags.html.erb @@ -1,7 +1,7 @@ <% filter = user_filtering.filter %> -<% if user_filtering.show_tags? %> -
    +<%= tag.div class: "quick-filter position-relative", + data: { controller: "dialog", action: "keydown.esc->dialog#close click@document->dialog#closeOnClickOutside", filter_show: user_filtering.show_tags? } do %>
    <% end %> diff --git a/app/views/filters/settings/_terms.html.erb b/app/views/filters/settings/_terms.html.erb index 9693ce23f..d9f6c448c 100644 --- a/app/views/filters/settings/_terms.html.erb +++ b/app/views/filters/settings/_terms.html.erb @@ -1,5 +1,5 @@ <% filter = user_filtering.filter %> -<%= form_with url: cards_path, method: :get, class: "", data: { controller: "form" } do |form| %> +<%= form_with url: cards_path, method: :get, class: "", data: { controller: "form", turbo_frame: "card_columns", action: "input->form#debouncedSubmit" } do |form| %> <% filter.as_params.except(:terms).each do |key, value| %> <%= filter_hidden_field_tag key, value %> <% end %> @@ -12,8 +12,8 @@ <%= hidden_field_tag :expand_all, user_filtering.expanded? %> <% end %> - <%= form.text_field "terms[]", placeholder: "Filter these cards…", class: "input txt-x-small filter__terms", - autofocus: false, autocomplete: :off, autocorrect: "off", data: { "1p-ignore": "true" } %> + <%= form.text_field "terms[]", placeholder: "Filter these cards…", class: "input txt-x-small filter__terms", + autofocus: false, autocomplete: :off, autocorrect: "off", data: { "1p-ignore": "true", action: "keydown.enter->form#submitToTopTarget" } %> <% end %> <% if filter.terms.present? %> diff --git a/app/views/filters/settings/_time_window.html.erb b/app/views/filters/settings/_time_window.html.erb index 20590bd40..89f382a68 100644 --- a/app/views/filters/settings/_time_window.html.erb +++ b/app/views/filters/settings/_time_window.html.erb @@ -1,6 +1,6 @@ <% filter = user_filtering.filter %> -<% if filter.public_send("#{name}_window").present? %> -
    +<%= tag.div class: "quick-filter position-relative", + data: { controller: "dialog", action: "keydown.esc->dialog#close click@document->dialog#closeOnClickOutside", filter_show: filter.public_send("#{name}_window").present? } do %>
    <% end %> diff --git a/app/views/filters/settings/_toggle.html.erb b/app/views/filters/settings/_toggle.html.erb index d46b6fa96..a731373fa 100644 --- a/app/views/filters/settings/_toggle.html.erb +++ b/app/views/filters/settings/_toggle.html.erb @@ -1,13 +1,11 @@ <% filter = user_filtering.filter %> <% if user_filtering.expanded? %> - <%= link_to cards_path(filter.as_params), class: "btn txt-x-small btn--reversed", aria: { selected: true } do %> + <% else %> - <%= link_to cards_path(filter.as_params.merge(expand_all: true)), class: "btn txt-x-small" do %> + <% end %> diff --git a/app/views/my/menus/show.html.erb b/app/views/my/menus/show.html.erb new file mode 100644 index 000000000..05a50c290 --- /dev/null +++ b/app/views/my/menus/show.html.erb @@ -0,0 +1,31 @@ +<%= turbo_frame_tag "my_menu", target: "_top" do %> +
    + <%= text_field_tag :search, nil, + type: "search", + role: "combobox", + placeholder: "Filter…", + class: "input input--transparent txt-small", + autofocus: true, + autocorrect: "off", + autocomplete: "off", + aria: { activedescendant: "" }, + data: { + "1p-ignore": "true", + filter_target: "input", + navigable_list_target: "input", + action: "input->filter#filter" } %> + +
    + + <%= render "filters/menu/hotkeys" %> + <%= render "filters/menu/custom", user_filtering: @user_filtering %> + <%= render "filters/menu/collections", user_filtering: @user_filtering %> + <%= render "filters/menu/tags", user_filtering: @user_filtering %> + <%= render "filters/menu/users", user_filtering: @user_filtering %> + <%= render "filters/menu/places", user_filtering: @user_filtering %> + + <%= render "filters/menu/shortcut_notice" %> +<% end %> diff --git a/config/routes.rb b/config/routes.rb index 147027b82..505bcf240 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -124,6 +124,7 @@ Rails.application.routes.draw do namespace :my do resources :pins resource :timezone + resource :menu end namespace :prompts do diff --git a/test/vcr_cassettes/period_highlight_test-test_don_t_generate_highlights_for_existing_periods.yml b/test/vcr_cassettes/period_highlight_test-test_don_t_generate_highlights_for_existing_periods.yml index e67294091..d20c7ce64 100644 --- a/test/vcr_cassettes/period_highlight_test-test_don_t_generate_highlights_for_existing_periods.yml +++ b/test/vcr_cassettes/period_highlight_test-test_don_t_generate_highlights_for_existing_periods.yml @@ -1729,7 +1729,7 @@ http_interactions: body: encoding: UTF-8 base64_string: | - eyJtb2RlbCI6ImNoYXRncHQtNG8tbGF0ZXN0IiwibWVzc2FnZXMiOlt7InJv + eyJtb2RlbCI6ImdwdC01LWNoYXQtbGF0ZXN0IiwibWVzc2FnZXMiOlt7InJv bGUiOiJkZXZlbG9wZXIiLCJjb250ZW50IjoiSGVscCBtZSBtYWtlIHNlbnNl IG9mIHRoZSB3ZWVr4oCZcyBhY3Rpdml0eSBpbiBhIG5ld3Mgc3R5bGUgZm9y bWF0IHdpdGggYm9sZCBoZWFkbGluZXMgYW5kIHNob3J0IHN1bW1hcmllcy5c @@ -1859,44 +1859,32 @@ http_interactions: ZWF0ZWQgYnk6IERhdmlkfVxuKiBDcmVhdGVkIGF0OiA8VElNRT59XG4qIFBh dGg6IC83MzU0NjQ3ODUvY2FyZHMvOTc2OTA3MjM0I2NvbW1lbnRfODI3NDUw Njg0XG5FTkQgT0YgQ09NTUVOVCA4Mjc0NTA2ODRcblxuRU5EIE9GIEVWRU5U - IDY1NDQ3NDk3M1xuXG5cbkJFR0lOIE9GIEVWRU5UIDY4NTg4OTI5M1xuIyMg - RXZlbnQgY2FyZF9hc3NpZ25lZCAoQ2FyZCA2MTMzMjUzMzQpKVxuXG4qIENy - ZWF0ZWQgYXQ6IDxUSU1FPlxuKiBDcmVhdGVkIGJ5OiBEYXZpZFxuXG5CRUdJ - TiBPRiBDQVJEIDYxMzMyNTMzNFxuXG4qKlRpdGxlOioqIFRoZSBsb2dvIGlz - bid0IGJpZyBlbm91Z2hcbioqRGVzY3JpcHRpb246KipcblxuXG5cbiMjIyMg - TWV0YWRhdGFcblxuKiBJZDogNjEzMzI1MzM0XG4qIENyZWF0ZWQgYnk6IERh - dmlkfVxuKiBBc3NpZ25lZCB0bzogS2V2aW4sIEpafVxuKiBXb3JrZmxvdyBz - dGFnZTogVHJpYWdlXG4qIENyZWF0ZWQgYXQ6IDxUSU1FPn1cbiogQ2xvc2Vk - OiBmYWxzZVxuKiBDbG9zZWQgYnk6IFxuKiBDbG9zZWQgYXQ6IFxuKiBDb2xs + IDY1NDQ3NDk3M1xuXG5cbkJFR0lOIE9GIEVWRU5UIDc4NDkzNzI0OFxuIyMg + RXZlbnQgY2FyZF9wdWJsaXNoZWQgKENhcmQgNzU2ODE1NjUyKSlcblxuKiBD + cmVhdGVkIGF0OiA8VElNRT5cbiogQ3JlYXRlZCBieTogS2V2aW5cblxuQkVH + SU4gT0YgQ0FSRCA3NTY4MTU2NTJcblxuKipUaXRsZToqKiBXZSBuZWVkIHRv + IHNoaXAgdGhlIGFwcFxuKipEZXNjcmlwdGlvbjoqKlxuXG5cblxuIyMjIyBN + ZXRhZGF0YVxuXG4qIElkOiA3NTY4MTU2NTJcbiogQ3JlYXRlZCBieTogS2V2 + aW59XG4qIEFzc2lnbmVkIHRvOiB9XG4qIFdvcmtmbG93IHN0YWdlOiBUcmlh + Z2VcbiogQ3JlYXRlZCBhdDogPFRJTUU+fVxuKiBDbG9zZWQ6IHRydWVcbiog + Q2xvc2VkIGJ5OiBLZXZpblxuKiBDbG9zZWQgYXQ6IDxUSU1FPlxuKiBDb2xs ZWN0aW9uIGlkOiA2OTMxNjk4NDBcbiogQ29sbGVjdGlvbiBuYW1lOiBXcml0 - ZWJvb2tcbiogTnVtYmVyIG9mIGNvbW1lbnRzOiA1XG4qIFBhdGg6IC83MzU0 - NjQ3ODUvY2FyZHMvNjEzMzI1MzM0XG5cbkVORCBPRiBDQVJEIDYxMzMyNTMz - NFxuXG5FTkQgT0YgRVZFTlQgNjg1ODg5MjkzXG5cblxuQkVHSU4gT0YgRVZF - TlQgNzg0OTM3MjQ4XG4jIyBFdmVudCBjYXJkX3B1Ymxpc2hlZCAoQ2FyZCA3 - NTY4MTU2NTIpKVxuXG4qIENyZWF0ZWQgYXQ6IDxUSU1FPlxuKiBDcmVhdGVk - IGJ5OiBLZXZpblxuXG5CRUdJTiBPRiBDQVJEIDc1NjgxNTY1MlxuXG4qKlRp - dGxlOioqIFdlIG5lZWQgdG8gc2hpcCB0aGUgYXBwXG4qKkRlc2NyaXB0aW9u - OioqXG5cblxuXG4jIyMjIE1ldGFkYXRhXG5cbiogSWQ6IDc1NjgxNTY1Mlxu - KiBDcmVhdGVkIGJ5OiBLZXZpbn1cbiogQXNzaWduZWQgdG86IH1cbiogV29y - a2Zsb3cgc3RhZ2U6IFRyaWFnZVxuKiBDcmVhdGVkIGF0OiA8VElNRT59XG4q - IENsb3NlZDogdHJ1ZVxuKiBDbG9zZWQgYnk6IEtldmluXG4qIENsb3NlZCBh - dDogPFRJTUU+XG4qIENvbGxlY3Rpb24gaWQ6IDY5MzE2OTg0MFxuKiBDb2xs - ZWN0aW9uIG5hbWU6IFdyaXRlYm9va1xuKiBOdW1iZXIgb2YgY29tbWVudHM6 - IDFcbiogUGF0aDogLzczNTQ2NDc4NS9jYXJkcy83NTY4MTU2NTJcblxuRU5E - IE9GIENBUkQgNzU2ODE1NjUyXG5cbkVORCBPRiBFVkVOVCA3ODQ5MzcyNDhc - blxuXG5CRUdJTiBPRiBFVkVOVCA3OTg4NTMyOTFcbiMjIEV2ZW50IGNhcmRf - Y2xvc2VkIChDYXJkIDc1NjgxNTY1MikpXG5cbiogQ3JlYXRlZCBhdDogPFRJ - TUU+XG4qIENyZWF0ZWQgYnk6IEtldmluXG5cbkJFR0lOIE9GIENBUkQgNzU2 - ODE1NjUyXG5cbioqVGl0bGU6KiogV2UgbmVlZCB0byBzaGlwIHRoZSBhcHBc - bioqRGVzY3JpcHRpb246KipcblxuXG5cbiMjIyMgTWV0YWRhdGFcblxuKiBJ - ZDogNzU2ODE1NjUyXG4qIENyZWF0ZWQgYnk6IEtldmlufVxuKiBBc3NpZ25l - ZCB0bzogfVxuKiBXb3JrZmxvdyBzdGFnZTogVHJpYWdlXG4qIENyZWF0ZWQg - YXQ6IDxUSU1FPn1cbiogQ2xvc2VkOiB0cnVlXG4qIENsb3NlZCBieTogS2V2 - aW5cbiogQ2xvc2VkIGF0OiA8VElNRT5cbiogQ29sbGVjdGlvbiBpZDogNjkz - MTY5ODQwXG4qIENvbGxlY3Rpb24gbmFtZTogV3JpdGVib29rXG4qIE51bWJl - ciBvZiBjb21tZW50czogMVxuKiBQYXRoOiAvNzM1NDY0Nzg1L2NhcmRzLzc1 - NjgxNTY1MlxuXG5FTkQgT0YgQ0FSRCA3NTY4MTU2NTJcblxuRU5EIE9GIEVW - RU5UIDc5ODg1MzI5MVxuIn1dLCJzdHJlYW0iOmZhbHNlfQ== + ZWJvb2tcbiogTnVtYmVyIG9mIGNvbW1lbnRzOiAxXG4qIFBhdGg6IC83MzU0 + NjQ3ODUvY2FyZHMvNzU2ODE1NjUyXG5cbkVORCBPRiBDQVJEIDc1NjgxNTY1 + MlxuXG5FTkQgT0YgRVZFTlQgNzg0OTM3MjQ4XG5cblxuQkVHSU4gT0YgRVZF + TlQgNzk4ODUzMjkxXG4jIyBFdmVudCBjYXJkX2Nsb3NlZCAoQ2FyZCA3NTY4 + MTU2NTIpKVxuXG4qIENyZWF0ZWQgYXQ6IDxUSU1FPlxuKiBDcmVhdGVkIGJ5 + OiBLZXZpblxuXG5CRUdJTiBPRiBDQVJEIDc1NjgxNTY1MlxuXG4qKlRpdGxl + OioqIFdlIG5lZWQgdG8gc2hpcCB0aGUgYXBwXG4qKkRlc2NyaXB0aW9uOioq + XG5cblxuXG4jIyMjIE1ldGFkYXRhXG5cbiogSWQ6IDc1NjgxNTY1MlxuKiBD + cmVhdGVkIGJ5OiBLZXZpbn1cbiogQXNzaWduZWQgdG86IH1cbiogV29ya2Zs + b3cgc3RhZ2U6IFRyaWFnZVxuKiBDcmVhdGVkIGF0OiA8VElNRT59XG4qIENs + b3NlZDogdHJ1ZVxuKiBDbG9zZWQgYnk6IEtldmluXG4qIENsb3NlZCBhdDog + PFRJTUU+XG4qIENvbGxlY3Rpb24gaWQ6IDY5MzE2OTg0MFxuKiBDb2xsZWN0 + aW9uIG5hbWU6IFdyaXRlYm9va1xuKiBOdW1iZXIgb2YgY29tbWVudHM6IDFc + biogUGF0aDogLzczNTQ2NDc4NS9jYXJkcy83NTY4MTU2NTJcblxuRU5EIE9G + IENBUkQgNzU2ODE1NjUyXG5cbkVORCBPRiBFVkVOVCA3OTg4NTMyOTFcbiJ9 + XSwic3RyZWFtIjpmYWxzZSwidGVtcGVyYXR1cmUiOjEuMH0= headers: User-Agent: - Faraday v2.13.4 @@ -1914,7 +1902,7 @@ http_interactions: message: OK headers: Date: - - Fri, 12 Sep 2025 03:30:59 GMT + - Fri, 12 Sep 2025 14:15:49 GMT Content-Type: - application/json Transfer-Encoding: @@ -1926,13 +1914,13 @@ http_interactions: Openai-Organization: - 37signals-u7qhwk Openai-Processing-Ms: - - '3987' + - '8045' Openai-Project: - proj_M0FFIqFFeNEpzhhgv64oFzt1 Openai-Version: - '2020-10-01' X-Envoy-Upstream-Service-Time: - - '4209' + - '8283' X-Ratelimit-Limit-Requests: - '10000' X-Ratelimit-Limit-Tokens: @@ -1940,22 +1928,22 @@ http_interactions: X-Ratelimit-Remaining-Requests: - '9999' X-Ratelimit-Remaining-Tokens: - - '1998136' + - '1998276' X-Ratelimit-Reset-Requests: - 6ms X-Ratelimit-Reset-Tokens: - - 55ms + - 51ms X-Request-Id: - - req_439b083d1b744f54b72242b78b9d9695 + - req_9fcc0274981d444589a747269119a800 X-Openai-Proxy-Wasm: - v0.1 Cf-Cache-Status: - DYNAMIC Set-Cookie: - - __cf_bm=dqB827yhmb3VqYo2CoYzbd9.eR8aDji.EVwvmFly6ck-1757647859-1.0.1.1-xrLw_6BGAGnsW478L5k5CSCFLe2SHtjGABV6_BBARfUtlW2OTBVI.fCGbxudDK0a8_PB.jJ79VBkH6GykYJyNsGznDc1YPES2.UWH2abfps; - path=/; expires=Fri, 12-Sep-25 04:00:59 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=hqyao17fea43HoXZnu1jLz1F_uakUl3i.84V5Qsw5gk-1757686549-1.0.1.1-o.86mq2_fjAY3YLZ5Eqv3QTfMDt0VFUYA3JlEz6vCAqU2rSnNfsQXe.q_zGWOy_vvmm.0rjO7zj3ilhp2NULoB_Jop_M5qSV4PiI3OSIOOM; + path=/; expires=Fri, 12-Sep-25 14:45:49 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=mJPvZzCW9K1WvBeZvXdGHDeFd.FJVGTpKMGZDMJXbsk-1757647859091-0.0.1.1-604800000; + - _cfuvid=E4gVEEVIiMLP.RMQBqJU0db1MKBKZeOwWFcbJ4jSGsM-1757686549860-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload @@ -1964,78 +1952,71 @@ http_interactions: Server: - cloudflare Cf-Ray: - - 97dc54349a08c871-DFW + - 97e004b01e01471a-MAD Alt-Svc: - h3=":443"; ma=86400 body: encoding: ASCII-8BIT base64_string: | - ewogICJpZCI6ICJjaGF0Y21wbC1DRW9tdElsQThqWEVwRHZYd2F5dHVnUjRy - eTUwTiIsCiAgIm9iamVjdCI6ICJjaGF0LmNvbXBsZXRpb24iLAogICJjcmVh - dGVkIjogMTc1NzY0Nzg1NSwKICAibW9kZWwiOiAiY2hhdGdwdC00by1sYXRl + ewogICJpZCI6ICJjaGF0Y21wbC1DRXlxcmRLckkyekxKSVZvSUN3Ym12ZFJ0 + UUtLUSIsCiAgIm9iamVjdCI6ICJjaGF0LmNvbXBsZXRpb24iLAogICJjcmVh + dGVkIjogMTc1NzY4NjU0MSwKICAibW9kZWwiOiAiZ3B0LTUtY2hhdC1sYXRl c3QiLAogICJjaG9pY2VzIjogWwogICAgewogICAgICAiaW5kZXgiOiAwLAog ICAgICAibWVzc2FnZSI6IHsKICAgICAgICAicm9sZSI6ICJhc3Npc3RhbnQi - LAogICAgICAgICJjb250ZW50IjogIiMjIyBWaXN1YWwgVHJvdWJsZXMgVGFr - ZSBDZW50ZXIgU3RhZ2VcblxuVGhpcyB3ZWVrIGluIHRoZSBXcml0ZWJvb2sg - Y29sbGVjdGlvbiwgYSBmbHVycnkgb2YgdmlzdWFsIGlzc3VlcyBzdG9sZSB0 - aGUgc3BvdGxpZ2h0IOKAlCBmcm9tIGxvZ29zIGJlaW5nIHRvbyBzbWFsbCB0 - byB0ZXh0IG92ZXJmbG93aW5nIGNvbnRhaW5lcnMuIEEgaGFuZGZ1bCBvZiBk - ZXNpZ24tcmVsYXRlZCBidWdzIHdlcmUgZmxhZ2dlZCwgYXNzaWduZWQsIGFu - ZCBkaXNjdXNzZWQsIHBvaW50aW5nIHRvIGEgcHVzaCB0b3dhcmQgaW50ZXJm - YWNlIHBvbGlzaC4gTWVhbndoaWxlLCBvbmUga2V5IGRlbGl2ZXJhYmxlIHdh - cyBjbG9zZWQgb3V0OiBzaGlwcGluZyB0aGUgYXBwLlxuXG4jIyMjIFwiVGhl - IGxvZ28gaXNuJ3QgYmlnIGVub3VnaFwiIGtlZXBzIGNpcmN1bGF0aW5nXG5E - YXZpZCBwdWJsaXNoZWQgYW5kIHJlcGVhdGVkbHkgcmVhc3NpZ25lZCB0aGUg - W2xvZ28gc2l6aW5nIGlzc3VlXSgvNzM1NDY0Nzg1L2NhcmRzLzYxMzMyNTMz - NCkgdG8gYm90aCBLZXZpbiBhbmQgSlogYWNyb3NzIG11bHRpcGxlIGRheXMu - IERlc3BpdGUgc2V2ZXJhbCBjb21tZW50cyBhbmQgdG91Y2hlcywgaXQgcmVt - YWlucyBvcGVuIGluIHRyaWFnZSDigJQgc3VnZ2VzdGluZyBhbiB1bnJlc29s - dmVkIGhvdCBwb3RhdG8uXG5cbiMjIyMgTGF5b3V0IHdvZXMgcmFpc2VkIGFu - ZCB1bmRlciByZXZpZXdcbkRhdmlkIGZsYWdnZWQgdGhlIFtsYXlvdXQgYnVn - XSgvNzM1NDY0Nzg1L2NhcmRzLzk3NjkwNzIzNCkgYW5kIGxhdGVyIG5vdGVk - IHRoYXQgXCJ0aGUgdGV4dCBpcyBvdmVyZmxvd2luZyB0aGUgY29udGFpbmVy - LlwiIEl0J3MgY3VycmVudGx5IGFzc2lnbmVkIHRvIEpaIGFuZCByZW1haW5z - IG9wZW4gZm9yIG5vdywgYnV0IGl04oCZcyBjbGVhcmx5IG9uIHRoZSByYWRh - ciB3aXRoIHR3byBjb21tZW50cyBhbmQgRGF2aWTigJlzIGxhdGVzdCBudWRn - ZS5cblxuIyMjIyBGb250IHNpemUgY29uY2VybnMgYWRkZWQgdG8gdGhlIG1p - eFxuS2V2aW4gY29udHJpYnV0ZWQgYSBjb25jZXJuIG9mIGhpcyBvd24gd2l0 - aCBhIG5ldyBjYXJkIHN0YXRpbmcgW+KAnHRoZSB0ZXh0IGlzIHRvbyBzbWFs - bOKAnV0oLzczNTQ2NDc4NS9jYXJkcy85OTkwMDgxOTkpLiBUaG91Z2ggdGhl - cmXigJlzIGJlZW4gbGl0dGxlIGFjdGl2aXR5IHNpbmNlIGNyZWF0aW9uLCBp - dOKAmXMgbWFya2VkIGFzIOKAnGluIHByb2dyZXNz4oCdIOKAlCBhIHBvc3Np - YmxlIGluZGljYXRpb24gdGhhdCBzb21lb25l4oCZcyBhbHJlYWR5IHdvcmtp - bmcgb24gdGhlIGZpeC5cblxuIyMjIyBUaGUgYXBwIGlzIHJlYWR5IHRvIGdv - XG5BIG1pbGVzdG9uZSB3YXMgaGl0IHRoaXMgd2VlayB3aGVuIEtldmluIGNs - b3NlZCB0aGUgY2FyZCBzYXlpbmcgW+KAnFdlIG5lZWQgdG8gc2hpcCB0aGUg - YXBw4oCdXSgvNzM1NDY0Nzg1L2NhcmRzLzc1NjgxNTY1MikuIEl0IHdhcyBv - cmlnaW5hbGx5IGNyZWF0ZWQgb24gdGhlIDV0aCBhbmQgbWFya2VkIGNvbXBs - ZXRlIGp1c3QgYSB3ZWVrIGxhdGVyIOKAlCBzb2xpZCBleGVjdXRpb24gb24g - YSBjcml0aWNhbCBnb2FsLlxuXG4jIyMjIFB1Ymxpc2hlZCBjYXJkcyBoaWdo - bGlnaHQgdmlzdWFsIFFBIHB1c2hcbkluIHRvdGFsLCBmb3VyIG5ldyBjYXJk - cyB3ZXJlIFtwdWJsaXNoZWQgaW4gdGhlIFdyaXRlYm9vayBjb2xsZWN0aW9u - XSgvNzM1NDY0Nzg1L2NhcmRzP2NvbGxlY3Rpb25faWRzW109NjkzMTY5ODQw - KSwgYW5kIGFsbCBvZiB0aGVtIHdlcmUgYWJvdXQgZGVzaWduLXJlbGF0ZWQg - aXNzdWVzIG9yIGZyb250ZW5kIGJsb2NraW5nIHRhc2tzLiBJdOKAmXMgY2xl - YXIgdGhlIHRlYW0gaXMgaGVhZHMtZG93biBvbiBVSSBjbGVhbnVwLlxuXG4j - IyMjIFJlYXNzaWdubWVudHMgc2hvdyBpbmRlY2lzaW9uIChvciBhY3RpdmUg - cmViYWxhbmNpbmcpXG5BIHN1cnByaXNpbmcgbnVtYmVyIG9mIHJlYXNzaWdu - bWVudHMgaGFwcGVuZWQgb24gdGhlIHNhbWUgb3BlbiBpc3N1ZXMg4oCUIHBh - cnRpY3VsYXJseSB0aGUgbG9nbyBzaXppbmcgb25lLiBJdCBtaWdodCBzaWdu - YWwgYW4gb3duZXJzaGlwIGdhcCBvciBqdXN0IGZpbmUtdHVuaW5nIHJlc291 - cmNpbmcgYWNyb3NzIEtldmluIGFuZCBKWi4gRWl0aGVyIHdheSwgdGhlc2Ug - dGFza3MgYXJlbuKAmXQgZ29pbmcgcXVpZXRseS4iLAogICAgICAgICJyZWZ1 - c2FsIjogbnVsbCwKICAgICAgICAiYW5ub3RhdGlvbnMiOiBbXQogICAgICB9 - LAogICAgICAibG9ncHJvYnMiOiBudWxsLAogICAgICAiZmluaXNoX3JlYXNv - biI6ICJzdG9wIgogICAgfQogIF0sCiAgInVzYWdlIjogewogICAgInByb21w - dF90b2tlbnMiOiAyMzAwLAogICAgImNvbXBsZXRpb25fdG9rZW5zIjogNDU4 - LAogICAgInRvdGFsX3Rva2VucyI6IDI3NTgsCiAgICAicHJvbXB0X3Rva2Vu - c19kZXRhaWxzIjogewogICAgICAiY2FjaGVkX3Rva2VucyI6IDAsCiAgICAg - ICJhdWRpb190b2tlbnMiOiAwCiAgICB9LAogICAgImNvbXBsZXRpb25fdG9r - ZW5zX2RldGFpbHMiOiB7CiAgICAgICJyZWFzb25pbmdfdG9rZW5zIjogMCwK - ICAgICAgImF1ZGlvX3Rva2VucyI6IDAsCiAgICAgICJhY2NlcHRlZF9wcmVk - aWN0aW9uX3Rva2VucyI6IDAsCiAgICAgICJyZWplY3RlZF9wcmVkaWN0aW9u - X3Rva2VucyI6IDAKICAgIH0KICB9LAogICJzZXJ2aWNlX3RpZXIiOiAiZGVm - YXVsdCIsCiAgInN5c3RlbV9maW5nZXJwcmludCI6ICJmcF9kM2EwODM4ZmI4 - Igp9Cg== - recorded_at: Fri, 12 Sep 2025 03:30:59 GMT + LAogICAgICAgICJjb250ZW50IjogIiMjIyBWaXN1YWwgRml4ZXMgVGFrZSB0 + aGUgU3BvdGxpZ2h0ICBcblRoaXMgd2Vla+KAmXMgYWN0aXZpdHkgcmV2b2x2 + ZWQgYXJvdW5kIGRlc2lnbiBkZXRhaWxz4oCUbG9nb3MsIHRleHQgc2l6aW5n + LCBhbmQgbGF5b3V0IGlzc3VlcyBkb21pbmF0ZWQgdGhlIGNvbnZlcnNhdGlv + biwgd2hpbGUgb25lIGJpZyBtaWxlc3RvbmUgc3Rvb2Qgb3V0OiBhY3R1YWxs + eSBjbG9zaW5nIHRoZSDigJxzaGlwIHRoZSBhcHDigJ0gdGFzay4gSXQgZmVl + bHMgbGlrZSBldmVyeW9uZeKAmXMgYmVlbiBjaXJjbGluZyBhcm91bmQgcG9s + aXNoaW5nIHRoZSBwcmVzZW50YXRpb24gd2hpbGUgbnVkZ2luZyBjb3JlIHBy + b2dyZXNzIGZvcndhcmQuICBcblxuIyMjIyBMb2dvIERlYmF0ZSBHZXRzIEFz + c2lnbm1lbnRzICBcbkRhdmlkIHJhaXNlZCBb4oCcVGhlIGxvZ28gaXNu4oCZ + dCBiaWcgZW5vdWdo4oCdXSgvNzM1NDY0Nzg1L2NhcmRzLzYxMzMyNTMzNCks + IGFuZCBpdCBxdWlja2x5IGRyZXcgYXR0ZW50aW9uLCBiZWluZyBhc3NpZ25l + ZCB0byBib3RoIEtldmluIGFuZCBKWi4gV2l0aCBmaXZlIGNvbW1lbnRzIGFs + cmVhZHksIGl04oCZcyBzaGFwaW5nIHVwIHRvIGJlIGEgbGl2ZWx5IGJhY2st + YW5kLWZvcnRoLiAgXG5cbiMjIyMgTGF5b3V0IFRyb3VibGUgU3ByZWFkcyBE + aXNjdXNzaW9uICBcblRoZSBb4oCcTGF5b3V0IGlzIGJyb2tlbuKAnV0oLzcz + NTQ2NDc4NS9jYXJkcy85NzY5MDcyMzQpIGlzc3VlIGFsc28gbWFkZSBub2lz + ZSB0aGlzIHdlZWsuIEFzc2lnbmVkIHRvIEpaIGFuZCBhY2NvbXBhbmllZCBi + eSBhIGNvbW1lbnQgcG9pbnRpbmcgb3V0IHRleHQgb3ZlcmZsb3csIGl0IGhp + Z2hsaWdodHMgdGhhdCBkZXNpZ24gYnVncyBhcmUgc3RhY2tpbmcgdXAuICBc + blxuIyMjIyBUZXh0IFNpemUgQ29uY2VybnMgUmFpc2VkICBcbktldmluIGZs + YWdnZWQgW+KAnFRoZSB0ZXh0IGlzIHRvbyBzbWFsbOKAnV0oLzczNTQ2NDc4 + NS9jYXJkcy85OTkwMDgxOTkpLCB3aGljaCBzaXRzIGluIOKAnEluIHByb2dy + ZXNzLuKAnSBJdCBkaWRu4oCZdCBzdGlyIG11Y2ggY29udmVyc2F0aW9uIHll + dCwgYnV0IGl04oCZcyBhbm90aGVyIGV4YW1wbGUgb2YgdGhlIG92ZXJhbGwg + dGhlbWU6IHZpc3VhbHMgbmVlZCBmaW5lLXR1bmluZy4gIFxuXG4jIyMjIFBh + cmFsbGVsIEFzc2lnbm1lbnRzIG9uIExvZ28gSXNzdWUgIFxuRGF2aWQgYXNz + aWduZWQgdGhlIGxvZ28gaXNzdWUgdHdpY2Ugb3ZlciB0aGUgd2Vlaywgc3Vn + Z2VzdGluZyBzb21lIHVuY2VydGFpbnR5IG9yIGV4dHJhIHVyZ2VuY3kgaW4g + bWFraW5nIHN1cmUgYm90aCBLZXZpbiBhbmQgSlogdGFja2xlIGl0LiAgXG5c + biMjIyMgU2hpcHBpbmcgTWlsZXN0b25lIENsb3NlZCBPdXQgIFxuQW1vbmcg + YWxsIHRoZSBuaXRwaWNraW5nIG92ZXIgZGVzaWduLCBhIGJpZ2dlciB0YXNr + IHdyYXBwZWQgdXDigJRLZXZpbiBvcGVuZWQgYW5kIHRoZW4gY2xvc2VkIFvi + gJxXZSBuZWVkIHRvIHNoaXAgdGhlIGFwcOKAnV0oLzczNTQ2NDc4NS9jYXJk + cy83NTY4MTU2NTIpLiBUaGF04oCZcyBhIGNvbmNyZXRlIG1pbGVzdG9uZSwg + ZXZlbiBpZiB0aGUgcG9saXNoIHN0aWxsIGxhZ3MuICBcblxuIyMjIyBDb21t + ZW50cyBQaW5wb2ludCBTcGVjaWZpYyBQcm9ibGVtcyAgXG5UaGUgc3RhbmRv + dXQgY29tbWVudCB0aGlzIHdlZWsgY2FtZSBvbiB0aGUgbGF5b3V0IGNhcmQs + IG5vdGluZyB0ZXh0IG92ZXJmbG93LiBDb21iaW5lZCB3aXRoIHRoZSBsb2dv + IGFuZCB0ZXh0IHNpemUgY29tcGxhaW50cywgaXQgdW5kZXJzY29yZXMgYSB0 + aGVtZTogdGhlIGRlc2lnbiBmcmFtZXdvcmsgbWlnaHQgbmVlZCBicm9hZGVy + IHRpZ2h0ZW5pbmcsIG5vdCBqdXN0IHBpZWNlbWVhbCBmaXhlcy4gICIsCiAg + ICAgICAgInJlZnVzYWwiOiBudWxsLAogICAgICAgICJhbm5vdGF0aW9ucyI6 + IFtdCiAgICAgIH0sCiAgICAgICJsb2dwcm9icyI6IG51bGwsCiAgICAgICJm + aW5pc2hfcmVhc29uIjogInN0b3AiCiAgICB9CiAgXSwKICAidXNhZ2UiOiB7 + CiAgICAicHJvbXB0X3Rva2VucyI6IDIxMTQsCiAgICAiY29tcGxldGlvbl90 + b2tlbnMiOiAzOTcsCiAgICAidG90YWxfdG9rZW5zIjogMjUxMSwKICAgICJw + cm9tcHRfdG9rZW5zX2RldGFpbHMiOiB7CiAgICAgICJjYWNoZWRfdG9rZW5z + IjogMjA0OCwKICAgICAgImF1ZGlvX3Rva2VucyI6IDAKICAgIH0sCiAgICAi + Y29tcGxldGlvbl90b2tlbnNfZGV0YWlscyI6IHsKICAgICAgInJlYXNvbmlu + Z190b2tlbnMiOiAwLAogICAgICAiYXVkaW9fdG9rZW5zIjogMCwKICAgICAg + ImFjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zIjogMCwKICAgICAgInJlamVj + dGVkX3ByZWRpY3Rpb25fdG9rZW5zIjogMAogICAgfQogIH0sCiAgInNlcnZp + Y2VfdGllciI6ICJkZWZhdWx0IiwKICAic3lzdGVtX2ZpbmdlcnByaW50Ijog + ImZwXzllODIyZDUyMWQiCn0K + recorded_at: Fri, 12 Sep 2025 14:15:49 GMT recorded_with: VCR 6.3.1 diff --git a/test/vcr_cassettes/period_highlight_test-test_generate_period_highlights.yml b/test/vcr_cassettes/period_highlight_test-test_generate_period_highlights.yml index 778023317..e120152bb 100644 --- a/test/vcr_cassettes/period_highlight_test-test_generate_period_highlights.yml +++ b/test/vcr_cassettes/period_highlight_test-test_generate_period_highlights.yml @@ -1608,7 +1608,7 @@ http_interactions: body: encoding: UTF-8 base64_string: | - eyJtb2RlbCI6ImNoYXRncHQtNG8tbGF0ZXN0IiwibWVzc2FnZXMiOlt7InJv + eyJtb2RlbCI6ImdwdC01LWNoYXQtbGF0ZXN0IiwibWVzc2FnZXMiOlt7InJv bGUiOiJkZXZlbG9wZXIiLCJjb250ZW50IjoiSGVscCBtZSBtYWtlIHNlbnNl IG9mIHRoZSB3ZWVr4oCZcyBhY3Rpdml0eSBpbiBhIG5ld3Mgc3R5bGUgZm9y bWF0IHdpdGggYm9sZCBoZWFkbGluZXMgYW5kIHNob3J0IHN1bW1hcmllcy5c @@ -1738,44 +1738,32 @@ http_interactions: ZWF0ZWQgYnk6IERhdmlkfVxuKiBDcmVhdGVkIGF0OiA8VElNRT59XG4qIFBh dGg6IC83MzU0NjQ3ODUvY2FyZHMvOTc2OTA3MjM0I2NvbW1lbnRfODI3NDUw Njg0XG5FTkQgT0YgQ09NTUVOVCA4Mjc0NTA2ODRcblxuRU5EIE9GIEVWRU5U - IDY1NDQ3NDk3M1xuXG5cbkJFR0lOIE9GIEVWRU5UIDY4NTg4OTI5M1xuIyMg - RXZlbnQgY2FyZF9hc3NpZ25lZCAoQ2FyZCA2MTMzMjUzMzQpKVxuXG4qIENy - ZWF0ZWQgYXQ6IDxUSU1FPlxuKiBDcmVhdGVkIGJ5OiBEYXZpZFxuXG5CRUdJ - TiBPRiBDQVJEIDYxMzMyNTMzNFxuXG4qKlRpdGxlOioqIFRoZSBsb2dvIGlz - bid0IGJpZyBlbm91Z2hcbioqRGVzY3JpcHRpb246KipcblxuXG5cbiMjIyMg - TWV0YWRhdGFcblxuKiBJZDogNjEzMzI1MzM0XG4qIENyZWF0ZWQgYnk6IERh - dmlkfVxuKiBBc3NpZ25lZCB0bzogS2V2aW4sIEpafVxuKiBXb3JrZmxvdyBz - dGFnZTogVHJpYWdlXG4qIENyZWF0ZWQgYXQ6IDxUSU1FPn1cbiogQ2xvc2Vk - OiBmYWxzZVxuKiBDbG9zZWQgYnk6IFxuKiBDbG9zZWQgYXQ6IFxuKiBDb2xs + IDY1NDQ3NDk3M1xuXG5cbkJFR0lOIE9GIEVWRU5UIDc4NDkzNzI0OFxuIyMg + RXZlbnQgY2FyZF9wdWJsaXNoZWQgKENhcmQgNzU2ODE1NjUyKSlcblxuKiBD + cmVhdGVkIGF0OiA8VElNRT5cbiogQ3JlYXRlZCBieTogS2V2aW5cblxuQkVH + SU4gT0YgQ0FSRCA3NTY4MTU2NTJcblxuKipUaXRsZToqKiBXZSBuZWVkIHRv + IHNoaXAgdGhlIGFwcFxuKipEZXNjcmlwdGlvbjoqKlxuXG5cblxuIyMjIyBN + ZXRhZGF0YVxuXG4qIElkOiA3NTY4MTU2NTJcbiogQ3JlYXRlZCBieTogS2V2 + aW59XG4qIEFzc2lnbmVkIHRvOiB9XG4qIFdvcmtmbG93IHN0YWdlOiBUcmlh + Z2VcbiogQ3JlYXRlZCBhdDogPFRJTUU+fVxuKiBDbG9zZWQ6IHRydWVcbiog + Q2xvc2VkIGJ5OiBLZXZpblxuKiBDbG9zZWQgYXQ6IDxUSU1FPlxuKiBDb2xs ZWN0aW9uIGlkOiA2OTMxNjk4NDBcbiogQ29sbGVjdGlvbiBuYW1lOiBXcml0 - ZWJvb2tcbiogTnVtYmVyIG9mIGNvbW1lbnRzOiA1XG4qIFBhdGg6IC83MzU0 - NjQ3ODUvY2FyZHMvNjEzMzI1MzM0XG5cbkVORCBPRiBDQVJEIDYxMzMyNTMz - NFxuXG5FTkQgT0YgRVZFTlQgNjg1ODg5MjkzXG5cblxuQkVHSU4gT0YgRVZF - TlQgNzg0OTM3MjQ4XG4jIyBFdmVudCBjYXJkX3B1Ymxpc2hlZCAoQ2FyZCA3 - NTY4MTU2NTIpKVxuXG4qIENyZWF0ZWQgYXQ6IDxUSU1FPlxuKiBDcmVhdGVk - IGJ5OiBLZXZpblxuXG5CRUdJTiBPRiBDQVJEIDc1NjgxNTY1MlxuXG4qKlRp - dGxlOioqIFdlIG5lZWQgdG8gc2hpcCB0aGUgYXBwXG4qKkRlc2NyaXB0aW9u - OioqXG5cblxuXG4jIyMjIE1ldGFkYXRhXG5cbiogSWQ6IDc1NjgxNTY1Mlxu - KiBDcmVhdGVkIGJ5OiBLZXZpbn1cbiogQXNzaWduZWQgdG86IH1cbiogV29y - a2Zsb3cgc3RhZ2U6IFRyaWFnZVxuKiBDcmVhdGVkIGF0OiA8VElNRT59XG4q - IENsb3NlZDogdHJ1ZVxuKiBDbG9zZWQgYnk6IEtldmluXG4qIENsb3NlZCBh - dDogPFRJTUU+XG4qIENvbGxlY3Rpb24gaWQ6IDY5MzE2OTg0MFxuKiBDb2xs - ZWN0aW9uIG5hbWU6IFdyaXRlYm9va1xuKiBOdW1iZXIgb2YgY29tbWVudHM6 - IDFcbiogUGF0aDogLzczNTQ2NDc4NS9jYXJkcy83NTY4MTU2NTJcblxuRU5E - IE9GIENBUkQgNzU2ODE1NjUyXG5cbkVORCBPRiBFVkVOVCA3ODQ5MzcyNDhc - blxuXG5CRUdJTiBPRiBFVkVOVCA3OTg4NTMyOTFcbiMjIEV2ZW50IGNhcmRf - Y2xvc2VkIChDYXJkIDc1NjgxNTY1MikpXG5cbiogQ3JlYXRlZCBhdDogPFRJ - TUU+XG4qIENyZWF0ZWQgYnk6IEtldmluXG5cbkJFR0lOIE9GIENBUkQgNzU2 - ODE1NjUyXG5cbioqVGl0bGU6KiogV2UgbmVlZCB0byBzaGlwIHRoZSBhcHBc - bioqRGVzY3JpcHRpb246KipcblxuXG5cbiMjIyMgTWV0YWRhdGFcblxuKiBJ - ZDogNzU2ODE1NjUyXG4qIENyZWF0ZWQgYnk6IEtldmlufVxuKiBBc3NpZ25l - ZCB0bzogfVxuKiBXb3JrZmxvdyBzdGFnZTogVHJpYWdlXG4qIENyZWF0ZWQg - YXQ6IDxUSU1FPn1cbiogQ2xvc2VkOiB0cnVlXG4qIENsb3NlZCBieTogS2V2 - aW5cbiogQ2xvc2VkIGF0OiA8VElNRT5cbiogQ29sbGVjdGlvbiBpZDogNjkz - MTY5ODQwXG4qIENvbGxlY3Rpb24gbmFtZTogV3JpdGVib29rXG4qIE51bWJl - ciBvZiBjb21tZW50czogMVxuKiBQYXRoOiAvNzM1NDY0Nzg1L2NhcmRzLzc1 - NjgxNTY1MlxuXG5FTkQgT0YgQ0FSRCA3NTY4MTU2NTJcblxuRU5EIE9GIEVW - RU5UIDc5ODg1MzI5MVxuIn1dLCJzdHJlYW0iOmZhbHNlfQ== + ZWJvb2tcbiogTnVtYmVyIG9mIGNvbW1lbnRzOiAxXG4qIFBhdGg6IC83MzU0 + NjQ3ODUvY2FyZHMvNzU2ODE1NjUyXG5cbkVORCBPRiBDQVJEIDc1NjgxNTY1 + MlxuXG5FTkQgT0YgRVZFTlQgNzg0OTM3MjQ4XG5cblxuQkVHSU4gT0YgRVZF + TlQgNzk4ODUzMjkxXG4jIyBFdmVudCBjYXJkX2Nsb3NlZCAoQ2FyZCA3NTY4 + MTU2NTIpKVxuXG4qIENyZWF0ZWQgYXQ6IDxUSU1FPlxuKiBDcmVhdGVkIGJ5 + OiBLZXZpblxuXG5CRUdJTiBPRiBDQVJEIDc1NjgxNTY1MlxuXG4qKlRpdGxl + OioqIFdlIG5lZWQgdG8gc2hpcCB0aGUgYXBwXG4qKkRlc2NyaXB0aW9uOioq + XG5cblxuXG4jIyMjIE1ldGFkYXRhXG5cbiogSWQ6IDc1NjgxNTY1MlxuKiBD + cmVhdGVkIGJ5OiBLZXZpbn1cbiogQXNzaWduZWQgdG86IH1cbiogV29ya2Zs + b3cgc3RhZ2U6IFRyaWFnZVxuKiBDcmVhdGVkIGF0OiA8VElNRT59XG4qIENs + b3NlZDogdHJ1ZVxuKiBDbG9zZWQgYnk6IEtldmluXG4qIENsb3NlZCBhdDog + PFRJTUU+XG4qIENvbGxlY3Rpb24gaWQ6IDY5MzE2OTg0MFxuKiBDb2xsZWN0 + aW9uIG5hbWU6IFdyaXRlYm9va1xuKiBOdW1iZXIgb2YgY29tbWVudHM6IDFc + biogUGF0aDogLzczNTQ2NDc4NS9jYXJkcy83NTY4MTU2NTJcblxuRU5EIE9G + IENBUkQgNzU2ODE1NjUyXG5cbkVORCBPRiBFVkVOVCA3OTg4NTMyOTFcbiJ9 + XSwic3RyZWFtIjpmYWxzZSwidGVtcGVyYXR1cmUiOjEuMH0= headers: User-Agent: - Faraday v2.13.4 @@ -1793,7 +1781,7 @@ http_interactions: message: OK headers: Date: - - Fri, 12 Sep 2025 03:30:59 GMT + - Fri, 12 Sep 2025 14:15:40 GMT Content-Type: - application/json Transfer-Encoding: @@ -1805,13 +1793,13 @@ http_interactions: Openai-Organization: - 37signals-u7qhwk Openai-Processing-Ms: - - '4127' + - '7940' Openai-Project: - proj_M0FFIqFFeNEpzhhgv64oFzt1 Openai-Version: - '2020-10-01' X-Envoy-Upstream-Service-Time: - - '4355' + - '8196' X-Ratelimit-Limit-Requests: - '10000' X-Ratelimit-Limit-Tokens: @@ -1819,22 +1807,22 @@ http_interactions: X-Ratelimit-Remaining-Requests: - '9999' X-Ratelimit-Remaining-Tokens: - - '1998136' + - '1998276' X-Ratelimit-Reset-Requests: - 6ms X-Ratelimit-Reset-Tokens: - - 55ms + - 51ms X-Request-Id: - - req_a96db76abf5d4bae8d61be277be021fc + - req_e4fa40158c654e6f9e6987d420cd1eef X-Openai-Proxy-Wasm: - v0.1 Cf-Cache-Status: - DYNAMIC Set-Cookie: - - __cf_bm=vphLhSEoO.71N.lO5FW19vtPVb76tRrhIVGAkFkRK.4-1757647859-1.0.1.1-SPWXOII58dZ4IYqUi4jJr9GC8q3rCs.PCljbniZOBB4ZGdMDcBWrGo9DTRIXwOuHwp8GAw3Jcw67h.6nY01_zQCRp6N0j6TSSj8hnSGuWAU; - path=/; expires=Fri, 12-Sep-25 04:00:59 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=d_8BwjbWxlEIHLGNvNQBvL3WUrGLvA9yaeQrw1uQZyo-1757686540-1.0.1.1-J_1h8XjRpPtbLg5YNx_q2N9wPuGqpCnr6wvZFJUCPAsROH.3DCp5xrsQLSU018NGrGW_H7.x91aaDaFQfMJyBUP2oS6yS5liGfZDSJxrlg0; + path=/; expires=Fri, 12-Sep-25 14:45:40 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=hna6lLPtRbdVddwHHFWyJQ9v47NK3WOSiw3FQde3IMQ-1757647859285-0.0.1.1-604800000; + - _cfuvid=mtLqK4ZBEPLuGeUVwUrNmva92jyw5pEHp0WwZxeL6Z8-1757686540707-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload @@ -1843,77 +1831,72 @@ http_interactions: Server: - cloudflare Cf-Ray: - - 97dc5434dd7e7d5d-DFW + - 97e00474e9fbf781-MAD Alt-Svc: - h3=":443"; ma=86400 body: encoding: ASCII-8BIT base64_string: | - ewogICJpZCI6ICJjaGF0Y21wbC1DRW9tdEVnNmFNcmJlRVViWU5tMXlORGpU - ZU9ZWiIsCiAgIm9iamVjdCI6ICJjaGF0LmNvbXBsZXRpb24iLAogICJjcmVh - dGVkIjogMTc1NzY0Nzg1NSwKICAibW9kZWwiOiAiY2hhdGdwdC00by1sYXRl + ewogICJpZCI6ICJjaGF0Y21wbC1DRXlxaWVXR25la0JlZHV4ODJiUVN5UXFw + VHhQRSIsCiAgIm9iamVjdCI6ICJjaGF0LmNvbXBsZXRpb24iLAogICJjcmVh + dGVkIjogMTc1NzY4NjUzMiwKICAibW9kZWwiOiAiZ3B0LTUtY2hhdC1sYXRl c3QiLAogICJjaG9pY2VzIjogWwogICAgewogICAgICAiaW5kZXgiOiAwLAog ICAgICAibWVzc2FnZSI6IHsKICAgICAgICAicm9sZSI6ICJhc3Npc3RhbnQi - LAogICAgICAgICJjb250ZW50IjogIiMjIyBXcml0ZWJvb2sgR2V0cyBhIERl - c2lnbiBSZWFsaXR5IENoZWNrXG5cblRoaXMgd2Vla+KAmXMgYWN0aXZpdHkg - aW4gdGhlIFdyaXRlYm9vayBjb2xsZWN0aW9uIHJldmVhbGVkIGEgY29tbW9u - IHRoZW1lOiBVSSBpc3N1ZXMgYXJlIHN0YWNraW5nIHVwLCBhbmQgdGhlIHRl - YW0gaXMgYXNzaWduaW5nIHRoZW0gbGVmdCBhbmQgcmlnaHQuIFdoaWxlIGJ1 - Z3MgYWJvdXQgc2l6aW5nIGFuZCBsYXlvdXQgYXJlIGJlaW5nIGxvZ2dlZCBh - bmQgcmVhc3NpZ25lZCwgb25lIGtleSBjYXJkIHBvaW50cyB0byBhIG1ham9y - IG1pbGVzdG9uZSDigJQgdGhlIGFwcCBpcyBvZmZpY2lhbGx5IG1hcmtlZCBy - ZWFkeSB0byBzaGlwLlxuXG4jIyMjIEEgU21hbGwgTG9nbyBTcGFya3MgYSBC - aWcgUHVzaFxuXG5EYXZpZCBmbGFnZ2VkIGEgZGVzaWduIGNvbmNlcm4g4oCU - IFvigJxUaGUgbG9nbyBpc24ndCBiaWcgZW5vdWdo4oCdXSgvNzM1NDY0Nzg1 - L2NhcmRzLzYxMzMyNTMzNCkg4oCUIGFuZCB0aGUgY2FyZCBnYWluZWQgYXR0 - ZW50aW9uIHF1aWNrbHkuIEl0IHdhcyBwdWJsaXNoZWQgYW5kIHJlYXNzaWdu - ZWQgbXVsdGlwbGUgdGltZXMgb3ZlciB0aGUgd2VlaywgbGFuZGluZyB3aXRo - IGJvdGggS2V2aW4gYW5kIEpaIGFzIGFzc2lnbmVlcy4gSXTigJlzIHN0aWxs - IG9wZW4sIGFuZCBoYXMgc3RpcnJlZCBxdWl0ZSBhIGJpdCBvZiBjb252ZXJz - YXRpb24gd2l0aCBmaXZlIGNvbW1lbnRzIHNvIGZhci5cblxuIyMjIyBCcm9r - ZW4gTGF5b3V0IERyYXdzIGEgQ2xvc2VyIExvb2tcblxuQW5vdGhlciB2aXN1 - YWwgaXNzdWUgd2FzIHJhaXNlZCB3aGVuIERhdmlkIG9wZW5lZCBb4oCcTGF5 - b3V0IGlzIGJyb2tlbuKAnV0oLzczNTQ2NDc4NS9jYXJkcy85NzY5MDcyMzQp - LiBKWiB3YXMgYXNzaWduZWQgdG8gdGFja2xlIGl0LCBhbmQgYSBmb2xsb3ct - dXAgY29tbWVudCBwb2ludGVkIG91dCB0aGUgdGV4dCB3YXMg4oCcb3ZlcmZs - b3dpbmcgdGhlIGNvbnRhaW5lcuKAnSDigJQgYSBjbGVhciBzaWduIHRoaXMg - b25l4oCZcyBtb3JlIHRoYW4ganVzdCBhIG5pdHBpY2suXG5cbiMjIyMgVGlu - eSBUZXh0IE1ha2VzIHRoZSBMaXN0XG5cbktldmluIGFkZGVkIFvigJxUaGUg - dGV4dCBpcyB0b28gc21hbGzigJ1dKC83MzU0NjQ3ODUvY2FyZHMvOTk5MDA4 - MTk5KSwgd2hpY2gganVtcGVkIHJpZ2h0IGludG8gdGhlIOKAnEluIHByb2dy - ZXNz4oCdIGxhbmUuIEl04oCZcyBvbmUgb2YgdGhlIGZldyBjYXJkcyB3aXRo - IGFuIGFzc2lnbmVkIHdvcmtmbG93IHN0YWdlIGZyb20gdGhlIGp1bXAsIHN1 - Z2dlc3RpbmcgaXQgbWlnaHQgYmUgYWN0aXZlbHkgdW5kZXIgZml4LlxuXG4j - IyMjIFRoZSBBcHAgSXMgUmVhZHkgdG8gU2hpcCAoUmVhbGx5KVxuXG5UaGUg - YmlnZ2VzdCBtaWxlc3RvbmUgb2YgdGhlIHdlZWs6IEtldmluIGNyZWF0ZWQg - YW5kIGNsb3NlZCBhIGNhcmQgdGl0bGVkIFvigJxXZSBuZWVkIHRvIHNoaXAg - dGhlIGFwcOKAnV0oLzczNTQ2NDc4NS9jYXJkcy83NTY4MTU2NTIpLiBUaGF0 - IGJsdW50bHkgdGl0bGVkIHRhc2sgd2FzIHF1aWV0bHkgbWFya2VkIGRvbmUg - b24gdGhlIDEydGgg4oCUIHNpZ25hbGluZyB0aGUgdGVhbSBzZWVzIHRoZSBs - YXVuY2ggYXMgYSBnby5cblxuIyMjIyBUaHJlYWRzIEFyZSBBY3RpdmUsIEV2 - ZW4gQmVmb3JlIHRoZSBGaXhcblxuV2hpbGUgbm9uZSBvZiB0aGUgVUktY2Vu - dHJpYyBjYXJkcyB3ZXJlIGNsb3NlZCB0aGlzIHdlZWssIGNvbnZlcnNhdGlv - bnMgYXJlIGhhcHBlbmluZy4gVGhlIGNvbW1lbnRzIG9uIHRoZSBsYXlvdXQg - YW5kIGxvZ28gaXNzdWVzIHN1Z2dlc3QgcmV2aWV3ZXJzIGFyZSBpZGVudGlm - eWluZyBzcGVjaWZpYyBidWdzIHF1aWNrbHksIHdoaWNoIG1heSBzaG9ydGVu - IHR1cm5hcm91bmQgdGltZXMgb25jZSBmaXhlcyBiZWdpbi5cblxuIyMjIyBB - c3NpZ25tZW50cyBSZXBlYXQg4oCUIEJ1dCBBY3Rpb25zIEFyZSBQZW5kaW5n - XG5cbkNhcmRzIGxpa2UgdGhlIGxvZ28gY29tcGxhaW50IHdlcmUgYXNzaWdu - ZWQgYW5kIHJlLWFzc2lnbmVkIHRvIHRoZSBzYW1lIHBlb3BsZSBtdWx0aXBs - ZSB0aW1lcywgcG9zc2libHkgdG8gcmVzZXQgYXR0ZW50aW9uIG9yIGluZGlj - YXRlIHJlbmV3ZWQgdXJnZW5jeS4gQnV0IGZvciBub3csIG5vIHJlc29sdXRp - b24geWV0LiIsCiAgICAgICAgInJlZnVzYWwiOiBudWxsLAogICAgICAgICJh - bm5vdGF0aW9ucyI6IFtdCiAgICAgIH0sCiAgICAgICJsb2dwcm9icyI6IG51 - bGwsCiAgICAgICJmaW5pc2hfcmVhc29uIjogInN0b3AiCiAgICB9CiAgXSwK - ICAidXNhZ2UiOiB7CiAgICAicHJvbXB0X3Rva2VucyI6IDIzMDAsCiAgICAi - Y29tcGxldGlvbl90b2tlbnMiOiA0NTYsCiAgICAidG90YWxfdG9rZW5zIjog - Mjc1NiwKICAgICJwcm9tcHRfdG9rZW5zX2RldGFpbHMiOiB7CiAgICAgICJj - YWNoZWRfdG9rZW5zIjogMCwKICAgICAgImF1ZGlvX3Rva2VucyI6IDAKICAg - IH0sCiAgICAiY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyI6IHsKICAgICAg - InJlYXNvbmluZ190b2tlbnMiOiAwLAogICAgICAiYXVkaW9fdG9rZW5zIjog - MCwKICAgICAgImFjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zIjogMCwKICAg - ICAgInJlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zIjogMAogICAgfQogIH0s - CiAgInNlcnZpY2VfdGllciI6ICJkZWZhdWx0IiwKICAic3lzdGVtX2Zpbmdl - cnByaW50IjogImZwX2QzYTA4MzhmYjgiCn0K - recorded_at: Fri, 12 Sep 2025 03:30:59 GMT + LAogICAgICAgICJjb250ZW50IjogIiMjIyBWaXN1YWwgRml4ZXMgYW5kIFNo + aXBwaW5nIE1pbGVzdG9uZXMgRG9taW5hdGUgdGhlIFdlZWsgIFxuSXQgd2Fz + IGEgYnVzeSBzdHJldGNoIGZvciB0aGUgV3JpdGVib29rIHByb2plY3QsIHdp + dGggdGhlIHNwb3RsaWdodCBvbiB2aXN1YWwgZGVzaWduIHR3ZWFrcywgbGF5 + b3V0IGJ1Z3MsIGFuZCB0aGUgbG9uZy1hd2FpdGVkIHB1c2ggdG8gc2hpcCB0 + aGUgYXBwLiBBc3NpZ25tZW50cyBzaGlmdGVkIGFyb3VuZCwgZmVlZGJhY2sg + cm9sbGVkIGluLCBhbmQgb25lIG1ham9yIG1pbGVzdG9uZeKAlGNsb3Npbmcg + dGhlIFwic2hpcCBpdFwiIHRhc2vigJRzdG9vZCBvdXQuICBcblxuIyMjIyBM + b2dvIFNpemUgU3BhcmtzIERlYmF0ZSAgXG5EYXZpZCByYWlzZWQgdGhlIFts + b2dvIGlzc3VlXSgvNzM1NDY0Nzg1L2NhcmRzLzYxMzMyNTMzNCksIGFuZCBp + dCBrZXB0IGF0dGVudGlvbiB0aHJvdWdob3V0IHRoZSB3ZWVrLCBsYW5kaW5n + IG9uIHRoZSBwbGF0ZXMgb2YgS2V2aW4gYW5kIEpaLiBXaXRoIGZpdmUgY29t + bWVudHMgYWxyZWFkeSwgdGhpcyBuaXRwaWNreSBidXQgcGVyc2lzdGVudCBk + ZXRhaWwgcmVmdXNlcyB0byBzZXR0bGUgZG93bi4gIFxuXG4jIyMjIExheW91 + dCBUcm91YmxlIElkZW50aWZpZWQgYW5kIEFzc2lnbmVkICBcblRoZSBbbGF5 + b3V0IGJ1Z10oLzczNTQ2NDc4NS9jYXJkcy85NzY5MDcyMzQpIGVtZXJnZWQg + YXMgYW5vdGhlciBzdGlja2luZyBwb2ludC4gSlogd2FzIG9mZmljaWFsbHkg + dGFza2VkIHdpdGggaXQsIGFuZCBEYXZpZCBhZGRlZCBhIGNsYXJpZnlpbmcg + bm90ZSB0aGF0IHRleHQgd2FzIG92ZXJmbG93aW5nIGl0cyBjb250YWluZXIs + IHNpZ25hbGluZyB0aGlzIG9uZSBtaWdodCB0YWtlIG1vcmUgdGhhbiBhIHF1 + aWNrIGZpeC4gIFxuXG4jIyMjIFRpbnkgVGV4dCBUYWtlcyB0aGUgU3RhZ2Ug + IFxuS2V2aW4gb3BlbmVkIGEgZnJlc2ggdGlja2V0IGFib3V0IFt0ZXh0IHNp + emUgcHJvYmxlbXNdKC83MzU0NjQ3ODUvY2FyZHMvOTk5MDA4MTk5KS4gQ3Vy + cmVudGx5IG1hcmtlZCBcImluIHByb2dyZXNzLFwiIGl0IGhpZ2hsaWdodHMg + dGhhdCB0aGUgZGVzaWduIGNyaXRpcXVlcyBhcmVu4oCZdCBqdXN0IGFib3V0 + IGdyYXBoaWNz4oCUcmVhZGFiaWxpdHkgaXMgZmlybWx5IGluIHRoZSBtaXgg + dG9vLiAgXG5cbiMjIyMgQmlnIFB1c2ggdG8gU2hpcCAgXG5LZXZpbiBjcmVh + dGVkIHRoZSBoaWdoLXN0YWtlcyBb4oCcV2UgbmVlZCB0byBzaGlwIHRoZSBh + cHDigJ1dKC83MzU0NjQ3ODUvY2FyZHMvNzU2ODE1NjUyKSBjYXJkLiBJdCB3 + YXMgdGhlIGFuY2hvciBwb2ludCBvZiB0aGUgd2Vlaywgc2VlaW5nIHF1aWNr + IG1vdmVtZW50IGZyb20gdHJpYWdlIHRvIGNsb3N1cmUuIEJ5IHdlZWvigJlz + IGVuZCwgS2V2aW4gY2xvc2VkIGl0LCBtYXJraW5nIGEgbWFqb3IgcHJvamVj + dCBtaWxlc3RvbmUuICBcblxuIyMjIyBNdWx0aXBsZSBBc3NpZ25tZW50cyBL + ZWVwIEpaIEJ1c3kgIFxuQmV0d2VlbiB0aGUgbG9nbyBpc3N1ZSBhbmQgbGF5 + b3V0IHRyb3VibGVzLCBKWuKAmXMgcGxhdGUgZmlsbGVkIHVwIGZhc3QuIFRo + ZSB3ZWVr4oCZcyBhY3Rpdml0eSBzaWduYWxzIHRoYXQgSlogaXMgdGhlIGdv + LXRvIGZvciB1bnRhbmdsaW5nIGJvdGggZGVzaWduIGFuZCB0ZWNobmljYWwg + YmxvY2tlcnMuICBcblxuIyMjIyBQYXR0ZXJuIHRvIFdhdGNoOiBEZXNpZ24g + UG9saXNoIE1lZXRzIERlbGl2ZXJ5ICBcblRoZSBjb21tb24gdGhyZWFkPyBB + dHRlbnRpb24gaXMgc3BsaXQgYmV0d2VlbiBzbWFsbC1idXQtdmlzaWJsZSBk + ZXNpZ24gdHdlYWtzIChsb2dvLCB0ZXh0IHNpemUsIGxheW91dCkgYW5kIHRo + ZSBsYXJnZXIgZ29hbCBvZiBzaGlwcGluZyB0aGUgYXBwLCBzdWdnZXN0aW5n + IHRoZSB0ZWFtIGlzIHRpZ2h0ZW5pbmcgdXAgZGV0YWlscyBhcyB0aGV5IG1h + cmNoIHRvd2FyZCByZWxlYXNlLiAgIiwKICAgICAgICAicmVmdXNhbCI6IG51 + bGwsCiAgICAgICAgImFubm90YXRpb25zIjogW10KICAgICAgfSwKICAgICAg + ImxvZ3Byb2JzIjogbnVsbCwKICAgICAgImZpbmlzaF9yZWFzb24iOiAic3Rv + cCIKICAgIH0KICBdLAogICJ1c2FnZSI6IHsKICAgICJwcm9tcHRfdG9rZW5z + IjogMjExNCwKICAgICJjb21wbGV0aW9uX3Rva2VucyI6IDQxOSwKICAgICJ0 + b3RhbF90b2tlbnMiOiAyNTMzLAogICAgInByb21wdF90b2tlbnNfZGV0YWls + cyI6IHsKICAgICAgImNhY2hlZF90b2tlbnMiOiAwLAogICAgICAiYXVkaW9f + dG9rZW5zIjogMAogICAgfSwKICAgICJjb21wbGV0aW9uX3Rva2Vuc19kZXRh + aWxzIjogewogICAgICAicmVhc29uaW5nX3Rva2VucyI6IDAsCiAgICAgICJh + dWRpb190b2tlbnMiOiAwLAogICAgICAiYWNjZXB0ZWRfcHJlZGljdGlvbl90 + b2tlbnMiOiAwLAogICAgICAicmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMi + OiAwCiAgICB9CiAgfSwKICAic2VydmljZV90aWVyIjogImRlZmF1bHQiLAog + ICJzeXN0ZW1fZmluZ2VycHJpbnQiOiAiZnBfOWU4MjJkNTIxZCIKfQo= + recorded_at: Fri, 12 Sep 2025 14:15:40 GMT recorded_with: VCR 6.3.1 diff --git a/test/vcr_cassettes/user/highlights_test-test_don_t_generate_highlights_for_existing_periods.yml b/test/vcr_cassettes/user/highlights_test-test_don_t_generate_highlights_for_existing_periods.yml index 92e7f9e3e..69a2ffd58 100644 --- a/test/vcr_cassettes/user/highlights_test-test_don_t_generate_highlights_for_existing_periods.yml +++ b/test/vcr_cassettes/user/highlights_test-test_don_t_generate_highlights_for_existing_periods.yml @@ -2669,7 +2669,7 @@ http_interactions: body: encoding: UTF-8 base64_string: | - eyJtb2RlbCI6ImNoYXRncHQtNG8tbGF0ZXN0IiwibWVzc2FnZXMiOlt7InJv + eyJtb2RlbCI6ImdwdC01LWNoYXQtbGF0ZXN0IiwibWVzc2FnZXMiOlt7InJv bGUiOiJkZXZlbG9wZXIiLCJjb250ZW50IjoiSGVscCBtZSBtYWtlIHNlbnNl IG9mIHRoZSB3ZWVr4oCZcyBhY3Rpdml0eSBpbiBhIG5ld3Mgc3R5bGUgZm9y bWF0IHdpdGggYm9sZCBoZWFkbGluZXMgYW5kIHNob3J0IHN1bW1hcmllcy5c @@ -2775,32 +2775,20 @@ http_interactions: KiBDcmVhdGVkIGF0OiA8VElNRT59XG4qIFBhdGg6IC83MzU0NjQ3ODUvY2Fy ZHMvOTc2OTA3MjM0I2NvbW1lbnRfODI3NDUwNjg0XG5FTkQgT0YgQ09NTUVO VCA4Mjc0NTA2ODRcblxuRU5EIE9GIEVWRU5UIDY1NDQ3NDk3M1xuXG5cbkJF - R0lOIE9GIEVWRU5UIDY4NTg4OTI5M1xuIyMgRXZlbnQgY2FyZF9hc3NpZ25l - ZCAoQ2FyZCA2MTMzMjUzMzQpKVxuXG4qIENyZWF0ZWQgYXQ6IDxUSU1FPlxu - KiBDcmVhdGVkIGJ5OiBEYXZpZFxuXG5CRUdJTiBPRiBDQVJEIDYxMzMyNTMz - NFxuXG4qKlRpdGxlOioqIFRoZSBsb2dvIGlzbid0IGJpZyBlbm91Z2hcbioq - RGVzY3JpcHRpb246KipcblxuXG5cbiMjIyMgTWV0YWRhdGFcblxuKiBJZDog - NjEzMzI1MzM0XG4qIENyZWF0ZWQgYnk6IERhdmlkfVxuKiBBc3NpZ25lZCB0 - bzogS2V2aW4sIEpafVxuKiBXb3JrZmxvdyBzdGFnZTogVHJpYWdlXG4qIENy - ZWF0ZWQgYXQ6IDxUSU1FPn1cbiogQ2xvc2VkOiBmYWxzZVxuKiBDbG9zZWQg - Ynk6IFxuKiBDbG9zZWQgYXQ6IFxuKiBDb2xsZWN0aW9uIGlkOiA2OTMxNjk4 + R0lOIE9GIEVWRU5UIDc4NDkzNzI0OFxuIyMgRXZlbnQgY2FyZF9wdWJsaXNo + ZWQgKENhcmQgNzU2ODE1NjUyKSlcblxuKiBDcmVhdGVkIGF0OiA8VElNRT5c + biogQ3JlYXRlZCBieTogS2V2aW5cblxuQkVHSU4gT0YgQ0FSRCA3NTY4MTU2 + NTJcblxuKipUaXRsZToqKiBXZSBuZWVkIHRvIHNoaXAgdGhlIGFwcFxuKipE + ZXNjcmlwdGlvbjoqKlxuXG5cblxuIyMjIyBNZXRhZGF0YVxuXG4qIElkOiA3 + NTY4MTU2NTJcbiogQ3JlYXRlZCBieTogS2V2aW59XG4qIEFzc2lnbmVkIHRv + OiB9XG4qIFdvcmtmbG93IHN0YWdlOiBUcmlhZ2VcbiogQ3JlYXRlZCBhdDog + PFRJTUU+fVxuKiBDbG9zZWQ6IHRydWVcbiogQ2xvc2VkIGJ5OiBLZXZpblxu + KiBDbG9zZWQgYXQ6IDxUSU1FPlxuKiBDb2xsZWN0aW9uIGlkOiA2OTMxNjk4 NDBcbiogQ29sbGVjdGlvbiBuYW1lOiBXcml0ZWJvb2tcbiogTnVtYmVyIG9m - IGNvbW1lbnRzOiA1XG4qIFBhdGg6IC83MzU0NjQ3ODUvY2FyZHMvNjEzMzI1 - MzM0XG5cbkVORCBPRiBDQVJEIDYxMzMyNTMzNFxuXG5FTkQgT0YgRVZFTlQg - Njg1ODg5MjkzXG5cblxuQkVHSU4gT0YgRVZFTlQgNzg0OTM3MjQ4XG4jIyBF - dmVudCBjYXJkX3B1Ymxpc2hlZCAoQ2FyZCA3NTY4MTU2NTIpKVxuXG4qIENy - ZWF0ZWQgYXQ6IDxUSU1FPlxuKiBDcmVhdGVkIGJ5OiBLZXZpblxuXG5CRUdJ - TiBPRiBDQVJEIDc1NjgxNTY1MlxuXG4qKlRpdGxlOioqIFdlIG5lZWQgdG8g - c2hpcCB0aGUgYXBwXG4qKkRlc2NyaXB0aW9uOioqXG5cblxuXG4jIyMjIE1l - dGFkYXRhXG5cbiogSWQ6IDc1NjgxNTY1MlxuKiBDcmVhdGVkIGJ5OiBLZXZp - bn1cbiogQXNzaWduZWQgdG86IH1cbiogV29ya2Zsb3cgc3RhZ2U6IFRyaWFn - ZVxuKiBDcmVhdGVkIGF0OiA8VElNRT59XG4qIENsb3NlZDogdHJ1ZVxuKiBD - bG9zZWQgYnk6IEtldmluXG4qIENsb3NlZCBhdDogPFRJTUU+XG4qIENvbGxl - Y3Rpb24gaWQ6IDY5MzE2OTg0MFxuKiBDb2xsZWN0aW9uIG5hbWU6IFdyaXRl - Ym9va1xuKiBOdW1iZXIgb2YgY29tbWVudHM6IDFcbiogUGF0aDogLzczNTQ2 - NDc4NS9jYXJkcy83NTY4MTU2NTJcblxuRU5EIE9GIENBUkQgNzU2ODE1NjUy - XG5cbkVORCBPRiBFVkVOVCA3ODQ5MzcyNDhcbiJ9XSwic3RyZWFtIjpmYWxz - ZX0= + IGNvbW1lbnRzOiAxXG4qIFBhdGg6IC83MzU0NjQ3ODUvY2FyZHMvNzU2ODE1 + NjUyXG5cbkVORCBPRiBDQVJEIDc1NjgxNTY1MlxuXG5FTkQgT0YgRVZFTlQg + Nzg0OTM3MjQ4XG4ifV0sInN0cmVhbSI6ZmFsc2UsInRlbXBlcmF0dXJlIjox + LjB9 headers: User-Agent: - Faraday v2.13.4 @@ -2818,7 +2806,7 @@ http_interactions: message: OK headers: Date: - - Fri, 12 Sep 2025 03:30:51 GMT + - Fri, 12 Sep 2025 14:15:17 GMT Content-Type: - application/json Transfer-Encoding: @@ -2830,13 +2818,13 @@ http_interactions: Openai-Organization: - 37signals-u7qhwk Openai-Processing-Ms: - - '2620' + - '6329' Openai-Project: - proj_M0FFIqFFeNEpzhhgv64oFzt1 Openai-Version: - '2020-10-01' X-Envoy-Upstream-Service-Time: - - '2772' + - '6500' X-Ratelimit-Limit-Requests: - '10000' X-Ratelimit-Limit-Tokens: @@ -2844,22 +2832,22 @@ http_interactions: X-Ratelimit-Remaining-Requests: - '9999' X-Ratelimit-Remaining-Tokens: - - '1998554' + - '1998694' X-Ratelimit-Reset-Requests: - 6ms X-Ratelimit-Reset-Tokens: - - 43ms + - 39ms X-Request-Id: - - req_6f22a137f84d4ba5a51a7e67d090da89 + - req_d81b830ea31e44e885eac97fa22bff90 X-Openai-Proxy-Wasm: - v0.1 Cf-Cache-Status: - DYNAMIC Set-Cookie: - - __cf_bm=qJ46BCoTdvOBRolJJ3yMikPeCof.lWFY5I6qx96XzPM-1757647851-1.0.1.1-nh2TbczsWDlg406ysRN6kLDkMXtZUR2SRR_KjBE10yNMsaeXpYZkE4_nb0GMiAoFxRVZPQ8yguKF.9inuTUhbgFNoQfX2m6jj8bUAVdld_M; - path=/; expires=Fri, 12-Sep-25 04:00:51 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=SliAP.EKb6FUuBhLU72A69_ucmQ1JiDp_YJ2qX.AUqI-1757686517-1.0.1.1-bv_MkaaWmt.pomokgc4zFEDXBB.bCbPh.NzXYaqbYw4h4nt3ZOvAUc8eQfn.rBj2uiMVQOnnE82xbIcHxGyMpQdG3czAO09ltSl2YIpNwa8; + path=/; expires=Fri, 12-Sep-25 14:45:17 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=GJw2M1yksZaioayc3d.Omi55WSc0R0tVj2mbh3X_6cY-1757647851573-0.0.1.1-604800000; + - _cfuvid=VYuigE21Cym9AZ1iGZsIOBqgq_.dLGN8OWGy7F.IUmQ-1757686517510-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload @@ -2868,61 +2856,64 @@ http_interactions: Server: - cloudflare Cf-Ray: - - 97dc540e8c8beac5-DFW + - 97e003f30e081ba7-MAD Alt-Svc: - h3=":443"; ma=86400 body: encoding: ASCII-8BIT base64_string: | - ewogICJpZCI6ICJjaGF0Y21wbC1DRW9tbWl2SDFwRFR5RlRpMUdCRWxhd3lN - V0U1ViIsCiAgIm9iamVjdCI6ICJjaGF0LmNvbXBsZXRpb24iLAogICJjcmVh - dGVkIjogMTc1NzY0Nzg0OCwKICAibW9kZWwiOiAiY2hhdGdwdC00by1sYXRl + ewogICJpZCI6ICJjaGF0Y21wbC1DRXlxTmxCcVNKWFhJNVp2WlZKTUtEZmU3 + cGZ5SSIsCiAgIm9iamVjdCI6ICJjaGF0LmNvbXBsZXRpb24iLAogICJjcmVh + dGVkIjogMTc1NzY4NjUxMSwKICAibW9kZWwiOiAiZ3B0LTUtY2hhdC1sYXRl c3QiLAogICJjaG9pY2VzIjogWwogICAgewogICAgICAiaW5kZXgiOiAwLAog ICAgICAibWVzc2FnZSI6IHsKICAgICAgICAicm9sZSI6ICJhc3Npc3RhbnQi - LAogICAgICAgICJjb250ZW50IjogIiMjIyBDb25zaXN0ZW5jeSBDcmFja3Mg - YW5kIENsZWFudXAgaW4gV3JpdGVib29rXG5cbkEgaGFuZGZ1bCBvZiBuZXcg - ZGVzaWduIGNvbmNlcm5zIGJ1YmJsZWQgdXAgaW4gdGhlIFdyaXRlYm9vayBj - b2xsZWN0aW9uIHRoaXMgd2VlaywgbW9zdCBvZiB0aGVtIGFyb3VuZCB2aXN1 - YWwgcG9saXNo4oCUdGhpbmsgbG9nb3MsIGxheW91dCwgYW5kIHR5cG9ncmFw - aHkuIE1lYW53aGlsZSwgb25lIG1ham9yIHRhc2sgbWFkZSBpdCB0byB0aGUg - ZmluaXNoIGxpbmUsIHByb3ZpZGluZyBhdCBsZWFzdCBvbmUgc29saWQgbWls - ZXN0b25lIGFtaWQgdGhlIHRyaWFnZSBub2lzZS5cblxuIyMjIyBUaGUgTG9n - b+KAmXMgVG9vIFNtYWxs4oCUQW5kIEl04oCZcyBCdWdnaW5nIFBlb3BsZSAg - XG5EYXZpZCBvcGVuZWQgYSBjYXJkIGFib3V0IHRoZSBsb2dvIG5vdCBiZWlu - ZyBsYXJnZSBlbm91Z2ggYW5kIGFzc2lnbmVkIGl0IHRvIGJvdGggS2V2aW4g - YW5kIEpaLiBXaXRoIFs1IGNvbW1lbnRzIG9uIHRoZSB0aHJlYWRdKC83MzU0 - NjQ3ODUvY2FyZHMvNjEzMzI1MzM0KSwgaXTigJlzIGNsZWFybHkgc3Bhcmtl - ZCBzb21lIGRpc2N1c3Npb24sIHRob3VnaCBpdCByZW1haW5zIG9wZW4gaW4g - dHJpYWdlIGZvciBub3cuXG5cbiMjIyMgTGF5b3V0IElzIEJyb2tlbiwgV2l0 - aCBPdmVyZmxvd2luZyBUZXh0ICBcblRoZSBsYXlvdXTigJlzIGxvb2tpbmcg - cm91Z2ggdG9v4oCURGF2aWQgcmVwb3J0ZWQgdGhhdCBbdGV4dCBpcyBzcGls - bGluZyBvdXQgb2YgaXRzIGNvbnRhaW5lcl0oLzczNTQ2NDc4NS9jYXJkcy85 - NzY5MDcyMzQjY29tbWVudF84Mjc0NTA2ODQpLCBzdWdnZXN0aW5nIGEgQ1NT - IG9yIHJlc3BvbnNpdmUgZGVzaWduIGlzc3VlLiBKWiBpcyBvbiB0aGUgY2Fz - ZSwgYnV0IHRoZSBjYXJk4oCZcyBzdGlsbCBzdHVjayBpbiB0cmlhZ2UuXG5c - biMjIyMgVHlwb2dyYXBoeSBUcm91YmxlcyBDb250aW51ZSAgXG5LZXZpbiBm - bGFnZ2VkIGFub3RoZXIgdmlzdWFsIG5pdDogW3RoZSB0ZXh0IGlzIHRvbyBz - bWFsbF0oLzczNTQ2NDc4NS9jYXJkcy85OTkwMDgxOTkpLiBFdmVuIHRob3Vn - aCBpdOKAmXMgbWFya2VkIGFzIFwiSW4gcHJvZ3Jlc3MsXCIgdGhlcmXigJlz - IGJlZW4gbWluaW1hbCBkaXNjdXNzaW9uIHNvIGZhci5cblxuIyMjIyBUaGUg - QXBwIFNoaXBtZW50IENhcmQgQ3Jvc3NlcyB0aGUgRmluaXNoIExpbmUgIFxu - SW4gYSBwb3NpdGl2ZSB0dXJuLCBLZXZpbiBjbG9zZWQgb3V0IGEgaGlnaGVy - LWxldmVsIHByaW9yaXR5OiBb4oCcV2UgbmVlZCB0byBzaGlwIHRoZSBhcHDi - gJ1dKC83MzU0NjQ3ODUvY2FyZHMvNzU2ODE1NjUyKS4gSXQgd2FzIGNyZWF0 - ZWQgYW5kIGNvbXBsZXRlZCB3aXRoaW4gYSB3ZWVr4oCUYW4gZW5jb3VyYWdp - bmcgc2lnbiBvZiBmb3J3YXJkIG1vbWVudHVtIGFtaWQgdGhlIGRlc2lnbiBk - aXN0cmFjdGlvbnMuIiwKICAgICAgICAicmVmdXNhbCI6IG51bGwsCiAgICAg - ICAgImFubm90YXRpb25zIjogW10KICAgICAgfSwKICAgICAgImxvZ3Byb2Jz - IjogbnVsbCwKICAgICAgImZpbmlzaF9yZWFzb24iOiAic3RvcCIKICAgIH0K - ICBdLAogICJ1c2FnZSI6IHsKICAgICJwcm9tcHRfdG9rZW5zIjogMTczNSwK - ICAgICJjb21wbGV0aW9uX3Rva2VucyI6IDMxNiwKICAgICJ0b3RhbF90b2tl - bnMiOiAyMDUxLAogICAgInByb21wdF90b2tlbnNfZGV0YWlscyI6IHsKICAg - ICAgImNhY2hlZF90b2tlbnMiOiAwLAogICAgICAiYXVkaW9fdG9rZW5zIjog - MAogICAgfSwKICAgICJjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzIjogewog - ICAgICAicmVhc29uaW5nX3Rva2VucyI6IDAsCiAgICAgICJhdWRpb190b2tl - bnMiOiAwLAogICAgICAiYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMiOiAw - LAogICAgICAicmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMiOiAwCiAgICB9 - CiAgfSwKICAic2VydmljZV90aWVyIjogImRlZmF1bHQiLAogICJzeXN0ZW1f - ZmluZ2VycHJpbnQiOiAiZnBfZDNhMDgzOGZiOCIKfQo= - recorded_at: Sun, 07 Sep 2025 03:30:48 GMT + LAogICAgICAgICJjb250ZW50IjogIiMjIyBEZXNpZ24gRGV0YWlscyBUYWtl + IENlbnRlciBTdGFnZSAgXG5UaGlzIHdlZWvigJlzIGFjdGl2aXR5IHdhcyBh + bGwgYWJvdXQgdmlzdWFscyBhbmQgdXNhYmlsaXR54oCUbG9nb3MsIGxheW91 + dHMsIGFuZCB0ZXh0IHNpemVzIHdlcmUgZmxhZ2dlZCwgc2hvd2luZyB0aGUg + dGVhbSBpcyBkZWVwIGluIHRoZSB3ZWVkcyBvZiBmaW5l4oCRdHVuaW5nIHRo + ZSB1c2VyIGV4cGVyaWVuY2Ugd2hpbGUgYWxzbyBrZWVwaW5nIGFuIGV5ZSBv + biB0aGUgYmlnIG1pbGVzdG9uZTogc2hpcHBpbmcgdGhlIGFwcC4gIFxuXG4j + IyMjIFRoZSBMb2dvIERlYmF0ZSBLaWNrcyBPZmYgIFxuRGF2aWQgb3BlbmVk + IHRoZSBkaXNjdXNzaW9uIHdpdGggW2EgbmV3IGlzc3VlXSggLzczNTQ2NDc4 + NS9jYXJkcy82MTMzMjUzMzQpIGFib3V0IHRoZSBsb2dvIGJlaW5nIHRvbyBz + bWFsbCwgYW5kIGJvdGggS2V2aW4gYW5kIEpaIHdlcmUgYnJvdWdodCBpbiB0 + byB3ZWlnaCBpbi4gV2l0aCBmaXZlIGNvbW1lbnRzIGFscmVhZHksIGl04oCZ + cyBzaGFwaW5nIHVwIHRvIGJlIGEgbGl2ZWx5IGJhY2vigJFhbmTigJFmb3J0 + aC4gIFxuXG4jIyMjIEJyb2tlbiBMYXlvdXQgR2V0cyBBdHRlbnRpb24gIFxu + QSBtYWpvciBjb25jZXJuIHN1cmZhY2VkIHdpdGggW3RoZSBsYXlvdXQgaXNz + dWVdKCAvNzM1NDY0Nzg1L2NhcmRzLzk3NjkwNzIzNCksIHJlcG9ydGVkIGJ5 + IERhdmlkIGFuZCBhc3NpZ25lZCB0byBKWi4gRGF2aWQgbGF0ZXIgYWRkZWQg + YSBjb21tZW50IG5vdGluZyB0aGF0IHRleHQgb3ZlcmZsb3cgd2FzIG1lc3Np + bmcgd2l0aCB0aGUgY29udGFpbmVyLCBoaWdobGlnaHRpbmcgdGhlIHNjYWxl + IG9mIGNsZWFudXAgbmVlZGVkLiAgXG5cbiMjIyMgVGV4dCBTaXplIFNwYXJr + cyBBbm90aGVyIElzc3VlICBcbktldmluIHB1Ymxpc2hlZCBbYSBjYXJkXSgg + LzczNTQ2NDc4NS9jYXJkcy85OTkwMDgxOTkpIHBvaW50aW5nIG91dCB0aGF0 + IHRleHQgaXMgdG9vIHNtYWxsLiBUaGlzIG9uZSBtb3ZlZCBzdHJhaWdodCB0 + byDigJxJbiBwcm9ncmVzcyzigJ0gc3VnZ2VzdGluZyBpdOKAmXMgYmVpbmcg + dGFja2xlZCBxdWlja2x5LiAgXG5cbiMjIyMgQXNzaWdubWVudCBCcmluZ3Mg + TW9yZSBFeWVzIHRvIHRoZSBMb2dvICBcblRoZSBsb2dvIGlzc3VlIGhlYXRl + ZCB1cCBmdXJ0aGVyIHdoZW4gaXQgd2FzIGZvcm1hbGx5IGFzc2lnbmVkIHRv + IEtldmluIGFuZCBKWiwgc2lnbmFsaW5nIHRoYXQgaXTigJlzIG5vdCBqdXN0 + IGEgcGFzc2luZyBjb21tZW50IGJ1dCBzb21ldGhpbmcgdGhlIHRlYW0gd2Fu + dHMgc29sdmVkLiAgXG5cbiMjIyMgQSBQdXNoIFRvd2FyZCBTaGlwcGluZyAg + XG5LZXZpbiBsb2dnZWQgdGhlIHVsdGltYXRlIHJlbWluZGVy4oCUW2EgY2Fy + ZCBhYm91dCBzaGlwcGluZyB0aGUgYXBwXSggLzczNTQ2NDc4NS9jYXJkcy83 + NTY4MTU2NTIpLiBIZSBsYXRlciBjbG9zZWQgaXQgaGltc2VsZiwgbWFya2lu + ZyBhbiBvZmZpY2lhbCBtaWxlc3RvbmUgYW5kIHVuZGVyc2NvcmluZyB0aGUg + dGVhbeKAmXMgZm9yd2FyZCBtb21lbnR1bSBldmVuIGFtaWQgZGVzaWduIHR3 + ZWFrcy4gICIsCiAgICAgICAgInJlZnVzYWwiOiBudWxsLAogICAgICAgICJh + bm5vdGF0aW9ucyI6IFtdCiAgICAgIH0sCiAgICAgICJsb2dwcm9icyI6IG51 + bGwsCiAgICAgICJmaW5pc2hfcmVhc29uIjogInN0b3AiCiAgICB9CiAgXSwK + ICAidXNhZ2UiOiB7CiAgICAicHJvbXB0X3Rva2VucyI6IDE1NDksCiAgICAi + Y29tcGxldGlvbl90b2tlbnMiOiAzMzMsCiAgICAidG90YWxfdG9rZW5zIjog + MTg4MiwKICAgICJwcm9tcHRfdG9rZW5zX2RldGFpbHMiOiB7CiAgICAgICJj + YWNoZWRfdG9rZW5zIjogMCwKICAgICAgImF1ZGlvX3Rva2VucyI6IDAKICAg + IH0sCiAgICAiY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyI6IHsKICAgICAg + InJlYXNvbmluZ190b2tlbnMiOiAwLAogICAgICAiYXVkaW9fdG9rZW5zIjog + MCwKICAgICAgImFjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zIjogMCwKICAg + ICAgInJlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zIjogMAogICAgfQogIH0s + CiAgInNlcnZpY2VfdGllciI6ICJkZWZhdWx0IiwKICAic3lzdGVtX2Zpbmdl + cnByaW50IjogImZwXzllODIyZDUyMWQiCn0K + recorded_at: Sun, 07 Sep 2025 14:15:10 GMT recorded_with: VCR 6.3.1 diff --git a/test/vcr_cassettes/user/highlights_test-test_generate_weekly_highlights.yml b/test/vcr_cassettes/user/highlights_test-test_generate_weekly_highlights.yml index 342bcb217..f07e5aa57 100644 --- a/test/vcr_cassettes/user/highlights_test-test_generate_weekly_highlights.yml +++ b/test/vcr_cassettes/user/highlights_test-test_generate_weekly_highlights.yml @@ -4064,7 +4064,7 @@ http_interactions: body: encoding: UTF-8 base64_string: | - eyJtb2RlbCI6ImNoYXRncHQtNG8tbGF0ZXN0IiwibWVzc2FnZXMiOlt7InJv + eyJtb2RlbCI6ImdwdC01LWNoYXQtbGF0ZXN0IiwibWVzc2FnZXMiOlt7InJv bGUiOiJkZXZlbG9wZXIiLCJjb250ZW50IjoiSGVscCBtZSBtYWtlIHNlbnNl IG9mIHRoZSB3ZWVr4oCZcyBhY3Rpdml0eSBpbiBhIG5ld3Mgc3R5bGUgZm9y bWF0IHdpdGggYm9sZCBoZWFkbGluZXMgYW5kIHNob3J0IHN1bW1hcmllcy5c @@ -4170,32 +4170,20 @@ http_interactions: KiBDcmVhdGVkIGF0OiA8VElNRT59XG4qIFBhdGg6IC83MzU0NjQ3ODUvY2Fy ZHMvOTc2OTA3MjM0I2NvbW1lbnRfODI3NDUwNjg0XG5FTkQgT0YgQ09NTUVO VCA4Mjc0NTA2ODRcblxuRU5EIE9GIEVWRU5UIDY1NDQ3NDk3M1xuXG5cbkJF - R0lOIE9GIEVWRU5UIDY4NTg4OTI5M1xuIyMgRXZlbnQgY2FyZF9hc3NpZ25l - ZCAoQ2FyZCA2MTMzMjUzMzQpKVxuXG4qIENyZWF0ZWQgYXQ6IDxUSU1FPlxu - KiBDcmVhdGVkIGJ5OiBEYXZpZFxuXG5CRUdJTiBPRiBDQVJEIDYxMzMyNTMz - NFxuXG4qKlRpdGxlOioqIFRoZSBsb2dvIGlzbid0IGJpZyBlbm91Z2hcbioq - RGVzY3JpcHRpb246KipcblxuXG5cbiMjIyMgTWV0YWRhdGFcblxuKiBJZDog - NjEzMzI1MzM0XG4qIENyZWF0ZWQgYnk6IERhdmlkfVxuKiBBc3NpZ25lZCB0 - bzogS2V2aW4sIEpafVxuKiBXb3JrZmxvdyBzdGFnZTogVHJpYWdlXG4qIENy - ZWF0ZWQgYXQ6IDxUSU1FPn1cbiogQ2xvc2VkOiBmYWxzZVxuKiBDbG9zZWQg - Ynk6IFxuKiBDbG9zZWQgYXQ6IFxuKiBDb2xsZWN0aW9uIGlkOiA2OTMxNjk4 + R0lOIE9GIEVWRU5UIDc4NDkzNzI0OFxuIyMgRXZlbnQgY2FyZF9wdWJsaXNo + ZWQgKENhcmQgNzU2ODE1NjUyKSlcblxuKiBDcmVhdGVkIGF0OiA8VElNRT5c + biogQ3JlYXRlZCBieTogS2V2aW5cblxuQkVHSU4gT0YgQ0FSRCA3NTY4MTU2 + NTJcblxuKipUaXRsZToqKiBXZSBuZWVkIHRvIHNoaXAgdGhlIGFwcFxuKipE + ZXNjcmlwdGlvbjoqKlxuXG5cblxuIyMjIyBNZXRhZGF0YVxuXG4qIElkOiA3 + NTY4MTU2NTJcbiogQ3JlYXRlZCBieTogS2V2aW59XG4qIEFzc2lnbmVkIHRv + OiB9XG4qIFdvcmtmbG93IHN0YWdlOiBUcmlhZ2VcbiogQ3JlYXRlZCBhdDog + PFRJTUU+fVxuKiBDbG9zZWQ6IHRydWVcbiogQ2xvc2VkIGJ5OiBLZXZpblxu + KiBDbG9zZWQgYXQ6IDxUSU1FPlxuKiBDb2xsZWN0aW9uIGlkOiA2OTMxNjk4 NDBcbiogQ29sbGVjdGlvbiBuYW1lOiBXcml0ZWJvb2tcbiogTnVtYmVyIG9m - IGNvbW1lbnRzOiA1XG4qIFBhdGg6IC83MzU0NjQ3ODUvY2FyZHMvNjEzMzI1 - MzM0XG5cbkVORCBPRiBDQVJEIDYxMzMyNTMzNFxuXG5FTkQgT0YgRVZFTlQg - Njg1ODg5MjkzXG5cblxuQkVHSU4gT0YgRVZFTlQgNzg0OTM3MjQ4XG4jIyBF - dmVudCBjYXJkX3B1Ymxpc2hlZCAoQ2FyZCA3NTY4MTU2NTIpKVxuXG4qIENy - ZWF0ZWQgYXQ6IDxUSU1FPlxuKiBDcmVhdGVkIGJ5OiBLZXZpblxuXG5CRUdJ - TiBPRiBDQVJEIDc1NjgxNTY1MlxuXG4qKlRpdGxlOioqIFdlIG5lZWQgdG8g - c2hpcCB0aGUgYXBwXG4qKkRlc2NyaXB0aW9uOioqXG5cblxuXG4jIyMjIE1l - dGFkYXRhXG5cbiogSWQ6IDc1NjgxNTY1MlxuKiBDcmVhdGVkIGJ5OiBLZXZp - bn1cbiogQXNzaWduZWQgdG86IH1cbiogV29ya2Zsb3cgc3RhZ2U6IFRyaWFn - ZVxuKiBDcmVhdGVkIGF0OiA8VElNRT59XG4qIENsb3NlZDogdHJ1ZVxuKiBD - bG9zZWQgYnk6IEtldmluXG4qIENsb3NlZCBhdDogPFRJTUU+XG4qIENvbGxl - Y3Rpb24gaWQ6IDY5MzE2OTg0MFxuKiBDb2xsZWN0aW9uIG5hbWU6IFdyaXRl - Ym9va1xuKiBOdW1iZXIgb2YgY29tbWVudHM6IDFcbiogUGF0aDogLzczNTQ2 - NDc4NS9jYXJkcy83NTY4MTU2NTJcblxuRU5EIE9GIENBUkQgNzU2ODE1NjUy - XG5cbkVORCBPRiBFVkVOVCA3ODQ5MzcyNDhcbiJ9XSwic3RyZWFtIjpmYWxz - ZX0= + IGNvbW1lbnRzOiAxXG4qIFBhdGg6IC83MzU0NjQ3ODUvY2FyZHMvNzU2ODE1 + NjUyXG5cbkVORCBPRiBDQVJEIDc1NjgxNTY1MlxuXG5FTkQgT0YgRVZFTlQg + Nzg0OTM3MjQ4XG4ifV0sInN0cmVhbSI6ZmFsc2UsInRlbXBlcmF0dXJlIjox + LjB9 headers: User-Agent: - Faraday v2.13.4 @@ -4213,7 +4201,7 @@ http_interactions: message: OK headers: Date: - - Fri, 12 Sep 2025 03:30:52 GMT + - Fri, 12 Sep 2025 14:15:22 GMT Content-Type: - application/json Transfer-Encoding: @@ -4225,13 +4213,13 @@ http_interactions: Openai-Organization: - 37signals-u7qhwk Openai-Processing-Ms: - - '3079' + - '4602' Openai-Project: - proj_M0FFIqFFeNEpzhhgv64oFzt1 Openai-Version: - '2020-10-01' X-Envoy-Upstream-Service-Time: - - '3283' + - '4630' X-Ratelimit-Limit-Requests: - '10000' X-Ratelimit-Limit-Tokens: @@ -4239,22 +4227,22 @@ http_interactions: X-Ratelimit-Remaining-Requests: - '9999' X-Ratelimit-Remaining-Tokens: - - '1998554' + - '1998694' X-Ratelimit-Reset-Requests: - 6ms X-Ratelimit-Reset-Tokens: - - 43ms + - 39ms X-Request-Id: - - req_35acb8c0c6ca477e8e6c8dfb2f12c311 + - req_193226cb60ae4c94b1eb0a0f277dcd59 X-Openai-Proxy-Wasm: - v0.1 Cf-Cache-Status: - DYNAMIC Set-Cookie: - - __cf_bm=uKfiCPJgPzTn2NZMt_j0V1yHkrNEH9aCM0m9WTqmJHY-1757647852-1.0.1.1-EmBZRm4TRGVQ4Rvi_DNBvOdjvIQXToQ.dzinPTOhcA29nb7fxsLX2AC_HAaIQpn7kizSgQeBDxDBlO6rXnWyhvU0J2uocU1ASAGaASAuHSg; - path=/; expires=Fri, 12-Sep-25 04:00:52 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=BH06e9X0SanXAez8pYyzcVuh7sIKejq64.lvN46Q5_8-1757686522-1.0.1.1-LAsg71RlEXqEdvJ28hzeSBFntevEvP.061y.UOmCSob427TvmYfdlJCJzh7IR8GCMfBb1oMU0PwUM5Fa37xQLqXxXTkkdEcpIOlescBvXCU; + path=/; expires=Fri, 12-Sep-25 14:45:22 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=MUwczv5Or06sHlllf2C_b2MXAI2.mn2XytA5K6FZKNE-1757647852074-0.0.1.1-604800000; + - _cfuvid=lILIQ8LtDl5q7SUdbESututLzgDWbz8TUylL2wEzJu8-1757686522402-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload @@ -4263,65 +4251,56 @@ http_interactions: Server: - cloudflare Cf-Ray: - - 97dc540e7f9a6c49-DFW + - 97e0041f1a05c90a-MAD Alt-Svc: - h3=":443"; ma=86400 body: encoding: ASCII-8BIT base64_string: | - ewogICJpZCI6ICJjaGF0Y21wbC1DRW9tbm9EaUhRTzFSZ1M3NGcyOW5RcHA5 - TEtQTiIsCiAgIm9iamVjdCI6ICJjaGF0LmNvbXBsZXRpb24iLAogICJjcmVh - dGVkIjogMTc1NzY0Nzg0OSwKICAibW9kZWwiOiAiY2hhdGdwdC00by1sYXRl + ewogICJpZCI6ICJjaGF0Y21wbC1DRXlxVGoyd2hnRFJ0ZXJZcG9icnFUM2pF + bk5qbyIsCiAgIm9iamVjdCI6ICJjaGF0LmNvbXBsZXRpb24iLAogICJjcmVh + dGVkIjogMTc1NzY4NjUxNywKICAibW9kZWwiOiAiZ3B0LTUtY2hhdC1sYXRl c3QiLAogICJjaG9pY2VzIjogWwogICAgewogICAgICAiaW5kZXgiOiAwLAog ICAgICAibWVzc2FnZSI6IHsKICAgICAgICAicm9sZSI6ICJhc3Npc3RhbnQi - LAogICAgICAgICJjb250ZW50IjogIiMjIyBWaXN1YWwgVHdlYWtzIGFuZCBT - aGlwLVJlYWRpbmVzcyBEb21pbmF0ZSB0aGUgV2VlayAgXG5Gcm9tIGZpbmUt - dHVuaW5nIGZvbnQgc2l6ZXMgdG8gZmxhZ2dpbmcgYnJva2VuIGxheW91dHMs - IHRoaXMgd2VlayByZXZvbHZlZCBhcm91bmQgdmlzdWFsIHBvbGlzaCBhbmQg - YSBiaWctcGljdHVyZSBwdXNoIHRvIG1vdmUgdGhlIGFwcCBjbG9zZXIgdG8g - bGF1bmNoLiBBIGhhbmRmdWwgb2YgbmV3IGlzc3VlcyBvcGVuZWQgdGhlIGRv - b3IgdG8ga2V5IFVJIGFkanVzdG1lbnRzLCB3aGlsZSBvbmUgdGFzayBtYWRl - IGl0IGFsbCB0aGUgd2F5IHRvIHRoZSBmaW5pc2ggbGluZS5cblxuIyMjIyBU - d28gRXllcyBvbiB0aGUgTG9nbyAgXG5BIGNvbmNlcm4gdGhhdCBb4oCcVGhl - IGxvZ28gaXNuJ3QgYmlnIGVub3VnaOKAnV0oLzczNTQ2NDc4NS9jYXJkcy82 - MTMzMjUzMzQpIHdhcyByYWlzZWQgYnkgRGF2aWQgYW5kIHF1aWNrbHkgZ3Jh - YmJlZCBhdHRlbnRpb24uIEJvdGggS2V2aW4gYW5kIEpaIHdlcmUgYXNzaWdu - ZWQgdG8gdGFrZSBhIGxvb2ssIHNpZ25hbGluZyB0aGF0IGl04oCZcyBhIHNo - YXJlZCBwcmlvcml0eS4gSXQgcmVtYWlucyBpbiB0cmlhZ2UgZm9yIG5vdywg - d2l0aCBzZXZlcmFsIGNvbW1lbnRzIGFscmVhZHkgYXR0YWNoZWQuXG5cbiMj - IyMgTGF5b3V0IElzc3VlcyBTdXJmYWNlICBcbkEgbmV3IGNhcmQgdGl0bGVk - IFvigJxMYXlvdXQgaXMgYnJva2Vu4oCdXSgvNzM1NDY0Nzg1L2NhcmRzLzk3 - NjkwNzIzNCkgc3VnZ2VzdHMgc29tZSB2aXN1YWwgZGlzYXJyYXkgaW4gdGhl - IFVJLiBEYXZpZCBub3RlZCBpbiBhIGNvbW1lbnQgdGhhdCBcInRoZSB0ZXh0 - IGlzIG92ZXJmbG93aW5nIHRoZSBjb250YWluZXJcIiDigJQgYSBjbGVhciBz - aWduIHNvbWV0aGluZydzIG1pc2FsaWduZWQuIFRoaXMgb25l4oCZcyBhbHNv - IGluIHRyaWFnZSBhbmQgYXNzaWduZWQgdG8gSlogZm9yIGZvbGxvdy11cC5c - blxuIyMjIyBUaGUgVGV4dCBJcyBDcmFtcGVkICBcbk1lYW53aGlsZSwgS2V2 - aW4gZmxhZ2dlZCBhIHNlcGFyYXRlIHJlYWRhYmlsaXR5IGlzc3VlOiBb4oCc - VGhlIHRleHQgaXMgdG9vIHNtYWxs4oCdXSgvNzM1NDY0Nzg1L2NhcmRzLzk5 - OTAwODE5OSkuIFRoYXQgY2FyZCBza2lwcGVkIHN0cmFpZ2h0IHRvIFwiSW4g - cHJvZ3Jlc3MsXCIgaW5kaWNhdGluZyBpdOKAmXMgYWxyZWFkeSBiZWluZyB0 - YWNrbGVkLiBObyBmb3JtYWwgYXNzaWduZWVzIHlldCwgYnV0IHNvbWVvbmXi - gJlzIGdvdCBhbiBleWUgb24gZml4aW5nIGl0LlxuXG4jIyMjIFRoZSBGaW5h - bCBQdXNoIEdvdCBDbG9zZWQgIFxuT25lIGltcG9ydGFudCB0YXNrIHNhdyBj - bG9zdXJlIHRoaXMgd2VlazogW+KAnFdlIG5lZWQgdG8gc2hpcCB0aGUgYXBw - 4oCdXSgvNzM1NDY0Nzg1L2NhcmRzLzc1NjgxNTY1Mikgd2FzIG9wZW5lZCBh - bmQgdGhlbiB3cmFwcGVkIHVwIGJ5IEtldmluLCBzdWdnZXN0aW5nIGEgYnJv - YWRlciByZWFkaW5lc3MgbWlsZXN0b25lLiBUaGF0IGNsb3N1cmUgaGludHMg - d2UgbWlnaHQgYmUganVzdCBhYm91dCB0aGVyZeKAlG9yIGF0IGxlYXN0IHRo - aW5raW5nIHNlcmlvdXNseSBhYm91dCBsYXVuY2ggdGltaW5nLiIsCiAgICAg - ICAgInJlZnVzYWwiOiBudWxsLAogICAgICAgICJhbm5vdGF0aW9ucyI6IFtd - CiAgICAgIH0sCiAgICAgICJsb2dwcm9icyI6IG51bGwsCiAgICAgICJmaW5p - c2hfcmVhc29uIjogInN0b3AiCiAgICB9CiAgXSwKICAidXNhZ2UiOiB7CiAg - ICAicHJvbXB0X3Rva2VucyI6IDE3MzUsCiAgICAiY29tcGxldGlvbl90b2tl - bnMiOiAzNTQsCiAgICAidG90YWxfdG9rZW5zIjogMjA4OSwKICAgICJwcm9t - cHRfdG9rZW5zX2RldGFpbHMiOiB7CiAgICAgICJjYWNoZWRfdG9rZW5zIjog - MCwKICAgICAgImF1ZGlvX3Rva2VucyI6IDAKICAgIH0sCiAgICAiY29tcGxl - dGlvbl90b2tlbnNfZGV0YWlscyI6IHsKICAgICAgInJlYXNvbmluZ190b2tl - bnMiOiAwLAogICAgICAiYXVkaW9fdG9rZW5zIjogMCwKICAgICAgImFjY2Vw - dGVkX3ByZWRpY3Rpb25fdG9rZW5zIjogMCwKICAgICAgInJlamVjdGVkX3By - ZWRpY3Rpb25fdG9rZW5zIjogMAogICAgfQogIH0sCiAgInNlcnZpY2VfdGll - ciI6ICJkZWZhdWx0IiwKICAic3lzdGVtX2ZpbmdlcnByaW50IjogImZwX2Qz - YTA4MzhmYjgiCn0K - recorded_at: Sun, 07 Sep 2025 03:30:48 GMT + LAogICAgICAgICJjb250ZW50IjogIiMjIyBEZXNpZ24gRGV0YWlscyBUYWtl + IENlbnRlciBTdGFnZSAgXG5UaGlzIHdlZWsgd2FzIGFsbCBhYm91dCB0aGUg + bGl0dGxlIHRoaW5ncyBhZGRpbmcgdXDigJRsb2dvcywgdGV4dCBzaXplcywg + YW5kIGxheW91dHMgYWxsIHNwYXJrZWQgbmV3IGRpc2N1c3Npb25zIGFuZCB0 + YXNrcywgd2hpbGUgYSBwdXNoIHRvIGFjdHVhbGx5IHNoaXAgdGhlIGFwcCBm + aW5hbGx5IHNhdyBtb3ZlbWVudC5cblxuIyMjIyBMb2dvIEdldHMgQXR0ZW50 + aW9uICBcbkRhdmlkIHJhaXNlZCBhIHZpc3VhbCBjb25jZXJuIHdpdGggW+KA + nFRoZSBsb2dvIGlzbid0IGJpZyBlbm91Z2jigJ1dKC83MzU0NjQ3ODUvY2Fy + ZHMvNjEzMzI1MzM0KSwgYXNzaWduaW5nIGJvdGggS2V2aW4gYW5kIEpaIHRv + IHRha2UgYSBsb29rLiBUaGUgY2FyZCBxdWlja2x5IGJlY2FtZSBhIGJ1c3kg + dGhyZWFkIHdpdGggbXVsdGlwbGUgY29tbWVudHMuXG5cbiMjIyMgTGF5b3V0 + IFByb2JsZW1zIFN1cmZhY2UgIFxuQW5vdGhlciB0aWNrZXQgZnJvbSBEYXZp + ZCBmbGFnZ2VkIHRoYXQgdGhlIFvigJxMYXlvdXQgaXMgYnJva2Vu4oCdXSgv + NzM1NDY0Nzg1L2NhcmRzLzk3NjkwNzIzNCkuIEpaIHRvb2sgb3duZXJzaGlw + LCBhbmQgY29udmVyc2F0aW9uIGZvbGxvd2VkIHdoZW4gRGF2aWQgbm90ZWQg + dGhhdCB0ZXh0IHdhcyBvdmVyZmxvd2luZyBpdHMgY29udGFpbmVyLlxuXG4j + IyMjIFRleHQgU2l6ZSBGZWVscyBPZmYgIFxuS2V2aW4gY2hpbWVkIGluIHdp + dGggaGlzIG93biBkZXNpZ24gY3JpdGlxdWUsIG9wZW5pbmcgW+KAnFRoZSB0 + ZXh0IGlzIHRvbyBzbWFsbOKAnV0oLzczNTQ2NDc4NS9jYXJkcy85OTkwMDgx + OTkpLiBUaGlzIG9uZSBpcyBhbHJlYWR5IG1hcmtlZCAqaW4gcHJvZ3Jlc3Mq + LCBzbyBmaXhlcyBtYXkgYmUgb24gdGhlIHdheSBzb29uLlxuXG4jIyMjIFNo + aXBwaW5nIEJlY29tZXMgYSBQcmlvcml0eSAgXG5LZXZpbiBhbHNvIHB1Ymxp + c2hlZCBb4oCcV2UgbmVlZCB0byBzaGlwIHRoZSBhcHDigJ1dKC83MzU0NjQ3 + ODUvY2FyZHMvNzU2ODE1NjUyKS4gVW5saWtlIHRoZSBkZXNpZ24gbml0cGlj + a3MsIHRoaXMgb25lIGN1dCB0byB0aGUgY2hhc2XigJRpdCB3YXMgcXVpY2ts + eSBjbG9zZWQgYnkgS2V2aW4gYSB3ZWVrIGxhdGVyLCBzaWduYWxpbmcgYXQg + bGVhc3Qgc29tZSBkZWNpc2l2ZSBtb3ZlbWVudCBvbiByZWxlYXNlLiIsCiAg + ICAgICAgInJlZnVzYWwiOiBudWxsLAogICAgICAgICJhbm5vdGF0aW9ucyI6 + IFtdCiAgICAgIH0sCiAgICAgICJsb2dwcm9icyI6IG51bGwsCiAgICAgICJm + aW5pc2hfcmVhc29uIjogInN0b3AiCiAgICB9CiAgXSwKICAidXNhZ2UiOiB7 + CiAgICAicHJvbXB0X3Rva2VucyI6IDE1NDksCiAgICAiY29tcGxldGlvbl90 + b2tlbnMiOiAyNjAsCiAgICAidG90YWxfdG9rZW5zIjogMTgwOSwKICAgICJw + cm9tcHRfdG9rZW5zX2RldGFpbHMiOiB7CiAgICAgICJjYWNoZWRfdG9rZW5z + IjogMTUzNiwKICAgICAgImF1ZGlvX3Rva2VucyI6IDAKICAgIH0sCiAgICAi + Y29tcGxldGlvbl90b2tlbnNfZGV0YWlscyI6IHsKICAgICAgInJlYXNvbmlu + Z190b2tlbnMiOiAwLAogICAgICAiYXVkaW9fdG9rZW5zIjogMCwKICAgICAg + ImFjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zIjogMCwKICAgICAgInJlamVj + dGVkX3ByZWRpY3Rpb25fdG9rZW5zIjogMAogICAgfQogIH0sCiAgInNlcnZp + Y2VfdGllciI6ICJkZWZhdWx0IiwKICAic3lzdGVtX2ZpbmdlcnByaW50Ijog + ImZwXzllODIyZDUyMWQiCn0K + recorded_at: Sun, 07 Sep 2025 14:15:17 GMT recorded_with: VCR 6.3.1