detached 998b312

Merge pull request 'chore(deps): update Go dependencies and templ to v0.3.1070' (#6) from chore/deps-update-2026-10 into main

commit
998b3121ae5ce44025bd23168ddc1d84c51248c1
author
bnema · · 2026-10-14 09:31 UTC
merge of
1983990 + 031f2c5 · diff against the first parent
signature
SSH UnverifiedSHA256:VOCA5lYARHcbKDZ7GhTV45VmcjWnJ6ZQIBazj17LivA The key is unknown
9 files · +271 -297
M go.mod +19 -21
@@ -3,8 +3,8 @@ module github.com/bnema/dumber
33 go 1.27
44
55 require (
6- github.com/a-h/templ v0.3.1020
7- github.com/andybalholm/brotli v1.2.5
6+ github.com/a-h/templ v0.3.1070
7+ github.com/andybalholm/brotli v1.2.6
88 github.com/bnema/purego v0.13.0-bnema.1
99 github.com/bnema/purego-cef v0.14.4
1010 github.com/bnema/purego-cef2gtk v0.11.4
@@ -16,17 +16,17 @@ require (
1616 github.com/charmbracelet/bubbletea v1.3.10
1717 github.com/charmbracelet/lipgloss v1.1.0
1818 github.com/fsnotify/fsnotify v1.10.1
19- github.com/godbus/dbus/v5 v5.2.2
19+ github.com/godbus/dbus/v5 v5.2.4
2020 github.com/pelletier/go-toml/v2 v2.4.3
21- github.com/pressly/goose/v3 v3.28.0
21+ github.com/pressly/goose/v3 v3.29.0
2222 github.com/rs/zerolog v1.35.1
2323 github.com/spf13/cobra v1.10.2
2424 github.com/spf13/pflag v1.0.10
2525 github.com/spf13/viper v1.21.0
2626 github.com/stretchr/testify v1.12.1
27- golang.org/x/image v0.46.0
28- golang.org/x/net v0.59.0
29- golang.org/x/sys v0.48.0
27+ golang.org/x/image v0.47.0
28+ golang.org/x/net v0.61.0
29+ golang.org/x/sys v0.49.0
3030 gopkg.in/yaml.v3 v3.0.1
3131 )
3232
@@ -36,7 +36,7 @@ require (
3636 github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
3737 github.com/cenkalti/backoff/v4 v4.3.0 // indirect
3838 github.com/charmbracelet/colorprofile v0.4.3 // indirect
39- github.com/charmbracelet/x/ansi v0.11.7 // indirect
39+ github.com/charmbracelet/x/ansi v0.11.9 // indirect
4040 github.com/charmbracelet/x/cellbuf v0.0.15 // indirect
4141 github.com/charmbracelet/x/exp/golden v0.0.0-20260511125431-fe5d686e0c99 // indirect
4242 github.com/charmbracelet/x/term v0.2.2 // indirect
@@ -47,13 +47,12 @@ require (
4747 github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect
4848 github.com/fatih/color v1.19.0 // indirect
4949 github.com/go-viper/mapstructure/v2 v2.5.0 // indirect
50- github.com/google/go-cmp v0.7.0 // indirect
5150 github.com/inconshreveable/mousetrap v1.1.0 // indirect
52- github.com/lucasb-eyer/go-colorful v1.4.0 // indirect
53- github.com/mattn/go-colorable v0.1.14 // indirect
51+ github.com/lucasb-eyer/go-colorful v1.4.1 // indirect
52+ github.com/mattn/go-colorable v0.1.16 // indirect
5453 github.com/mattn/go-isatty v0.0.24 // indirect
5554 github.com/mattn/go-localereader v0.0.1 // indirect
56- github.com/mattn/go-runewidth v0.0.23 // indirect
55+ github.com/mattn/go-runewidth v0.0.31 // indirect
5756 github.com/mfridman/interpolate v0.0.2 // indirect
5857 github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect
5958 github.com/muesli/cancelreader v0.2.2 // indirect
@@ -63,22 +62,21 @@ require (
6362 github.com/rogpeppe/go-internal v1.14.1 // indirect
6463 github.com/russross/blackfriday/v2 v2.1.0 // indirect
6564 github.com/sagikazarmark/locafero v0.12.0 // indirect
66- github.com/sahilm/fuzzy v0.1.2 // indirect
67- github.com/sethvargo/go-retry v0.4.0 // indirect
65+ github.com/sahilm/fuzzy v0.1.3 // indirect
66+ github.com/sethvargo/go-retry v0.5.0 // indirect
6867 github.com/spf13/afero v1.15.0 // indirect
6968 github.com/spf13/cast v1.10.0 // indirect
70- github.com/stretchr/objx v0.5.3 // indirect
69+ github.com/stretchr/objx v0.7.0 // indirect
7170 github.com/subosito/gotenv v1.6.0 // indirect
72- github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
71+ github.com/xo/terminfo v1.2.0 // indirect
7372 github.com/xyproto/randomstring v1.2.0 // indirect
7473 go.uber.org/multierr v1.11.0 // indirect
7574 go.yaml.in/yaml/v3 v3.0.5 // indirect
76- golang.org/x/mod v0.41.0 // indirect
77- golang.org/x/sync v0.23.0 // indirect
78- golang.org/x/text v0.42.0 // indirect
79- golang.org/x/tools v0.49.0 // indirect
75+ golang.org/x/mod v0.42.0 // indirect
76+ golang.org/x/sync v0.24.0 // indirect
77+ golang.org/x/text v0.43.0 // indirect
78+ golang.org/x/tools v0.52.0 // indirect
8079 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
81- mvdan.cc/gofumpt v0.9.2 // indirect
8280 )
8381
8482 tool github.com/a-h/templ/cmd/templ
@@ -3,8 +3,8 @@ module github.com/bnema/dumber
3 go 1.273 go 1.27
4 4
5 require (5 require (
6- github.com/a-h/templ v0.3.10206+ github.com/a-h/templ v0.3.1070
7- github.com/andybalholm/brotli v1.2.57+ github.com/andybalholm/brotli v1.2.6
8 github.com/bnema/purego v0.13.0-bnema.18 github.com/bnema/purego v0.13.0-bnema.1
9 github.com/bnema/purego-cef v0.14.49 github.com/bnema/purego-cef v0.14.4
10 github.com/bnema/purego-cef2gtk v0.11.410 github.com/bnema/purego-cef2gtk v0.11.4
@@ -16,17 +16,17 @@ require (
16 github.com/charmbracelet/bubbletea v1.3.1016 github.com/charmbracelet/bubbletea v1.3.10
17 github.com/charmbracelet/lipgloss v1.1.017 github.com/charmbracelet/lipgloss v1.1.0
18 github.com/fsnotify/fsnotify v1.10.118 github.com/fsnotify/fsnotify v1.10.1
19- github.com/godbus/dbus/v5 v5.2.219+ github.com/godbus/dbus/v5 v5.2.4
20 github.com/pelletier/go-toml/v2 v2.4.320 github.com/pelletier/go-toml/v2 v2.4.3
21- github.com/pressly/goose/v3 v3.28.021+ github.com/pressly/goose/v3 v3.29.0
22 github.com/rs/zerolog v1.35.122 github.com/rs/zerolog v1.35.1
23 github.com/spf13/cobra v1.10.223 github.com/spf13/cobra v1.10.2
24 github.com/spf13/pflag v1.0.1024 github.com/spf13/pflag v1.0.10
25 github.com/spf13/viper v1.21.025 github.com/spf13/viper v1.21.0
26 github.com/stretchr/testify v1.12.126 github.com/stretchr/testify v1.12.1
27- golang.org/x/image v0.46.027+ golang.org/x/image v0.47.0
28- golang.org/x/net v0.59.028+ golang.org/x/net v0.61.0
29- golang.org/x/sys v0.48.029+ golang.org/x/sys v0.49.0
30 gopkg.in/yaml.v3 v3.0.130 gopkg.in/yaml.v3 v3.0.1
31 )31 )
32 32
@@ -36,7 +36,7 @@ require (
36 github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect36 github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
37 github.com/cenkalti/backoff/v4 v4.3.0 // indirect37 github.com/cenkalti/backoff/v4 v4.3.0 // indirect
38 github.com/charmbracelet/colorprofile v0.4.3 // indirect38 github.com/charmbracelet/colorprofile v0.4.3 // indirect
39- github.com/charmbracelet/x/ansi v0.11.7 // indirect39+ github.com/charmbracelet/x/ansi v0.11.9 // indirect
40 github.com/charmbracelet/x/cellbuf v0.0.15 // indirect40 github.com/charmbracelet/x/cellbuf v0.0.15 // indirect
41 github.com/charmbracelet/x/exp/golden v0.0.0-20260511125431-fe5d686e0c99 // indirect41 github.com/charmbracelet/x/exp/golden v0.0.0-20260511125431-fe5d686e0c99 // indirect
42 github.com/charmbracelet/x/term v0.2.2 // indirect42 github.com/charmbracelet/x/term v0.2.2 // indirect
@@ -47,13 +47,12 @@ require (
47 github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect47 github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect
48 github.com/fatih/color v1.19.0 // indirect48 github.com/fatih/color v1.19.0 // indirect
49 github.com/go-viper/mapstructure/v2 v2.5.0 // indirect49 github.com/go-viper/mapstructure/v2 v2.5.0 // indirect
50- github.com/google/go-cmp v0.7.0 // indirect
51 github.com/inconshreveable/mousetrap v1.1.0 // indirect50 github.com/inconshreveable/mousetrap v1.1.0 // indirect
52- github.com/lucasb-eyer/go-colorful v1.4.0 // indirect51+ github.com/lucasb-eyer/go-colorful v1.4.1 // indirect
53- github.com/mattn/go-colorable v0.1.14 // indirect52+ github.com/mattn/go-colorable v0.1.16 // indirect
54 github.com/mattn/go-isatty v0.0.24 // indirect53 github.com/mattn/go-isatty v0.0.24 // indirect
55 github.com/mattn/go-localereader v0.0.1 // indirect54 github.com/mattn/go-localereader v0.0.1 // indirect
56- github.com/mattn/go-runewidth v0.0.23 // indirect55+ github.com/mattn/go-runewidth v0.0.31 // indirect
57 github.com/mfridman/interpolate v0.0.2 // indirect56 github.com/mfridman/interpolate v0.0.2 // indirect
58 github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect57 github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect
59 github.com/muesli/cancelreader v0.2.2 // indirect58 github.com/muesli/cancelreader v0.2.2 // indirect
@@ -63,22 +62,21 @@ require (
63 github.com/rogpeppe/go-internal v1.14.1 // indirect62 github.com/rogpeppe/go-internal v1.14.1 // indirect
64 github.com/russross/blackfriday/v2 v2.1.0 // indirect63 github.com/russross/blackfriday/v2 v2.1.0 // indirect
65 github.com/sagikazarmark/locafero v0.12.0 // indirect64 github.com/sagikazarmark/locafero v0.12.0 // indirect
66- github.com/sahilm/fuzzy v0.1.2 // indirect65+ github.com/sahilm/fuzzy v0.1.3 // indirect
67- github.com/sethvargo/go-retry v0.4.0 // indirect66+ github.com/sethvargo/go-retry v0.5.0 // indirect
68 github.com/spf13/afero v1.15.0 // indirect67 github.com/spf13/afero v1.15.0 // indirect
69 github.com/spf13/cast v1.10.0 // indirect68 github.com/spf13/cast v1.10.0 // indirect
70- github.com/stretchr/objx v0.5.3 // indirect69+ github.com/stretchr/objx v0.7.0 // indirect
71 github.com/subosito/gotenv v1.6.0 // indirect70 github.com/subosito/gotenv v1.6.0 // indirect
72- github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect71+ github.com/xo/terminfo v1.2.0 // indirect
73 github.com/xyproto/randomstring v1.2.0 // indirect72 github.com/xyproto/randomstring v1.2.0 // indirect
74 go.uber.org/multierr v1.11.0 // indirect73 go.uber.org/multierr v1.11.0 // indirect
75 go.yaml.in/yaml/v3 v3.0.5 // indirect74 go.yaml.in/yaml/v3 v3.0.5 // indirect
76- golang.org/x/mod v0.41.0 // indirect75+ golang.org/x/mod v0.42.0 // indirect
77- golang.org/x/sync v0.23.0 // indirect76+ golang.org/x/sync v0.24.0 // indirect
78- golang.org/x/text v0.42.0 // indirect77+ golang.org/x/text v0.43.0 // indirect
79- golang.org/x/tools v0.49.0 // indirect78+ golang.org/x/tools v0.52.0 // indirect
80 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect79 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
81- mvdan.cc/gofumpt v0.9.2 // indirect
82 )80 )
83 81
84 tool github.com/a-h/templ/cmd/templ82 tool github.com/a-h/templ/cmd/templ
M go.sum +46 -54 generated file: collapsed
M internal/application/usecase/favicon_refresh.go +2 -2
@@ -136,8 +136,8 @@ type refreshCoordinator struct {
136136 // Adds happen under mu before the goroutine starts; Done runs when the
137137 // executor finishes. Sealed admission (closed) guarantees no Add can
138138 // race a completed Wait.
139- wg sync.WaitGroup
140- epoch uint64
139+ wg sync.WaitGroup
140+ epoch uint64
141141 // closed seals admission: set by Close before cancel/drain, so no
142142 // refresh can start after the drain observes zero active operations.
143143 closed bool
@@ -136,8 +136,8 @@ type refreshCoordinator struct {
136 // Adds happen under mu before the goroutine starts; Done runs when the136 // Adds happen under mu before the goroutine starts; Done runs when the
137 // executor finishes. Sealed admission (closed) guarantees no Add can137 // executor finishes. Sealed admission (closed) guarantees no Add can
138 // race a completed Wait.138 // race a completed Wait.
139- wg sync.WaitGroup139+ wg sync.WaitGroup
140- epoch uint64140+ epoch uint64
141 // closed seals admission: set by Close before cancel/drain, so no141 // closed seals admission: set by Close before cancel/drain, so no
142 // refresh can start after the drain observes zero active operations.142 // refresh can start after the drain observes zero active operations.
143 closed bool143 closed bool
M internal/infrastructure/cef/systemview_asset_cache.go +9 -9
@@ -192,22 +192,22 @@ func readBoundedAsset(assetsFS fs.FS, name string, maxBytes int) ([]byte, error)
192192 // waiters share the same decoded bytes unaffected. A versioned request pins
193193 // exact bytes: only output hashing to wantDigest earns immutable headers.
194194 type systemviewWASMResourceHandler struct {
195- cancel context.CancelFunc
196- cancelOnce sync.Once
195+ cancel context.CancelFunc
196+ cancelOnce sync.Once
197197 // ctx scopes the request to the handler lifetime: engine shutdown
198198 // cancels it, letting completion suppress the native continuation.
199199 // It is released after the continuation decision, never by load
200200 // itself, so shutdown stays observable at that point.
201- ctx context.Context
202- bundle *systemviewAssetBundle
203- versioned bool
204- wantDigest string
205- once sync.Once
201+ ctx context.Context
202+ bundle *systemviewAssetBundle
203+ versioned bool
204+ wantDigest string
205+ once sync.Once
206206 // settleMu arbitrates the continuation race: exactly one of
207207 // request completion or cancellation wins, so a canceled waiter
208208 // never resumes CEF while a completed load always does.
209- settleMu sync.Mutex
210- settled bool
209+ settleMu sync.Mutex
210+ settled bool
211211 done chan struct{}
212212 data []byte
213213 contentType string
@@ -192,22 +192,22 @@ func readBoundedAsset(assetsFS fs.FS, name string, maxBytes int) ([]byte, error)
192 // waiters share the same decoded bytes unaffected. A versioned request pins192 // waiters share the same decoded bytes unaffected. A versioned request pins
193 // exact bytes: only output hashing to wantDigest earns immutable headers.193 // exact bytes: only output hashing to wantDigest earns immutable headers.
194 type systemviewWASMResourceHandler struct {194 type systemviewWASMResourceHandler struct {
195- cancel context.CancelFunc195+ cancel context.CancelFunc
196- cancelOnce sync.Once196+ cancelOnce sync.Once
197 // ctx scopes the request to the handler lifetime: engine shutdown197 // ctx scopes the request to the handler lifetime: engine shutdown
198 // cancels it, letting completion suppress the native continuation.198 // cancels it, letting completion suppress the native continuation.
199 // It is released after the continuation decision, never by load199 // It is released after the continuation decision, never by load
200 // itself, so shutdown stays observable at that point.200 // itself, so shutdown stays observable at that point.
201- ctx context.Context201+ ctx context.Context
202- bundle *systemviewAssetBundle202+ bundle *systemviewAssetBundle
203- versioned bool203+ versioned bool
204- wantDigest string204+ wantDigest string
205- once sync.Once205+ once sync.Once
206 // settleMu arbitrates the continuation race: exactly one of206 // settleMu arbitrates the continuation race: exactly one of
207 // request completion or cancellation wins, so a canceled waiter207 // request completion or cancellation wins, so a canceled waiter
208 // never resumes CEF while a completed load always does.208 // never resumes CEF while a completed load always does.
209- settleMu sync.Mutex209+ settleMu sync.Mutex
210- settled bool210+ settled bool
211 done chan struct{}211 done chan struct{}
212 data []byte212 data []byte
213 contentType string213 contentType string
M internal/infrastructure/cef/webview_scroll_cancel_test.go +11 -11
@@ -120,13 +120,13 @@ func TestNavCommandOffThreadDispatchCompletes(t *testing.T) {
120120 browser.EXPECT().GoBack().Return().Once()
121121
122122 wv := &WebView{
123- ctx: context.Background(),
124- engine: &Engine{},
125- browser: browser,
123+ ctx: context.Background(),
124+ engine: &Engine{},
125+ browser: browser,
126126 scrollCancelSeam: fake,
127- gtkSyncIsOwner: func() bool { return false },
128- gtkSyncDispatch: func(fn func()) { go fn() },
129- gtkSyncTimeout: 2 * time.Second,
127+ gtkSyncIsOwner: func() bool { return false },
128+ gtkSyncDispatch: func(fn func()) { go fn() },
129+ gtkSyncTimeout: 2 * time.Second,
130130 }
131131
132132 require.NoError(t, wv.GoBack(context.Background()))
@@ -141,12 +141,12 @@ func TestNavCommandDispatchTimeoutSkipsNavigation(t *testing.T) {
141141 fake.startGesture()
142142
143143 wv := &WebView{
144- ctx: context.Background(),
145- engine: &Engine{},
144+ ctx: context.Background(),
145+ engine: &Engine{},
146146 scrollCancelSeam: fake,
147- gtkSyncIsOwner: func() bool { return false },
148- gtkSyncDispatch: func(func()) {},
149- gtkSyncTimeout: 20 * time.Millisecond,
147+ gtkSyncIsOwner: func() bool { return false },
148+ gtkSyncDispatch: func(func()) {},
149+ gtkSyncTimeout: 20 * time.Millisecond,
150150 }
151151
152152 err := wv.LoadURI(context.Background(), "https://example.com/")
@@ -120,13 +120,13 @@ func TestNavCommandOffThreadDispatchCompletes(t *testing.T) {
120 browser.EXPECT().GoBack().Return().Once()120 browser.EXPECT().GoBack().Return().Once()
121 121
122 wv := &WebView{122 wv := &WebView{
123- ctx: context.Background(),123+ ctx: context.Background(),
124- engine: &Engine{},124+ engine: &Engine{},
125- browser: browser,125+ browser: browser,
126 scrollCancelSeam: fake,126 scrollCancelSeam: fake,
127- gtkSyncIsOwner: func() bool { return false },127+ gtkSyncIsOwner: func() bool { return false },
128- gtkSyncDispatch: func(fn func()) { go fn() },128+ gtkSyncDispatch: func(fn func()) { go fn() },
129- gtkSyncTimeout: 2 * time.Second,129+ gtkSyncTimeout: 2 * time.Second,
130 }130 }
131 131
132 require.NoError(t, wv.GoBack(context.Background()))132 require.NoError(t, wv.GoBack(context.Background()))
@@ -141,12 +141,12 @@ func TestNavCommandDispatchTimeoutSkipsNavigation(t *testing.T) {
141 fake.startGesture()141 fake.startGesture()
142 142
143 wv := &WebView{143 wv := &WebView{
144- ctx: context.Background(),144+ ctx: context.Background(),
145- engine: &Engine{},145+ engine: &Engine{},
146 scrollCancelSeam: fake,146 scrollCancelSeam: fake,
147- gtkSyncIsOwner: func() bool { return false },147+ gtkSyncIsOwner: func() bool { return false },
148- gtkSyncDispatch: func(func()) {},148+ gtkSyncDispatch: func(func()) {},
149- gtkSyncTimeout: 20 * time.Millisecond,149+ gtkSyncTimeout: 20 * time.Millisecond,
150 }150 }
151 151
152 err := wv.LoadURI(context.Background(), "https://example.com/")152 err := wv.LoadURI(context.Background(), "https://example.com/")
M internal/infrastructure/config/engine.go +2 -2
@@ -130,8 +130,8 @@ type CEFInputConfig struct {
130130 ScrollHorizontalMultiplier float64 `mapstructure:"scroll_horizontal_multiplier" toml:"scroll_horizontal_multiplier" yaml:"scroll_horizontal_multiplier"` //nolint:lll // struct tags exceed lll limit
131131 ScrollVerticalMultiplier float64 `mapstructure:"scroll_vertical_multiplier" toml:"scroll_vertical_multiplier" yaml:"scroll_vertical_multiplier"` //nolint:lll // struct tags exceed lll limit
132132 ScrollMaxDelta int32 `mapstructure:"scroll_max_delta" toml:"scroll_max_delta" yaml:"scroll_max_delta"` //nolint:lll // struct tags exceed lll limit
133- ScrollTouchpadInertia bool `mapstructure:"scroll_touchpad_inertia" toml:"scroll_touchpad_inertia" yaml:"scroll_touchpad_inertia"` //nolint:lll // struct tags exceed lll limit
134- ScrollWheelSmoothing bool `mapstructure:"scroll_wheel_smoothing" toml:"scroll_wheel_smoothing" yaml:"scroll_wheel_smoothing"` //nolint:lll // struct tags exceed lll limit
133+ ScrollTouchpadInertia bool `mapstructure:"scroll_touchpad_inertia" toml:"scroll_touchpad_inertia" yaml:"scroll_touchpad_inertia"` //nolint:lll // struct tags exceed lll limit
134+ ScrollWheelSmoothing bool `mapstructure:"scroll_wheel_smoothing" toml:"scroll_wheel_smoothing" yaml:"scroll_wheel_smoothing"` //nolint:lll // struct tags exceed lll limit
135135 TouchpadNavigationEnabled bool `mapstructure:"touchpad_navigation_enabled" toml:"touchpad_navigation_enabled" yaml:"touchpad_navigation_enabled"` //nolint:lll // struct tags exceed lll limit
136136 TouchpadNavigationMinDelta float64 `mapstructure:"touchpad_navigation_min_delta" toml:"touchpad_navigation_min_delta" yaml:"touchpad_navigation_min_delta"` //nolint:lll // struct tags exceed lll limit
137137 TouchpadNavigationMaxVerticalRatio float64 `mapstructure:"touchpad_navigation_max_vertical_ratio" toml:"touchpad_navigation_max_vertical_ratio" yaml:"touchpad_navigation_max_vertical_ratio"` //nolint:lll // struct tags exceed lll limit
@@ -130,8 +130,8 @@ type CEFInputConfig struct {
130 ScrollHorizontalMultiplier float64 `mapstructure:"scroll_horizontal_multiplier" toml:"scroll_horizontal_multiplier" yaml:"scroll_horizontal_multiplier"` //nolint:lll // struct tags exceed lll limit130 ScrollHorizontalMultiplier float64 `mapstructure:"scroll_horizontal_multiplier" toml:"scroll_horizontal_multiplier" yaml:"scroll_horizontal_multiplier"` //nolint:lll // struct tags exceed lll limit
131 ScrollVerticalMultiplier float64 `mapstructure:"scroll_vertical_multiplier" toml:"scroll_vertical_multiplier" yaml:"scroll_vertical_multiplier"` //nolint:lll // struct tags exceed lll limit131 ScrollVerticalMultiplier float64 `mapstructure:"scroll_vertical_multiplier" toml:"scroll_vertical_multiplier" yaml:"scroll_vertical_multiplier"` //nolint:lll // struct tags exceed lll limit
132 ScrollMaxDelta int32 `mapstructure:"scroll_max_delta" toml:"scroll_max_delta" yaml:"scroll_max_delta"` //nolint:lll // struct tags exceed lll limit132 ScrollMaxDelta int32 `mapstructure:"scroll_max_delta" toml:"scroll_max_delta" yaml:"scroll_max_delta"` //nolint:lll // struct tags exceed lll limit
133- ScrollTouchpadInertia bool `mapstructure:"scroll_touchpad_inertia" toml:"scroll_touchpad_inertia" yaml:"scroll_touchpad_inertia"` //nolint:lll // struct tags exceed lll limit133+ ScrollTouchpadInertia bool `mapstructure:"scroll_touchpad_inertia" toml:"scroll_touchpad_inertia" yaml:"scroll_touchpad_inertia"` //nolint:lll // struct tags exceed lll limit
134- ScrollWheelSmoothing bool `mapstructure:"scroll_wheel_smoothing" toml:"scroll_wheel_smoothing" yaml:"scroll_wheel_smoothing"` //nolint:lll // struct tags exceed lll limit134+ ScrollWheelSmoothing bool `mapstructure:"scroll_wheel_smoothing" toml:"scroll_wheel_smoothing" yaml:"scroll_wheel_smoothing"` //nolint:lll // struct tags exceed lll limit
135 TouchpadNavigationEnabled bool `mapstructure:"touchpad_navigation_enabled" toml:"touchpad_navigation_enabled" yaml:"touchpad_navigation_enabled"` //nolint:lll // struct tags exceed lll limit135 TouchpadNavigationEnabled bool `mapstructure:"touchpad_navigation_enabled" toml:"touchpad_navigation_enabled" yaml:"touchpad_navigation_enabled"` //nolint:lll // struct tags exceed lll limit
136 TouchpadNavigationMinDelta float64 `mapstructure:"touchpad_navigation_min_delta" toml:"touchpad_navigation_min_delta" yaml:"touchpad_navigation_min_delta"` //nolint:lll // struct tags exceed lll limit136 TouchpadNavigationMinDelta float64 `mapstructure:"touchpad_navigation_min_delta" toml:"touchpad_navigation_min_delta" yaml:"touchpad_navigation_min_delta"` //nolint:lll // struct tags exceed lll limit
137 TouchpadNavigationMaxVerticalRatio float64 `mapstructure:"touchpad_navigation_max_vertical_ratio" toml:"touchpad_navigation_max_vertical_ratio" yaml:"touchpad_navigation_max_vertical_ratio"` //nolint:lll // struct tags exceed lll limit137 TouchpadNavigationMaxVerticalRatio float64 `mapstructure:"touchpad_navigation_max_vertical_ratio" toml:"touchpad_navigation_max_vertical_ratio" yaml:"touchpad_navigation_max_vertical_ratio"` //nolint:lll // struct tags exceed lll limit
M internal/infrastructure/process/runtime_safety_test.go +1 -1
@@ -38,7 +38,7 @@ func TestMergeRuntimeSafety(t *testing.T) {
3838 for _, entry := range got {
3939 if strings.HasPrefix(entry, "GODEBUG=") {
4040 count++
41- }
41+ }
4242 }
4343 require.Equal(t, 1, count, "changed environ must hold exactly one GODEBUG entry")
4444 }
@@ -38,7 +38,7 @@ func TestMergeRuntimeSafety(t *testing.T) {
38 for _, entry := range got {38 for _, entry := range got {
39 if strings.HasPrefix(entry, "GODEBUG=") {39 if strings.HasPrefix(entry, "GODEBUG=") {
40 count++40 count++
41- }41+ }
42 }42 }
43 require.Equal(t, 1, count, "changed environ must hold exactly one GODEBUG entry")43 require.Equal(t, 1, count, "changed environ must hold exactly one GODEBUG entry")
44 }44 }
M internal/ui/systemviews/config_templ.go +110 -114 generated file: collapsed
M internal/ui/systemviews/favorites_templ.go +71 -83
@@ -79,17 +79,13 @@ func FavoritesView(data favoritesRenderData) templ.Component {
7979 if templ_7745c5c3_Err != nil {
8080 return templ_7745c5c3_Err
8181 }
82- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, " ")
83- if templ_7745c5c3_Err != nil {
84- return templ_7745c5c3_Err
85- }
8682 if len(data.Favorites) == 0 {
8783 templ_7745c5c3_Err = EmptyState("No favorites").Render(ctx, templ_7745c5c3_Buffer)
8884 if templ_7745c5c3_Err != nil {
8985 return templ_7745c5c3_Err
9086 }
9187 } else {
92- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "<ul class=\"sv-list\">")
88+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<ul class=\"sv-list\">")
9389 if templ_7745c5c3_Err != nil {
9490 return templ_7745c5c3_Err
9591 }
@@ -101,7 +97,7 @@ func FavoritesView(data favoritesRenderData) templ.Component {
10197 }
10298 }
10399 }
104- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "</ul>")
100+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "</ul>")
105101 if templ_7745c5c3_Err != nil {
106102 return templ_7745c5c3_Err
107103 }
@@ -128,25 +124,17 @@ func FavoritesView(data favoritesRenderData) templ.Component {
128124 if templ_7745c5c3_Err != nil {
129125 return templ_7745c5c3_Err
130126 }
131- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, " ")
132- if templ_7745c5c3_Err != nil {
133- return templ_7745c5c3_Err
134- }
135127 templ_7745c5c3_Err = TagCreateForm().Render(ctx, templ_7745c5c3_Buffer)
136128 if templ_7745c5c3_Err != nil {
137129 return templ_7745c5c3_Err
138130 }
139- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, " ")
140- if templ_7745c5c3_Err != nil {
141- return templ_7745c5c3_Err
142- }
143131 if len(data.Tags) == 0 {
144132 templ_7745c5c3_Err = EmptyState("No tags").Render(ctx, templ_7745c5c3_Buffer)
145133 if templ_7745c5c3_Err != nil {
146134 return templ_7745c5c3_Err
147135 }
148136 } else {
149- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "<ul class=\"sv-list\">")
137+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "<ul class=\"sv-list\">")
150138 if templ_7745c5c3_Err != nil {
151139 return templ_7745c5c3_Err
152140 }
@@ -158,7 +146,7 @@ func FavoritesView(data favoritesRenderData) templ.Component {
158146 }
159147 }
160148 }
161- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, "</ul>")
149+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "</ul>")
162150 if templ_7745c5c3_Err != nil {
163151 return templ_7745c5c3_Err
164152 }
@@ -194,7 +182,7 @@ func FavoritesControls(data favoritesRenderData) templ.Component {
194182 templ_7745c5c3_Var5 = templ.NopComponent
195183 }
196184 ctx = templ.ClearChildren(ctx)
197- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, "<form class=\"sv-card-form\" data-sv-action=\"favorite.create\"><label><span>URL</span><input name=\"url\" type=\"url\" placeholder=\"https://example.com\" required></label> <label><span>Title</span><input name=\"title\" type=\"text\" placeholder=\"Optional title\"></label>")
185+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "<form class=\"sv-card-form\" data-sv-action=\"favorite.create\"><label><span>URL</span><input name=\"url\" type=\"url\" placeholder=\"https://example.com\" required></label> <label><span>Title</span><input name=\"title\" type=\"text\" placeholder=\"Optional title\"></label>")
198186 if templ_7745c5c3_Err != nil {
199187 return templ_7745c5c3_Err
200188 }
@@ -202,7 +190,7 @@ func FavoritesControls(data favoritesRenderData) templ.Component {
202190 if templ_7745c5c3_Err != nil {
203191 return templ_7745c5c3_Err
204192 }
205- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "<button class=\"sv-button\" type=\"submit\">")
193+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "<button class=\"sv-button\" type=\"submit\">")
206194 if templ_7745c5c3_Err != nil {
207195 return templ_7745c5c3_Err
208196 }
@@ -210,7 +198,7 @@ func FavoritesControls(data favoritesRenderData) templ.Component {
210198 if templ_7745c5c3_Err != nil {
211199 return templ_7745c5c3_Err
212200 }
213- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, "</button></form><div class=\"sv-filter-panel\"><div class=\"sv-button-row\"><span class=\"sv-meta\">Tags</span> ")
201+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, "</button></form><div class=\"sv-filter-panel\"><div class=\"sv-button-row\"><span class=\"sv-meta\">Tags</span> ")
214202 if templ_7745c5c3_Err != nil {
215203 return templ_7745c5c3_Err
216204 }
@@ -219,7 +207,7 @@ func FavoritesControls(data favoritesRenderData) templ.Component {
219207 if templ_7745c5c3_Err != nil {
220208 return templ_7745c5c3_Err
221209 }
222- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "<button type=\"button\" class=\"")
210+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, "<button type=\"button\" class=\"")
223211 if templ_7745c5c3_Err != nil {
224212 return templ_7745c5c3_Err
225213 }
@@ -232,7 +220,7 @@ func FavoritesControls(data favoritesRenderData) templ.Component {
232220 if templ_7745c5c3_Err != nil {
233221 return templ_7745c5c3_Err
234222 }
235- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "\" aria-pressed=\"")
223+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "\" aria-pressed=\"")
236224 if templ_7745c5c3_Err != nil {
237225 return templ_7745c5c3_Err
238226 }
@@ -245,7 +233,7 @@ func FavoritesControls(data favoritesRenderData) templ.Component {
245233 if templ_7745c5c3_Err != nil {
246234 return templ_7745c5c3_Err
247235 }
248- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "\" data-sv-action=\"favorite.clearFilters\">All</button> ")
236+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, "\" data-sv-action=\"favorite.clearFilters\">All</button> ")
249237 if templ_7745c5c3_Err != nil {
250238 return templ_7745c5c3_Err
251239 }
@@ -254,7 +242,7 @@ func FavoritesControls(data favoritesRenderData) templ.Component {
254242 if templ_7745c5c3_Err != nil {
255243 return templ_7745c5c3_Err
256244 }
257- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, "<button type=\"button\" class=\"")
245+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "<button type=\"button\" class=\"")
258246 if templ_7745c5c3_Err != nil {
259247 return templ_7745c5c3_Err
260248 }
@@ -267,7 +255,7 @@ func FavoritesControls(data favoritesRenderData) templ.Component {
267255 if templ_7745c5c3_Err != nil {
268256 return templ_7745c5c3_Err
269257 }
270- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, "\" aria-pressed=\"")
258+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "\" aria-pressed=\"")
271259 if templ_7745c5c3_Err != nil {
272260 return templ_7745c5c3_Err
273261 }
@@ -280,7 +268,7 @@ func FavoritesControls(data favoritesRenderData) templ.Component {
280268 if templ_7745c5c3_Err != nil {
281269 return templ_7745c5c3_Err
282270 }
283- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "\" data-sv-action=\"favorite.filterUntagged\">Untagged</button> ")
271+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "\" data-sv-action=\"favorite.filterUntagged\">Untagged</button> ")
284272 if templ_7745c5c3_Err != nil {
285273 return templ_7745c5c3_Err
286274 }
@@ -291,7 +279,7 @@ func FavoritesControls(data favoritesRenderData) templ.Component {
291279 if templ_7745c5c3_Err != nil {
292280 return templ_7745c5c3_Err
293281 }
294- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "<button type=\"button\" class=\"")
282+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, "<button type=\"button\" class=\"")
295283 if templ_7745c5c3_Err != nil {
296284 return templ_7745c5c3_Err
297285 }
@@ -304,7 +292,7 @@ func FavoritesControls(data favoritesRenderData) templ.Component {
304292 if templ_7745c5c3_Err != nil {
305293 return templ_7745c5c3_Err
306294 }
307- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, "\" aria-pressed=\"")
295+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, "\" aria-pressed=\"")
308296 if templ_7745c5c3_Err != nil {
309297 return templ_7745c5c3_Err
310298 }
@@ -317,7 +305,7 @@ func FavoritesControls(data favoritesRenderData) templ.Component {
317305 if templ_7745c5c3_Err != nil {
318306 return templ_7745c5c3_Err
319307 }
320- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "\" data-sv-action=\"favorite.filterTag\" data-tag-id=\"")
308+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "\" data-sv-action=\"favorite.filterTag\" data-tag-id=\"")
321309 if templ_7745c5c3_Err != nil {
322310 return templ_7745c5c3_Err
323311 }
@@ -330,7 +318,7 @@ func FavoritesControls(data favoritesRenderData) templ.Component {
330318 if templ_7745c5c3_Err != nil {
331319 return templ_7745c5c3_Err
332320 }
333- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "\"><span class=\"sv-tag-dot\" style=\"")
321+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "\"><span class=\"sv-tag-dot\" style=\"")
334322 if templ_7745c5c3_Err != nil {
335323 return templ_7745c5c3_Err
336324 }
@@ -343,7 +331,7 @@ func FavoritesControls(data favoritesRenderData) templ.Component {
343331 if templ_7745c5c3_Err != nil {
344332 return templ_7745c5c3_Err
345333 }
346- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "\"></span>")
334+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, "\"></span>")
347335 if templ_7745c5c3_Err != nil {
348336 return templ_7745c5c3_Err
349337 }
@@ -356,13 +344,13 @@ func FavoritesControls(data favoritesRenderData) templ.Component {
356344 if templ_7745c5c3_Err != nil {
357345 return templ_7745c5c3_Err
358346 }
359- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "</button>")
347+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "</button>")
360348 if templ_7745c5c3_Err != nil {
361349 return templ_7745c5c3_Err
362350 }
363351 }
364352 }
365- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "</div></div><p class=\"sv-meta sv-key-hints\">Keys: <kbd>j</kbd>/<kbd>k</kbd> move, <kbd>Enter</kbd> open, <kbd>e</kbd> edit title, <kbd>d</kbd> delete focused favorite.</p>")
353+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "</div></div><p class=\"sv-meta sv-key-hints\">Keys: <kbd>j</kbd>/<kbd>k</kbd> move, <kbd>Enter</kbd> open, <kbd>e</kbd> edit title, <kbd>d</kbd> delete focused favorite.</p>")
366354 if templ_7745c5c3_Err != nil {
367355 return templ_7745c5c3_Err
368356 }
@@ -392,13 +380,13 @@ func FavoriteCreateTagPicker(tags []*entity.Tag) templ.Component {
392380 }
393381 ctx = templ.ClearChildren(ctx)
394382 if len(tags) > 0 {
395- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "<fieldset class=\"sv-tag-picker\"><legend>Tags</legend><div class=\"sv-tag-controls\">")
383+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "<fieldset class=\"sv-tag-picker\"><legend>Tags</legend><div class=\"sv-tag-controls\">")
396384 if templ_7745c5c3_Err != nil {
397385 return templ_7745c5c3_Err
398386 }
399387 for _, tag := range tags {
400388 if tag != nil {
401- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "<label class=\"sv-tag-toggle\"><input type=\"checkbox\" name=\"tags\" value=\"")
389+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "<label class=\"sv-tag-toggle\"><input type=\"checkbox\" name=\"tags\" value=\"")
402390 if templ_7745c5c3_Err != nil {
403391 return templ_7745c5c3_Err
404392 }
@@ -411,7 +399,7 @@ func FavoriteCreateTagPicker(tags []*entity.Tag) templ.Component {
411399 if templ_7745c5c3_Err != nil {
412400 return templ_7745c5c3_Err
413401 }
414- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, "\"> <span><span class=\"sv-tag-dot\" style=\"")
402+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "\"> <span><span class=\"sv-tag-dot\" style=\"")
415403 if templ_7745c5c3_Err != nil {
416404 return templ_7745c5c3_Err
417405 }
@@ -424,7 +412,7 @@ func FavoriteCreateTagPicker(tags []*entity.Tag) templ.Component {
424412 if templ_7745c5c3_Err != nil {
425413 return templ_7745c5c3_Err
426414 }
427- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 27, "\"></span>")
415+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "\"></span>")
428416 if templ_7745c5c3_Err != nil {
429417 return templ_7745c5c3_Err
430418 }
@@ -437,13 +425,13 @@ func FavoriteCreateTagPicker(tags []*entity.Tag) templ.Component {
437425 if templ_7745c5c3_Err != nil {
438426 return templ_7745c5c3_Err
439427 }
440- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 28, "</span></label>")
428+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "</span></label>")
441429 if templ_7745c5c3_Err != nil {
442430 return templ_7745c5c3_Err
443431 }
444432 }
445433 }
446- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 29, "</div></fieldset>")
434+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, "</div></fieldset>")
447435 if templ_7745c5c3_Err != nil {
448436 return templ_7745c5c3_Err
449437 }
@@ -473,7 +461,7 @@ func FavoriteItem(favorite *entity.Favorite, tags []*entity.Tag) templ.Component
473461 templ_7745c5c3_Var22 = templ.NopComponent
474462 }
475463 ctx = templ.ClearChildren(ctx)
476- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 30, "<li class=\"sv-list-row\"><article class=\"sv-favorite-item\" data-sv-favorite-row data-favorite-id=\"")
464+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 27, "<li class=\"sv-list-row\"><article class=\"sv-favorite-item\" data-sv-favorite-row data-favorite-id=\"")
477465 if templ_7745c5c3_Err != nil {
478466 return templ_7745c5c3_Err
479467 }
@@ -486,7 +474,7 @@ func FavoriteItem(favorite *entity.Favorite, tags []*entity.Tag) templ.Component
486474 if templ_7745c5c3_Err != nil {
487475 return templ_7745c5c3_Err
488476 }
489- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 31, "\"><div class=\"sv-favorite-header\"><div><a class=\"sv-link sv-favorite-open\" href=\"")
477+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 28, "\"><div class=\"sv-favorite-header\"><div><a class=\"sv-link sv-favorite-open\" href=\"")
490478 if templ_7745c5c3_Err != nil {
491479 return templ_7745c5c3_Err
492480 }
@@ -499,7 +487,7 @@ func FavoriteItem(favorite *entity.Favorite, tags []*entity.Tag) templ.Component
499487 if templ_7745c5c3_Err != nil {
500488 return templ_7745c5c3_Err
501489 }
502- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 32, "\">")
490+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 29, "\">")
503491 if templ_7745c5c3_Err != nil {
504492 return templ_7745c5c3_Err
505493 }
@@ -512,7 +500,7 @@ func FavoriteItem(favorite *entity.Favorite, tags []*entity.Tag) templ.Component
512500 if templ_7745c5c3_Err != nil {
513501 return templ_7745c5c3_Err
514502 }
515- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 33, "</a><p class=\"sv-history-url\">")
503+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 30, "</a><p class=\"sv-history-url\">")
516504 if templ_7745c5c3_Err != nil {
517505 return templ_7745c5c3_Err
518506 }
@@ -525,12 +513,12 @@ func FavoriteItem(favorite *entity.Favorite, tags []*entity.Tag) templ.Component
525513 if templ_7745c5c3_Err != nil {
526514 return templ_7745c5c3_Err
527515 }
528- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 34, "</p>")
516+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 31, "</p>")
529517 if templ_7745c5c3_Err != nil {
530518 return templ_7745c5c3_Err
531519 }
532520 if favoriteMetaText(favorite) != "" {
533- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 35, "<p class=\"sv-meta\">")
521+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 32, "<p class=\"sv-meta\">")
534522 if templ_7745c5c3_Err != nil {
535523 return templ_7745c5c3_Err
536524 }
@@ -543,12 +531,12 @@ func FavoriteItem(favorite *entity.Favorite, tags []*entity.Tag) templ.Component
543531 if templ_7745c5c3_Err != nil {
544532 return templ_7745c5c3_Err
545533 }
546- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 36, "</p>")
534+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 33, "</p>")
547535 if templ_7745c5c3_Err != nil {
548536 return templ_7745c5c3_Err
549537 }
550538 }
551- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 37, "</div><div class=\"sv-history-row-actions\"><a class=\"sv-button sv-button-secondary\" href=\"")
539+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 34, "</div><div class=\"sv-history-row-actions\"><a class=\"sv-button sv-button-secondary\" href=\"")
552540 if templ_7745c5c3_Err != nil {
553541 return templ_7745c5c3_Err
554542 }
@@ -561,7 +549,7 @@ func FavoriteItem(favorite *entity.Favorite, tags []*entity.Tag) templ.Component
561549 if templ_7745c5c3_Err != nil {
562550 return templ_7745c5c3_Err
563551 }
564- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 38, "\">")
552+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 35, "\">")
565553 if templ_7745c5c3_Err != nil {
566554 return templ_7745c5c3_Err
567555 }
@@ -569,7 +557,7 @@ func FavoriteItem(favorite *entity.Favorite, tags []*entity.Tag) templ.Component
569557 if templ_7745c5c3_Err != nil {
570558 return templ_7745c5c3_Err
571559 }
572- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 39, "</a> <button type=\"button\" class=\"sv-button sv-button-secondary sv-button-danger sv-button-icon-only\" data-sv-action=\"favorite.delete\" data-id=\"")
560+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 36, "</a> <button type=\"button\" class=\"sv-button sv-button-secondary sv-button-danger sv-button-icon-only\" data-sv-action=\"favorite.delete\" data-id=\"")
573561 if templ_7745c5c3_Err != nil {
574562 return templ_7745c5c3_Err
575563 }
@@ -582,7 +570,7 @@ func FavoriteItem(favorite *entity.Favorite, tags []*entity.Tag) templ.Component
582570 if templ_7745c5c3_Err != nil {
583571 return templ_7745c5c3_Err
584572 }
585- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 40, "\" data-sv-confirm=\"Delete this favorite?\" aria-label=\"Delete this favorite\">")
573+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 37, "\" data-sv-confirm=\"Delete this favorite?\" aria-label=\"Delete this favorite\">")
586574 if templ_7745c5c3_Err != nil {
587575 return templ_7745c5c3_Err
588576 }
@@ -590,7 +578,7 @@ func FavoriteItem(favorite *entity.Favorite, tags []*entity.Tag) templ.Component
590578 if templ_7745c5c3_Err != nil {
591579 return templ_7745c5c3_Err
592580 }
593- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 41, "</button></div></div>")
581+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 38, "</button></div></div>")
594582 if templ_7745c5c3_Err != nil {
595583 return templ_7745c5c3_Err
596584 }
@@ -602,7 +590,7 @@ func FavoriteItem(favorite *entity.Favorite, tags []*entity.Tag) templ.Component
602590 if templ_7745c5c3_Err != nil {
603591 return templ_7745c5c3_Err
604592 }
605- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, "</article></li>")
593+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 39, "</article></li>")
606594 if templ_7745c5c3_Err != nil {
607595 return templ_7745c5c3_Err
608596 }
@@ -631,7 +619,7 @@ func FavoriteEditForm(favorite *entity.Favorite) templ.Component {
631619 templ_7745c5c3_Var30 = templ.NopComponent
632620 }
633621 ctx = templ.ClearChildren(ctx)
634- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 43, "<form class=\"sv-inline-form\" data-sv-action=\"favorite.update\"><input type=\"hidden\" name=\"id\" value=\"")
622+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 40, "<form class=\"sv-inline-form\" data-sv-action=\"favorite.update\"><input type=\"hidden\" name=\"id\" value=\"")
635623 if templ_7745c5c3_Err != nil {
636624 return templ_7745c5c3_Err
637625 }
@@ -644,7 +632,7 @@ func FavoriteEditForm(favorite *entity.Favorite) templ.Component {
644632 if templ_7745c5c3_Err != nil {
645633 return templ_7745c5c3_Err
646634 }
647- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 44, "\"> <label><span>Title</span><input name=\"title\" type=\"text\" value=\"")
635+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 41, "\"> <label><span>Title</span><input name=\"title\" type=\"text\" value=\"")
648636 if templ_7745c5c3_Err != nil {
649637 return templ_7745c5c3_Err
650638 }
@@ -657,7 +645,7 @@ func FavoriteEditForm(favorite *entity.Favorite) templ.Component {
657645 if templ_7745c5c3_Err != nil {
658646 return templ_7745c5c3_Err
659647 }
660- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 45, "\"></label> <label><span>Favicon</span><input name=\"favicon_url\" type=\"url\" value=\"")
648+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, "\"></label> <label><span>Favicon</span><input name=\"favicon_url\" type=\"url\" value=\"")
661649 if templ_7745c5c3_Err != nil {
662650 return templ_7745c5c3_Err
663651 }
@@ -670,7 +658,7 @@ func FavoriteEditForm(favorite *entity.Favorite) templ.Component {
670658 if templ_7745c5c3_Err != nil {
671659 return templ_7745c5c3_Err
672660 }
673- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 46, "\"></label>")
661+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 43, "\"></label>")
674662 if templ_7745c5c3_Err != nil {
675663 return templ_7745c5c3_Err
676664 }
@@ -678,7 +666,7 @@ func FavoriteEditForm(favorite *entity.Favorite) templ.Component {
678666 if templ_7745c5c3_Err != nil {
679667 return templ_7745c5c3_Err
680668 }
681- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 47, "<button class=\"sv-button sv-button-secondary\" type=\"submit\">")
669+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 44, "<button class=\"sv-button sv-button-secondary\" type=\"submit\">")
682670 if templ_7745c5c3_Err != nil {
683671 return templ_7745c5c3_Err
684672 }
@@ -686,7 +674,7 @@ func FavoriteEditForm(favorite *entity.Favorite) templ.Component {
686674 if templ_7745c5c3_Err != nil {
687675 return templ_7745c5c3_Err
688676 }
689- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, "</button></form>")
677+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 45, "</button></form>")
690678 if templ_7745c5c3_Err != nil {
691679 return templ_7745c5c3_Err
692680 }
@@ -716,7 +704,7 @@ func FavoriteTagControls(favorite *entity.Favorite, tags []*entity.Tag) templ.Co
716704 }
717705 ctx = templ.ClearChildren(ctx)
718706 if len(tags) > 0 {
719- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, "<div class=\"sv-tag-controls\"><span class=\"sv-meta\">Tags</span> ")
707+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 46, "<div class=\"sv-tag-controls\"><span class=\"sv-meta\">Tags</span> ")
720708 if templ_7745c5c3_Err != nil {
721709 return templ_7745c5c3_Err
722710 }
@@ -727,7 +715,7 @@ func FavoriteTagControls(favorite *entity.Favorite, tags []*entity.Tag) templ.Co
727715 if templ_7745c5c3_Err != nil {
728716 return templ_7745c5c3_Err
729717 }
730- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 50, "<button type=\"button\" class=\"")
718+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 47, "<button type=\"button\" class=\"")
731719 if templ_7745c5c3_Err != nil {
732720 return templ_7745c5c3_Err
733721 }
@@ -740,7 +728,7 @@ func FavoriteTagControls(favorite *entity.Favorite, tags []*entity.Tag) templ.Co
740728 if templ_7745c5c3_Err != nil {
741729 return templ_7745c5c3_Err
742730 }
743- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 51, "\" data-sv-action=\"")
731+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, "\" data-sv-action=\"")
744732 if templ_7745c5c3_Err != nil {
745733 return templ_7745c5c3_Err
746734 }
@@ -753,7 +741,7 @@ func FavoriteTagControls(favorite *entity.Favorite, tags []*entity.Tag) templ.Co
753741 if templ_7745c5c3_Err != nil {
754742 return templ_7745c5c3_Err
755743 }
756- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 52, "\" data-favorite-id=\"")
744+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, "\" data-favorite-id=\"")
757745 if templ_7745c5c3_Err != nil {
758746 return templ_7745c5c3_Err
759747 }
@@ -766,7 +754,7 @@ func FavoriteTagControls(favorite *entity.Favorite, tags []*entity.Tag) templ.Co
766754 if templ_7745c5c3_Err != nil {
767755 return templ_7745c5c3_Err
768756 }
769- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 53, "\" data-tag-id=\"")
757+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 50, "\" data-tag-id=\"")
770758 if templ_7745c5c3_Err != nil {
771759 return templ_7745c5c3_Err
772760 }
@@ -779,7 +767,7 @@ func FavoriteTagControls(favorite *entity.Favorite, tags []*entity.Tag) templ.Co
779767 if templ_7745c5c3_Err != nil {
780768 return templ_7745c5c3_Err
781769 }
782- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 54, "\"><span class=\"sv-tag-dot\" style=\"")
770+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 51, "\"><span class=\"sv-tag-dot\" style=\"")
783771 if templ_7745c5c3_Err != nil {
784772 return templ_7745c5c3_Err
785773 }
@@ -792,7 +780,7 @@ func FavoriteTagControls(favorite *entity.Favorite, tags []*entity.Tag) templ.Co
792780 if templ_7745c5c3_Err != nil {
793781 return templ_7745c5c3_Err
794782 }
795- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 55, "\"></span>")
783+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 52, "\"></span>")
796784 if templ_7745c5c3_Err != nil {
797785 return templ_7745c5c3_Err
798786 }
@@ -805,13 +793,13 @@ func FavoriteTagControls(favorite *entity.Favorite, tags []*entity.Tag) templ.Co
805793 if templ_7745c5c3_Err != nil {
806794 return templ_7745c5c3_Err
807795 }
808- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 56, "</button>")
796+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 53, "</button>")
809797 if templ_7745c5c3_Err != nil {
810798 return templ_7745c5c3_Err
811799 }
812800 }
813801 }
814- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 57, "</div>")
802+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 54, "</div>")
815803 if templ_7745c5c3_Err != nil {
816804 return templ_7745c5c3_Err
817805 }
@@ -841,7 +829,7 @@ func TagCreateForm() templ.Component {
841829 templ_7745c5c3_Var42 = templ.NopComponent
842830 }
843831 ctx = templ.ClearChildren(ctx)
844- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 58, "<form class=\"sv-inline-form\" data-sv-action=\"tag.create\"><label><span>Name</span><input name=\"name\" type=\"text\" required></label> <label><span>Color</span><input name=\"color\" type=\"text\" placeholder=\"#808080\"></label> <button class=\"sv-button sv-button-secondary\" type=\"submit\">")
832+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 55, "<form class=\"sv-inline-form\" data-sv-action=\"tag.create\"><label><span>Name</span><input name=\"name\" type=\"text\" required></label> <label><span>Color</span><input name=\"color\" type=\"text\" placeholder=\"#808080\"></label> <button class=\"sv-button sv-button-secondary\" type=\"submit\">")
845833 if templ_7745c5c3_Err != nil {
846834 return templ_7745c5c3_Err
847835 }
@@ -849,7 +837,7 @@ func TagCreateForm() templ.Component {
849837 if templ_7745c5c3_Err != nil {
850838 return templ_7745c5c3_Err
851839 }
852- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 59, "</button></form>")
840+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 56, "</button></form>")
853841 if templ_7745c5c3_Err != nil {
854842 return templ_7745c5c3_Err
855843 }
@@ -878,7 +866,7 @@ func TagItem(tag *entity.Tag) templ.Component {
878866 templ_7745c5c3_Var43 = templ.NopComponent
879867 }
880868 ctx = templ.ClearChildren(ctx)
881- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 60, "<li class=\"sv-list-row\"><form class=\"sv-inline-form\" data-sv-action=\"tag.update\"><input type=\"hidden\" name=\"id\" value=\"")
869+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 57, "<li class=\"sv-list-row\"><form class=\"sv-inline-form\" data-sv-action=\"tag.update\"><input type=\"hidden\" name=\"id\" value=\"")
882870 if templ_7745c5c3_Err != nil {
883871 return templ_7745c5c3_Err
884872 }
@@ -891,7 +879,7 @@ func TagItem(tag *entity.Tag) templ.Component {
891879 if templ_7745c5c3_Err != nil {
892880 return templ_7745c5c3_Err
893881 }
894- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 61, "\"> <span class=\"sv-tag-dot\" style=\"")
882+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 58, "\"> <span class=\"sv-tag-dot\" style=\"")
895883 if templ_7745c5c3_Err != nil {
896884 return templ_7745c5c3_Err
897885 }
@@ -904,7 +892,7 @@ func TagItem(tag *entity.Tag) templ.Component {
904892 if templ_7745c5c3_Err != nil {
905893 return templ_7745c5c3_Err
906894 }
907- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 62, "\"></span> <label><span>Name</span><input name=\"name\" type=\"text\" value=\"")
895+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 59, "\"></span> <label><span>Name</span><input name=\"name\" type=\"text\" value=\"")
908896 if templ_7745c5c3_Err != nil {
909897 return templ_7745c5c3_Err
910898 }
@@ -917,7 +905,7 @@ func TagItem(tag *entity.Tag) templ.Component {
917905 if templ_7745c5c3_Err != nil {
918906 return templ_7745c5c3_Err
919907 }
920- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 63, "\" required></label> <label><span>Color</span><input name=\"color\" type=\"text\" value=\"")
908+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 60, "\" required></label> <label><span>Color</span><input name=\"color\" type=\"text\" value=\"")
921909 if templ_7745c5c3_Err != nil {
922910 return templ_7745c5c3_Err
923911 }
@@ -930,7 +918,7 @@ func TagItem(tag *entity.Tag) templ.Component {
930918 if templ_7745c5c3_Err != nil {
931919 return templ_7745c5c3_Err
932920 }
933- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 64, "\"></label> <button class=\"sv-button sv-button-secondary\" type=\"submit\">")
921+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 61, "\"></label> <button class=\"sv-button sv-button-secondary\" type=\"submit\">")
934922 if templ_7745c5c3_Err != nil {
935923 return templ_7745c5c3_Err
936924 }
@@ -938,7 +926,7 @@ func TagItem(tag *entity.Tag) templ.Component {
938926 if templ_7745c5c3_Err != nil {
939927 return templ_7745c5c3_Err
940928 }
941- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 65, "</button> <button type=\"button\" class=\"sv-button sv-button-secondary sv-button-danger sv-button-icon-only\" data-sv-action=\"tag.delete\" data-id=\"")
929+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 62, "</button> <button type=\"button\" class=\"sv-button sv-button-secondary sv-button-danger sv-button-icon-only\" data-sv-action=\"tag.delete\" data-id=\"")
942930 if templ_7745c5c3_Err != nil {
943931 return templ_7745c5c3_Err
944932 }
@@ -951,7 +939,7 @@ func TagItem(tag *entity.Tag) templ.Component {
951939 if templ_7745c5c3_Err != nil {
952940 return templ_7745c5c3_Err
953941 }
954- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 66, "\" data-sv-confirm=\"Delete this tag?\" aria-label=\"Delete this tag\">")
942+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 63, "\" data-sv-confirm=\"Delete this tag?\" aria-label=\"Delete this tag\">")
955943 if templ_7745c5c3_Err != nil {
956944 return templ_7745c5c3_Err
957945 }
@@ -959,7 +947,7 @@ func TagItem(tag *entity.Tag) templ.Component {
959947 if templ_7745c5c3_Err != nil {
960948 return templ_7745c5c3_Err
961949 }
962- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 67, "</button></form></li>")
950+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 64, "</button></form></li>")
963951 if templ_7745c5c3_Err != nil {
964952 return templ_7745c5c3_Err
965953 }
@@ -988,12 +976,12 @@ func ShortcutSelect(selected *int) templ.Component {
988976 templ_7745c5c3_Var49 = templ.NopComponent
989977 }
990978 ctx = templ.ClearChildren(ctx)
991- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 68, "<label><span>Shortcut</span><select name=\"shortcut_key\"><option value=\"\">None</option> ")
979+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 65, "<label><span>Shortcut</span><select name=\"shortcut_key\"><option value=\"\">None</option> ")
992980 if templ_7745c5c3_Err != nil {
993981 return templ_7745c5c3_Err
994982 }
995983 for i := 1; i <= 9; i++ {
996- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 69, "<option value=\"")
984+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 66, "<option value=\"")
997985 if templ_7745c5c3_Err != nil {
998986 return templ_7745c5c3_Err
999987 }
@@ -1006,17 +994,17 @@ func ShortcutSelect(selected *int) templ.Component {
1006994 if templ_7745c5c3_Err != nil {
1007995 return templ_7745c5c3_Err
1008996 }
1009- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 70, "\"")
997+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 67, "\"")
1010998 if templ_7745c5c3_Err != nil {
1011999 return templ_7745c5c3_Err
10121000 }
10131001 if shortcutSelected(selected, i) {
1014- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 71, " selected")
1002+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 68, " selected")
10151003 if templ_7745c5c3_Err != nil {
10161004 return templ_7745c5c3_Err
10171005 }
10181006 }
1019- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 72, ">")
1007+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 69, ">")
10201008 if templ_7745c5c3_Err != nil {
10211009 return templ_7745c5c3_Err
10221010 }
@@ -1029,12 +1017,12 @@ func ShortcutSelect(selected *int) templ.Component {
10291017 if templ_7745c5c3_Err != nil {
10301018 return templ_7745c5c3_Err
10311019 }
1032- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 73, "</option>")
1020+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 70, "</option>")
10331021 if templ_7745c5c3_Err != nil {
10341022 return templ_7745c5c3_Err
10351023 }
10361024 }
1037- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 74, "</select></label>")
1025+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 71, "</select></label>")
10381026 if templ_7745c5c3_Err != nil {
10391027 return templ_7745c5c3_Err
10401028 }
@@ -79,17 +79,13 @@ func FavoritesView(data favoritesRenderData) templ.Component {
79 if templ_7745c5c3_Err != nil {79 if templ_7745c5c3_Err != nil {
80 return templ_7745c5c3_Err80 return templ_7745c5c3_Err
81 }81 }
82- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, " ")
83- if templ_7745c5c3_Err != nil {
84- return templ_7745c5c3_Err
85- }
86 if len(data.Favorites) == 0 {82 if len(data.Favorites) == 0 {
87 templ_7745c5c3_Err = EmptyState("No favorites").Render(ctx, templ_7745c5c3_Buffer)83 templ_7745c5c3_Err = EmptyState("No favorites").Render(ctx, templ_7745c5c3_Buffer)
88 if templ_7745c5c3_Err != nil {84 if templ_7745c5c3_Err != nil {
89 return templ_7745c5c3_Err85 return templ_7745c5c3_Err
90 }86 }
91 } else {87 } else {
92- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "<ul class=\"sv-list\">")88+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<ul class=\"sv-list\">")
93 if templ_7745c5c3_Err != nil {89 if templ_7745c5c3_Err != nil {
94 return templ_7745c5c3_Err90 return templ_7745c5c3_Err
95 }91 }
@@ -101,7 +97,7 @@ func FavoritesView(data favoritesRenderData) templ.Component {
101 }97 }
102 }98 }
103 }99 }
104- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "</ul>")100+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "</ul>")
105 if templ_7745c5c3_Err != nil {101 if templ_7745c5c3_Err != nil {
106 return templ_7745c5c3_Err102 return templ_7745c5c3_Err
107 }103 }
@@ -128,25 +124,17 @@ func FavoritesView(data favoritesRenderData) templ.Component {
128 if templ_7745c5c3_Err != nil {124 if templ_7745c5c3_Err != nil {
129 return templ_7745c5c3_Err125 return templ_7745c5c3_Err
130 }126 }
131- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, " ")
132- if templ_7745c5c3_Err != nil {
133- return templ_7745c5c3_Err
134- }
135 templ_7745c5c3_Err = TagCreateForm().Render(ctx, templ_7745c5c3_Buffer)127 templ_7745c5c3_Err = TagCreateForm().Render(ctx, templ_7745c5c3_Buffer)
136 if templ_7745c5c3_Err != nil {128 if templ_7745c5c3_Err != nil {
137 return templ_7745c5c3_Err129 return templ_7745c5c3_Err
138 }130 }
139- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, " ")
140- if templ_7745c5c3_Err != nil {
141- return templ_7745c5c3_Err
142- }
143 if len(data.Tags) == 0 {131 if len(data.Tags) == 0 {
144 templ_7745c5c3_Err = EmptyState("No tags").Render(ctx, templ_7745c5c3_Buffer)132 templ_7745c5c3_Err = EmptyState("No tags").Render(ctx, templ_7745c5c3_Buffer)
145 if templ_7745c5c3_Err != nil {133 if templ_7745c5c3_Err != nil {
146 return templ_7745c5c3_Err134 return templ_7745c5c3_Err
147 }135 }
148 } else {136 } else {
149- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "<ul class=\"sv-list\">")137+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "<ul class=\"sv-list\">")
150 if templ_7745c5c3_Err != nil {138 if templ_7745c5c3_Err != nil {
151 return templ_7745c5c3_Err139 return templ_7745c5c3_Err
152 }140 }
@@ -158,7 +146,7 @@ func FavoritesView(data favoritesRenderData) templ.Component {
158 }146 }
159 }147 }
160 }148 }
161- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, "</ul>")149+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "</ul>")
162 if templ_7745c5c3_Err != nil {150 if templ_7745c5c3_Err != nil {
163 return templ_7745c5c3_Err151 return templ_7745c5c3_Err
164 }152 }
@@ -194,7 +182,7 @@ func FavoritesControls(data favoritesRenderData) templ.Component {
194 templ_7745c5c3_Var5 = templ.NopComponent182 templ_7745c5c3_Var5 = templ.NopComponent
195 }183 }
196 ctx = templ.ClearChildren(ctx)184 ctx = templ.ClearChildren(ctx)
197- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, "<form class=\"sv-card-form\" data-sv-action=\"favorite.create\"><label><span>URL</span><input name=\"url\" type=\"url\" placeholder=\"https://example.com\" required></label> <label><span>Title</span><input name=\"title\" type=\"text\" placeholder=\"Optional title\"></label>")185+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "<form class=\"sv-card-form\" data-sv-action=\"favorite.create\"><label><span>URL</span><input name=\"url\" type=\"url\" placeholder=\"https://example.com\" required></label> <label><span>Title</span><input name=\"title\" type=\"text\" placeholder=\"Optional title\"></label>")
198 if templ_7745c5c3_Err != nil {186 if templ_7745c5c3_Err != nil {
199 return templ_7745c5c3_Err187 return templ_7745c5c3_Err
200 }188 }
@@ -202,7 +190,7 @@ func FavoritesControls(data favoritesRenderData) templ.Component {
202 if templ_7745c5c3_Err != nil {190 if templ_7745c5c3_Err != nil {
203 return templ_7745c5c3_Err191 return templ_7745c5c3_Err
204 }192 }
205- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "<button class=\"sv-button\" type=\"submit\">")193+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "<button class=\"sv-button\" type=\"submit\">")
206 if templ_7745c5c3_Err != nil {194 if templ_7745c5c3_Err != nil {
207 return templ_7745c5c3_Err195 return templ_7745c5c3_Err
208 }196 }
@@ -210,7 +198,7 @@ func FavoritesControls(data favoritesRenderData) templ.Component {
210 if templ_7745c5c3_Err != nil {198 if templ_7745c5c3_Err != nil {
211 return templ_7745c5c3_Err199 return templ_7745c5c3_Err
212 }200 }
213- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, "</button></form><div class=\"sv-filter-panel\"><div class=\"sv-button-row\"><span class=\"sv-meta\">Tags</span> ")201+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, "</button></form><div class=\"sv-filter-panel\"><div class=\"sv-button-row\"><span class=\"sv-meta\">Tags</span> ")
214 if templ_7745c5c3_Err != nil {202 if templ_7745c5c3_Err != nil {
215 return templ_7745c5c3_Err203 return templ_7745c5c3_Err
216 }204 }
@@ -219,7 +207,7 @@ func FavoritesControls(data favoritesRenderData) templ.Component {
219 if templ_7745c5c3_Err != nil {207 if templ_7745c5c3_Err != nil {
220 return templ_7745c5c3_Err208 return templ_7745c5c3_Err
221 }209 }
222- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "<button type=\"button\" class=\"")210+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, "<button type=\"button\" class=\"")
223 if templ_7745c5c3_Err != nil {211 if templ_7745c5c3_Err != nil {
224 return templ_7745c5c3_Err212 return templ_7745c5c3_Err
225 }213 }
@@ -232,7 +220,7 @@ func FavoritesControls(data favoritesRenderData) templ.Component {
232 if templ_7745c5c3_Err != nil {220 if templ_7745c5c3_Err != nil {
233 return templ_7745c5c3_Err221 return templ_7745c5c3_Err
234 }222 }
235- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "\" aria-pressed=\"")223+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "\" aria-pressed=\"")
236 if templ_7745c5c3_Err != nil {224 if templ_7745c5c3_Err != nil {
237 return templ_7745c5c3_Err225 return templ_7745c5c3_Err
238 }226 }
@@ -245,7 +233,7 @@ func FavoritesControls(data favoritesRenderData) templ.Component {
245 if templ_7745c5c3_Err != nil {233 if templ_7745c5c3_Err != nil {
246 return templ_7745c5c3_Err234 return templ_7745c5c3_Err
247 }235 }
248- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "\" data-sv-action=\"favorite.clearFilters\">All</button> ")236+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, "\" data-sv-action=\"favorite.clearFilters\">All</button> ")
249 if templ_7745c5c3_Err != nil {237 if templ_7745c5c3_Err != nil {
250 return templ_7745c5c3_Err238 return templ_7745c5c3_Err
251 }239 }
@@ -254,7 +242,7 @@ func FavoritesControls(data favoritesRenderData) templ.Component {
254 if templ_7745c5c3_Err != nil {242 if templ_7745c5c3_Err != nil {
255 return templ_7745c5c3_Err243 return templ_7745c5c3_Err
256 }244 }
257- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, "<button type=\"button\" class=\"")245+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "<button type=\"button\" class=\"")
258 if templ_7745c5c3_Err != nil {246 if templ_7745c5c3_Err != nil {
259 return templ_7745c5c3_Err247 return templ_7745c5c3_Err
260 }248 }
@@ -267,7 +255,7 @@ func FavoritesControls(data favoritesRenderData) templ.Component {
267 if templ_7745c5c3_Err != nil {255 if templ_7745c5c3_Err != nil {
268 return templ_7745c5c3_Err256 return templ_7745c5c3_Err
269 }257 }
270- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, "\" aria-pressed=\"")258+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "\" aria-pressed=\"")
271 if templ_7745c5c3_Err != nil {259 if templ_7745c5c3_Err != nil {
272 return templ_7745c5c3_Err260 return templ_7745c5c3_Err
273 }261 }
@@ -280,7 +268,7 @@ func FavoritesControls(data favoritesRenderData) templ.Component {
280 if templ_7745c5c3_Err != nil {268 if templ_7745c5c3_Err != nil {
281 return templ_7745c5c3_Err269 return templ_7745c5c3_Err
282 }270 }
283- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "\" data-sv-action=\"favorite.filterUntagged\">Untagged</button> ")271+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "\" data-sv-action=\"favorite.filterUntagged\">Untagged</button> ")
284 if templ_7745c5c3_Err != nil {272 if templ_7745c5c3_Err != nil {
285 return templ_7745c5c3_Err273 return templ_7745c5c3_Err
286 }274 }
@@ -291,7 +279,7 @@ func FavoritesControls(data favoritesRenderData) templ.Component {
291 if templ_7745c5c3_Err != nil {279 if templ_7745c5c3_Err != nil {
292 return templ_7745c5c3_Err280 return templ_7745c5c3_Err
293 }281 }
294- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "<button type=\"button\" class=\"")282+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, "<button type=\"button\" class=\"")
295 if templ_7745c5c3_Err != nil {283 if templ_7745c5c3_Err != nil {
296 return templ_7745c5c3_Err284 return templ_7745c5c3_Err
297 }285 }
@@ -304,7 +292,7 @@ func FavoritesControls(data favoritesRenderData) templ.Component {
304 if templ_7745c5c3_Err != nil {292 if templ_7745c5c3_Err != nil {
305 return templ_7745c5c3_Err293 return templ_7745c5c3_Err
306 }294 }
307- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, "\" aria-pressed=\"")295+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, "\" aria-pressed=\"")
308 if templ_7745c5c3_Err != nil {296 if templ_7745c5c3_Err != nil {
309 return templ_7745c5c3_Err297 return templ_7745c5c3_Err
310 }298 }
@@ -317,7 +305,7 @@ func FavoritesControls(data favoritesRenderData) templ.Component {
317 if templ_7745c5c3_Err != nil {305 if templ_7745c5c3_Err != nil {
318 return templ_7745c5c3_Err306 return templ_7745c5c3_Err
319 }307 }
320- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "\" data-sv-action=\"favorite.filterTag\" data-tag-id=\"")308+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "\" data-sv-action=\"favorite.filterTag\" data-tag-id=\"")
321 if templ_7745c5c3_Err != nil {309 if templ_7745c5c3_Err != nil {
322 return templ_7745c5c3_Err310 return templ_7745c5c3_Err
323 }311 }
@@ -330,7 +318,7 @@ func FavoritesControls(data favoritesRenderData) templ.Component {
330 if templ_7745c5c3_Err != nil {318 if templ_7745c5c3_Err != nil {
331 return templ_7745c5c3_Err319 return templ_7745c5c3_Err
332 }320 }
333- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "\"><span class=\"sv-tag-dot\" style=\"")321+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "\"><span class=\"sv-tag-dot\" style=\"")
334 if templ_7745c5c3_Err != nil {322 if templ_7745c5c3_Err != nil {
335 return templ_7745c5c3_Err323 return templ_7745c5c3_Err
336 }324 }
@@ -343,7 +331,7 @@ func FavoritesControls(data favoritesRenderData) templ.Component {
343 if templ_7745c5c3_Err != nil {331 if templ_7745c5c3_Err != nil {
344 return templ_7745c5c3_Err332 return templ_7745c5c3_Err
345 }333 }
346- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "\"></span>")334+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, "\"></span>")
347 if templ_7745c5c3_Err != nil {335 if templ_7745c5c3_Err != nil {
348 return templ_7745c5c3_Err336 return templ_7745c5c3_Err
349 }337 }
@@ -356,13 +344,13 @@ func FavoritesControls(data favoritesRenderData) templ.Component {
356 if templ_7745c5c3_Err != nil {344 if templ_7745c5c3_Err != nil {
357 return templ_7745c5c3_Err345 return templ_7745c5c3_Err
358 }346 }
359- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "</button>")347+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "</button>")
360 if templ_7745c5c3_Err != nil {348 if templ_7745c5c3_Err != nil {
361 return templ_7745c5c3_Err349 return templ_7745c5c3_Err
362 }350 }
363 }351 }
364 }352 }
365- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "</div></div><p class=\"sv-meta sv-key-hints\">Keys: <kbd>j</kbd>/<kbd>k</kbd> move, <kbd>Enter</kbd> open, <kbd>e</kbd> edit title, <kbd>d</kbd> delete focused favorite.</p>")353+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "</div></div><p class=\"sv-meta sv-key-hints\">Keys: <kbd>j</kbd>/<kbd>k</kbd> move, <kbd>Enter</kbd> open, <kbd>e</kbd> edit title, <kbd>d</kbd> delete focused favorite.</p>")
366 if templ_7745c5c3_Err != nil {354 if templ_7745c5c3_Err != nil {
367 return templ_7745c5c3_Err355 return templ_7745c5c3_Err
368 }356 }
@@ -392,13 +380,13 @@ func FavoriteCreateTagPicker(tags []*entity.Tag) templ.Component {
392 }380 }
393 ctx = templ.ClearChildren(ctx)381 ctx = templ.ClearChildren(ctx)
394 if len(tags) > 0 {382 if len(tags) > 0 {
395- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "<fieldset class=\"sv-tag-picker\"><legend>Tags</legend><div class=\"sv-tag-controls\">")383+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "<fieldset class=\"sv-tag-picker\"><legend>Tags</legend><div class=\"sv-tag-controls\">")
396 if templ_7745c5c3_Err != nil {384 if templ_7745c5c3_Err != nil {
397 return templ_7745c5c3_Err385 return templ_7745c5c3_Err
398 }386 }
399 for _, tag := range tags {387 for _, tag := range tags {
400 if tag != nil {388 if tag != nil {
401- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "<label class=\"sv-tag-toggle\"><input type=\"checkbox\" name=\"tags\" value=\"")389+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "<label class=\"sv-tag-toggle\"><input type=\"checkbox\" name=\"tags\" value=\"")
402 if templ_7745c5c3_Err != nil {390 if templ_7745c5c3_Err != nil {
403 return templ_7745c5c3_Err391 return templ_7745c5c3_Err
404 }392 }
@@ -411,7 +399,7 @@ func FavoriteCreateTagPicker(tags []*entity.Tag) templ.Component {
411 if templ_7745c5c3_Err != nil {399 if templ_7745c5c3_Err != nil {
412 return templ_7745c5c3_Err400 return templ_7745c5c3_Err
413 }401 }
414- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, "\"> <span><span class=\"sv-tag-dot\" style=\"")402+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "\"> <span><span class=\"sv-tag-dot\" style=\"")
415 if templ_7745c5c3_Err != nil {403 if templ_7745c5c3_Err != nil {
416 return templ_7745c5c3_Err404 return templ_7745c5c3_Err
417 }405 }
@@ -424,7 +412,7 @@ func FavoriteCreateTagPicker(tags []*entity.Tag) templ.Component {
424 if templ_7745c5c3_Err != nil {412 if templ_7745c5c3_Err != nil {
425 return templ_7745c5c3_Err413 return templ_7745c5c3_Err
426 }414 }
427- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 27, "\"></span>")415+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "\"></span>")
428 if templ_7745c5c3_Err != nil {416 if templ_7745c5c3_Err != nil {
429 return templ_7745c5c3_Err417 return templ_7745c5c3_Err
430 }418 }
@@ -437,13 +425,13 @@ func FavoriteCreateTagPicker(tags []*entity.Tag) templ.Component {
437 if templ_7745c5c3_Err != nil {425 if templ_7745c5c3_Err != nil {
438 return templ_7745c5c3_Err426 return templ_7745c5c3_Err
439 }427 }
440- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 28, "</span></label>")428+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "</span></label>")
441 if templ_7745c5c3_Err != nil {429 if templ_7745c5c3_Err != nil {
442 return templ_7745c5c3_Err430 return templ_7745c5c3_Err
443 }431 }
444 }432 }
445 }433 }
446- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 29, "</div></fieldset>")434+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, "</div></fieldset>")
447 if templ_7745c5c3_Err != nil {435 if templ_7745c5c3_Err != nil {
448 return templ_7745c5c3_Err436 return templ_7745c5c3_Err
449 }437 }
@@ -473,7 +461,7 @@ func FavoriteItem(favorite *entity.Favorite, tags []*entity.Tag) templ.Component
473 templ_7745c5c3_Var22 = templ.NopComponent461 templ_7745c5c3_Var22 = templ.NopComponent
474 }462 }
475 ctx = templ.ClearChildren(ctx)463 ctx = templ.ClearChildren(ctx)
476- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 30, "<li class=\"sv-list-row\"><article class=\"sv-favorite-item\" data-sv-favorite-row data-favorite-id=\"")464+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 27, "<li class=\"sv-list-row\"><article class=\"sv-favorite-item\" data-sv-favorite-row data-favorite-id=\"")
477 if templ_7745c5c3_Err != nil {465 if templ_7745c5c3_Err != nil {
478 return templ_7745c5c3_Err466 return templ_7745c5c3_Err
479 }467 }
@@ -486,7 +474,7 @@ func FavoriteItem(favorite *entity.Favorite, tags []*entity.Tag) templ.Component
486 if templ_7745c5c3_Err != nil {474 if templ_7745c5c3_Err != nil {
487 return templ_7745c5c3_Err475 return templ_7745c5c3_Err
488 }476 }
489- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 31, "\"><div class=\"sv-favorite-header\"><div><a class=\"sv-link sv-favorite-open\" href=\"")477+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 28, "\"><div class=\"sv-favorite-header\"><div><a class=\"sv-link sv-favorite-open\" href=\"")
490 if templ_7745c5c3_Err != nil {478 if templ_7745c5c3_Err != nil {
491 return templ_7745c5c3_Err479 return templ_7745c5c3_Err
492 }480 }
@@ -499,7 +487,7 @@ func FavoriteItem(favorite *entity.Favorite, tags []*entity.Tag) templ.Component
499 if templ_7745c5c3_Err != nil {487 if templ_7745c5c3_Err != nil {
500 return templ_7745c5c3_Err488 return templ_7745c5c3_Err
501 }489 }
502- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 32, "\">")490+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 29, "\">")
503 if templ_7745c5c3_Err != nil {491 if templ_7745c5c3_Err != nil {
504 return templ_7745c5c3_Err492 return templ_7745c5c3_Err
505 }493 }
@@ -512,7 +500,7 @@ func FavoriteItem(favorite *entity.Favorite, tags []*entity.Tag) templ.Component
512 if templ_7745c5c3_Err != nil {500 if templ_7745c5c3_Err != nil {
513 return templ_7745c5c3_Err501 return templ_7745c5c3_Err
514 }502 }
515- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 33, "</a><p class=\"sv-history-url\">")503+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 30, "</a><p class=\"sv-history-url\">")
516 if templ_7745c5c3_Err != nil {504 if templ_7745c5c3_Err != nil {
517 return templ_7745c5c3_Err505 return templ_7745c5c3_Err
518 }506 }
@@ -525,12 +513,12 @@ func FavoriteItem(favorite *entity.Favorite, tags []*entity.Tag) templ.Component
525 if templ_7745c5c3_Err != nil {513 if templ_7745c5c3_Err != nil {
526 return templ_7745c5c3_Err514 return templ_7745c5c3_Err
527 }515 }
528- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 34, "</p>")516+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 31, "</p>")
529 if templ_7745c5c3_Err != nil {517 if templ_7745c5c3_Err != nil {
530 return templ_7745c5c3_Err518 return templ_7745c5c3_Err
531 }519 }
532 if favoriteMetaText(favorite) != "" {520 if favoriteMetaText(favorite) != "" {
533- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 35, "<p class=\"sv-meta\">")521+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 32, "<p class=\"sv-meta\">")
534 if templ_7745c5c3_Err != nil {522 if templ_7745c5c3_Err != nil {
535 return templ_7745c5c3_Err523 return templ_7745c5c3_Err
536 }524 }
@@ -543,12 +531,12 @@ func FavoriteItem(favorite *entity.Favorite, tags []*entity.Tag) templ.Component
543 if templ_7745c5c3_Err != nil {531 if templ_7745c5c3_Err != nil {
544 return templ_7745c5c3_Err532 return templ_7745c5c3_Err
545 }533 }
546- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 36, "</p>")534+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 33, "</p>")
547 if templ_7745c5c3_Err != nil {535 if templ_7745c5c3_Err != nil {
548 return templ_7745c5c3_Err536 return templ_7745c5c3_Err
549 }537 }
550 }538 }
551- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 37, "</div><div class=\"sv-history-row-actions\"><a class=\"sv-button sv-button-secondary\" href=\"")539+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 34, "</div><div class=\"sv-history-row-actions\"><a class=\"sv-button sv-button-secondary\" href=\"")
552 if templ_7745c5c3_Err != nil {540 if templ_7745c5c3_Err != nil {
553 return templ_7745c5c3_Err541 return templ_7745c5c3_Err
554 }542 }
@@ -561,7 +549,7 @@ func FavoriteItem(favorite *entity.Favorite, tags []*entity.Tag) templ.Component
561 if templ_7745c5c3_Err != nil {549 if templ_7745c5c3_Err != nil {
562 return templ_7745c5c3_Err550 return templ_7745c5c3_Err
563 }551 }
564- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 38, "\">")552+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 35, "\">")
565 if templ_7745c5c3_Err != nil {553 if templ_7745c5c3_Err != nil {
566 return templ_7745c5c3_Err554 return templ_7745c5c3_Err
567 }555 }
@@ -569,7 +557,7 @@ func FavoriteItem(favorite *entity.Favorite, tags []*entity.Tag) templ.Component
569 if templ_7745c5c3_Err != nil {557 if templ_7745c5c3_Err != nil {
570 return templ_7745c5c3_Err558 return templ_7745c5c3_Err
571 }559 }
572- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 39, "</a> <button type=\"button\" class=\"sv-button sv-button-secondary sv-button-danger sv-button-icon-only\" data-sv-action=\"favorite.delete\" data-id=\"")560+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 36, "</a> <button type=\"button\" class=\"sv-button sv-button-secondary sv-button-danger sv-button-icon-only\" data-sv-action=\"favorite.delete\" data-id=\"")
573 if templ_7745c5c3_Err != nil {561 if templ_7745c5c3_Err != nil {
574 return templ_7745c5c3_Err562 return templ_7745c5c3_Err
575 }563 }
@@ -582,7 +570,7 @@ func FavoriteItem(favorite *entity.Favorite, tags []*entity.Tag) templ.Component
582 if templ_7745c5c3_Err != nil {570 if templ_7745c5c3_Err != nil {
583 return templ_7745c5c3_Err571 return templ_7745c5c3_Err
584 }572 }
585- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 40, "\" data-sv-confirm=\"Delete this favorite?\" aria-label=\"Delete this favorite\">")573+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 37, "\" data-sv-confirm=\"Delete this favorite?\" aria-label=\"Delete this favorite\">")
586 if templ_7745c5c3_Err != nil {574 if templ_7745c5c3_Err != nil {
587 return templ_7745c5c3_Err575 return templ_7745c5c3_Err
588 }576 }
@@ -590,7 +578,7 @@ func FavoriteItem(favorite *entity.Favorite, tags []*entity.Tag) templ.Component
590 if templ_7745c5c3_Err != nil {578 if templ_7745c5c3_Err != nil {
591 return templ_7745c5c3_Err579 return templ_7745c5c3_Err
592 }580 }
593- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 41, "</button></div></div>")581+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 38, "</button></div></div>")
594 if templ_7745c5c3_Err != nil {582 if templ_7745c5c3_Err != nil {
595 return templ_7745c5c3_Err583 return templ_7745c5c3_Err
596 }584 }
@@ -602,7 +590,7 @@ func FavoriteItem(favorite *entity.Favorite, tags []*entity.Tag) templ.Component
602 if templ_7745c5c3_Err != nil {590 if templ_7745c5c3_Err != nil {
603 return templ_7745c5c3_Err591 return templ_7745c5c3_Err
604 }592 }
605- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, "</article></li>")593+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 39, "</article></li>")
606 if templ_7745c5c3_Err != nil {594 if templ_7745c5c3_Err != nil {
607 return templ_7745c5c3_Err595 return templ_7745c5c3_Err
608 }596 }
@@ -631,7 +619,7 @@ func FavoriteEditForm(favorite *entity.Favorite) templ.Component {
631 templ_7745c5c3_Var30 = templ.NopComponent619 templ_7745c5c3_Var30 = templ.NopComponent
632 }620 }
633 ctx = templ.ClearChildren(ctx)621 ctx = templ.ClearChildren(ctx)
634- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 43, "<form class=\"sv-inline-form\" data-sv-action=\"favorite.update\"><input type=\"hidden\" name=\"id\" value=\"")622+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 40, "<form class=\"sv-inline-form\" data-sv-action=\"favorite.update\"><input type=\"hidden\" name=\"id\" value=\"")
635 if templ_7745c5c3_Err != nil {623 if templ_7745c5c3_Err != nil {
636 return templ_7745c5c3_Err624 return templ_7745c5c3_Err
637 }625 }
@@ -644,7 +632,7 @@ func FavoriteEditForm(favorite *entity.Favorite) templ.Component {
644 if templ_7745c5c3_Err != nil {632 if templ_7745c5c3_Err != nil {
645 return templ_7745c5c3_Err633 return templ_7745c5c3_Err
646 }634 }
647- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 44, "\"> <label><span>Title</span><input name=\"title\" type=\"text\" value=\"")635+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 41, "\"> <label><span>Title</span><input name=\"title\" type=\"text\" value=\"")
648 if templ_7745c5c3_Err != nil {636 if templ_7745c5c3_Err != nil {
649 return templ_7745c5c3_Err637 return templ_7745c5c3_Err
650 }638 }
@@ -657,7 +645,7 @@ func FavoriteEditForm(favorite *entity.Favorite) templ.Component {
657 if templ_7745c5c3_Err != nil {645 if templ_7745c5c3_Err != nil {
658 return templ_7745c5c3_Err646 return templ_7745c5c3_Err
659 }647 }
660- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 45, "\"></label> <label><span>Favicon</span><input name=\"favicon_url\" type=\"url\" value=\"")648+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, "\"></label> <label><span>Favicon</span><input name=\"favicon_url\" type=\"url\" value=\"")
661 if templ_7745c5c3_Err != nil {649 if templ_7745c5c3_Err != nil {
662 return templ_7745c5c3_Err650 return templ_7745c5c3_Err
663 }651 }
@@ -670,7 +658,7 @@ func FavoriteEditForm(favorite *entity.Favorite) templ.Component {
670 if templ_7745c5c3_Err != nil {658 if templ_7745c5c3_Err != nil {
671 return templ_7745c5c3_Err659 return templ_7745c5c3_Err
672 }660 }
673- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 46, "\"></label>")661+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 43, "\"></label>")
674 if templ_7745c5c3_Err != nil {662 if templ_7745c5c3_Err != nil {
675 return templ_7745c5c3_Err663 return templ_7745c5c3_Err
676 }664 }
@@ -678,7 +666,7 @@ func FavoriteEditForm(favorite *entity.Favorite) templ.Component {
678 if templ_7745c5c3_Err != nil {666 if templ_7745c5c3_Err != nil {
679 return templ_7745c5c3_Err667 return templ_7745c5c3_Err
680 }668 }
681- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 47, "<button class=\"sv-button sv-button-secondary\" type=\"submit\">")669+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 44, "<button class=\"sv-button sv-button-secondary\" type=\"submit\">")
682 if templ_7745c5c3_Err != nil {670 if templ_7745c5c3_Err != nil {
683 return templ_7745c5c3_Err671 return templ_7745c5c3_Err
684 }672 }
@@ -686,7 +674,7 @@ func FavoriteEditForm(favorite *entity.Favorite) templ.Component {
686 if templ_7745c5c3_Err != nil {674 if templ_7745c5c3_Err != nil {
687 return templ_7745c5c3_Err675 return templ_7745c5c3_Err
688 }676 }
689- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, "</button></form>")677+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 45, "</button></form>")
690 if templ_7745c5c3_Err != nil {678 if templ_7745c5c3_Err != nil {
691 return templ_7745c5c3_Err679 return templ_7745c5c3_Err
692 }680 }
@@ -716,7 +704,7 @@ func FavoriteTagControls(favorite *entity.Favorite, tags []*entity.Tag) templ.Co
716 }704 }
717 ctx = templ.ClearChildren(ctx)705 ctx = templ.ClearChildren(ctx)
718 if len(tags) > 0 {706 if len(tags) > 0 {
719- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, "<div class=\"sv-tag-controls\"><span class=\"sv-meta\">Tags</span> ")707+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 46, "<div class=\"sv-tag-controls\"><span class=\"sv-meta\">Tags</span> ")
720 if templ_7745c5c3_Err != nil {708 if templ_7745c5c3_Err != nil {
721 return templ_7745c5c3_Err709 return templ_7745c5c3_Err
722 }710 }
@@ -727,7 +715,7 @@ func FavoriteTagControls(favorite *entity.Favorite, tags []*entity.Tag) templ.Co
727 if templ_7745c5c3_Err != nil {715 if templ_7745c5c3_Err != nil {
728 return templ_7745c5c3_Err716 return templ_7745c5c3_Err
729 }717 }
730- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 50, "<button type=\"button\" class=\"")718+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 47, "<button type=\"button\" class=\"")
731 if templ_7745c5c3_Err != nil {719 if templ_7745c5c3_Err != nil {
732 return templ_7745c5c3_Err720 return templ_7745c5c3_Err
733 }721 }
@@ -740,7 +728,7 @@ func FavoriteTagControls(favorite *entity.Favorite, tags []*entity.Tag) templ.Co
740 if templ_7745c5c3_Err != nil {728 if templ_7745c5c3_Err != nil {
741 return templ_7745c5c3_Err729 return templ_7745c5c3_Err
742 }730 }
743- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 51, "\" data-sv-action=\"")731+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, "\" data-sv-action=\"")
744 if templ_7745c5c3_Err != nil {732 if templ_7745c5c3_Err != nil {
745 return templ_7745c5c3_Err733 return templ_7745c5c3_Err
746 }734 }
@@ -753,7 +741,7 @@ func FavoriteTagControls(favorite *entity.Favorite, tags []*entity.Tag) templ.Co
753 if templ_7745c5c3_Err != nil {741 if templ_7745c5c3_Err != nil {
754 return templ_7745c5c3_Err742 return templ_7745c5c3_Err
755 }743 }
756- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 52, "\" data-favorite-id=\"")744+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, "\" data-favorite-id=\"")
757 if templ_7745c5c3_Err != nil {745 if templ_7745c5c3_Err != nil {
758 return templ_7745c5c3_Err746 return templ_7745c5c3_Err
759 }747 }
@@ -766,7 +754,7 @@ func FavoriteTagControls(favorite *entity.Favorite, tags []*entity.Tag) templ.Co
766 if templ_7745c5c3_Err != nil {754 if templ_7745c5c3_Err != nil {
767 return templ_7745c5c3_Err755 return templ_7745c5c3_Err
768 }756 }
769- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 53, "\" data-tag-id=\"")757+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 50, "\" data-tag-id=\"")
770 if templ_7745c5c3_Err != nil {758 if templ_7745c5c3_Err != nil {
771 return templ_7745c5c3_Err759 return templ_7745c5c3_Err
772 }760 }
@@ -779,7 +767,7 @@ func FavoriteTagControls(favorite *entity.Favorite, tags []*entity.Tag) templ.Co
779 if templ_7745c5c3_Err != nil {767 if templ_7745c5c3_Err != nil {
780 return templ_7745c5c3_Err768 return templ_7745c5c3_Err
781 }769 }
782- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 54, "\"><span class=\"sv-tag-dot\" style=\"")770+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 51, "\"><span class=\"sv-tag-dot\" style=\"")
783 if templ_7745c5c3_Err != nil {771 if templ_7745c5c3_Err != nil {
784 return templ_7745c5c3_Err772 return templ_7745c5c3_Err
785 }773 }
@@ -792,7 +780,7 @@ func FavoriteTagControls(favorite *entity.Favorite, tags []*entity.Tag) templ.Co
792 if templ_7745c5c3_Err != nil {780 if templ_7745c5c3_Err != nil {
793 return templ_7745c5c3_Err781 return templ_7745c5c3_Err
794 }782 }
795- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 55, "\"></span>")783+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 52, "\"></span>")
796 if templ_7745c5c3_Err != nil {784 if templ_7745c5c3_Err != nil {
797 return templ_7745c5c3_Err785 return templ_7745c5c3_Err
798 }786 }
@@ -805,13 +793,13 @@ func FavoriteTagControls(favorite *entity.Favorite, tags []*entity.Tag) templ.Co
805 if templ_7745c5c3_Err != nil {793 if templ_7745c5c3_Err != nil {
806 return templ_7745c5c3_Err794 return templ_7745c5c3_Err
807 }795 }
808- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 56, "</button>")796+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 53, "</button>")
809 if templ_7745c5c3_Err != nil {797 if templ_7745c5c3_Err != nil {
810 return templ_7745c5c3_Err798 return templ_7745c5c3_Err
811 }799 }
812 }800 }
813 }801 }
814- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 57, "</div>")802+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 54, "</div>")
815 if templ_7745c5c3_Err != nil {803 if templ_7745c5c3_Err != nil {
816 return templ_7745c5c3_Err804 return templ_7745c5c3_Err
817 }805 }
@@ -841,7 +829,7 @@ func TagCreateForm() templ.Component {
841 templ_7745c5c3_Var42 = templ.NopComponent829 templ_7745c5c3_Var42 = templ.NopComponent
842 }830 }
843 ctx = templ.ClearChildren(ctx)831 ctx = templ.ClearChildren(ctx)
844- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 58, "<form class=\"sv-inline-form\" data-sv-action=\"tag.create\"><label><span>Name</span><input name=\"name\" type=\"text\" required></label> <label><span>Color</span><input name=\"color\" type=\"text\" placeholder=\"#808080\"></label> <button class=\"sv-button sv-button-secondary\" type=\"submit\">")832+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 55, "<form class=\"sv-inline-form\" data-sv-action=\"tag.create\"><label><span>Name</span><input name=\"name\" type=\"text\" required></label> <label><span>Color</span><input name=\"color\" type=\"text\" placeholder=\"#808080\"></label> <button class=\"sv-button sv-button-secondary\" type=\"submit\">")
845 if templ_7745c5c3_Err != nil {833 if templ_7745c5c3_Err != nil {
846 return templ_7745c5c3_Err834 return templ_7745c5c3_Err
847 }835 }
@@ -849,7 +837,7 @@ func TagCreateForm() templ.Component {
849 if templ_7745c5c3_Err != nil {837 if templ_7745c5c3_Err != nil {
850 return templ_7745c5c3_Err838 return templ_7745c5c3_Err
851 }839 }
852- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 59, "</button></form>")840+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 56, "</button></form>")
853 if templ_7745c5c3_Err != nil {841 if templ_7745c5c3_Err != nil {
854 return templ_7745c5c3_Err842 return templ_7745c5c3_Err
855 }843 }
@@ -878,7 +866,7 @@ func TagItem(tag *entity.Tag) templ.Component {
878 templ_7745c5c3_Var43 = templ.NopComponent866 templ_7745c5c3_Var43 = templ.NopComponent
879 }867 }
880 ctx = templ.ClearChildren(ctx)868 ctx = templ.ClearChildren(ctx)
881- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 60, "<li class=\"sv-list-row\"><form class=\"sv-inline-form\" data-sv-action=\"tag.update\"><input type=\"hidden\" name=\"id\" value=\"")869+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 57, "<li class=\"sv-list-row\"><form class=\"sv-inline-form\" data-sv-action=\"tag.update\"><input type=\"hidden\" name=\"id\" value=\"")
882 if templ_7745c5c3_Err != nil {870 if templ_7745c5c3_Err != nil {
883 return templ_7745c5c3_Err871 return templ_7745c5c3_Err
884 }872 }
@@ -891,7 +879,7 @@ func TagItem(tag *entity.Tag) templ.Component {
891 if templ_7745c5c3_Err != nil {879 if templ_7745c5c3_Err != nil {
892 return templ_7745c5c3_Err880 return templ_7745c5c3_Err
893 }881 }
894- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 61, "\"> <span class=\"sv-tag-dot\" style=\"")882+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 58, "\"> <span class=\"sv-tag-dot\" style=\"")
895 if templ_7745c5c3_Err != nil {883 if templ_7745c5c3_Err != nil {
896 return templ_7745c5c3_Err884 return templ_7745c5c3_Err
897 }885 }
@@ -904,7 +892,7 @@ func TagItem(tag *entity.Tag) templ.Component {
904 if templ_7745c5c3_Err != nil {892 if templ_7745c5c3_Err != nil {
905 return templ_7745c5c3_Err893 return templ_7745c5c3_Err
906 }894 }
907- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 62, "\"></span> <label><span>Name</span><input name=\"name\" type=\"text\" value=\"")895+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 59, "\"></span> <label><span>Name</span><input name=\"name\" type=\"text\" value=\"")
908 if templ_7745c5c3_Err != nil {896 if templ_7745c5c3_Err != nil {
909 return templ_7745c5c3_Err897 return templ_7745c5c3_Err
910 }898 }
@@ -917,7 +905,7 @@ func TagItem(tag *entity.Tag) templ.Component {
917 if templ_7745c5c3_Err != nil {905 if templ_7745c5c3_Err != nil {
918 return templ_7745c5c3_Err906 return templ_7745c5c3_Err
919 }907 }
920- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 63, "\" required></label> <label><span>Color</span><input name=\"color\" type=\"text\" value=\"")908+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 60, "\" required></label> <label><span>Color</span><input name=\"color\" type=\"text\" value=\"")
921 if templ_7745c5c3_Err != nil {909 if templ_7745c5c3_Err != nil {
922 return templ_7745c5c3_Err910 return templ_7745c5c3_Err
923 }911 }
@@ -930,7 +918,7 @@ func TagItem(tag *entity.Tag) templ.Component {
930 if templ_7745c5c3_Err != nil {918 if templ_7745c5c3_Err != nil {
931 return templ_7745c5c3_Err919 return templ_7745c5c3_Err
932 }920 }
933- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 64, "\"></label> <button class=\"sv-button sv-button-secondary\" type=\"submit\">")921+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 61, "\"></label> <button class=\"sv-button sv-button-secondary\" type=\"submit\">")
934 if templ_7745c5c3_Err != nil {922 if templ_7745c5c3_Err != nil {
935 return templ_7745c5c3_Err923 return templ_7745c5c3_Err
936 }924 }
@@ -938,7 +926,7 @@ func TagItem(tag *entity.Tag) templ.Component {
938 if templ_7745c5c3_Err != nil {926 if templ_7745c5c3_Err != nil {
939 return templ_7745c5c3_Err927 return templ_7745c5c3_Err
940 }928 }
941- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 65, "</button> <button type=\"button\" class=\"sv-button sv-button-secondary sv-button-danger sv-button-icon-only\" data-sv-action=\"tag.delete\" data-id=\"")929+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 62, "</button> <button type=\"button\" class=\"sv-button sv-button-secondary sv-button-danger sv-button-icon-only\" data-sv-action=\"tag.delete\" data-id=\"")
942 if templ_7745c5c3_Err != nil {930 if templ_7745c5c3_Err != nil {
943 return templ_7745c5c3_Err931 return templ_7745c5c3_Err
944 }932 }
@@ -951,7 +939,7 @@ func TagItem(tag *entity.Tag) templ.Component {
951 if templ_7745c5c3_Err != nil {939 if templ_7745c5c3_Err != nil {
952 return templ_7745c5c3_Err940 return templ_7745c5c3_Err
953 }941 }
954- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 66, "\" data-sv-confirm=\"Delete this tag?\" aria-label=\"Delete this tag\">")942+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 63, "\" data-sv-confirm=\"Delete this tag?\" aria-label=\"Delete this tag\">")
955 if templ_7745c5c3_Err != nil {943 if templ_7745c5c3_Err != nil {
956 return templ_7745c5c3_Err944 return templ_7745c5c3_Err
957 }945 }
@@ -959,7 +947,7 @@ func TagItem(tag *entity.Tag) templ.Component {
959 if templ_7745c5c3_Err != nil {947 if templ_7745c5c3_Err != nil {
960 return templ_7745c5c3_Err948 return templ_7745c5c3_Err
961 }949 }
962- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 67, "</button></form></li>")950+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 64, "</button></form></li>")
963 if templ_7745c5c3_Err != nil {951 if templ_7745c5c3_Err != nil {
964 return templ_7745c5c3_Err952 return templ_7745c5c3_Err
965 }953 }
@@ -988,12 +976,12 @@ func ShortcutSelect(selected *int) templ.Component {
988 templ_7745c5c3_Var49 = templ.NopComponent976 templ_7745c5c3_Var49 = templ.NopComponent
989 }977 }
990 ctx = templ.ClearChildren(ctx)978 ctx = templ.ClearChildren(ctx)
991- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 68, "<label><span>Shortcut</span><select name=\"shortcut_key\"><option value=\"\">None</option> ")979+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 65, "<label><span>Shortcut</span><select name=\"shortcut_key\"><option value=\"\">None</option> ")
992 if templ_7745c5c3_Err != nil {980 if templ_7745c5c3_Err != nil {
993 return templ_7745c5c3_Err981 return templ_7745c5c3_Err
994 }982 }
995 for i := 1; i <= 9; i++ {983 for i := 1; i <= 9; i++ {
996- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 69, "<option value=\"")984+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 66, "<option value=\"")
997 if templ_7745c5c3_Err != nil {985 if templ_7745c5c3_Err != nil {
998 return templ_7745c5c3_Err986 return templ_7745c5c3_Err
999 }987 }
@@ -1006,17 +994,17 @@ func ShortcutSelect(selected *int) templ.Component {
1006 if templ_7745c5c3_Err != nil {994 if templ_7745c5c3_Err != nil {
1007 return templ_7745c5c3_Err995 return templ_7745c5c3_Err
1008 }996 }
1009- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 70, "\"")997+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 67, "\"")
1010 if templ_7745c5c3_Err != nil {998 if templ_7745c5c3_Err != nil {
1011 return templ_7745c5c3_Err999 return templ_7745c5c3_Err
1012 }1000 }
1013 if shortcutSelected(selected, i) {1001 if shortcutSelected(selected, i) {
1014- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 71, " selected")1002+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 68, " selected")
1015 if templ_7745c5c3_Err != nil {1003 if templ_7745c5c3_Err != nil {
1016 return templ_7745c5c3_Err1004 return templ_7745c5c3_Err
1017 }1005 }
1018 }1006 }
1019- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 72, ">")1007+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 69, ">")
1020 if templ_7745c5c3_Err != nil {1008 if templ_7745c5c3_Err != nil {
1021 return templ_7745c5c3_Err1009 return templ_7745c5c3_Err
1022 }1010 }
@@ -1029,12 +1017,12 @@ func ShortcutSelect(selected *int) templ.Component {
1029 if templ_7745c5c3_Err != nil {1017 if templ_7745c5c3_Err != nil {
1030 return templ_7745c5c3_Err1018 return templ_7745c5c3_Err
1031 }1019 }
1032- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 73, "</option>")1020+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 70, "</option>")
1033 if templ_7745c5c3_Err != nil {1021 if templ_7745c5c3_Err != nil {
1034 return templ_7745c5c3_Err1022 return templ_7745c5c3_Err
1035 }1023 }
1036 }1024 }
1037- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 74, "</select></label>")1025+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 71, "</select></label>")
1038 if templ_7745c5c3_Err != nil {1026 if templ_7745c5c3_Err != nil {
1039 return templ_7745c5c3_Err1027 return templ_7745c5c3_Err
1040 }1028 }

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