11local state = require (' opencode.state' )
22local renderer = require (' opencode.ui.renderer' )
3- local ui = require (' opencode.ui.ui' )
4- local config_file = require (' opencode.config_file' )
53local helpers = require (' tests.helpers' )
64local output_window = require (' opencode.ui.output_window' )
75
@@ -12,7 +10,6 @@ M.current_index = 0
1210M .timer = nil
1311M .last_loaded_file = nil
1412M .headless_mode = false
15- M .restore_time_ago = nil
1613
1714function M .load_events (file_path )
1815 file_path = file_path or ' tests/data/simple-session.json'
@@ -106,6 +103,7 @@ function M.replay_all(delay_ms)
106103 delay_ms = delay_ms or 50
107104
108105 if M .timer then
106+ --- @diagnostic disable-next-line : undefined-field
109107 M .timer :stop ()
110108 M .timer = nil
111109 end
@@ -116,12 +114,14 @@ function M.replay_all(delay_ms)
116114 end
117115
118116 M .timer = vim .loop .new_timer ()
117+ --- @diagnostic disable-next-line : undefined-field
119118 M .timer :start (
120119 0 ,
121120 delay_ms ,
122121 vim .schedule_wrap (function ()
123122 if M .current_index >= # M .events then
124123 if M .timer then
124+ --- @diagnostic disable-next-line : undefined-field
125125 M .timer :stop ()
126126 M .timer = nil
127127 end
139139
140140function M .replay_stop ()
141141 if M .timer then
142+ --- @diagnostic disable-next-line : undefined-field
142143 M .timer :stop ()
143144 M .timer = nil
144145 vim .notify (' Replay stopped at event ' .. M .current_index .. ' /' .. # M .events , vim .log .levels .INFO )
@@ -210,6 +211,21 @@ function M.save_output(filename)
210211 return snapshot
211212end
212213
214+ function M .replay_full_session ()
215+ if # M .events == 0 then
216+ vim .notify (' No events loaded. Use :ReplayLoad first.' , vim .log .levels .WARN )
217+ return false
218+ end
219+
220+ local session_data = helpers .load_session_from_events (M .events )
221+
222+ renderer .reset ()
223+ renderer ._render_full_session_data (session_data )
224+
225+ vim .notify (' Rendered full session from loaded events' , vim .log .levels .INFO )
226+ return true
227+ end
228+
213229function M .dump_buffer_and_quit ()
214230 vim .schedule (function ()
215231 if not state .windows or not state .windows .output_buf then
@@ -269,23 +285,29 @@ function M.start(opts)
269285 ' Streaming Renderer Replay' ,
270286 ' ' ,
271287 ' Use :ReplayLoad [file] to load event data' ,
288+ ' Use :ReplayFullSession to render loaded events using full session mode' ,
272289 ' ' ,
273290 ' Commands:' ,
274- ' :ReplayLoad [file] - Load events (default: tests/data/simple-session.json)' ,
275- " :ReplayNext [step] - Replay next [step] event(s) (default 1) (<leader>n or '>' )" ,
276- ' :ReplayAll [ms] - Replay all events with delay (default 50ms) (<leader>a)' ,
277- ' :ReplayStop - Stop auto-replay (<leader>s)' ,
278- ' :ReplayReset - Reset to beginning (<leader>r)' ,
279- ' :ReplayClear - Clear output buffer (<leader>c)' ,
280- ' :ReplaySave [file] - Save snapshot (auto-derives from loaded file)' ,
281- ' :ReplayStatus - Show status' ,
291+ ' :ReplayLoad [file] - Load events (default: tests/data/simple-session.json)' ,
292+ ' :ReplayFullSession - Render loaded events using full session mode' ,
293+ " :ReplayNext [step] - Replay next [step] event(s) (default 1) (<leader>n or '>' )" ,
294+ ' :ReplayAll [ms] - Replay all events with delay (default 50ms) (<leader>a)' ,
295+ ' :ReplayStop - Stop auto-replay (<leader>s)' ,
296+ ' :ReplayReset - Reset to beginning (<leader>r)' ,
297+ ' :ReplayClear - Clear output buffer (<leader>c)' ,
298+ ' :ReplaySave [file] - Save snapshot (auto-derives from loaded file)' ,
299+ ' :ReplayStatus - Show status' ,
282300 })
283301
284302 vim .api .nvim_create_user_command (' ReplayLoad' , function (cmd_opts )
285303 local file = cmd_opts .args ~= ' ' and cmd_opts .args or nil
286304 M .load_events (file )
287305 end , { nargs = ' ?' , desc = ' Load event data file' , complete = ' file' })
288306
307+ vim .api .nvim_create_user_command (' ReplayFullSession' , function ()
308+ M .replay_full_session ()
309+ end , { desc = ' Render loaded events using full session mode' })
310+
289311 vim .api .nvim_create_user_command (' ReplayNext' , function (cmd_opts )
290312 local steps = cmd_opts .args ~= ' ' and cmd_opts .args or nil
291313 M .replay_next (steps )
0 commit comments