main
250 commits (250 out of 1387 generated)
4af7648
Eric Bower  ·  2026-06-17
main
fix(rsync): properly delete `._pico_keep_dir` first so os.Remove suceeds
96bba54
Eric Bower  ·  2026-06-13
fix(pgs): broken url for imgproxy integration
668e3cf
Silvio Tomatis  ·  2026-06-11
fix(pgs): never cache http-pass responses

Password-protected (http-pass) projects could be read without the
password. The shared cache keys entries on subdomain+method+uri with no
auth component, and only declines to store responses marked private or
no-store. http-pass assets were served as 200 with
`cache-control: max-age=60, s-maxage=600, must-revalidate`, so the first
authenticated request populated the cache and every subsequent
unauthenticated visitor got a cache hit that bypassed the password gate
for the duration of the TTL.

Mark http-pass asset responses `private, no-store` so the shared cache
refuses to store them. The override is applied after the user `_headers`
are merged, so a project's own cache-control cannot re-enable caching of
protected content.

Adds a regression test asserting an http-pass response is served
non-cacheable even when a `_headers` file requests aggressive caching.
e848548
Eric Bower  ·  2026-05-31
fix: strip debug from linker
9eb8e76
Eric Bower  ·  2026-05-31
refactor: move go-rsync-receiver into pico monorepo
8936652
Eric Bower  ·  2026-05-16
fix: require testcontainers for pico.sh ci
77b9fc0
Eric Bower  ·  2026-05-16
fix(ci): cleanup
620bc93
Eric Bower  ·  2026-05-16
chore(ci): cleanup
ee3ee5f
Eric Bower  ·  2026-05-16
docs(pgs): help cmd for forms
398f52c
Eric Bower  ·  2026-05-11
chore: pico.sh ci script
b0db3e1
Eric Bower  ·  2026-05-11
fix(pgs): _headers should override default cache-control

Closes: https://github.com/picosh/pico/issues/215
1864102
Eric Bower  ·  2026-05-10
feat(tui): analytics now displays device breakdown

You can see mobile vs desktop
4e11911
Eric Bower  ·  2026-05-10
docs: runbooks
07d445f
Eric Bower  ·  2026-05-10
fix: script
3004275
Eric Bower  ·  2026-05-10
chore: script to find orphaned buckets
d634672
Eric Bower  ·  2026-05-05
fix(auth): mime type can include charset

e.g. text/html; charset=utf-8
83a5183
Eric Bower  ·  2026-05-05
v3.28.1
chore(visits): new indexes and parallel queries
dc6ed61
Eric Bower  ·  2026-05-04
v3.28.0
chore: remove dev artifacts
23438de
Eric Bower  ·  2026-05-03
refactor(visits): aggregate visit tables

Previously we had an analytics_visits table that held all the raw visit data.
This mean our analytics UI was constantly executing queries across 18 mil records
which was extremely slow.  This change aggregates those analytics every month
and then deletes all the raw data.

We keep 2 months worth of raw data and then everything else gets pushed into
the aggregate tables.
4cd5fc0
Eric Bower  ·  2026-05-03
chore: script reap edits
b2429b1
Eric Bower  ·  2026-05-03
fix: reap should look skip anyone that has pico+
483a3a2
Eric Bower  ·  2026-05-03
chore: delete old analytics
493d4d6
Eric Bower  ·  2026-05-03
chore: sql query to reap unused accounts

References: https://pico.prose.sh/ann-036-reap-inactive-accounts
65a2f09
Eric Bower  ·  2026-04-28
fix(httpcache): cdn accept encoding

Two bugs combined to produce the broken behavior:

Bug 1: CDN forwarded Accept-Encoding to upstream (cmd/pgs/cdn/main.go)

proxyServe.ServeHTTP cloned the incoming request (including its Accept-Encoding: zstd header sent by Caddy) and forwarded it to ash.pgs.sh. The upstream responded with a zstd-compressed body + content-encoding: zstd. The CDN then cached that compressed blob. Caddy (sitting in front of the CDN) can't transcode
zstd→nothing, so clients received raw zstd bytes named .xml.

