@@ -7,6 +7,23 @@ local virtualize = require('opencode.ui.renderer.virtualize')
77
88local M = {}
99
10+ local function is_idle_render ()
11+ return state .jobs .is_running () == false
12+ end
13+
14+ local function get_effective_max_messages ()
15+ if not is_idle_render () then
16+ return nil
17+ end
18+
19+ local max_messages = config .ui .output .max_rendered_messages
20+ if type (max_messages ) ~= ' number' or max_messages <= 0 then
21+ return nil
22+ end
23+
24+ return max_messages
25+ end
26+
1027local function same_block_output (left , right )
1128 if left == right then
1229 return true
@@ -81,23 +98,20 @@ local function same_visible_render(left, right)
8198 end
8299 end
83100
84- return (left and left .start_line_offset or 0 ) == (right and right .start_line_offset or 0 )
85- and (left and left .total_line_count or 0 ) == (right and right .total_line_count or 0 )
101+ return (left and left .total_line_count or 0 ) == (right and right .total_line_count or 0 )
86102 and (left and left .visible_line_count or 0 ) == (right and right .visible_line_count or 0 )
87103 and (left and left .start_index or 1 ) == (right and right .start_index or 1 )
88104 and (left and left .end_index or # left_blocks ) == (right and right .end_index or # right_blocks )
89105 and (left and left .hidden_message_count or 0 ) == (right and right .hidden_message_count or 0 )
90106end
91107
92108local function get_visible_message_id_set_for_tail (messages )
93- local max_messages = config . ui . output . max_rendered_messages
94- if type ( max_messages ) ~= ' number ' or max_messages <= 0 then
109+ local max_messages = get_effective_max_messages ()
110+ if max_messages == nil then
95111 return nil
96112 end
97113
98- if config .ui .output .max_rendered_lines ~= nil then
99- return nil
100- end
114+ -- no-op: max_rendered_lines support removed
101115
102116 local visible_ids = {}
103117 local visible_count = math.min (max_messages , # (messages or {}))
@@ -114,12 +128,12 @@ local function get_visible_message_id_set_for_tail(messages)
114128 return visible_ids
115129end
116130
117- local function snapshot_affects_visible_tail (snapshot , messages , viewport_request )
131+ local function snapshot_affects_visible_tail (snapshot , messages )
118132 if not snapshot then
119133 return true
120134 end
121135
122- if snapshot .full_render == true or viewport_request ~= nil then
136+ if snapshot .full_render == true then
123137 return true
124138 end
125139
@@ -167,24 +181,18 @@ local function find_revert_index(messages)
167181end
168182
169183--- @param messages OpencodeMessage[]
170- --- @param viewport_request ? { scroll_top ?: integer , win_height ?: integer , overscan ?: integer , view ?: table }
171184--- @return {
172185--- blocks: RenderBlock[],
173186--- start_index: integer,
174187--- end_index: integer,
175- --- start_line_offset: integer,
176188--- hidden_block_count: integer,
177- --- leading_hidden_block_count: integer,
178- --- trailing_hidden_block_count: integer,
179189--- hidden_message_count: integer,
180- --- leading_hidden_message_count: integer,
181- --- trailing_hidden_message_count: integer,
182190--- total_line_count: integer,
183191--- visible_line_count: integer
184192--- }
185- function M .plan_visible_render (messages , viewport_request )
193+ function M .plan_visible_render (messages )
186194 local revert_index = find_revert_index (messages )
187- local max_messages = config . ui . output . max_rendered_messages
195+ local max_messages = get_effective_max_messages ()
188196
189197 local visible_messages = messages
190198 if revert_index then
@@ -200,7 +208,7 @@ function M.plan_visible_render(messages, viewport_request)
200208 end
201209
202210 local base_blocks = session_view .build_blocks (visible_messages , {
203- max_messages = viewport_request and nil or max_messages ,
211+ max_messages = max_messages ,
204212 get_child_parts = function (session_id )
205213 return ctx .render_state :get_child_session_parts (session_id )
206214 end ,
@@ -211,11 +219,10 @@ function M.plan_visible_render(messages, viewport_request)
211219 })
212220
213221 local visible_render = virtualize .select_visible_blocks (base_blocks , {
214- max_lines = viewport_request and nil or config .ui .output .max_rendered_lines ,
215- viewport = viewport_request ,
222+ max_messages = max_messages ,
216223 })
217224
218- if not viewport_request and tail_hidden_message_count > 0 then
225+ if tail_hidden_message_count > 0 then
219226 local hidden_block = overlays .render_hidden_history ({
220227 hidden_count = tail_hidden_message_count ,
221228 })
@@ -225,9 +232,7 @@ function M.plan_visible_render(messages, viewport_request)
225232 end
226233 end
227234
228- if not viewport_request then
229- visible_render .hidden_message_count = tail_hidden_message_count
230- end
235+ visible_render .hidden_message_count = tail_hidden_message_count
231236
232237 return visible_render
233238end
@@ -282,17 +287,16 @@ end
282287--- @param snapshot ? { full_render ?: boolean , dirty_messages ?: table<string , boolean> , dirty_parts ?: table<string , boolean> }
283288--- @param prev_visible_render ? { blocks ?: RenderBlock[] }
284289--- @param messages OpencodeMessage[]
285- --- @param viewport_request ? { scroll_top ?: integer , win_height ?: integer , overscan ?: integer , view ?: table }
286290--- @return { strategy : ' noop' | ' full' | ' patch' , visible_render : table , patch ?: table }
287- function M .plan_update (snapshot , prev_visible_render , messages , viewport_request )
288- if snapshot_affects_visible_tail (snapshot , messages , viewport_request ) == false then
291+ function M .plan_update (snapshot , prev_visible_render , messages )
292+ if snapshot_affects_visible_tail (snapshot , messages ) == false then
289293 return {
290294 strategy = ' noop' ,
291295 visible_render = prev_visible_render or { blocks = {} },
292296 }
293297 end
294298
295- local next_visible_render = M .plan_visible_render (messages , viewport_request )
299+ local next_visible_render = M .plan_visible_render (messages )
296300 return M .plan_apply (prev_visible_render , next_visible_render )
297301end
298302
0 commit comments