Problem
Chrome persists agent conversations and side-panel chat HTML across service worker restarts via chrome.storage.session (agentConv:<tabId>, tabChat:<tabId>). Firefox does not — conversations and scratchpad-related UI state live only in memory on the background page.
From src/firefox/ARCHITECTURE.md:
Firefox does not — conversations live only in memory on the background page and are lost when the sidebar closes or the background page unloads.
This is also listed in TODOs.md §2 as an explicit parity gap.
User impact (especially with Firefox AMO listing):
- Close sidebar → lose chat
- Background page reload → lose in-progress context
- Scratchpad / multi-step Act runs feel fragile compared to Chrome
- Bad first impression for new Firefox users
Proposed solution
Mirror Chrome’s persistence model on Firefox using browser.storage.session (available in Firefox 115+):
| Layer |
Chrome (today) |
Firefox (target) |
| Agent message array |
agent.js → storage.session key agentConv:<tabId> |
Same key shape + hydrate on processMessage |
| Side panel HTML |
sidepanel.js → tabChat:<tabId> |
Same |
Clear on /reset |
Removes session keys |
Same |
| Tab close |
background.js removes tabChat:<tabId> |
Same |
Notes:
agent.js already has a no-op _persist stub on Firefox — replace with real browser.storage.session writes (debounced like Chrome).
- Keep in-memory cache for hot path; session is backup + sidebar restore.
- Document any Firefox version floor in README if needed.
Verification
Scope estimate
~150–250 lines across src/firefox/src/agent/agent.js, src/firefox/src/ui/sidepanel.js, src/firefox/src/background.js, docs. No new manifest permissions (storage already granted).
Labels: help wanted, good first issue (if scoped to persistence only)
Happy to implement if assigned — natural follow-up after Chrome/Firefox parity work on planner + history tools.
Problem
Chrome persists agent conversations and side-panel chat HTML across service worker restarts via
chrome.storage.session(agentConv:<tabId>,tabChat:<tabId>). Firefox does not — conversations and scratchpad-related UI state live only in memory on the background page.From
src/firefox/ARCHITECTURE.md:This is also listed in
TODOs.md§2 as an explicit parity gap.User impact (especially with Firefox AMO listing):
Proposed solution
Mirror Chrome’s persistence model on Firefox using
browser.storage.session(available in Firefox 115+):agent.js→storage.sessionkeyagentConv:<tabId>processMessagesidepanel.js→tabChat:<tabId>/resetbackground.jsremovestabChat:<tabId>Notes:
agent.jsalready has a no-op_persiststub on Firefox — replace with realbrowser.storage.sessionwrites (debounced like Chrome).Verification
/resetclears session + memorytabChat:<tabId>; agent conv policy matches Chromenpm test— unit tests for persist/hydrate helpers if extractedScope estimate
~150–250 lines across
src/firefox/src/agent/agent.js,src/firefox/src/ui/sidepanel.js,src/firefox/src/background.js, docs. No new manifest permissions (storagealready granted).Labels:
help wanted,good first issue(if scoped to persistence only)Happy to implement if assigned — natural follow-up after Chrome/Firefox parity work on planner + history tools.