Skip to content

v0.7.0 — Dual-View Session Picker + Startup Focus Return

Choose a tag to compare

@CuriousTank CuriousTank released this 28 Jul 02:35
· 4 commits to main since this release

What's New

✨ Dual-View Session Picker: Recent / Project

The "Open from Session" panel now has a segmented control toggle at the top:

  • ⏱ Recent — flat list sorted by time (existing behaviour, refined)
  • 📁 Project — sessions grouped by project directory in a collapsible accordion

By Project View

  • Sessions clustered by directory field, ranked by most recent activity (max(time_updated))
  • Top 5 project paths shown as collapsible groups; remaining sessions merged into a single 📦 Other group
  • Each group header shows: chevron ▼/▶ + 📁 basename + active status dot + N sessions · time
  • Top 1 group auto-expanded on open; click any header to toggle
  • Session cards inside groups are simplified (title + time only — path is in the header)
  • Other group cards include the project basename since paths differ
  • View mode preference persisted to settings.json

Bug Fixes in Session Panel

  • Chevron rendering: drawn as painted triangle via egui::Shape::convex_polygon instead of Unicode glyph (avoids tofu/missing-glyph boxes)
  • Missing sessions: DB query limit raised from 10 → 50 for better clustering coverage (Recent view still displays top 20)
  • Empty titles: now show "Untitled session" instead of blank card rows

✨ Startup Focus Return

When the widget launches, the window manager (Mutter/GNOME Shell) steals keyboard focus and assigns it to the widget window. This is now fixed:

  1. Before the widget window is mapped, the currently active window is captured via _NET_ACTIVE_WINDOW X11 property
  2. For 500ms after launch, each frame checks if focus has been stolen to the widget
  3. Once detected, focus is immediately restored to the previous window via XSetInputFocus + _NET_ACTIVE_WINDOW ClientMessage

Your terminal/editor keeps focus — the widget stays visually present but never interrupts your typing.

📦 Install

dpkg -i opencode-traffic-light_0.7.0_amd64.deb

Requires: libx11-6, libxcb1, libxi6, libxext6, libxdo3, libgtk-3-0, libappindicator3-1