48 lines
3.6 KiB
Markdown
48 lines
3.6 KiB
Markdown
# Session summary
|
||
|
||
## Bugs fixed (this session)
|
||
1. **webkit2_41 build tag** — binary wouldn't start without it. Added to build instructions.
|
||
2. **Sidebar refresh** — `reloadTreePreservingExpanded` 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 types** — `OpenFolder` in backend falls back to file record path for `TypeFile` nodes.
|
||
5. **Context menu not closing on action** — `handleShowInFolder` calls `closeMenu()`.
|
||
6. **Wrong folder when opening file's parent folder** — `OpenFolder` 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)
|
||
|
||
```bash
|
||
# 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
|
||
|
||
```bash
|
||
go build -ldflags="-s -w" -o build/verstak-server-linux-amd64 ./cmd/verstak-server/
|
||
```
|