verstak/AGENTS.md

3.6 KiB
Raw Blame History

Session summary

Bugs fixed (this session)

  1. webkit2_41 build tag — binary wouldn't start without it. Added to build instructions.
  2. Sidebar refreshreloadTreePreservingExpanded patches children in-place so expand/collapse state stays intact.
  3. Context menu off-screen — changed to position: fixed with cursor coordinates.
  4. "Show in explorer" only for folder typesOpenFolder in backend falls back to file record path for TypeFile nodes.
  5. Context menu not closing on actionhandleShowInFolder calls closeMenu().
  6. Wrong folder when opening file's parent folderOpenFolder checks n.FsPath == "" for TypeFile and uses first file record path.
  7. Tab highlight not updating visually — was using class={tabClass(tab.id)} which didn't trigger reactive class updates in Svelte. Switched to class="tab" class:active={activeTab === tab.id}.
  8. Journal table expand/collapse — added explicit ▸/▾ toggle column so it's clear rows are expandable.
  9. Per-node worklog entries — made entries expandable with ▸/▾, showing details + billable/approximate tags.
  10. Manual worklog entry form — converted inline form to modal dialog ("+ Добавить запись") with all fields: date, summary, minutes, details, billable, approximate.
  11. "С подзадачами" → "Учитывать вложенные дела" — renamed, now hidden when no node selected.
  12. Filter/export layout — split into separate "Фильтры" and "Экспорт отчёта" sections with headings.
  13. Suggestion events — added "Показать в проводнике" button for file-type events in suggestion detail.
  14. Removed duplicate i18n keys in ru.js (worklog.suggestions, worklog.apply).
  15. Removed unused CSS (.journal-filters, .wl-meta, .worklog-form).
  16. Added openNodeFolder(nodeOrId) — accepts both string ID and node object.
  17. Added resetJournalFilters() — resets all filters and reloads.
  18. Source field — added worklog_entries.source column (migration 014). Values: manual, suggestion. Old entries default to 'unknown'.
  19. Suggestions now use worklog_entry_events instead of HasTodayEntries — only events already linked to worklog entries are excluded. Repeated activity on the same node today now produces new suggestions.
  20. Activity target navigation — clicking activity events for notes opens the note tab and loads the specific note. File events open the files tab.
  21. Source display — detail sections now show accurate source: "Ручная запись", "Из предложения", "Из предложения, но связанные события отсутствуют", or "Источник неизвестен".

Key patterns

  • Always use explicit toggle icons (▸/▾) on expandable rows.
  • CreateWorklogFull supports all fields: nodeID, summary, details, date, minutes, approximate, billable.
  • openNodeFolder(id) accepts a string ID or a node object.
  • GetSuggestions filters out only events already in worklog_entry_events, not entire nodes.
  • New worklog entries get source=manual via Add/AddWithDate; suggestion entries get source=suggestion via AcceptSuggestionWith.

Build instructions

GUI binary (Wails v2)

# From project root:
cp -r frontend/dist/* cmd/verstak-gui/frontend-dist/
go build -tags "webkit2_41 desktop production" -ldflags="-s -w" -o build/verstak-gui-linux-amd64 ./cmd/verstak-gui/

Server binary

go build -ldflags="-s -w" -o build/verstak-server-linux-amd64 ./cmd/verstak-server/