• Stable 0.2.0 c20962fc97

    0.2.0

    prologic released this 3 months ago | 0 commits to since this release

    After long last v0.2.0 of the Yarn.social yarnd pod backend
    is finally released! 🥳 There are far too many changes here between v0.1.0 and
    v0.2.0 and for that I apologise! 🤗 Needless to say this releases finally dropps
    all use of any C libraries (no longer requiring the use of CGO) and thus allowing
    me to release pre-built binaries again! 🥳

    Going forward we will release proper minor/patch and major release versions with
    a proper cadence and following a proper release schedule.

    Thank you! 🤗

    Bug Fixes

    • Fix GoReleaser config
    • Fix bug in profileLinks partial
    • Fix external profile view to not display following/followers counts if zero
    • Fix NFollowing count based on no. of # follow = found
    • Fix Conversation view to hide Root button when the conversation has no more roots
    • Fix display of Fork button
    • Fix typo
    • Fix layout of local feeds
    • Fix Feeds view when uneven no. of feeds
    • Fix Feeds view
    • Fix behaviour of when Fork/Conversation buttons are displayed contextually and cleanup UX
    • Fix behaviour of prompt for when the Timeline is empty
    • Fix Python twt hash reference implementation (#459)
    • Fix serving videos behind Cloudflare for Safari and Mobile Safari (redo of 35241bc) by adding a --disable-gzip flag
    • Fix broken test
    • Fix mentions lookup and expansion based on the new (by default) nick@domain format with fallback to local user and custom aliases
    • Fix shortel_permalink_title maxPermalinkTitle to 144
    • Fix feature for shorter_permalink_title
    • Fix serving videos for Mobile Safari / Safari through Cloudflare by disabling Gzip compression :/
    • Fix related projects
    • Fix up the README's links and branding
    • Fix follow handlers and data models to cope with following multiple feeds with the same nick or alias
    • Fix typo in Conversations sub-heading view
    • Fix showing Register button when registrations are disabled (#452)
    • Fix inconsistent button colors using only contrast class sparingly and only for irréversible actions like deleting your account (#453)
    • Fix tests
    • Fix duplicate twtst in FilterOutFeedsAndBotsFactory
    • Fix missing view context initialization missed in two other templates
    • Fix templtes view context var that wasn't initialized
    • Fix logic of handling local user/feeds vs. external feeds in /api/v1/fetch-twts endpoint
    • Fix fetching twts from external profiles
    • Fix order of twts in conversations (reverse order)
    • Fix Twts.Swap() implementation
    • Fix sorting of twts to be consistent (sorted by created, then hash)
    • Fix typo in error handling for updating white list domains
    • Fix preflight to handle Go 1.17
    • Fix loading settings and re-applying WhitelistedDomains on startup
    • Fix lextwt to cope with bad url in metadata
    • Fix FeedLookup case sensitivity bug
    • Fix CI
    • Fix preflight to account for null GOPATH and GOBIN
    • Fix performance of processing WebMentions by using a TaskFunc
    • Fix Makefile
    • Fix typo in +RegisterFormEmailSummary
    • Fix error handling in reset user
    • Fix image name for Docker Hub
    • Fix Drone CI config to build docker images in paralell and fix installation of deps
    • Fix Drone CI for building and pushing Docker images using plugins/kaniko plugin
    • Fix writeBtn (blog post editor) behavior (#433)
    • Fix version string of server binary
    • Fix Drone CI config and add make deps back
    • Fix Drone CI and Docker image tags and versioning
    • Fix Drone CI config
    • Fix server version strings
    • Fix typo
    • Fix Dockerfile.dev with missing langs soruces
    • Fix some more dependneices of things that moved to git.mills.io
    • Fix docker-compose
    • Fix .gitignore
    • Fix stale issue workflow
    • Fix stale issues workflow
    • Fix change in case of translation files
    • Fix User-Agent detection by tightening up the regex used (#418)
    • Fix lang translations to use embed and io/fs to load translations
    • Fix whitespace
    • Fix display of multi-line private messages
    • Fix Emails removeal migration and remove it from the templates
    • Fix tests and refactor invalid feed error (#412)
    • Fix bug in URLForConvFactory to also check for OP Hash validity in the archive too
    • Fix bug in lastTwt.Created() call -- missed in refactor from concrete types to interfaces
    • Fix formatTwtText template factory function
    • Fix User-Agent matching for iPhone OS 14.x that can't handle WebP correctly (even though it claims it can)
    • Fix typo around custom pod Settings struct with missing quote for pod_logo
    • Fix custom pod logo support (#358)
    • Fix public following disclosure (#379)
    • Fix an off-by-one error in types.SplitTwts() (#377)
    • Fix Uhuntu build (#376)
    • Fix option for -P/--parser
    • Fix fallback to config theme when user has no theme set
    • Fix display of published time of blog posts (#366)
    • Fix User Profile URL routes (#360)
    • Fix typo
    • Fix typo
    • Fix typos (#353)
    • Fix a bug for iOS 14.3 Mobile Safari not rendering WebP correctly (work-around)
    • Fix missing closing a (Fixes #335)
    • Fix working simplified docker-compose.yml to get up and running quickly
    • Fix a JS bug clikcing on the Write button in the toolbar to start writing a Twt Blog Post
    • Fix internal events from non-Public IPs (#332)
    • Fix Referer redirect behaviour (#331)
    • Fix deleting last twt (missing csrf token)
    • Fix goreleaser configs
    • Fix bug in UnparseTwtFactory() causing erroneous d to be appended to domains
    • Fix footer layout regression (#322)
    • Fix messaging for when feeds may possibly exceed conf.MaxFetchLimit
    • Fix the way cache_limited counter/log works
    • Fix CI
    • Fix HTML validation errors (#321)
    • Fix text overflow p element
    • Fix a JS bug on load
    • Fix tag expansion (#314)
    • Fix user able visit login and register page after login (#313)
    • Fix edge case with Subject parsing
    • Fix developer experience so UI/UX developers can modify templates and static assets without reloading or rebuilding
    • Fix header wrapping on domain (#306)
    • Fix action URL for managing pods
    • Fix Docker image build
    • Fix Docker image push
    • Fix Docker Image badges (don't yet have a jointwt Docke rHub org)
    • Fix Docker image push
    • Fix conversations for Twt Blog Posts (#287)
    • Fix blog post validation
    • Fix bad data with missing Followers
    • Fix spelling errors on register form
    • Fix bitcask dep
    • Fix a data race with session handling
    • Fix refreshing user's own feed and re-warming cache on a user deleting their last Twt (#272)
    • Fix blog posting with empty titles (#271)
    • Fix image Makefile target that 15f25c1 broke and add PUBLISH=1 variable so we publish new images again
    • Fix order of twts displayed in twt timeline (reverse order)
    • Fix data privacy by removing all user email addresses and never storing emails (#269)
    • Fix image target to not push the image built immediately (CI does this)
    • Fix LICENSE file
    • Fix image resizing for media (avatars was already working)
    • Fix bug with AddFollower()
    • Fix timeline style on mobile devices with very long feed names (#248)
    • Fix userAgentRegex bug with greedy matching
    • Fix UA detection and relax regex even more
    • Fix logic in archiver makePath
    • Fix bug in archiver to prevent use of invalid twt hashes
    • Fix concurrent map read/write bug with feed cache
    • Fix Follows/FollowedBy/Muted for external profiles
    • Fix followers view for external profiles
    • Fix bad copy/paste
    • Fix Docker build
    • Fix title of twt permalinks
    • Fix generate Make target to run rice to embed the assets after minification/bundling
    • Fix size of RSS Icon on External Profile view
    • Fix avatar for external profiles when no avatar found
    • Fix size of icss-rss icon for externals feeds without an avatar
    • Fix color of multimedia upload buttons
    • Fix bug in /settings view
    • Fix more UI/UX things on the Web App with better CSS
    • Fix typo
    • Fix spacing around icons for Post/Publish button (#233)
    • Fix potential session cookie bug where Path was not explicitly set
    • Fix name of details settings tab for Pod Management
    • Fix name of details settings tab for Pod Management
    • Fix /report view to work anonymously without a user account
    • Fix conversation bug caused by user filter (mute user feature)
    • Fix a bug with User.Filter()
    • Fix wording in Mute / Report User text
    • Fix grammar on /register view
    • Fix link to /abuse page
    • Fix JS error
    • Fix og:description meta tag
    • Fix a few bugs with OpenGraph tag generation
    • Fix URLForExternalProfile links and typo (#224)
    • Fix subject bug causing conversations to fork (#217)
    • Fix JS bug with persisting title/text fields
    • Fix API Signing Key (#212)
    • Fix video upload quality by disabling rescaling (#205)
    • Fix structtag for config (#203)
    • Fix old missing twts missing from the archive from local users and feeds
    • Fix older Twt Blog posts whoose Twts has been archived (and missing? bug?)
    • Fix MediaHandler to return a Media Not Found for non-existent media rather than a 500 Internal Server Error
    • Fix build (#198)
    • Fix responsive video size on mobile (#195)
    • Fix video aspect ratio and scaling (#191)
    • Fix Range Requests for /media/* (#190)
    • Fix video display to use block style inside paragraphs (#189)
    • Fix missing names to feeds
    • Fix links to external feeds
    • Fix ExpandTags() function so links to Github issue comments work and add unit tess (#176)
    • Fix PublishBlogHandler(o and fix line endings so rendering happens correctly
    • Fix incorrect locking used in GetByPrefix()
    • Fix blogs cache bug
    • Fix logic for when to attempt to send webmentions for mentions
    • Fix duplicate @mentions in reply (Fixes #167)
    • Fix concurrency bug in cache.GetByPrefix()
    • Fix content-type and set charset=utf-8
    • Fix wrapping behaviour and remove warp=hard
    • Fix blogs cache to be concurrenct safe too
    • Fix global feed cache concurrency bug
    • Fix all invalid uses of footer inside hgroup and make all hgroups consistently use h2/h3
    • Fix regex patterns for valid username and feed names and mention syntax
    • Fix and restore full subjet in twt replies (#163)
    • Fix the pager (properly)
    • Fix bug with pager (temporary fix)
    • Fix nil pointer in map assignment bug
    • Fix cli build nad refactor username/password prompt handling
    • Fix the CSS/JS bundled assets with new minify tool (with bug fixes)
    • Fix bug in /settings with incorrect call to .Profile()
    • Fix date/time shown on blog posts (remove time)
    • Fix metric naming consistency feed_sources -> cache_sources (#155)
    • Fix duplicate tags and mentions (#154)
    • Fix content-negotiation for image/webp
    • Fix ExpandMentions()
    • Fix dns issues in container and force Go to use cgo resolver
    • Fix CI
    • Fix feed cache bug not storing Last-Modified and thereby not respecting caching
    • Fix inconsistency in Syndication and Profile views accessing feed fiels directly instead of by the cache
    • Fix CI
    • Fix Dockerfile with missing webmention sources
    • Fix webmention handling to be more robust and error proof
    • Fix AvatarHandler that was incorrectly encoding the auto-generated as image/webp when image/png was asked for
    • Fix bug in /mentions and dedupe twts displayed
    • Fix bug causing permalink(s) on fresh new twts to 404 when linked to but not in the local pod's cache
    • Fix /mentions view logic (ooops)
    • Fix bug in register user on fresh pods with no directory structure in place yet
    • Fix typo
    • Fix bug
    • Fix ordering of twts post cache ttl and archival
    • Fix an index out of bounds bugs
    • Fix the logic for Max Cache Items (whoops)
    • Fix bug in ParseFile() which may cause all local and user twts to be considered old
    • Fix UX perf of posting and perform async webmentions instead
    • Fix bugs with followers/folowing view post external feed integration
    • Fix session leadkage by not calling SetSession() on newly created sessions (only when we actually store session data)
    • Fix leaking sessions and clean them up on startup and only persist sessions to store for logged in users with an account
    • Fix external avatar, don't set a Twter.Avatar is none was foudn
    • Fix build
    • Fix bug with caching Twter.URL for external feeds
    • Fix isLocal check in proile template
    • Fix more bus
    • Fix Twtter caching in feed cache cycles
    • Fix Twtxt URL of externalProfile view
    • Fix several bugs to do with external profiles (I'm tired :/)
    • Fix typo
    • Fix bug with DownloadImage()
    • Fix computed external avatar URIs
    • Fix external avatar negogiation
    • Fix old user avatars (proper)
    • Fix profile avatars
    • Fix profile bug
    • Fix Dockerfile (again)
    • Fix Dockerfile adding missing minify tool
    • Fix Edit on Github page link
    • Fix bug in #hashtag searching showing duplicates twts in results
    • Fix the global feed_cache_size count
    • Fix profile view and make Reply action available on profile views too
    • Fix typo
    • Fix bug in theme so null theme defaults to auto
    • Fix feed_cache_size metric bug (missed counting already-cached items)
    • Fix bug in profile view re ShowConfig for profileLinks
    • Fix another memory optimization and remove another cache.GetAll() call
    • Fix media upload image resize bug
    • Fix caching bug with /avatar endpoint
    • Fix similar bug to #124 for editing last twt
    • Fix bug in feed cache for local twts
    • Fix bug in feed cache dealing with empty feeds or null urls
    • Fix media uploads to only resize images if image > UploadOptions.ResizeW
    • Fix session storage leakage and delete/expunge old sessions
    • Fix memory allocation bloat on retrieving local twts from cache
    • Fix the glitchy theme-switcher that causes unwanted flicker effects (by removing it!)
    • Fix populating textarea when reply button is clicked for more than one time. (#124)
    • Fix repository name in Docker GHA workflow
    • Fix database fragmentation and merge on startup
    • Fix local twts lookup to be O(n) where n is the no. of source urls (not total twts in cache)
    • Fix image handling and auto-orient images according to their EXIF orientation tag
    • Fix panic in PageHandler() -- not safe to reuse the markdown parser, etc

    Documentation

    • Document Twt Subject Extension (#309)

    Features

    • Add support for detecting and disabling ffmpeg support for audio/video with --disable-ffmpeg as an optional configuration flag
    • Add support for fetching, storing and serving remote external feed description and following/followers counts via the API
    • Add support for fetching, storing and displaying remote feed description and following/followers counts
    • Add Root to link back to root conversations in Conversation view
    • Add Disable Gzip server setting on startup output
    • Add build-dev-site Drone CI job to build docs (dev.twtxt.net) site
    • Add Spec for Metadata Extension (#451)
    • Add shorter_permalink_title feature
    • Add yarnc --help to README
    • Add the same nick@domain and then nick_xx behaviour for keeping track of followers too
    • Add Tools section to Useer Settings and Bookmarklet that can be added to browser bookmark bars
    • Add some prompts to new users with an empty timeline
    • Add a human/crawler friendly version of /version
    • Add a SoftwareConfig struct and /version endpoint to more easily identify pods
    • Add JSON marshallers/unmarshallers to FeatureFlags
    • Add FeatureDiscoverALlPosts to the API end /api/v1/discover endpoint too
    • Add optional feature (--enable-feature discover_posts_all)
    • Add following and followers counts to default feed preamble metadata
    • Add a hacky temporary solution to squelch flip-flopping followers (#450)
    • Add a ~/:nick/post/ route for blog posts
    • Add support for Muting/Unmuting external pods (cross-pod)
    • Add a POSIX Shell script to run preflight checks as part of the default Makefile target
    • Add handlers for ~/:nick
    • Add --json flag to yarnc timeline command for seeing and processing the raw JSON from the API
    • Add WhitelistedDomains support to Manage Pod settings
    • Add content-negogiation for /twt/:hash handler
    • Add CI for dev.twtxt.net
    • Add native support for Gopher (gopher://) feeds
    • Add support for forking conversations in the Web UI
    • Add Drone CI step to build and push to prologic/yarnd (Docker Hub)
    • Add a 2nd docker image publihs step
    • Add separate docker image publish step
    • Add Reset User feature to Pod Management interface
    • Add a blake2b_base32 cli tool
    • Add i18n to deps and generate active.*.toml
    • Add missing lang (i18n) files to Docker image builds
    • Add preamble to top of all twtxt feeds (#384)
    • Add check for Bad Request in CLI and fix PEBKAC problem of entering a bad Pod API Base URL :D
    • Add support for bookmarks (#372)
    • Add support for draft blog posts and fix deletion (#367)
    • Add Node.js reference implementation of Twt Hash algorithm (#365)
    • Add @twtxt FOLLOW events for feeds too
    • Add information about ffmpeg dependency. Remove repeated FreeBSD section. Fix a formatting error or two
    • Add missing CI step for tools deps
    • Add local Drone CI config
    • Add support for expanding Twtxt mentions and tags in Twt Blog posts
    • Add support for bookmarklet(s)
    • Add Content-Length to TwtxtHandler for /user/:user/twtxt.txt URIs so Pods know what the size of feeds are
    • Add feed_limited counter to measure no. of feeds affected by conf.MaxFetchLimit
    • Add SameSite session cookie policy and CSRF Verification to prevent Cross-Site-Sciprint (XSS)
    • Add msgs.Inc() and msgs.Dec() for messages
    • Add Pod config handlers and API endpoints (#297)
    • Add rice-embed.go so the go get works
    • Add net/http/pprof to debug mode
    • Add improved async media upload endpoint for the API (backwards compatible) (#274)
    • Add front matter to pages
    • Add Atom link for Pod's timeline (aka Discover) on the bottom of every page
    • Add ValidateFeeds job to cleanup bad feeds on twtxt.net
    • Add timeline command to twt (command-line client)
    • Add GET support for /api/v1/settings endpoint to retrieve user settings/object (#256)
    • Add /api/v1/settings API Endpoint for updating user settings (#252)
    • Add better support for UA on fetches with token callback (#249)
    • Add Follows/FollowedBy attributes to user profiles
    • Add footnote parsing for Twt Blogs
    • Add HardLineBreak and NoEmptyLineBeforeBlock to Markdown parser options
    • Add protection against brute force login attempts at user accounts (#241)
    • Add FilterTwts to conversation view and treat /conv URIs a bit like /twt (permalink) ones
    • Add a RealIP middleware to capture the real ip of clients when we're behind a proxy
    • Add better page titles to improve SEO
    • Add /api/v1/conv ConversationEndpoint() to API
    • Add DEBUG=1 capability to Makefile for debug builds with real-time static (css/js/img) asset modifications
    • Add missing FilterTwts() calls to API
    • Add Muted property to Profile objects in ProfileResposne for the API (#235)
    • Add improved CSS for the timeline view
    • Add feed validation to Follow requests from Web App and API to avoid invalid feeds (#228)
    • Add /mute and /unmute API endpoints (#230)
    • Add /support and /report API endpoints (#231)
    • Add switch on /register view to encourage new users to read the community guidelines and agree to them (EULA)
    • Add support for Pod Owners to manage users (add/delete) (#227)
    • Add a fast-path to User.Filter() when .muted is of length 0
    • Add support for muting/unmuting intolerable users (#226)
    • Add text to /register view that links to the /abuse page
    • Add blank Abuse Policy (to be filled out)
    • Add OpenGraph Meta tags to Twt Permalinks (#225)
    • Add support for uploading audio media (#222)
    • Add MarkdownText field to Twt (#223)
    • Add Tags and Subject as dynamic fields to Twt.MarshalJSON() for API clients (#219)
    • Add support for managing a pod's configuration as a pod owner (#170)
    • Add Hash to Twt and Slug to Twter outputs when Marshalled as JSON for the API (#206)
    • Add archive_dupe counter
    • Add support for persisting Title and Text in Twts and Twt Blogs to local storage (#193)
    • Add support for auto-generating poster thumbnails for uploaded videos
    • Add playsinline as allowed attr on video elements
    • Add ffmeg to Dockerfile runtime image and remove debug loggging (#188)
    • Add support for older video media (locally) (#187)
    • Add support for video uploads and hosting (#186)
    • Add blogs, archived and cache stats and cache_blogs to metrics
    • Add BlogPost PublishedAt and Modified timestamps
    • Add support for editing twt blog posts (#171)
    • Add missing mu.Lock() for loading older twts cache
    • Add support for newlines in Twts (short-form) by using Unicode LS (\u2028) to encode them (#166)
    • Add Timeline navbar item and cleanup Navbar
    • Add support for editing/deleting your last Twt in a Conversation view
    • Add Ctrl+Enter to Post a new Twt
    • Add link to Blog on Twts associated with a Twt Blog Post
    • Add formatDateTime template function to shorten the human display of Twt posted date/time shorter when it wasn't that long ago
    • Add a border around avatar images
    • Add support for style attr on some HTML elements as an option for some users
    • Add integrated support for conversations (#161)
    • Add a O(1) lookup for a types.Twt by hash in the global feed cache (cahced on demand)
    • Add /blogs view to display all twt blog posts for an author (#160)
    • Add unit tests for types.Twt.Subject() and fix the regex (#157)
    • Add unit tests for types.Feed (#156)
    • Add a note about having to be logged in to comment on blog posts
    • Add better UI/UX around the blog view with comments in reverse order and some nice headings
    • Add support for long-form posts (blog posts) with integrated twt(s). (#152)
    • Add remote mention syntax @user@domain (#151)
    • Add twtd_server_sessions metric
    • Add Token model and view for managing API Tokens (#135)
    • Add vendored version of github.com/prologic/webmention since it has detracted slightly from standard webmention handling
    • Add a Remember Me to /login view
    • Add a new SessionStore that is a caching/persistent store
    • Add MergeStoreJob to merge the store once per day
    • Add local twts to mentions view in addition to feeds the user follows
    • Add a DiskArchver that implements a Cache TTL (#138)
    • Add more candidates to GetExxternalAvatar() and rearrange preferences
    • Add a db.Merge() call after startupJobs() to free memory on database compaction possibly after some cleanup jobs
    • Add a GenerateAvatar() func and use github.com/nullrocks/identicon for identicons
    • Add loading=lazy attr to all images to lazy load images on supported browsers
    • Add post form to external profile view
    • Add improved external feed integration
    • Add .gitkeep files for data directory layout
    • Add missing HEAD handler for /externa/:slug/avatar
    • Add support for WebP image format (#130)
    • Add tooling to combined and minify all static css/js assets into a single file and request (boosting load times)
    • Add external avatar to /external view
    • Add support for fetching, caching and displaying external avatars
    • Add /robots.txt view
    • Add post form on profile view and puts profile links in a 2nd column
    • Add user preferences for theme in /settings view
    • Add target=_blank to Config/Twtxt/Atom Profile Links
    • Add link to user config on /settings view
    • Add server_info metric with version information
    • Add Grafana Dashbaord
    • Add /user/:nick/config.yaml handler (Closes #36)
    • Add debug-only memory profiler to debug some memory bloat
    • Add a Uploading to the Upload button tooltip when its processing the media
    • Add a paper-plance icon to the Post button
    • Add profile links to /settings view to be consistent with the profile view

    Updates

    • Update CHANGELOG for 0.2.0
    • Update the footer of the base template to remove James Mills (the original author/creator) and instead link to Yarn.social as the primary branding
    • Update to Bitcask v0.3.14
    • Update bitcask to v0.3.13
    • Update README
    • Update README a little bit and add Drone CI badge
    • Update docker image publication
    • Update deps
    • Update about.md
    • Update stale workflow
    • Update privacy.md
    • Update icon used for bookmarking Twts (Closes Viglino/iconicss#21)
    • Update production example docker + traefik deployment
    • Update README.md
    • Update README.md
    • Update deps
    • Update README
    • Update external feed source URI(s)
    • Update Go module path to github.com/jointwt/twtxt and remove committed .min.* and commit rice-embed.go insted
    • Update links to Related Projects
    • Update README.md
    • Update bundled CSS
    • Update abuse.md
    • Update about.md
    • Update Grafana Dashboard
    • Update Grafana Dashboard
    • Update Grafana Dashboard
    • Update Grafana Dashboard
    • Update Grafana Dashboard
    • Update Grafana Dashboard
    • Update Grafana Dashboard
    • Update Grafana Dashboard
    • Update Grafana Dashboard
    • Update Grafana Dashboard
    • Update README.md
    • Update AUTHORS (#131)
    • Update Grafana Dashboards and make all panels transparent
    • Update Grafana Dashbaord with fixed Go Memory panel
    • Update Grafana Dashbaord
    • Update README.md
    • Update README.md
    Downloads