feat: add browse-at-scale — date ranges, load more, month navigator

CLI: --month YYYY-MM, --from/--to date range, --limit override
API: from/to query params for date range filtering
Web: load more button for pagination, month nav (◂/▸) in stream view
This commit is contained in:
2026-05-14 14:03:45 -04:00
parent 2d62199705
commit 949ccaca59
6 changed files with 226 additions and 8 deletions
+44 -4
View File
@@ -11,9 +11,13 @@ import (
)
var (
lsTag string
lsDate string
lsAll bool
lsTag string
lsDate string
lsMonth string
lsFrom string
lsTo string
lsLimit int
lsAll bool
)
var lsCmd = &cobra.Command{
@@ -25,6 +29,10 @@ var lsCmd = &cobra.Command{
func init() {
lsCmd.Flags().StringVar(&lsTag, "tag", "", "filter by tag")
lsCmd.Flags().StringVar(&lsDate, "date", "", "filter by date (YYYY-MM-DD)")
lsCmd.Flags().StringVar(&lsMonth, "month", "", "filter by month (YYYY-MM)")
lsCmd.Flags().StringVar(&lsFrom, "from", "", "start date (YYYY-MM-DD)")
lsCmd.Flags().StringVar(&lsTo, "to", "", "end date (YYYY-MM-DD)")
lsCmd.Flags().IntVar(&lsLimit, "limit", 0, "max entities to show (default 50)")
lsCmd.Flags().BoolVar(&lsAll, "all", false, "include deleted entities")
}
@@ -41,9 +49,41 @@ func runLs(_ *cobra.Command, _ []string) error {
if lsTag != "" {
p.Tag = &lsTag
}
if lsLimit > 0 {
p.Limit = lsLimit
}
hasDateFilter := false
if lsDate != "" {
p.Date = &lsDate
} else {
hasDateFilter = true
}
if lsMonth != "" {
t, err := time.Parse("2006-01", lsMonth)
if err != nil {
return fmt.Errorf("bad --month format, use YYYY-MM")
}
from := t.Format("2006-01-02")
to := t.AddDate(0, 1, -1).Format("2006-01-02")
p.From = &from
p.To = &to
hasDateFilter = true
}
if lsFrom != "" {
if _, err := time.Parse("2006-01-02", lsFrom); err != nil {
return fmt.Errorf("bad --from format, use YYYY-MM-DD")
}
p.From = &lsFrom
hasDateFilter = true
}
if lsTo != "" {
if _, err := time.Parse("2006-01-02", lsTo); err != nil {
return fmt.Errorf("bad --to format, use YYYY-MM-DD")
}
p.To = &lsTo
hasDateFilter = true
}
if !hasDateFilter {
since := time.Now().UTC().Add(-48 * time.Hour)
p.Since = &since
}