Skip to content

Commit 84c0a63

Browse files
* update version * local themes and force newer * update config * update packages
1 parent 9b7aaa3 commit 84c0a63

13 files changed

+113
-34
lines changed

README.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@ You can find Linux binaries under [releases](https://github.com/RasmusLindroth/t
4545
* `:lists` show a list of your lists
4646
* `:list-placement` top, right, bottom, left
4747
* `:list-split` row, column
48-
* `:muting` lists users that you have muted
48+
* `:muting` lists users that you have muted
49+
* `:newer` force load newer toots in current timeline
4950
* `:preferences` update your profile and some other settings
5051
* `:profile` go to your profile
5152
* `:proportions` [int] [int], where the first integer is the list and the other content, e.g. `:proportions 1 3`

config.example.ini

+8-5
Original file line numberDiff line numberDiff line change
@@ -141,8 +141,8 @@ leader-timeout=1000
141141
#
142142
# Available commands: home, direct, local, federated, compose, blocking,
143143
# bookmarks, saved, favorited, boosts, favorites, following, followers, muting,
144-
# preferences, profile, notifications, lists, tag, window, list-placement,
145-
# list-split, proportions
144+
# newer, preferences, profile, notifications, lists, tag, window,
145+
# list-placement, list-split, proportions
146146
#
147147
# The shortcuts are up to you, but keep them quite short and make sure they
148148
# don't collide. If you have one shortcut that is "f" and an other one that is
@@ -326,14 +326,17 @@ posts=false
326326
# default=guess
327327
xrdb-prefix=guess
328328

329-
# You can use some themes that comes bundled with tut check out the themes
329+
# You can use some themes that comes bundled with tut. Check out the themes
330330
# available on the URL below. If a theme is named "nord.ini" you just write
331331
# theme=nord
332332
#
333333
# https://github.com/RasmusLindroth/tut/tree/master/config/themes
334334
#
335-
# If you want to use your own theme set theme to none then you can create your
336-
# own theme below
335+
# You can also create a theme file in your config directory e.g.
336+
# ~/.config/tut/themes/foo.ini and then set theme=foo.
337+
#
338+
# If you want to use your own theme but don't want to create a new file, set
339+
# theme=none and then you can create your own theme below.
337340
# default=default
338341
theme=default
339342

config/config.go

+60-12
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"embed"
55
"errors"
66
"fmt"
7+
"io"
78
"io/ioutil"
89
"log"
910
"os"
@@ -75,6 +76,7 @@ const (
7576
LeaderTag
7677
LeaderUser
7778
LeaderWindow
79+
LeaderLoadNewer
7880
)
7981

8082
type Timeline struct {
@@ -431,21 +433,31 @@ func parseStyle(cfg *ini.File) Style {
431433
style := Style{}
432434
theme := cfg.Section("style").Key("theme").String()
433435
if theme != "none" && theme != "" {
434-
themes, err := getThemes()
436+
bundled, local, err := getThemes()
435437
if err != nil {
436438
log.Fatalf("Couldn't load themes. Error: %s\n", err)
437439
}
438440
found := false
439-
for _, t := range themes {
441+
isLocal := false
442+
for _, t := range local {
440443
if filepath.Base(t) == fmt.Sprintf("%s.ini", theme) {
441444
found = true
445+
isLocal = true
442446
break
443447
}
444448
}
449+
if !found {
450+
for _, t := range bundled {
451+
if filepath.Base(t) == fmt.Sprintf("%s.ini", theme) {
452+
found = true
453+
break
454+
}
455+
}
456+
}
445457
if !found {
446458
log.Fatalf("Couldn't find theme %s\n", theme)
447459
}
448-
tcfg, err := getTheme(theme)
460+
tcfg, err := getTheme(theme, isLocal)
449461
if err != nil {
450462
log.Fatalf("Couldn't load theme. Error: %s\n", err)
451463
}
@@ -696,6 +708,8 @@ func parseGeneral(cfg *ini.File) General {
696708
case "window":
697709
la.Command = LeaderWindow
698710
la.Subaction = subaction
711+
case "newer":
712+
la.Command = LeaderLoadNewer
699713
default:
700714
fmt.Printf("leader-action %s is invalid\n", parts[0])
701715
os.Exit(1)
@@ -1183,7 +1197,7 @@ func parseConfig(filepath string) (Config, error) {
11831197
func createConfigDir() error {
11841198
cd, err := os.UserConfigDir()
11851199
if err != nil {
1186-
log.Fatalf("couldn't find $HOME. Err %v", err)
1200+
log.Fatalf("couldn't find config dir. Err %v", err)
11871201
}
11881202
path := cd + "/tut"
11891203
return os.MkdirAll(path, os.ModePerm)
@@ -1192,7 +1206,7 @@ func createConfigDir() error {
11921206
func checkConfig(filename string) (path string, exists bool, err error) {
11931207
cd, err := os.UserConfigDir()
11941208
if err != nil {
1195-
log.Fatalf("couldn't find $HOME. Err %v", err)
1209+
log.Fatalf("couldn't find config dir. Err %v", err)
11961210
}
11971211
dir := cd + "/tut/"
11981212
path = dir + filename
@@ -1218,24 +1232,58 @@ func CreateDefaultConfig(filepath string) error {
12181232
return nil
12191233
}
12201234

1221-
func getThemes() ([]string, error) {
1235+
func getThemes() (bundled []string, local []string, err error) {
12221236
entries, err := themesFS.ReadDir("themes")
1223-
files := []string{}
12241237
if err != nil {
1225-
return []string{}, err
1238+
return bundled, local, err
12261239
}
12271240
for _, entry := range entries {
12281241
if entry.IsDir() {
12291242
continue
12301243
}
12311244
fp := filepath.Join("themes/", entry.Name())
1232-
files = append(files, fp)
1245+
bundled = append(bundled, fp)
1246+
}
1247+
_, exists, err := checkConfig("themes")
1248+
if err != nil {
1249+
return bundled, local, err
1250+
}
1251+
if !exists {
1252+
return bundled, local, err
1253+
}
1254+
cd, err := os.UserConfigDir()
1255+
if err != nil {
1256+
log.Fatalf("couldn't find config dir. Err %v", err)
12331257
}
1234-
return files, nil
1258+
dir := cd + "/tut/themes"
1259+
entries, err = os.ReadDir(dir)
1260+
if err != nil {
1261+
return bundled, local, err
1262+
}
1263+
for _, entry := range entries {
1264+
if entry.IsDir() {
1265+
continue
1266+
}
1267+
fp := filepath.Join(dir, entry.Name())
1268+
local = append(local, fp)
1269+
}
1270+
return bundled, local, nil
12351271
}
12361272

1237-
func getTheme(fname string) (*ini.File, error) {
1238-
f, err := themesFS.Open(fmt.Sprintf("themes/%s.ini", strings.TrimSpace(fname)))
1273+
func getTheme(fname string, isLocal bool) (*ini.File, error) {
1274+
var f io.Reader
1275+
var err error
1276+
if isLocal {
1277+
var cd string
1278+
cd, err = os.UserConfigDir()
1279+
if err != nil {
1280+
log.Fatalf("couldn't find config dir. Err %v", err)
1281+
}
1282+
dir := cd + "/tut/themes"
1283+
f, err = os.Open(fmt.Sprintf("%s/%s.ini", dir, strings.TrimSpace(fname)))
1284+
} else {
1285+
f, err = themesFS.Open(fmt.Sprintf("themes/%s.ini", strings.TrimSpace(fname)))
1286+
}
12391287
if err != nil {
12401288
return nil, err
12411289
}

config/default_config.go

+8-5
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,8 @@ leader-timeout=1000
143143
#
144144
# Available commands: home, direct, local, federated, compose, blocking,
145145
# bookmarks, saved, favorited, boosts, favorites, following, followers, muting,
146-
# preferences, profile, notifications, lists, tag, window, list-placement,
147-
# list-split, proportions
146+
# newer, preferences, profile, notifications, lists, tag, window,
147+
# list-placement, list-split, proportions
148148
#
149149
# The shortcuts are up to you, but keep them quite short and make sure they
150150
# don't collide. If you have one shortcut that is "f" and an other one that is
@@ -328,14 +328,17 @@ posts=false
328328
# default=guess
329329
xrdb-prefix=guess
330330
331-
# You can use some themes that comes bundled with tut check out the themes
331+
# You can use some themes that comes bundled with tut. Check out the themes
332332
# available on the URL below. If a theme is named "nord.ini" you just write
333333
# theme=nord
334334
#
335335
# https://github.com/RasmusLindroth/tut/tree/master/config/themes
336336
#
337-
# If you want to use your own theme set theme to none then you can create your
338-
# own theme below
337+
# You can also create a theme file in your config directory e.g.
338+
# ~/.config/tut/themes/foo.ini and then set theme=foo.
339+
#
340+
# If you want to use your own theme but don't want to create a new file, set
341+
# theme=none and then you can create your own theme below.
339342
# default=default
340343
theme=default
341344

feed/feed.go

+1
Original file line numberDiff line numberDiff line change
@@ -543,6 +543,7 @@ func (f *Feed) startStream(rec *api.Receiver, timeline string, err error) {
543543
f.itemsMux.Lock()
544544
f.items = append([]api.Item{s}, f.items...)
545545
f.Updated(DesktopNotificationPost)
546+
f.apiData.MinID = t.Status.ID
546547
f.itemsMux.Unlock()
547548
}
548549
}

go.mod

+5-5
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ require (
99
github.com/gen2brain/beeep v0.0.0-20220518085355-d7852edf42fc
1010
github.com/gobwas/glob v0.2.3
1111
github.com/icza/gox v0.0.0-20220321141217-e2d488ab2fbc
12-
github.com/microcosm-cc/bluemonday v1.0.18
13-
github.com/pelletier/go-toml/v2 v2.0.1
14-
github.com/rivo/tview v0.0.0-20220307222120-9994674d60a8
12+
github.com/microcosm-cc/bluemonday v1.0.19
13+
github.com/pelletier/go-toml/v2 v2.0.2
14+
github.com/rivo/tview v0.0.0-20220709181631-73bf2902b59a
1515
github.com/rivo/uniseg v0.2.0
16-
golang.org/x/net v0.0.0-20220531201128-c960675eff93
16+
golang.org/x/net v0.0.0-20220708220712-1185a9018129
1717
gopkg.in/ini.v1 v1.66.6
1818
)
1919

@@ -29,7 +29,7 @@ require (
2929
github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d // indirect
3030
github.com/tadvi/systray v0.0.0-20190226123456-11a2b8fa57af // indirect
3131
github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80 // indirect
32-
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a // indirect
32+
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8 // indirect
3333
golang.org/x/term v0.0.0-20220526004731-065cf7ba2467 // indirect
3434
golang.org/x/text v0.3.7 // indirect
3535
)

go.sum

+13
Original file line numberDiff line numberDiff line change
@@ -31,26 +31,36 @@ github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4
3131
github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
3232
github.com/microcosm-cc/bluemonday v1.0.18 h1:6HcxvXDAi3ARt3slx6nTesbvorIc3QeTzBNRvWktHBo=
3333
github.com/microcosm-cc/bluemonday v1.0.18/go.mod h1:Z0r70sCuXHig8YpBzCc5eGHAap2K7e/u082ZUpDRRqM=
34+
github.com/microcosm-cc/bluemonday v1.0.19 h1:OI7hoF5FY4pFz2VA//RN8TfM0YJ2dJcl4P4APrCWy6c=
35+
github.com/microcosm-cc/bluemonday v1.0.19/go.mod h1:QNzV2UbLK2/53oIIwTOyLUSABMkjZ4tqiyC1g/DyqxE=
3436
github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d h1:VhgPp6v9qf9Agr/56bj7Y/xa04UccTW04VP0Qed4vnQ=
3537
github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U=
3638
github.com/pelletier/go-toml/v2 v2.0.1 h1:8e3L2cCQzLFi2CR4g7vGFuFxX7Jl1kKX8gW+iV0GUKU=
3739
github.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo=
40+
github.com/pelletier/go-toml/v2 v2.0.2 h1:+jQXlF3scKIcSEKkdHzXhCTDLPFi5r1wnK6yPS+49Gw=
41+
github.com/pelletier/go-toml/v2 v2.0.2/go.mod h1:MovirKjgVRESsAvNZlAjtFwV867yGuwRkXbG66OzopI=
3842
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
3943
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
4044
github.com/rivo/tview v0.0.0-20220307222120-9994674d60a8 h1:xe+mmCnDN82KhC010l3NfYlA8ZbOuzbXAzSYBa6wbMc=
4145
github.com/rivo/tview v0.0.0-20220307222120-9994674d60a8/go.mod h1:WIfMkQNY+oq/mWwtsjOYHIZBuwthioY2srOmljJkTnk=
46+
github.com/rivo/tview v0.0.0-20220709181631-73bf2902b59a h1:ZjJ1XcvsZkNVO+Rq/vQTOXtN3cmuAgpCp8m4fKG5CkY=
47+
github.com/rivo/tview v0.0.0-20220709181631-73bf2902b59a/go.mod h1:WIfMkQNY+oq/mWwtsjOYHIZBuwthioY2srOmljJkTnk=
4248
github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
4349
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
4450
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
4551
github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY=
4652
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
53+
github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s=
54+
github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
4755
github.com/tadvi/systray v0.0.0-20190226123456-11a2b8fa57af h1:6yITBqGTE2lEeTPG04SN9W+iWHCRyHqlVYILiSXziwk=
4856
github.com/tadvi/systray v0.0.0-20190226123456-11a2b8fa57af/go.mod h1:4F09kP5F+am0jAwlQLddpoMDM+iewkxxt6nxUQ5nq5o=
4957
github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80 h1:nrZ3ySNYwJbSpD6ce9duiP+QkD3JuLCcWkdaehUS/3Y=
5058
github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80/go.mod h1:iFyPdL66DjUD96XmzVL3ZntbzcflLnznH0fr99w5VqE=
5159
golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
5260
golang.org/x/net v0.0.0-20220531201128-c960675eff93 h1:MYimHLfoXEpOhqd/zgoA/uoXzHB86AEky4LAx5ij9xA=
5361
golang.org/x/net v0.0.0-20220531201128-c960675eff93/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
62+
golang.org/x/net v0.0.0-20220708220712-1185a9018129 h1:vucSRfWwTsoXro7P+3Cjlr6flUMtzCwzlvkxEQtHHB0=
63+
golang.org/x/net v0.0.0-20220708220712-1185a9018129/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
5464
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
5565
golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
5666
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -59,6 +69,8 @@ golang.org/x/sys v0.0.0-20220318055525-2edf467146b5/go.mod h1:oPkhp1MJrh7nUepCBc
5969
golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
6070
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a h1:dGzPydgVsqGcTRVwiLJ1jVbufYwmzD3LfVPLKsKg+0k=
6171
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
72+
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8 h1:0A+M6Uqn+Eje4kHMK80dtF3JCXC4ykBgQG4Fe06QRhQ=
73+
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
6274
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
6375
golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
6476
golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
@@ -75,3 +87,4 @@ gopkg.in/ini.v1 v1.66.6 h1:LATuAqN/shcYAOkv3wl2L4rkaKqkcgTBQjOyYDvcPKI=
7587
gopkg.in/ini.v1 v1.66.6/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
7688
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
7789
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
90+
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

main.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88
"github.com/rivo/tview"
99
)
1010

11-
const version = "1.0.11"
11+
const version = "1.0.12"
1212

1313
func main() {
1414
util.MakeDirs()

ui/cmdbar.go

+4-1
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,9 @@ func (c *CmdBar) DoneFunc(key tcell.Key) {
8888
case ":followers":
8989
c.tutView.FollowersCommand()
9090
c.Back()
91+
case ":newer":
92+
c.tutView.LoadNewerCommand()
93+
c.Back()
9194
case ":list-placement":
9295
if len(parts) < 2 {
9396
break
@@ -202,7 +205,7 @@ func (c *CmdBar) DoneFunc(key tcell.Key) {
202205

203206
func (c *CmdBar) Autocomplete(curr string) []string {
204207
var entries []string
205-
words := strings.Split(":blocking,:boosts,:bookmarks,:compose,:favorites,:favorited,:followers,:following,:help,:h,:lists,:list-placement,:list-split,:muting,:preferences,:profile,:proportions,:requests,:saved,:tag,:timeline,:tl,:user,:window,:quit,:q", ",")
208+
words := strings.Split(":blocking,:boosts,:bookmarks,:compose,:favorites,:favorited,:followers,:following,:help,:h,:lists,:list-placement,:list-split,:muting,:newer,:preferences,:profile,:proportions,:requests,:saved,:tag,:timeline,:tl,:user,:window,:quit,:q", ",")
206209
if curr == "" {
207210
return entries
208211
}

ui/commands.go

+5
Original file line numberDiff line numberDiff line change
@@ -194,3 +194,8 @@ func (tv *TutView) ProportionsCommand(lp string, cp string) {
194194
tv.tut.Config.General.ContentProportion = cpi
195195
tv.MainView.ForceUpdate()
196196
}
197+
198+
func (tv *TutView) LoadNewerCommand() {
199+
f := tv.GetCurrentFeed()
200+
f.LoadNewer(true)
201+
}

ui/feed.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ func (f *Feed) LoadOlder() {
6363
f.Data.LoadOlder()
6464
}
6565

66-
func (f *Feed) LoadNewer() {
67-
if f.Data.HasStream() {
66+
func (f *Feed) LoadNewer(force bool) {
67+
if f.Data.HasStream() && !force {
6868
return
6969
}
7070
f.Data.LoadNewer()

ui/input.go

+2
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,8 @@ func (tv *TutView) InputLeaderKey(event *tcell.EventKey) *tcell.EventKey {
136136
tv.ProfileCommand()
137137
case config.LeaderNotifications:
138138
tv.NotificationsCommand()
139+
case config.LeaderLoadNewer:
140+
tv.LoadNewerCommand()
139141
case config.LeaderLists:
140142
tv.ListsCommand()
141143
case config.LeaderTag:

ui/timeline.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ func (tl *Timeline) PrevItemFeed() {
216216
f := fh.Feeds[fh.FeedIndex]
217217
loadMore := f.List.Prev()
218218
if loadMore {
219-
f.LoadNewer()
219+
f.LoadNewer(false)
220220
}
221221
tl.DrawContent()
222222
}
@@ -225,7 +225,7 @@ func (tl *Timeline) HomeItemFeed() {
225225
fh := tl.Feeds[tl.FeedFocusIndex]
226226
f := fh.Feeds[fh.FeedIndex]
227227
f.List.SetCurrentItem(0)
228-
f.LoadNewer()
228+
f.LoadNewer(false)
229229
tl.DrawContent()
230230
}
231231

0 commit comments

Comments
 (0)