Fix: proxyReq.Header.Del("Accept-Encoding") before the upstream round-trip. The CDN should store one uncompressed representation per URL; Caddy handles per-client content encoding on egress.

Bug 2: matchVary was looking in the wrong place (pkg/httpcache/serve.go, rw.go)

When the response included Vary: Accept-Encoding, matchVary looked for Accept-Encoding in the response headers map — but Accept-Encoding is a request header and was never there. The cachedValue == "" branch silently continued, causing every request to match regardless of what encoding it accepted.

Fix: ToCacheValue now accepts the *http.Request and snapshots the Vary-relevant request header values into a new CacheValue.VaryRequestHeaders map[string]string field. matchVary now compares the incoming request's headers against that snapshot instead of looking in response headers. Legacy entries with no
VaryRequestHeaders are treated as misses so they repopulate correctly.
66ac6b0
Eric Bower  ·  2026-04-22
fix(pgs): dupe headers
acf6290
Eric Bower  ·  2026-04-22
v3.27.9
chore(pgs): configurable max items for lru
50987d0
Eric Bower  ·  2026-04-21
v3.27.8
chore: lint
7c2c235
Eric Bower  ·  2026-04-21
chore: disable flaky test
f46c23c
Eric Bower  ·  2026-04-21
chore(httpcache): cache-status cleanup and random bug fixes
8045405
Eric Bower  ·  2026-04-20
chore: normalize header keys
4acf8cc
Eric Bower  ·  2026-04-20
v3.27.7
chore: disable imgproxy tests

We don't have them setup properly atm
f566e4d
Eric Bower  ·  2026-04-20
refactor(storage): no need for metadata just need content type
5f240f0
Eric Bower  ·  2026-04-20
v3.27.6
chore: rm dead code
c26a047
Eric Bower  ·  2026-04-20
refactor(storage): put accepts ObjectInfo instead of FileEntry

This is a symmetric change so everything uses the same objects
532a539
Eric Bower  ·  2026-04-20
feat(pgs): record metrics for compressed file types
1c474b9
Eric Bower  ·  2026-04-20
fix(pgs): check handler fast bail when domain is empty
eaec14c
Eric Bower  ·  2026-04-20
refactor(httpcache): ignore routes should use no-store
54c886f
Eric Bower  ·  2026-04-20
fix(httpcache): verified heuristically cachable status codes
0a4c670
Eric Bower  ·  2026-04-20
v3.27.5
refactor(pgs): use http.ServeContent

