Commit graph

2018 commits

Author SHA1 Message Date
kim
63fc9b6c3e
[chore] renames the GTS caches to DB caches ()
* renames the `GTS` caches to `DB` caches, as it better references what they are

* change remaining Caches.GTS uses to Caches.DB
2024-07-24 10:41:43 +02:00
tobi
325b4a2b4a
[feature] Allow user to set "bot" flag; show bot icon on profile ()
* [feature] Allow user to set "bot" flag; show bot icon on profile

* tweak

* update customs
2024-07-24 10:40:56 +02:00
Vyr Cossont
db0a47126e
[bugfix] Serialize empty conversation account list as empty list, not null () 2024-07-24 10:40:01 +02:00
tobi
6533531cf1
[chore] Add some log lines to recent migrations warning not to interrupt ()
* [chore] Add some log lines to recent migrations warning not to interrupt

* arse
2024-07-23 23:06:20 +02:00
Vyr Cossont
86a59db711
Remove content and related fields from boosts ()
These duplicate the content of the target and aren't necessary for anything.

- Stops copying some fields from target when boosting or processing a remote boost
- Adds a migration to null out existing duplicate data
- Updates tests
2024-07-23 20:51:57 +01:00
Vyr Cossont
2d921d9d7c
Explicitly propagate filter results from statuses to their boosts in API responses ()
Related to 
2024-07-23 20:51:07 +01:00
Vyr Cossont
8fdd358f4b
[feature] Conversations API ()
* Implement conversations API

* Sort and page conversations by last status ID

* Appease linter

* Fix deleting conversations and statuses

* Refactor to make migrations automatic

* Lint

* Update tests post-merge

* Fixes from live-fire testing

* Linter caught a format problem

* Refactor tests, fix cache

* Negative test for non-DMs

* Run conversations advanced migration on testrig startup as well as regular server startup

* Document (lack of) side effects of API method for deleting a conversation

* Make not-found check less nested for readability

* Rename PutConversation to UpsertConversation

* Use util.Ptr instead of IIFE

* Reduce cache used by conversations

* Remove unnecessary TableExpr/ColumnExpr

* Use struct tags for both unique constraints on Conversation

* Make it clear how paging with GetDirectStatusIDsBatch should be used

* Let conversation paging skip conversations it can't render

* Use Bun NewDropTable

* Convert delete raw query to Bun

* Convert update raw query to Bun

* Convert latestConversationStatusesTempTable raw query partially to Bun

* Convert conversationStatusesTempTable raw query partially to Bun

* Rename field used to store result of MaxDirectStatusID

* Move advanced migrations to their own tiny processor

* Catch up util function name with main

* Remove json.… wrappers

* Remove redundant check

* Combine error checks

* Replace map with slice of structs

* Address processor/type converter comments

- Add context info for errors
- Extract some common processor code into shared methods
- Move conversation eligibility check ahead of populating conversation

* Add error context when dropping temp tables
2024-07-23 20:44:31 +01:00
kim
31294f7c78
[bugfix] media.Processor{}.GetFile() returning 404s on first call, correctly loading on 2nd ()
* refactor file handling a tiny bit

* whoops

* make processing media / emoji defers a bit clear to see that it's the "on finished processing" path

* some wording

* add some debug logging

* add mutex locks for processing remote media

* try removing freshness check

* fix derefMedia not being allocated

* fix log format string

* handle case of empty file paths (i.e. not stored)

* remove media / emoji once finished processing from dereferencer maps

* whoops, fix the cached / force checks

* move url parsing outside of 'process___Safely()' funcs to prevalidate url

* use emoji.ShortcodeDomain()

* update RefreshEmoji() to also match RefreshMedia() changes

---------

