v0.28.0 3cb3770

homepage.go RawHistoryFolder

1package port
2
3import (
4	"context"
5	"time"
6
7	"github.com/bnema/dumber/internal/domain/entity"
8)
9
10// HistorySearchInput holds search parameters (moved from usecase.SearchInput).
11type HistorySearchInput struct {
12	Query string
13	Limit int
14}
15
16// HistorySearchOutput holds search results (moved from usecase.SearchOutput).
17type HistorySearchOutput struct {
18	Matches []entity.HistoryMatch
19}
20
21// HomepageHistory provides history operations needed by the WebUI homepage handlers.
22type HomepageHistory interface {
23	GetRecent(ctx context.Context, limit, offset int) ([]*entity.HistoryEntry, error)
24	Search(ctx context.Context, input HistorySearchInput) (*HistorySearchOutput, error)
25	Delete(ctx context.Context, id int64) error
26	ClearAll(ctx context.Context) error
27	ClearOlderThan(ctx context.Context, before time.Time) error
28	GetAnalytics(ctx context.Context) (*entity.HistoryAnalytics, error)
29	GetDomainStats(ctx context.Context, limit int) ([]*entity.DomainStat, error)
30	DeleteByDomain(ctx context.Context, domain string) error
31}
32
33// HomepageFavorites provides favorites/folders/tags operations
34// needed by the WebUI homepage handlers.
35type HomepageFavorites interface {
36	GetAll(ctx context.Context) ([]*entity.Favorite, error)
37	SetShortcut(ctx context.Context, id entity.FavoriteID, key *int) error
38	GetByShortcut(ctx context.Context, key int) (*entity.Favorite, error)
39	Move(ctx context.Context, id entity.FavoriteID, folderID *entity.FolderID) error
40	GetAllFolders(ctx context.Context) ([]*entity.Folder, error)
41	CreateFolder(ctx context.Context, name string, parentID *entity.FolderID) (*entity.Folder, error)
42	DeleteFolder(ctx context.Context, id entity.FolderID) error
43	UpdateFolder(ctx context.Context, id entity.FolderID, name, icon string) error
44	GetAllTags(ctx context.Context) ([]*entity.Tag, error)
45	AddTag(ctx context.Context, name, color string) (*entity.Tag, error)
46	DeleteTag(ctx context.Context, id entity.TagID) error
47	UpdateTag(ctx context.Context, id entity.TagID, name, color string) error
48	TagFavorite(ctx context.Context, favID entity.FavoriteID, tagID entity.TagID) error
49	UntagFavorite(ctx context.Context, favID entity.FavoriteID, tagID entity.TagID) error
50}

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 8

Tags 42

↑↓ moveenter openesc close