refactor: new image proxy object that uses httputil reverse proxy
433e9d1
Eric Bower  ·  2026-04-19
fix(pgs): typo
c8e853b
Eric Bower  ·  2026-04-19
chore(pgs): make our cache age match our lru cache ttl
4be36ef
Antonio Mika  ·  2026-04-19
v3.27.4
Fix cache metrics and update deps
263937b
Eric Bower  ·  2026-04-19
fix(pgs): cdn routing to correct place
3225b71
Eric Bower  ·  2026-04-19
fix(pgs): admin check logic
9baad06
Eric Bower  ·  2026-04-19
chore(pgs): log key eviction
1e1cc0b
Eric Bower  ·  2026-04-19
v3.27.3
fix(pgs): use URL.Path so we ignore query params
47f9490
Eric Bower  ·  2026-04-19
v3.27.2
feat(httpcache): ignore routes cfg
4ee7ba6
Eric Bower  ·  2026-04-19
fix(pgs): prom names and set headers instead of add
3ad9fce
Eric Bower  ·  2026-04-19
chore(pgs): HEAD can share same key as GET
d758032
Eric Bower  ·  2026-04-19
fix(pgs): 304 send correct status and headers
272d185
Eric Bower  ·  2026-04-19
fix(pgs): httpcache must return cached headers when returning 304
e20086a
Eric Bower  ·  2026-04-19
fix(pgs): gauge name si unit
034d3f3
Eric Bower  ·  2026-04-19
v3.27.1
fix(pgs): httpcache rw.Write needs to report the num of bytes
588159a
Eric Bower  ·  2026-02-26
v3.27.0
refactor(pgs): custom rfc9111 compliant cache
7c27c34
Eric Bower  ·  2026-04-17
chore: scripts
9165d1d
Eric Bower  ·  2026-04-16
docs(tui): per file max size 100mb
5ec5910
Eric Bower  ·  2026-04-16
v3.26.2
feat(pgs): 100mb max file size
48e24c2
Eric Bower  ·  2026-04-16
v3.26.1
fix: test
58bf183
Eric Bower  ·  2026-04-16
v3.26.0
feat(pgs): increase max file size to 250mb
3640880
Eric Bower  ·  2026-04-04
fix(pgs): force redirect from root
6a3121d
Eric Bower  ·  2026-04-03
fix(pgs): normalize ext
c0517ee
Eric Bower  ·  2026-03-28
docs: rm auto form
c0208b3
Eric Bower  ·  2026-03-28
chore(storage): cleanup
d51ab87
Eric Bower  ·  2026-03-28
refactor: move shared/storage to storage
b229935
Eric Bower  ·  2026-03-28
refactor: merge pboj and shared/storage
abd75f3
Antonio Mika  ·  2026-03-27
v3.25.0
Update soju build to support webpush changes and upgrade to go 1.26
d2b70f4
Antonio Mika  ·  2026-03-21
Fix host resolution for caddy
a777c4c
Eric Bower  ·  2026-03-10
chore(pgs): require pico+ for auto-forms
3aa3b80
Eric Bower  ·  2026-03-10
chore(feeds): update retry attempt max in ls cmd
d69226d
Eric Bower  ·  2026-03-05
v3.24.0
feat(pgs): auto-forms
0c37db1
Eric Bower  ·  2026-03-08
fix(feeds): parse urls properly with comments
12c3f12
Eric Bower  ·  2026-03-08
chore(feeds): extend retry number to 100

10 is too small since we count every 10 minutes
630534b
Eric Bower  ·  2026-03-05
feat(pgs): all projects named `bin` will have their files deleted automatically after 2 weeks

This replicates the 0x0.st functionality where you can uploading any file and it'll eventually be deleted.
f969ffd
Eric Bower  ·  2026-03-05
chore(pgs): setting acl is pico+ only
45aaf05
Eric Bower  ·  2026-03-02
feat(pgs): http-pass ACL

This feature enables users to set their project to "http-pass" which requires a password to access the site.

The user can set the acl via:

`ssh pgs.sh acl {project} --type http-pass --acl {pass}`

When accessing the project the user will have to enter the password to access the site.  When access has been granted we set a cookie in the user's browser.  That cookie is valid for 24 hours.
a83183c
Eric Bower  ·  2026-03-02
feat(pgs): project names prefixed with `private-` will have new acl type "private"

For security reasons once a project is named `private-` it can never have its ACL type changed.

Right now we do not support making other projects private.
970de49
Eric Bower  ·  2026-03-02
fix(pgs): ability to pipe files to pgs
fb101af
Eric Bower  ·  2026-03-01
docs(pgs): more usage for help page
4552aa5
Eric Bower  ·  2026-03-04
chore(bouncer): bump soju to latest
085a09b
Eric Bower  ·  2026-03-03
fix(tui): revert 'q' to go back