Co-authored-by: tobi <tobi.smethurst@protonmail.com>
2024-07-22 18:45:48 +01:00
dependabot[bot]
5338825d2b
[chore]: Bump github.com/minio/minio-go/v7 from 7.0.73 to 7.0.74 ()
Bumps [github.com/minio/minio-go/v7](https://github.com/minio/minio-go) from 7.0.73 to 7.0.74.
- [Release notes](https://github.com/minio/minio-go/releases)
- [Commits](https://github.com/minio/minio-go/compare/v7.0.73...v7.0.74)

---
updated-dependencies:
- dependency-name: github.com/minio/minio-go/v7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-22 14:12:51 +01:00
kim
c635080a0b
[feature] add flac support ()
* add flac support to the ffprobe format/stream -> filetype parser

* also add audio/flac for flac (not just x-flac)

* update tests

---------

Co-authored-by: tobi <tobi.smethurst@protonmail.com>
2024-07-21 14:42:51 +02:00
tobi
027a93facc
[feature/frontend] Respect prefers-reduced-motion for avatars, headers, and emojis ()
* [feature/frontend] Respect `prefers-reduced-motion` for avatars, headers, and emojis

* go fmt

* fix tests

* use static version of instance thumbnail when appropriate

* use prefers-reduced-motion

* simplify account conversion a bit

* fix c&p error
2024-07-21 14:22:08 +02:00
kim
b415337d40
[bugfix] update common get target account / status doing refresh async () 2024-07-21 14:04:19 +02:00
tobi
8a2fb48ef4
[chore] Remove duplicate <hr> ()
* [chore] Remove duplicate `<hr>`

* update test
2024-07-21 11:30:22 +02:00
kim
409b3987ac
update go-ffmpreg to v0.2.3 () 2024-07-20 14:14:58 +01:00
tobi
ad700c5029
[chore/frontend] Use smaller webp images for logo and default avatars () 2024-07-20 14:02:22 +01:00
kim
50c9b5498b
[feature] use webp for thumbnails ()
* update to use webp for thumbnails

* bump webp quality up to 40% from 12% (it's a bit different to jpeg quality setting)

* update to use yuva colorspace, and use thumbnail=n=10 to select frame

* fix missing comma in ffmpeg args

* add links to appropriate ffmpeg docs

* update tests

* add file size tests for thumbnails

---------

Co-authored-by: tobi <tobi.smethurst@protonmail.com>
2024-07-19 17:28:43 +02:00
kim
f5a44ccad4
[docs] update README with our corporate sponsorship policy ()
* update README with our corporate sponsorship policy

* move location of corporate sponsorship

* tweaks after discussion

* update to maintain consistency
2024-07-19 14:14:07 +02:00
tobi
2b895f822a
[chore] Fix typo () 2024-07-17 22:04:52 +02:00
kim
72ba5666a6
[chore] media pipeline improvements ()
* don't set emoji / media image paths on failed download, migrate FileType from string to integer

* fix incorrect uses of util.PtrOr, fix returned frontend media

* fix migration not setting arguments correctly in where clause

* fix not providing default with not null column

* whoops

* ensure a default gets set for media attachment file type

* remove the exclusive flag from writing files in disk storage

* rename PtrOr -> PtrOrZero, and rename PtrValueOr -> PtrOrValue to match

* slight wording changes

* use singular / plural word forms (no parentheses), is better for screen readers

* update testmodels with unknown media type to have unset file details, update attachment focus handling converting to frontend, update tests

* store first instance in ffmpeg wasm pool, fill remaining with closed instances
2024-07-17 15:26:33 +00:00
tobi
0aadc2db2a
[feature] Allow users to set default interaction policies per status visibility ()
* [feature] Allow users to set default interaction policies

* use vars for default policies

* avoid some code repetition

* unfuck form binding

* avoid bonkers loop

* beep boop

* put policyValsToAPIPolicyVals in separate function

* don't bother with slices.Grow

* oops
2024-07-17 16:46:52 +02:00
kim
401098191b
give read-only access to /dev for ffmpeg to access /dev/urandom () 2024-07-16 13:32:48 +01:00
kim
de45c0be60
[feature] more filetype support! ()
* add more supported file types to our media processor that ffmpeg supports, update supported mime type lists

* add code comments to the supported mime types slice

* don't check for zero value string, just parse

* remove some unneeded consts which make the code a bit harder to read

* fix test expected instance media mime types, use compact ffprobe json, simple media processing by type

* final tweaks to media processing code

* don't use safe divide where we don't need to
2024-07-15 15:24:53 +01:00
tobi
9efb11d848
[feature/frontend] Add player for audio files; use thumbnail for poster ()
* [feature/frontend] Audio player for audio media types

* use video preview images for previews instead of video itself

* don't preload

* update tests for new zork status

* collapse media gallery into single row when small
2024-07-15 10:47:57 +01:00
dependabot[bot]
16421f7576
[chore]: Bump github.com/tdewolff/minify/v2 from 2.20.34 to 2.20.37 () 2024-07-15 09:15:31 +00:00
dependabot[bot]
b8a291c430
[chore]: Bump github.com/coreos/go-oidc/v3 from 3.10.0 to 3.11.0 () 2024-07-15 09:14:50 +00:00
tobi
9adcce9494
[chore] add step-by-step logging to long migration () 2024-07-15 11:12:56 +02:00
tobi
e2ed6ef024
[chore] Go mod tidy / vendor () 2024-07-13 16:23:25 +02:00
tobi
c83e96b8a7
[chore/frontend] Tweak threading a bit, inform about hidden replies ()
* [chore/frontend] Tweak threading a bit, inform about hidden replies

* whoops

* round off bottom of replies col-header if no replies visible
2024-07-13 12:26:16 +02:00
tobi
bbbdf01213
[bugfix] Fix panic in isStatusHomeTimelineable () 2024-07-13 11:07:01 +02:00
tobi
aeb65bceae
[feature/frontend] Better visual separation between "main" thread and "replies" ()
* [feature/frontend] Better web threading model

* fix test

* bwap

* tweaks

* more tweaks to wording

* typo

* indenting

* adjust wording

* aaa
2024-07-12 20:36:03 +02:00
kim
cde2fb6244
[feature] support processing of (many) more media types ()
* initial work replacing our media decoding / encoding pipeline with ffprobe + ffmpeg

* specify the video codec to use when generating static image from emoji

* update go-storage library (fixes incompatibility after updating go-iotools)

* maintain image aspect ratio when generating a thumbnail for it

* update readme to show go-ffmpreg

* fix a bunch of media tests, move filesize checking to callers of media manager for more flexibility

* remove extra debug from error message

* fix up incorrect function signatures

* update PutFile to just use regular file copy, as changes are file is on separate partition

* fix remaining tests, remove some unneeded tests now we're working with ffmpeg/ffprobe

* update more tests, add more code comments

* add utilities to generate processed emoji / media outputs

* fix remaining tests

* add test for opus media file, add license header to utility cmds

* limit the number of concurrently available ffmpeg / ffprobe instances

* reduce number of instances

* further reduce number of instances

* fix envparsing test with configuration variables

* update docs and configuration with new media-{local,remote}-max-size variables
2024-07-12 09:39:47 +00:00
tobi
5bc567196b
[chore] Add interaction policy gtsmodels ()
* [chore] introduce interaction policy gts models

* update migration a smidge

* fix copy paste typo

* update migration

* use int for InteractionType
2024-07-11 15:44:29 +01:00
snow
8f8093aea4
[bugfix] Don't throw error when parent statuses are missing () ()
* [bugfix] Don't throw error when parent statuses are missing ()

* Split missing parent status case from error check
2024-07-10 14:38:25 +01:00
Daenney
ad93e57d08
[choore] Update robots.txt ()
Recategorises a pair of scrapers according to their use.
2024-07-10 15:10:34 +02:00
Daenney
1de41f64f2
[chore] Bump ncruces/go-sqlite3 to 0.17.1 ()
More linkanme fixes.
2024-07-08 22:03:00 +02:00
tobi
9a7c8926f5
[chore/frontend] Put ActivityPub logo on index page ()
* [chore/frontend] Put ActivityPub logo on index page

* tidy up

* embiggen the logo a bit

* use light logo instead

* ensmallen link container
2024-07-08 18:12:33 +02:00
tobi
d70f4e166d
[feature/frontend] Allow setting alt-text for avatar + header () 2024-07-08 15:47:03 +02:00
dependabot[bot]
43c480aec4
[chore]: Bump github.com/minio/minio-go/v7 from 7.0.72 to 7.0.73 () 2024-07-08 07:59:07 +00:00
dependabot[bot]
ae349dd6a5
[chore]: Bump golang.org/x/net from 0.26.0 to 0.27.0 () 2024-07-08 07:58:46 +00:00
tobi
bbbf6ebe37
[frontend] Better autocapitalize/spellcheck settings on forms () 2024-07-08 09:38:27 +02:00
dependabot[bot]
5769722c58
[chore]: Bump github.com/microcosm-cc/bluemonday from 1.0.26 to 1.0.27 () 2024-07-08 07:34:39 +00:00
dependabot[bot]
a81455e81c
[chore]: Bump golang.org/x/crypto from 0.24.0 to 0.25.0 () 2024-07-08 07:33:11 +00:00
tobi
1a66ea8998
[chore] upstep activity to v1.7.0-gts () 2024-07-06 15:57:11 +02:00
Daenney
49009fbd8f
[chore] Update ncruces/go-sqlite3 to 0.17 ()
This fixes some linkname shenanigans previous versions of the library
were using. It's now safe to upgrade to Go 1.23 and beyond once they
become available.
2024-07-05 12:06:03 +02:00
Vyr Cossont
be5e532cd2
[bugfix] Handle ErrHideStatus when preparing timeline statuses () 2024-07-04 19:29:28 -07:00
Daenney
02d6e2e3bc
[feature] Set some security related headers ()
* Set frame-ancestors in the CSP
   This ensures we can't be loaded/embedded in an iframe. It also sets the
   older X-Frame-Options for fallback.
* Disable MIME type sniffing
* Set Referrer-Policy
   This sets the policy such that browsers will never send the Referer
   header along with a request, unless it's a request to the same protocol,
   host/domain and port. Basically, only send it when navigating through
   our own UI, but not anything external.

   The default is strict-origin-when-cross-origin when unset, which sends
   the Referer header for requests unless it's going from HTTPS to HTTP
   (i.e a security downgrade, hence the 'strict').
2024-07-04 10:07:02 +02:00
Vyr Cossont
fde0c6bc8c
[chore] Allow gtsmodel to depend on util ()
Convert one free function into a gtsmodel.Emoji method so that util does not depend on gtsmodel and can be used from it in the future
2024-07-03 15:53:54 -07:00
Daenney
27bcc1fcbd
[docs] Update how to enable http2 on nginx ()
Since 1.25.1 the newer 'http2 on;' syntax should be used. The previous
syntax still works, but throws warnings when testing the configuration
with 'nginx -t'.

This also updates the certbot template to match what's currently
generated. It removes ipv6only=on as that's the default on a listen
directive binding on a wildcard IPv6 address.
2024-07-03 20:45:46 +02:00
dependabot[bot]
9c44d6aa47
[chore]: Bump github.com/yuin/goldmark from 1.7.3 to 1.7.4 ()
Bumps [github.com/yuin/goldmark](https://github.com/yuin/goldmark) from 1.7.3 to 1.7.4.
- [Release notes](https://github.com/yuin/goldmark/releases)
- [Commits](https://github.com/yuin/goldmark/compare/v1.7.3...v1.7.4)

---
updated-dependencies:
- dependency-name: github.com/yuin/goldmark
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-01 13:41:55 +02:00
CDN
235bea04fd
[bugfix] update SignupURL routing in email template. () 2024-06-30 01:08:13 +02:00