(1099) commits
91dabf9
(impersonate)
Eric Bower
·
2025-03-28
chore: use `user_id` in log middleware to set the user ctx
Eric Bower
·
2025-03-28
feat(pgs): admins can impersonate This change will let admins impersonate any user for the pgs cli
Eric Bower
·
2025-04-01
fix(tui.analytics): allow users to enable analytics The core issue here is around focus management. When a user enters the analytics page, we fetch site stats regardless if they have analytics enabled which then applies focus to the left page. However for users witohut analytics enabled we do not focus the left pane which means all key events are lost. In vaxis if we try to focus a widget that doesn't exist we lose the key events in our page widget.
Eric Bower
·
2025-04-04
fix(pgs): ability to create multiple projects in single ssh session Previously we were caching the project when a user uploaded a bunch of files. This was an optimization that didn't account for when a user has an active sftp connection where they create multiple projects in a single session. This code change performs an extra check to ensure we are always creating new projects when necessary.
Eric Bower
·
2025-03-27
fix(tui.signup): when focus is on input and use presses enter, submit form
Eric Bower
·
2025-03-21
fix(tui): dont fetch user info when creating a page fix(tui): dont panic
9d325fb
(v3.17.0)
Antonio Mika
·
2025-03-13
Merge pull request #190 from picosh/am/ssh-server Started work on a crypto/ssh based ssh server
0a1449a
(am/ssh-server)
Antonio Mika
·
2025-03-12
Add session specific context based on conn context
2a79ed9
(vaxis)
Eric Bower
·
2025-02-24
refactor(tui): use vaxis While we really enjoyed the charm stack for our ssh apps, we are at a point where we want to reduce our overall dependencies for our SSH apps. With charm we have: - `crypto/ssh` - `gliberlabs/ssh` - `charmbracelet/ssh` - `charmbracelet/wish` There's a lot that can go wrong here and we have seen quite a bit of thrashing within these libraries that required us to make moderate changes when upgrading. We also enjoyed bubbletea/lipgloss but we are at the point where we would like to switch to `vaxis` since it is more inline with our design ethos. We are basically going to replace 5 go packages with 1 and we are starting with the TUI.
6fbdd09
(v3.15.0)
Antonio Mika
·
2025-02-26
Merge pull request #188 from picosh/am/rsync-updates-2025 Started work on a number of rsync updates
5c8d929
(rsync-test)
Eric Bower
·
2025-02-21
chore: test is failing on `--delete` Alright, the test is failing because of the new `--delete` flag. ``` time=2025-02-21T21:10:11.225-05:00 level=ERROR source=/home/erock/go/pkg/mod/github.com/picosh/send@v0.0.0-20250213162645-ec2027b68462/protocols/rsync/rsync.go:157 msg="error running rsync middleware" service=pgs err="runtime error: index out of range [7876097] with length 0" ```
Eric Bower
·
2025-02-17
chore: add `rsync --delete` test I can't figure out how to format the `exec.Command` for rsync with `-e` flag Current error: ``` [rsync -rv -e "ssh -p 2222 -o IdentitiesOnly=yes -i /tmp/rsync-3246995037/id_ed25519 -o StrictHostKeyChecking=no" /tmp/rsync-3246995037/ localhost:/test] rsync: [sender] Failed to exec ssh -p 2222 -o IdentitiesOnly=yes -i /tmp/rsync-3246995037/id_ed25519 -o StrictHostKeyChecking=no: No such file or directory (2) rsync error: error in IPC code (code 14) at pipe.c(85) [sender=3.4.0] rsync: connection unexpectedly closed (0 bytes received so far) [sender] rsync error: error in IPC code (code 14) at io.c(232) [sender=3.4.0] exit status 14 --- FAIL: TestSshServerRsync (0.10s) ssh_test.go:152: exit status 14 ```
Eric Bower
·
2025-02-06
feat(feeds): unsubscribe link in email digests fix(feeds): show inline content by default
Eric Bower
·
2025-02-05
feat(feeds): cli A remote CLI with some handy options: ls, rm, and run `run {filename}` is the most interesting because it will run the feed digest post immediately, ignoring last digest time validation. This will be useful for people to debug their posts since that is a pain point for a lot of users.
Eric Bower
·
2025-02-05
fix(feeds): fallback to feed.Link when feed.GUID is empty Closes: #184
Eric Bower
·
2025-01-23
chore(pgs): ignore error from souin ServeHTTP Reference: https://github.com/darkweak/souin/blob/0e1579f1adc7c94f16852531c1c3658752c2e3d8/plugins/souin/main.go#L69
87407ab
(prose-ssg-v2)
Eric Bower
·
2025-01-14
feat(prose): experimental ssg Instead of having a web server that serves our blogs on prose.sh, we can generate the sites and publish them to pgs.sh This has some benefits: - HTTP caching - No need for a web server - No need for an SSH server Everything should work the exact same with the one exception for how users upload their markdown files. ``` rsync *.md prose.sh:/ rsync *.md pgs.sh:/prose ``` Then we have a pipe `prose-drain` that we will use to listen for new files being uploaded and generate the HTML after that.
Antonio Mika
·
2025-01-14
Fix lint, update soju diff and update senpair window change refresh logic
Eric Bower
·
2025-01-10
feat(plus): when purchasing membership, automatically enroll in rss feed In an effort to improve our communication with pico+ users, we want to automatically enroll them into our user notification feed.
4a540a6
(feat-feeds-errs)
Eric Bower
·
2025-01-09
chore(feeds): better error handling for invalid feed files When a user uploads an invalid feed file we do not have any mechanism currently to notify that user. Further will continue to run the file through our rss-to-email cron. This commit makes it so we perform validation on the feed files as they are uploaded and refuse to save files that we know will eventually fail. Further, we don't want to continuously try files that we know will not succeed so we are pushing those known issues into our retry-then-delete mechanism inside our cron.
28b4a62
(imgproxy-etag-v2)
Mac Chaffee
·
2024-12-21
feat(pgs): forward etag and last-modified headers from imgproxy
10035cd
(imgproxy-etag)
Eric Bower
·
2024-12-28
fix(pgs): forward query params for rewrites and redirects
Eric Bower
·
2024-12-17
refactor(auth): send caddy access logs directly to metric-drain This change removes the need to hop from `container-drain` to `metric-drain`. Instead we are going to process access logs directly inside of our `metric-drain` function.
Eric Bower
·
2024-12-17
refactor(tui): chat page to describe how it works with senpai We also notify the user that chat is pico+ only
Mac Chaffee
·
2024-12-17
feat(pgs): Configure cache-control, TTL, max body, exclude /check (#176)
Eric Bower
·
2024-12-09
refactor(pgs): use soiun in-app for http caching This gives us more control over the underlying cache and lets us build our own system for purging our cache.
Eric Bower
·
2024-12-15
chore(pico): added services section to settings page This will hopefully make it easier to understand what services a user can access
c59051f
(v3.13.6)
Eric Bower
·
2024-12-12
refactor(feeds): remove feeds after 3 failed attempts We have a bunch of feeds in our system that are failing in a loop. Previously we did not notify the user when there was a failure, we just logged it internally. With this change, we will prepend errors to the email message body. Further, if the feeds errors and doesn't return any feed items, we increment a counter. 3 failed attempts and we remove the post and notify the user.
dcfb7ac
(v3.13.4)
Eric Bower
·
2024-12-11
fix: address CVE-2024-45337 Reference: https://github.com/golang/go/issues/70779
Eric Bower
·
2024-12-03
style(prose): remove `unlisted` tag This is in an effort to support "pages" that are not automatically listed on the blog, rather, can be specified in the nav, readme, or footer.
Eric Bower
·
2024-11-15
reactor(metric-drain): use caddy access logs Previously we were sending site usage analytics within our web app code. This worked well for our use case because we could filter, parse, and send the analytics to our pipe `metric-drain` which would then store the analytics into our database. Because we want to enable HTTP caching for pgs we won't always reach our web app code since usage analytics will terminate at our cache layer. Instead, we want to record analytics higher in the request stack. In this case, we want to record site analytics from Caddy access logs. Here's how it works: - `pub` caddy access logs to our pipe `container-drain` - `auth/web` will `sub` to `container-drain`, filter, deserialize, and `pub` to `metric-drain` - `auth/web` will `sub` to `metric-drain` and store the analytics in our database
Antonio Mika
·
2024-11-22
feat(pipe) web (#160) refactor(auth): use new http mux router --------- Co-authored-by: Eric Bower <me@erock.io>
Eric Bower
·
2024-11-10
feat(auth): subscribe to pico's metric-drain pipe We have a lot of services that need to record site usage analytics so we need a distributed way to receive these events. As a result, all of our site visits will be sent through our pipe service. Then inside of our auth service we process the visits and store them in our analytics table. This overloads the auth service since it's now serving as a destination for our metric-drain, but we think that's okay for now.
Antonio Mika
·
2024-11-07
Allow unauthenticated access to public pipes (#157) Co-authored-by: Eric Bower <me@erock.io>
Eric Bower
·
2024-10-27
refactor(pgs): use `http.ServeMux` v1.22 This change futher separates `pgs` from most of the other services. One important change is refactoring our web router to use the new `http.ServeMux` router that does a better job of routing with templated strings. Further, we try to leverage the `http.Handler` interface that removes the need to use `context.Context` as much.
Eric Bower
·
2024-10-13
refactor(feeds): only show banner notice when <30 days feat(feeds): extend engagement click once every 6 months
c9b9480
(v3.10.0)
Antonio Mika
·
2024-10-11
Merge pull request #147 from picosh/am/light-refactor Refactor pubsub->pipe
Antonio Mika
·
2024-10-03
Merge pull request #143 from picosh/am/send-log-sink Setup a send log sink
Eric Bower
·
2024-09-02
feat(prose): `with_styles` setting in `_readme` This adds a new frontmatter property in `_readme` that allows users to request no styles from us. This allows for better customization in conjunction with `_styles.css` which is the user-defined CSS stylesheet that gets loaded.
Eric Bower
·
2024-09-23
feat(pubsub): pub new flag, `-t {duration}` timeout The default is no timeout.
Eric Bower
·
2024-08-29
feat(feeds): require human interaction to continue sending emails BREAKING CHANGE: we require users to click a link in their feed emails once every 90 days
Antonio Mika
·
2024-09-18
Merge pull request #140 from picosh/am/pubsub-clean Alternate pubsub implementation
Eric Bower
·
2024-08-19
chore(pgs): add projects.blocked col Sometimes users have sites that violate our ToS. We can delete the content but if they have a script that will reupload it will automatically recreate the site. So we need a way to prevent uploads to projects.
Eric Bower
·
2024-08-16
chore(bouncer): add `-debug` flag to soju chore(bouncer): update patch against soju upstream
Eric Bower
·
2024-08-01
feat(prose): live journal The goal is to be able to use posts as live journals where reader can receive updates to docs via rss.
Eric Bower
·
2024-07-01
chore(bouncer): disable inactive users after 30 days See soju docs to read more: https://soju.im/doc/soju.1.html
0068695
(v3.4.1)
Antonio Mika
·
2024-05-31
Merge pull request #136 from picosh/am/update-deps Update dependencies (for chroma)
2e6c06e
(v3.4.0)
Antonio Mika
·
2024-05-30
Merge pull request #134 from picosh/am/sshfs Added support for sshfs
Eric Bower
·
2024-05-28
refactor: remove ability to override CSP for pgs subdomains BREAKING CHANGE: cannot override default CSP for pgs
Eric Bower
·
2024-05-14
fix: rm `links` from `registry` service minio and registry are not on the same VM so it was failing when running docker compose commands
Eric Bower
·
2024-05-14
refactor(plus): use lemonsqueezy feat(plus): support international users
Eric Bower
·
2024-05-07
feat: senpai integration (#129) Co-authored-by: Antonio Mika <antoniomika@gmail.com>
Eric Bower
·
2024-04-30
feat: update pubkey comments w authorized_keys chore: better output when uploading pubkeys
a2877c7
(v3.1.0)
Eric Bower
·
2024-04-08
chore: TUI only accessible via pico.sh BREAKING CHANGE: TUI only accessible via pico.sh
Eric Bower
·
2024-04-03
feat(pgs): append trailing slash to redirect matchers This change will make it so a user can provide -- or not provide -- a trailing slash for matching a route, that way the user doesn't need to think about it.
Eric Bower
·
2024-04-03
feat(pgs): 301 redirect urls that are directories without trailing slash (#116)
Eric Bower
·
2024-03-30
fix(pgs): use full filepath when checking for `.well-known` Closes: #113
Eric Bower
·
2024-03-26
fix(prose): copy smol.css from pico.sh fix(prose): use relative _styles.css Closes: #112
Eric Bower
·
2024-03-23
chore: add pico+ to latest expiration date instead of now When a user eventually purchases another year of pico+, we don't want to set the expiration date a year from purchase date. Rather, we want to set the expiration date to the expiration date of the feature + 1 year.
Eric Bower
·
2024-03-21
feat(pgs): support `.xsl` Closes: https://github.com/picosh/pico/issues/105
Eric Bower
·
2024-03-17
fix(ui): always fetch user from ctx When a user registers for an account, we set the user ctx, but all the api endpoint are using an closured version of the user.
Eric Bower
·
2024-03-11
chore(prose): rm "on" from post date line A small gesture to make prose more multi-lingual
Chloé Vulquin
·
2024-03-08
mdparser: extract hashtag detection into a func Also fix a bug where `tags: []` would still do the detection.
Chloé Vulquin
·
2024-03-08
mdparser: implicitly capture hashtags in document When they're found, they will be rendered as so: `<span class="hashtag">...</span>`. They are ignored in the following: * block code sections * block quote sections * span code sections This list can be expanded. We then collect all of the matching hashtags and provide them as metadata, but only if there is no explicit frontmatter for them. So a workaround for undesirable hashtag detection is to use front-matter to specify `tags: []` or similar.
Chloé Vulquin
·
2024-03-05
prose: infer title from first <h1> before any <p> (#93) This eliminates the need to use explicit title metadata for the vast majority of posts. This still allows explicitly setting a title via the frontmatter. If neither is found, the current logic goes on.
Eric Bower
·
2024-03-01
feat(prose): let user customize 404 page feat(prose): `_404.md` file now supported
65ca2e2
(v2.1.4)
Eric Bower
·
2024-02-29
fix: empty username refactor: ssh styles feat: add pico+ info
Eric Bower
·
2024-02-25
feat(pgs): _headers file (#83) https://docs.netlify.com/routing/headers/ Closes: #82
43ef9bb
(v2.1.0)
Eric Bower
·
2024-02-24
feat(pgs): private projects with web tunnels (#80) We can support private projects via local forward ssh tunnels. Eric sets ACL for project `hey-docs-dev`: ``` ssh pgs.sh acl hey-docs-dev pico antonio ``` Antonio creates SSH tunnel to project: ``` ssh -L 5000:localhost:80 -N hey-docs-dev@pgs.sh ``` Antonio can access site via http://localhost:5000 Other options we support: - `acl public` -> default, open to everyone - `acl pico` -> private to any pico user - `acl pico xxx,yyy` -> private to specific pico users - `acl public_keys` -> private to anyone with a pubkey - `acl public_keys sha256:xxx,sha256:yyy` -> private to specific pubkeys Further, there is a special API endpoint for any sites accessed via a tunnel: GET http://localhost:5000/pico This will return information about the user accessing the site, like pico username, public key used, etc.
0df20ce
(v2.0.0)
Eric Bower
·
2024-02-21
refactor: make public keys unique (#81) BREAKING CHANGE: we will no longer support multiple account with the same public key
Eric Bower
·
2024-01-31
feat: support more imgproxy options (#73) New options in any combinations: - `/s:w:h` - `/q:1-100` - `/rt:angle` We also still support our imgs api version of sizing.
3c82bf5
(v1.10.0)
Eric Bower
·
2024-01-29
refactor(imgs): merge into prose.sh (#71) feat(pgs): use image proxy for images BREAKING CHANGE: removed imgs.sh blog features
Eric Bower
·
2024-01-27
fix(pgs): classify xml when calc routes `.xml` files were returning as `text/plain` which has different routing rules than what xml should have. Closes https://github.com/picosh/pico/issues/72
Eric Bower
·
2024-01-19
fix(feeds): move cron to web app Our `Dockerfile` doesn't move template files into their respective images when it's an SSH app. feeds' cron requires those template files in order to send emails.
d1895d2
(v1.8.3)
Eric Bower
·
2024-01-16
refactor(imgs): use prose ssh app Prose's ssh app does the same thing as imgs so there is no point in having them both. This frees up an IP address for us to use for other purposes.
Eric Bower
·
2024-01-11
refactor: move ssh services into service packages The only excpetion is imgs.sh which contains a circular dep.
d77b910
(v1.8.0)
Eric Bower
·
2024-01-09
Refactor docs (#68) Removed all docs associated with our services and moved them to a centralized source: https://pico.sh
securepub
·
2024-01-08
doc suggestion from IRC #pico.sh @ libera.chat (#67) [10:25am] pareidoliac: I have had problem with the docs apart from the minor detail that the "-> yourusername" should be "-> {username}-myproject" in the https://pgs.sh/help#custom-domain section. [10:25am] pareidoliac: thinking of making a PR to suggest that [10:29am] pareidoliac: also suggest mentioning the CSP policy pico.sh vs custom domain in the https://pgs.sh/help#spa section [10:44am] erock: happy to accept PRs Co-authored-by: jungle <jungle@night.local>
Eric Bower
·
2024-01-02
fix(prose): support trailing "/" in url Closes: https://github.com/picosh/pico/issues/64
Eric Bower
·
2024-01-02
fix(imgs): dont clip ext unless actually file ext Closes: https://github.com/picosh/pico/issues/65
Eric Bower
·
2024-01-01
chore: update golang.org/x/crypto (#63) Reference: https://groups.google.com/g/golang-announce/c/-n5WqVC18LQ
5a1f3d8
(v1.7.1)
Antonio Mika
·
2023-11-15
Enable panic recovery in ssh and set logger to be based on debug
f1e1fbb
(v1.7.0)
Eric Bower
·
2023-11-13
refactor(imgs): use imgproxy instead of libwebp (#56) --------- Co-authored-by: Antonio Mika <antoniomika@gmail.com>
Eric Bower
·
2023-11-12
refactor(imgs): dont bring libwebp into every service (#55) Most of our libwebp related code lived inside the `shared` package. This is problematic since every service imports that package, thereby requiring libwebp for every service. Now references to libwebp live solely inside `imgs` library. Unfortunately, all of our post-based SSH services import `imgs` so they still have the requirement.
f8e4071
(v1.6.0)
Antonio Mika
·
2023-11-12
Merge pull request #53 from picosh/post-filesize post filesize script
Antonio Mika
·
2023-11-12
Merge pull request #54 from picosh/am/dynamic-list Add the ability to set the per page by window height
Eric Bower
·
2023-11-11
fix(pgs): missing project name when deleting project files from store
Antonio Mika
·
2023-11-10
Merge pull request #51 from picosh/am/rsync-updates Am/rsync updates
Antonio Mika
·
2023-11-09
Only build bouncer and caddy when changes are made to their contexts
Antonio Mika
·
2023-11-08
Merge pull request #50 from picosh/am/update-sftp Fixed issues with sftp file listing and downloading from minio
Antonio Mika
·
2023-10-14
Merge pull request #47 from picosh/am/soju-webpush Added simple diff for soju to fix firefox and ios webpush
Eric Bower
·
2023-10-10
feat(pastes): extend file expiration from 7 -> 90 days chore(pastes): update copy refactor(pastes): move ssh server into `pastes` package
Antonio Mika
·
2023-10-06
Implement a fake oauth login system that uses ssh generated tokens (#44)
Antonio Mika
·
2023-10-05
Merge pull request #43 from picosh/am/irc Adds infra support for irc infrastructure
Eric Bower
·
2023-09-27
fix(imgs): when calc user's total img size, coalesce null to 0 chore: add more error logging for us to debug
Eric Bower
·
2023-09-22
feat(auth): web service (#42) Authentication (oauth2) web service intended for soju bouncer. We are also introducings tokens which users can create through the SSH CMS for all services. This will allow users to generate an API token so they can authenticate with our oauth2 API.
Eric Bower
·
2023-09-14
feat: anchor links for prose design: preserve header `font-size` when there's a `<code />` child
Eric Bower
·
2023-09-06
doc(pgs): better articulate this is closed beta Also describe the requirements for participation
Christopher Hoelter
·
2023-09-05
Consistent ordering of nav items (#40) * Ensuring consistent ordering of nav items If nav items are declared in the yaml without the "-" prefix ordering was random of those items and a page refresh could change where they are. This ensures ordering is preserved in that situation.
Eric Bower
·
2023-09-01
fix(prose): upload single file without referencing name in destination Fixes #36
Eric Bower
·
2023-08-17
refactor(pgs): reorganized ssh cmds feat: all cmds are safe by default, use `--write` to commit
Eric Bower
·
2023-08-16
fix: only delete assets from exact project match refactor: abstract removing assets
Eric Bower
·
2023-08-12
fix: sftp `ListFiles` It previously wasn't returning something that sftp was expecting
Eric Bower
·
2023-08-03
feat: cannot link to a project that is also a link A project linked to another project which is also linked to a project is forbidden. CI/CD Example: - ProjectProd links to ProjectStaging - ProjectStaging links to ProjectMain - We merge `main` and trigger a deploy which uploads to ProjectMain - All three get updated immediately This scenario was not the intent of our CI/CD. What we actually wanted was to create a snapshot of ProjectMain and have ProjectStaging link to the snapshot, but that's not the intended design of pgs. So we want to close that gap here.
Eric Bower
·
2023-08-03
feat: pgs.sh (#28) A zero-dependency static site hosting service for hackers. Features: - Terminal workflow - No client-side installation required to fully manage static sites - Distinct static sites as "projects" - Unlimited projects created on-the-fly (no need to create a project first) - Deploy via `rsync -a . erock@pgs.sh:/myproject` - Symbolic linking from one project to another (to support promotions/rollbacks) - HTTPS for all projects `https://erock-myproject.pgs.sh` - Custom domains for projects (managed simply by `TXT` records)
Christopher Hoelter
·
2023-07-04
Updates for macOS build compatibility. (#20) Updated the readme to include a reference to a macOS system package dependency. Added minor additional notes on direnv and running the project. Upgraded project package dependency that includes a macOS build fix.
Christopher Hoelter
·
2023-07-04
Ensure 'hidden' value gets updated when the draft attribute is modified. (#21)
494540f
(v1.1.6)
Eric Bower
·
2023-06-17
fix(prose): `/raw/` endpoints should take priority over aliases
d520b3d
(v1.1.5)
Eric Bower
·
2023-03-27
chore(feeds): feed_items table to store feed items (#16) Some RSS feeds are technically invalid but still want to be fetched. In these cases we want to make sure we can still fetch them and properly handle when the feed item does not contain correct tags for dates. Previously we used `published` and internally `last_digest` to determine if a feed has already been sent to the user. Well some feed items do not contain `published` so we would always send the feed item to the user in their email digest. Now we are storing the feed items we have fetched in a separate table along with some of its metadata in order to properly mark a feed item as "already sent." Now it doesn't matter if the feed item has the correct tags or not, we will try to fetch the items, send them to the user, and them mark them as already sent.
Eric Bower
·
2023-03-15
chore(imgs): add in-memory caching for resizing images This caching could also be used for the other services as well now.
Eric Bower
·
2023-03-15
bug(imgs): ensure webp imgs are saved Also in this commit is a change to the resize filter algorithm to see if that helps with quality and performance. Read more: https://github.com/disintegration/imaging#image-resizing
Eric Bower
·
2023-03-15
fix(imgs): do not convert svg to webp We never actually tested svg images before "supporting" it.
Eric Bower
·
2023-03-14
feat(prose): aliases can have a leading slash now It feels more natural to have a leading slash `/` for aliases even though it's a little more work to handle it properly with current slugs.
Eric Bower
·
2023-03-12
feat(prose): post aliases (#13) Posts can now have alias routes as well as the default filename as the slug. This is an important feature to support migrating from a self-hosted hugo blog to one hosted by pico. ``` --- title: My post aliases: - my_awesome_post - 2023/03/10/my-post --- ```
Eric Bower
·
2023-03-07
feat(prose): support custom favicon Now bloggers can supply their own favicon inside the `_readme.md` ``` --- favicon: https://zzz.png favicon: /zzz.png --- ``` If relative paths are supplied we replace it with `imgs.sh`
Eric Bower
·
2023-01-23
fix(feeds): when inline_content is false we should only send summary in email
Colin Henry
·
2023-01-23
feat(feeds): add option to disable inlining of post content in feed.sh emails (#8)
Eric Bower
·
2023-01-15
fix(imgs): support uploading webp We always intended to support `image/webp` but we never actually tested the code path.
Eric Bower
·
2023-01-04
feat(imgs): return current total size for user storage This value will be displayed when uploading an image to imgs.sh. Example of what it looks like: `https://erock.imgs.sh/barefoot (space: 0.01/1.00GB, 1.39%)`
Eric Bower
·
2023-01-04
chore(imgs): Add hot links and resizing examples on each imgs post page
09c53d9
(v1.0.0)
Antonio Mika
·
2022-12-11
Merge pull request #6 from picosh/am/no-matrix Change build to use composite instead of matrix action
Eric Bower
·
2022-11-08
feat(prose): permit rel attribute on hyperlinks. Closes https://todo.sr.ht/~erock/pico.sh/51
Eric Bower
·
2022-11-08
refactor(pastes): add col `expires_at` to posts Currently we figure out how to delete pastes by having a cron goroutine check on an interval whether or not posts are older than 3 days. Instead, we want to provide the ability for that delete time to be determined by individual records. So we added `expires_at` column to our `posts` table. I also extended the default expiration from 3 to 7 days.
Eric Bower
·
2022-11-07
feat(lists): relative image urls now route to imgs.sh This reaches feature parity with prose.sh where we can reference images hosted by imgs.sh from lists.sh Both "/image", "./image", and "./image.jpg" are supported.
Eric Bower
·
2022-11-07
feat(lists): layout support Introduced parity with prose for different layouts. Right now we support "default" and "aside".
jupblb
·
2022-11-01
feat: support `draft` metadata property Currently we support setting `date` into the future which will result in the post being still URL addressable but not in our discovery feed, rss, or the author's feed.
Eric Bower
·
2022-10-10
refactor: use neurosnap/go-exif-remove for custom patches `go-exif-remove` uses `go-jpeg-image-structure` in order to strip exif data. Unfortunately there's a bug in `go-jpeg-image-structure` that makes it so some jpeg image aren't detected as jpegs and then fails. See open PR for details: https://github.com/dsoprea/go-jpeg-image-structure/pull/19
Eric Bower
·
2022-10-09
bug(upload): removed user field from shared file uploader struct When a user attempts to upload files to our server, the logic we use to perform file uploads is baked into a few similar structs (`ScpUploadHandler` and `UploadImgHandler`). In those structs we authenticate their `ssh.Session` by using their name to find a user record in our db. We mistakenly had a user field on those shared structs which would sometimes result in a race condition where user A would upload files to user B's blog. We have removed the user field and instead leverage `ssh.Session.Context` to set and access the user object for our file uploaders.
Eric Bower
·
2022-10-07
docs(imgs,prose): add more info for docs Also added a section on the prose marketing page about how to upload images with your blog.
Eric Bower
·
2022-09-27
fix(imgs): set level to 1 for lossless warning: this was the only value I could supply to get this to work
Eric Bower
·
2022-09-25
feat(imgs): be more explicit about quality setting Also change resize algo to nearest neighbor
Eric Bower
·
2022-08-30
feat(prose): special _footer.md appends all posts This allows users to be able to upload a special "hidden" file that will be appended to every post. The intention is to use this as a regular call-to-action like an email address for feedback.
Eric Bower
·
2022-08-26
feat: support for different blog page layouts "default" and "aside" are currently supported by adding `layout` in the _readme.md frontmatter
Antonio Mika
·
2022-08-26
Move configuration options and add the ability to delete image files from CMS
Eric Bower
·
2022-08-25
feat(prose,lists): filter posts by all tags read Now users can filter posts by tag on the read page. This will allow us to host writing competitions where users can submit their article with the tag specifically for the competition and then we read them to pick a winner.
Eric Bower
·
2022-08-22
refactor(imgs): remove markdown metadata uploader After further thought, using a second markdown file for the metadata of images was just a little too cumbersome. I also have a hunch that most people are not going to take the time to annotate their images into mini-blogs.
Eric Bower
·
2022-08-22
refactor(imgs): redesign blog page for imgs After chatting with the pico members, it became clear that the photo album direction I was heading in was not going to super useful. Instead we decided to revert the design back to how the other pico services function. So now it's just a stream of images not grouped by tags.
Eric Bower
·
2022-08-18
fix(all): updated rss feeds to contain more information I also added aliases to user blog's rss feeds
Eric Bower
·
2022-08-17
fix(sql): updated posts table columns to fix regression We did not assume mime_type or shasum could be null, so this adjusts the migration to use what we pasted into our prod db.
Eric Bower
·
2022-08-10
feat: imgs.sh This is the initial release for the imgs.sh premium image hosting for hackers.
Eric Bower
·
2022-08-10
feat: parse nav links to convert relative urls to absolute This allows users to include posts -- from their prose blog -- as links in the nav without needing to specify an absolute URL.
Eric Bower
·
2022-08-10
feat: tag posts with slug as classname on body This will make it easier to do per post style changes.
Eric Bower
·
2022-08-09
feat: add ability to pipe to any service Implements https://todo.sr.ht/~erock/pico.sh/47
Antonio Mika
·
2022-08-08
Fixed slug being filename when file contents are the same and allow cms post management for future posts
Eric Bower
·
2022-08-08
feat(css): abstracted common css into single file for all services It was becoming tedious to make the same change in three different css files, so I abstracted the main styling into a single file and am now copying the css into each service's public directory with `make css`.
Eric Bower
·
2022-08-08
style(prose): update default styling - Increased header sizes - Increased font size - Tweaked colors for light mode - Tweaked blockquote padding
Eric Bower
·
2022-08-07
fix(prose): regression where syntax highlighting was broken bluemonday strips all classes so we had to allow classes.
Eric Bower
·
2022-08-05
feat(lists): nested lists Nested lists adds more complexity to our parser but the time complexity is still `O(n)` where `n = lines in the list`.
Eric Bower
·
2022-08-04
feat(prose): support limited raw html inside markdown It would be nice to support limited html in our markdown files so users can futher customize their blog posts. We are using https://github.com/microcosm-cc/bluemonday to handle proper sanitization.
Eric Bower
·
2022-08-03
refactor: db -> sql and wish/cms/db -> db It doesn't make sense to have such an important and all encompasing package such as `wish/cms/db` to live buried in the cms code.
Eric Bower
·
2022-08-03
feat: allow registration flag I made it so when a user presses 'esc' in the account creation screen it will quit the app instead of going to the main cms screen. Also added better error handling during account creation. Implements: https://todo.sr.ht/~erock/pico.sh/21 Fixes: https://todo.sr.ht/~erock/pico.sh/41 Fixes: https://todo.sr.ht/~erock/pico.sh/1
Eric Bower
·
2022-08-03
fix: add pipe to ssh command back to pastes Also fixed an issue where pipe to ssh would display a "%".
Eric Bower
·
2022-08-02
feat: dates migration and reorg one-off scripts Since we've been needing to perform more complex migrations that depend on golang, I thought it would be a good idea to have a "home" for our one-off scripts. I like the idea of keeping them in git so we can reference them for future scripts or just for historical reasons.
Eric Bower
·
2022-08-02
fix: migration script for post tags The only way that post tags get added to our database is if the post gets uploaded. If there is a post in our system that already has tags, the tags will show up in the post but not in the blog tag filter. This script backports tags for all posts that already had tags in their system.
Eric Bower
·
2022-08-02
fix: incorrect tag in yaml was breaking uploader and web render Also added support for a string based tags value
Eric Bower
·
2022-08-01
feat: ability to tag posts for lists and prose Now users can tag posts and then filter posts on their blog by a single tag. We could have supported the ability to filter by multiple tags but I felt like that was feature creep. If we get enough requests to filter by multiple tags then we can reconsider that decision. I also made it so the blog rss feed will filter based on tag. This allows readers to subscribe and read posts specific to a tag. In a follow up commit we will make it so the `/read` endpoint can also be filtered by tag, but again I felt like that was feature creep and probably not something many people will end up using. Implements: https://todo.sr.ht/~erock/pico.sh/31
Eric Bower
·
2022-08-01
refactor: abstract api functions into shared I also updated the custom domain logic to apply to all services. Each service has its own special TXT string, e.g. `_prose`, `_lists`, `_pastes` which is based on `cfg.Space`.
Eric Bower
·
2022-08-01
fix: add readme Also update references to our repos to point to the new pico repo
Eric Bower
·
2022-07-30
fix: adjusted slug migration We need to ensure that the prod db has the correct filenames since we are not including the extension in the record. We also updated all the post urls to use the slug field.
Eric Bower
·
2022-07-30
refactor: use post column slug for url By creating a new column for our url slugs, we can allow users to be able to change the slug. It also makes the logic around how to generate a post url easier since it is explicit inside the post record.
Eric Bower
·
2022-07-29
refactor: move code from services to root This is the first of a couple refactors to abstract as much service code into a separate package in order to reduce the amount of code duplication. This code was essentially copy pasted into all of the services because we didn't have a good way to abstract it until now.