This is conflicting with our text input boxes so I'm reverting for now
edab4d6
Aryan Tiwari  ·  2026-03-03
Chore: Unified Error Logs throughout the repo (#210)

b5271f2
Eric Bower  ·  2026-02-26
v3.23.0
fix(pssh): race in tests
cc9a108
Eric Bower  ·  2026-02-26
fix(pssh): fix race
9df8384
Eric Bower  ·  2026-02-26
fix(pssh): tests
740c00a
Eric Bower  ·  2026-02-26
fix(pssh): normalize line endings for pty enabled ssh output
da9a246
Eric Bower  ·  2026-02-26
refactor(pgs): use dynamic port for ssh tests
391c4f9
Eric Bower  ·  2026-02-25
feat(tui): 'q' goes to prev page
b10aef1
Eric Bower  ·  2026-02-25
fix(pssh): normalize line ending with pty
1f6cc61
Eric Bower  ·  2026-02-24
fix(pssh): redundant sesh passing
91b5f0a
Eric Bower  ·  2026-02-24
fix(pssh): strip quotes after splitting on them
1acc4d5
Eric Bower  ·  2026-02-24
fix: properly parse ssh command args with quotes
92facd1
Eric Bower  ·  2026-02-24
chore: added test for pssh cmd parsing
e963190
Eric Bower  ·  2026-02-22
chore(pssh): add error/print helper cmds
ee37580
Eric Bower  ·  2026-02-17
fix(pgs): downgrade storages to v0.0.16

http cache is being truncated on large files

Reference: https://github.com/darkweak/storages/issues/41
db24dbf
Eric Bower  ·  2026-02-17
chore(pgs): test failure
ccc233b
Eric Bower  ·  2026-02-16
chore(pgs): tests to prevent infinite redirects
a4ff178
Antonio Mika  ·  2026-02-04
Fix deps
de14588
Antonio Mika  ·  2026-02-04
Upgrade to go 1.25
8a69289
Eric Bower  ·  2026-02-03
feat(pubsub): round robin
4b5c506
Eric Bower  ·  2026-01-25
round-robin
refactor: move picosh/pubsub into repo
deea40d
Eric Bower  ·  2026-01-25
chore: more refactor cleanup
eb3b3bb
Eric Bower  ·  2026-01-25
refactor: fix issues with imports and create shared/router pkg
bccde8d
Eric Bower  ·  2026-01-25
refactor: migrate picosh/utils
633c17a
Eric Bower  ·  2026-01-22
feat(pipe): ?prefix= query param for pub and pipe
7fe30e4
Eric Bower  ·  2026-01-22
feat(auth): `/pubkeys/{user}` public endpoint
78dfe01
Eric Bower  ·  2026-01-19
fix(pgs): inverted logic check for pico+
c28c44d
Eric Bower  ·  2026-01-19
chore: gitignore
7a37a0a
Eric Bower  ·  2026-01-18
v3.22.5
feat(pico): access_logs cli command
5ead68b
Eric Bower  ·  2026-01-17
chore(tui): tokens text for Apple Terminal
66f0a81
Eric Bower  ·  2026-01-17
chore(bouncer): motd updates
02f9a6d
Eric Bower  ·  2026-01-17
fix: identity is always pubkey so check it as well
be972fa
Eric Bower  ·  2026-01-17
v3.22.4
fix(ssh): only use pubkey name if not ssh cert
bc6e0bf
Eric Bower  ·  2026-01-17
chore(pipe): use ssh cert identity if available
896a3e8
Eric Bower  ·  2026-01-17
chore(pipemgr): use cert location
825fa62
Eric Bower  ·  2026-01-16
v3.22.3
feat(ssh): find pubkey name and use as identity for access logs
4dce36e
Eric Bower  ·  2026-01-16
fix(tui.access_logs): start at last access with cmds to go to top or bot list
2340a56
Eric Bower  ·  2026-01-16
refactor: remove minio

We haven't used minio in months and if we did choose another object storage it wouldn't minio
67ea1f3
Eric Bower  ·  2026-01-16
v3.22.2
docs(pgs): simplify pgs marketing
d39dc39
Eric Bower  ·  2026-01-16
refactor(pgs): cache-control max-age and revalidate

We want to prevent the browser from caching stale static pages by requiring it to revalidate using ETag after 1 minute.
98e7f62
Eric Bower  ·  2026-01-16
refactor(analytics): add indexes to improve query performance
c3c3ade
Eric Bower  ·  2026-01-16
fix(tui): border boundaries
5e4c326
Eric Bower  ·  2026-01-16
style(prose): margin on the tags section
92cd9b0
Eric Bower  ·  2026-01-16
v3.22.1
feat(tui.logs): allow logs to be manually scrolled
62cd4d9
Eric Bower  ·  2026-01-16
fix(tui.logs): filtered logs corruption
d201269
Eric Bower  ·  2026-01-16
feat(prose): added horizontal rule to list parser

refactor(prose): replace ul/li with custom list impl
b224595
Eric Bower  ·  2026-01-15
chore(prose,pastes): rotate caddy logs
0a92131
Eric Bower  ·  2026-01-10
fix(prose): list parser key is `draft`
f33ac35
Eric Bower  ·  2026-01-10
chore(prose): list parser tests
568a6ac
Eric Bower  ·  2026-01-10
chore(prose): add raw .lxt route
7f32c6d
Eric Bower  ·  2026-01-10
fix(prose): remove log line
63b93d9
Eric Bower  ·  2026-01-03
prose-lists
feat(prose): lists are back bby
bb7b4f2
Eric Bower  ·  2026-01-08
feat(pipe): web based rss feed
b2aa9b3
Eric Bower  ·  2026-01-08
v3.22.0
feat(pipe): monitors

This change introduces pipe monitors: a way to receive status updates on
your pipes.
2c02fb4
Eric Bower  ·  2026-01-08
v3.21.2
chore(feeds): add deprecation notice for free pico users
190b37f
Eric Bower  ·  2026-01-07
fix(auth): updated_at required for pico+ feed posts
6b55f39
Eric Bower  ·  2026-01-03
docs(readme): feeds txt
96bb0c1
Eric Bower  ·  2026-01-03
v3.21.1
chore(prose): we no longer do anything with "prose" pgs project

This is from when we had a single object store.  We now have an object
store per service so creating a prose project is no longer required.
65e4a7a
Eric Bower  ·  2026-01-02
fix(prose): filter aliases by user_id

This was erroneously showing posts from other users
0fc145b
Eric Bower  ·  2026-01-02
v3.21.0
chore: move marketing materials to pipe
c5afd39
Eric Bower  ·  2026-01-02
fix: tui pages
08f727e
Noelle Leigh  ·  2025-12-26
docs(pgs): Add docs link to marketing template

Taking inspiration from <https://pipe.pico.sh/> (commit 2aab941), this
patch adds "Docs" links to the top and bottom of the <https://pgs.sh/>
template, making it easy to jump straight to <https://pico.sh/pgs> with
a single click.

The markup has been slightly tweaked to improve the resulting layout.
85e157e
Eric Bower  ·  2025-12-26
fix(pipe): tests timing issue
aed3af6
Eric Bower  ·  2025-12-26
chore(pipe): more e2e tests
a9243f5
Eric Bower  ·  2025-12-26
chore(pipe): more e2e tests for blocking and non-blocking behavior
f60c265
Eric Bower  ·  2025-12-26
refactor: use `resolveTopic` to determine topic name
f1dc8fc
Eric Bower  ·  2025-12-26
chore(pipe): extract topic name logic into testable function
5076bb7
Eric Bower  ·  2025-12-26
docs: agents typo
916fead
Eric Bower  ·  2025-12-25
fix(pipe): use ticker timer instead of sleep

The time.Sleep in the default case blocks for 5 seconds, during which context cancellation is ignored.
If the session ends, the goroutine won't notice until the sleep completes.
167a764
Eric Bower  ·  2025-12-25
chore(pipe): use different port for tests
47413a9
Eric Bower  ·  2025-12-25
chore(pipe): added tests
1d500f9
Eric Bower  ·  2025-12-25
refactor(pipe): cli code organization

Use a struct with methods to abstract cli middleware code into discrete
functions
9658c7d
Eric Bower  ·  2025-12-25
fix: tests
78362a0
Eric Bower  ·  2025-12-25
chore: update utils
fda3e4e
Eric Bower  ·  2025-12-20
v3.20.5
feat(tui): new pages section showing all sites
d6f553a
Eric Bower  ·  2025-12-20
fix(tui/access_logs): set cursor to 0 when filtering
0d69224
Eric Bower  ·  2025-12-18
fix-rsync-delete
chore: add tests
f8ad8c5
Eric Bower  ·  2025-12-18
fix(rsync): delete largest path first
6819e95
Eric Bower  ·  2025-12-18
v3.20.4
docs(tui): pubkeys desc about ssh certs
43cf6b2
Eric Bower  ·  2025-12-18
feat(tui): access logs
aaa58cb
Eric Bower  ·  2025-12-18
docs: agents.md
fb28448
Eric Bower  ·  2025-12-18
chore: update vaxis
9c8d241
Eric Bower  ·  2025-12-17
refactor-sqlx
refactor(db): use sqlx
d247cbd
Eric Bower  ·  2025-12-17
feat-access-logs v3.20.3
feat: find access logs by pubkey
bd8d606
Eric Bower  ·  2025-12-17
feat: access logs

This adds a new table to pico to track access logs.  This helps pico
admins understand what pubkeys are access their services and what their
identity is in the case of certified public keys.
91a3cc1
Eric Bower  ·  2025-12-15
v3.20.2
chore(pgs): hide dot files from dir listing pages
ee7df39
Eric Bower  ·  2025-12-15
v3.20.1
chore: fix lint
25aaa15
Eric Bower  ·  2025-12-15
fix(prose): close img obj
ca8aab3
Eric Bower  ·  2025-12-15
fix: tunnel leaks
a66e268
Eric Bower  ·  2025-12-15
fix(pgs): gen dir listing close object
780f9e1
Eric Bower  ·  2025-12-15
fix(pgs): memory leaks

All changes replace defer with immediate Close() calls to ensure resources are released promptly rather than accumulating until function return.
fbdea17
Eric Bower  ·  2025-12-15
feat-pgs-dir-listing
feat(pgs): show dir listing when no index.html present
31cd1e1
Eric Bower  ·  2025-12-15
chore(db): remove unused queries
59aba61
Eric Bower  ·  2025-12-13
v3.20.0
feat(auth): authenticate key handler using ssh cert
bb8ef88
Eric Bower  ·  2025-12-12
feat-access-control
feat: access control using ssh certs
94c4b4d
Eric Bower  ·  2025-12-09
v3.19.23
fix: image request detection was matching anything instead of .jpg
80b4959
Eric Bower  ·  2025-12-06
v3.19.22
chore(mime): more types
7f62d77
Eric Bower  ·  2025-12-06
v3.19.21
fix(pgs): tar.gz mime type
bb22427
Eric Bower  ·  2025-12-04
v3.19.20
fix(auth): don't extend a pico+ sub by a year if it is expired
68e1ece
Eric Bower  ·  2025-11-29
v3.19.19
docs: readme
6be2726
Eric Bower  ·  2025-11-28
fix(pipe): to topic fns should handle if user already incldued
72f6af9
Eric Bower  ·  2025-10-26
chore(bouncer): pin to v0.9.0
2fbb7d1
Eric Bower  ·  2025-09-17
fix(pico): check if entry or entry.Reader is nil

I'm not sure why we would ever receive a nil entry but it is showing up
in the logs

```
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x9a258]

goroutine 14513 [running]:
io.ReadAll({0x0, 0x0})
     /usr/local/go/src/io/io.go:712 +0x58
github.com/picosh/pico/pkg/apps/pico.(*UploadHandler).Write(0x400000c198, 0x400045eb90, 0x4000990960)
     /app/pkg/apps/pico/file_handler.go:305 +0xfc
github.com/picosh/pico/pkg/send/protocols/sftp.(*handler).Filecmd(0x4000f67b30, 0x40015c8b60?)
     /app/pkg/send/protocols/sftp/handler.go:53 +0x84
github.com/picosh/pico/pkg/send/protocols/sftp.(*handlererr).Filecmd(0x4000a5e0a0, 0xe0?)
```
0d05547
Eric Bower  ·  2025-09-07
docs: readme
cf012c4
Eric Bower  ·  2025-09-07
fix(feeds): last digest can be nil
0a997c5
Eric Bower  ·  2025-08-30
chore(feeds): better formatting for smtp emails
d80b355
Eric Bower  ·  2025-08-28
chore(feeds): limit message body size to 5mb

This is in an effort to prevent abuse or having insanely massive RSS
feed digests.  The actual limit is subject to change.
c9bd793
Eric Bower  ·  2025-08-28
chore: gitignore aider
239c30e
Eric Bower (aider)  ·  2025-08-28
feat: Add size limit warning banner
e956960
Eric Bower  ·  2025-08-22
v3.19.18
feat(feeds): cli `print` command prints the feed post
588d72e
Eric Bower  ·  2025-08-21
chore(prose): add some tagging to post page elements

This should make it easier to manipulate our date elements in case
someone wants to remove them with css
3d4c1d9
Eric Bower  ·  2025-08-19
chore: gha for more pgs images
c42707d
Eric Bower  ·  2025-08-19
v3.19.17
chore: update souin
e34c5c9
Eric Bower  ·  2025-08-10
v3.19.16
fix(feeds): nil pointer
7cee042
Eric Bower  ·  2025-08-08
docs(feeds): clarify run cli
0a37c05
Eric Bower  ·  2025-08-08
v3.19.15
fix(feeds): remove references to `digest_interval`
d32eeb3
Eric Bower  ·  2025-08-08
v3.19.14
refactor(feeds): deprecate `digest_interval`; use `cron` instead

Reference: https://pico.sh/feeds#cron
92e3a32
Eric Bower  ·  2025-08-07
v3.19.13
refactor(feeds): only fetch users with feeds post
e1fca8b
Eric Bower  ·  2025-08-07
v3.19.12
feat(feeds): a wild `cron` property appears

Now users can specify a digest interval for their rss-to-email posts
using a cron format.

The primary limitation is we run our feed processor every minute so we
don't support the seconds specificity in cron.

Reference: https://github.com/adhocore/gronx?tab=readme-ov-file#cron-expression
4ef30c4
Eric Bower  ·  2025-08-06
chore: rm test files
bcb252d
Eric Bower  ·  2025-08-06
v3.19.11
fix(feeds): sanitize feed content to be utf8

Our postgres db expects utf8
e1bec7f
Eric Bower  ·  2025-08-02
fix(pastes): caddy syntax
f566649
Eric Bower  ·  2025-08-02
v3.19.10
fix(pastes): caddyfile syntax err
1f1214a
Eric Bower  ·  2025-08-02
v3.19.9
fix(pastes): allow script-src
f13d251
Eric Bower  ·  2025-08-02
v3.19.8
feat(pastes): copy button
c28b9f9
Juzexe  ·  2025-07-24
Add copy button to Pastes
a34af95
Eric Bower  ·  2025-08-02
v3.19.7
refactor(prose): only display 1 post per user in feed
eea5880
Eric Bower  ·  2025-07-27
v3.19.6
fix(feeds): lint
fffe43e
Eric Bower  ·  2025-07-27
v3.19.5
refactor(feeds): replace sendgrid with smtp
7792e55
Eric Bower  ·  2025-07-24
v3.19.4
fix(storage): upload files with 0o777 perms
29379e6
Eric Bower  ·  2025-07-21
v3.19.3
feat(prose): allow `robots.txt` to be uploaded and served for blog
97df9d9
Eric Bower  ·  2025-07-21
feat(pssh): handle keepalive
0f5f625
Eric Bower  ·  2025-07-21
chore(pgs): fmt
e686672
Eric Bower  ·  2025-07-13
docs(pgs): selfhost copy
8c838e2
Eric Bower  ·  2025-07-13
feat(pgs): self hosted init cmd
5403c06
Eric Bower  ·  2025-07-13
docs: selfhost
940bb63
Antonio Mika  ·  2025-07-12
Don't start pgs ssh with cdn
dc6d15a
Antonio Mika  ·  2025-07-10
Add imgproxy metrics
d7f3e5c
Antonio Mika  ·  2025-07-10
Update minio profile
4c69410
Eric Bower  ·  2025-07-07
chore(pgs): standalone docker image
b73b460
Eric Bower  ·  2025-07-04
feat(pgs): standalone pgs binary

This introduces a new cmd binary for pgs: standalone.

This allows end-users to self-host their own version of `pgs` with as
few dependencies as possible.  With this change users can self-host pgs
with (2) deps: caddy and sqlite
0b62aa3
Eric Bower  ·  2025-06-29
fix(pgs): fs adapter atomically replace files
28603ad
Eric Bower  ·  2025-06-29
fix(pgs): fs adapter make sure files are closed properly
59c9f21
Eric Bower  ·  2025-06-28
chore(pico): missing help cmd txt
73024ce
Eric Bower  ·  2025-06-28
feat(pico): `user` and `not-found` commands to cli
5c058db
Eric Bower  ·  2025-06-26
fix(pgs): cli fzf cmd the ListObjects needs trailing `/`
6154c70
Eric Bower  ·  2025-06-24
chore(pgs): cleanup
9c0e3ab
Eric Bower  ·  2025-06-23
fix(pgs): rsync --delete regression
acf40b6
Eric Bower  ·  2025-06-23
chore(imgproxy): add to pgs network
31053c9
Eric Bower  ·  2025-06-23
chore(auth): rotate logs
e28e5d4
Eric Bower  ·  2025-06-22
fix(pgs): fs adapter updates
d01276a
Eric Bower  ·  2025-06-21
fix(fs): dont fail when listing or deleting that dont exist
cda5bd5
Eric Bower  ·  2025-06-20
refactor(config): remove old cfg options
cae15d7
Eric Bower  ·  2025-06-20
fix(pgs): home page
853d60e
Eric Bower  ·  2025-06-20
fix(pgs): getobject should return always objectinfo
b0daabd
Eric Bower  ·  2025-06-19
fix(pgs): reset os.File reader
40ff4a4
Eric Bower  ·  2025-06-19
feat(pgs): fs adapter generate etag on-the-fly
f987b11
Antonio Mika  ·  2025-06-17
Move around caddyfiles
675fdb0
Eric Bower  ·  2025-06-17
fix(pgs): cdn send partial url to proxy instead of entire url
2c908e6
Eric Bower  ·  2025-06-16
fix(pgs): cdn manually proxy check handler
663da98
Eric Bower  ·  2025-06-15
fix(pgs): cdn check endpoint
7deac4f
Eric Bower  ·  2025-06-15
refactor(pgs): use base storage adapter
eb2019a
Eric Bower  ·  2025-06-15
refactor(pgs): lite -> cdn naming
f8031ae
Eric Bower  ·  2025-06-14
docker compose
f6881c4
Eric Bower  ·  2025-06-14
dockerfile work
47c751f
Eric Bower  ·  2025-06-09
refactor(pgs): "lite" version of pgs with cache and proxy to ash.pgs
c0a4aba
Eric Bower  ·  2025-06-09
fix(prose): rss link
fdd2260
Eric Bower  ·  2025-06-08
refactor(prose): use local fs for storing images

This commit removes the dependency on `minio` for hosting images
uploaded to prose.

Instead we are using the local filesystem with an fs adapter.

We are also now using a local imgproxy container on the prose VM
instead.
4aa64c9
Eric Bower  ·  2025-06-05
fix(pgs): redirect to file
19e655a
Eric Bower  ·  2025-05-28
Merge remote-tracking branch 'origin/main'
5d38aa3
Antonio Mika  ·  2025-05-28
Add the ability to hide log lines