• Activity
  • Votes
  • Comments
  • New
  • All activity
  • Showing only topics in ~tildes with the tag "user created". Back to normal view / Search all groups
    1. Introducing Surfboard for Tildes

      Hello, Tildes Allow me to introduce myself. I came over to Tildes fairly recently after Twitterriffic died and Apollo announced it would shut down. As a relative youngster, I tend to mostly browse...

      Hello, Tildes

      Allow me to introduce myself.

      I came over to Tildes fairly recently after Twitterriffic died and Apollo announced it would shut down.

      As a relative youngster, I tend to mostly browse on mobile.

      While I do appreciate Tildes' philosophy of having a simple website that works well on desktop and mobile, I've always preferred mobile apps. I'm a strong believer that a well-built native application will always provide a richer experience than a website.

      But enough talking.. showing is way more fun - here's a lil' something I've been messing around with:

      Introducing Surfboard for Tildes

      The goal is simple: to be the best way to interact with Tildes on mobile.


      Features

      Surfboard is still extremely early, and is missing many features.

      With that said, here is what it currently supports:

      • Login to Tildes (supports 2FA)
      • Browse topics
      • Filters & sorting
      • Browse comments
      • Advanced rendering is still in early stages..
      • Supports comment collapsing behavior from the web version
      • Reply/vote/bookmark/ignore on topics, comments, & notifications (requires login)
      • Search topics
      • Global search
      • Search within groups
      • Option for in-line images
      • Clean browsing interface
      • In-line markdown preview when composing replies
      • Share topics & comments
      • Notifications
      • View read & unread notifications
      • Reply, vote, bookmark, mark as read...
      • Customizable
      • Toggle settings, set custom gesture actions, etc.
      • Free, as in beer

      The design draws some inspiration from Apollo for Reddit, an app that I loved & am very sad will be discontinued.


      Try it yourself

      I would love to get some feedback from other Tildes users on the app. If you are interested in trying it for yourself, you can get it here via TestFlight

      Surfboard is built for iPhone, and requires iOS 16.0 or higher.

      Inside the app is a 'roadmap' of sorts which is basically a list of things I know are missing, but if there's something you want that isn't listed there, I'm all ears.

      Formatting is a little rough at the moment, although I made enormous improvements on the parsing & rendering there over the last day.

      It should support just about anything you throw at it other than a <details>

      (I'll get around to them, I swear..)

      If you run into issues viewing a post/comment, you can easily open them in an in-app safari window from the menu.


      As mentioned above, it's very early, but it's already becoming my favorite way to browse Tildes. I hope that others will enjoy it as well. Consider it my gift to the Tildes community.

      Cheers !


      Edit:

      The best way to submit feature requests & bug reports is to add it to the issue tracker and/or leave a comment on this thread and I’ll get around to adding it myself.

      Thanks !

      278 votes
    2. I made a little CLI app for backing up my Tildes comments

      I made a little CLI app for backing up my tildes comments / topics. $ pip install xklb $ library tildes -h usage: library tildes DATABASE USER Backup tildes.net user comments and topics library...

      I made a little CLI app for backing up my tildes comments / topics.

      $ pip install xklb
      $ library tildes -h
      usage: library tildes DATABASE USER
      
          Backup tildes.net user comments and topics
      
              library tildes tildes.net.db xk3
      
          Without cookies you are limited to the first page. You can use cookies like this:
              https://github.com/rotemdan/ExportCookies
              library tildes tildes.net.db xk3 --cookies ~/Downloads/cookies-tildes-net.txt
      

      It creates a SQLITE file with HTML text in one of the columns. Nothing super fancy. Let me know what you think?

      9 votes
    3. Tilweaks: A user style I made to "clean up" Tildes' interface

      This was originally made just for personal use, but I decided to clean it up and share it. Should support all built-in themes (Themes other than Dracula were afterthoughts and might not be as...

      This was originally made just for personal use, but I decided to clean it up and share it.

      • Should support all built-in themes (Themes other than Dracula were afterthoughts and might not be as polished. Especially light themes)
      • All changes are toggle-able

      Changes

      • Configurable font size
      • Remove sidebar background
        • Make the sidebar primary button clear (border only)
      • Add a border to the "main" element
      • Add extra spacing to various elements
        • Remove the alternating background from thread colors
      • Remove comment borders
        • Add depth indicators (dotted left border for children only)
        • Add comment backgrounds (to separate comments without borders)
      • Hide votes (disabled by default)

      Installation

      Configuration under Stylus

      1. Open the extension popup in when in tildes.net
      2. Click the cog next to Tilweaks
      3. Edit to your liking
      20 votes
    4. Introducing Backtick API: An open-source, unofficial Tildes API

      Hi everyone! Today I am releasing Backtick API, an unofficial Tildes API. I originally wrote it to power Backtick but quickly realized that it could be useful for other clients and projects that...

      Hi everyone! Today I am releasing Backtick API, an unofficial Tildes API. I originally wrote it to power Backtick but quickly realized that it could be useful for other clients and projects that require Tildes data. The project is open-sourced, both because I would love community contributions and because I want to make the project as transparent as possible.

      Q: Does it require or store any user credentials?

      No. All the endpoints that are implemented scrape publicly available data that do not require any user credentials.

      Q: Will this overload Tildes?

      To prevent Backtick API from being a nuisance to Tildes, the code caches calls to Tildes for a short period of time. Depending on usage, it should reduce the number of calls to Tildes (vs a client querying Tildes directly).

      Q: How can I use it?

      A hosted version of the code is available through RapidAPI here: https://rapidapi.com/asnewman/api/backtick-api

      Q: Are there any limitations?

      To prevent the project from being abused and becoming a financial burden on myself, I'm using RapidAPI to manage usage. There is a generous free tier and a reasonably priced paid tier which will be used to cover server costs. In addition, I will be donating a portion of the paid plan revenue (my goal is 50% but will depend on load and subscription count) directly to Tildes via Github Sponsors. It's really important to me to keep this project and Tildes as sustainable as possible. I really would love to provide everything for free, but unfortunately, there are countless examples where that doesn't work out down the road.

      Of course, if you do not want to use the hosted version, you are welcome to deploy the code yourself!

      Q: Isn't scraping prone to breaking?

      Yes! Users beware! Obviously, I will try my best to fix things if the Tildes code changes in a way that breaks Backtick API, but it's definitely a possibility.

      Q: Why not just work on and contribute to creating an official Tildes API?

      An official Tildes API will always be better than something like this and I look forward to when/if it gets implemented. That being said, I'm choosing the route that would be the quickest to continue the development of the Backtick mobile app. In addition, it's also the choice that is most fun for me. To work on a Tildes API, if the powers that be even want to have one, would require lots of coordination and codebase learning, something that will take a lot of time. I highly commend anyone who chooses to take on that task, but I do too much of that kind of work for my real job 😂


      Please report any issues or feature requests through Github, this post, or the Backtick Discord server. Finally, I just want to thank everyone in the community for all the great conversations I've had, for providing helpful feedback for Backtick, and for creating a place on the internet that I very much enjoy being a part of 😊

      59 votes
    5. Tildes Userscript: Tildezy

      Updated: June 29th 2023 Hello folks, Like many of the other people that have been around lately, I'm new to Tildes, I've been browsing it without an account since last Monday or so while waiting...

      Updated: June 29th 2023

      Hello folks,

      Like many of the other people that have been around lately, I'm new to Tildes, I've been browsing it without an account since last Monday or so while waiting for an email response (thanks @Deimos), and in that time I've been working on a little tool to add some QOL features I thought would make my experiences with the site feel better.

      I didn't plan on sharing it initially, because I didn't think I'd be able to get the javascript into a usable state, and I'm not fond of sharing my code in general, as I always get a big wave of impostor syndrome whenever I do, "What if they look at my messy code and see how silly I do some things", that sort of thing. But with Tildes I want to try to correct some of my internet behaviours, for years I've generally stayed as a lurker, never commenting or sharing content of my own, so, hello there, hopefully, I stick to my guns and you see more of me.

      Onto the script itself, currently, I've built five main features into it all of them being rather minor on their own, I did do bug testing on everything and couldn't find anything else, but if you notice anything please feel free to report it to me or post an issue on the repo. It's easy to miss bugs when you've only got one set of eyes.

      Tildezy Github

      The GitHub contains installation instructions if you've never used a userscript before, and contains some images showing off each feature described below.

      Comment Collapser The comment collapser was built because, with my shakey hands, I had a few times when I would click someone's name instead of the [-] beside it. With this feature *Triple* clicking anywhere on a comment, be it text or header, will collapse it as if you used the [-] button. It's set to 3 clicks as sometimes I double-click to begin copying a line and didn't want the conflict, but it can be changed to any amount of clicks on line 132

      https://github.com/TeJayH/Tildezy/blob/main/Tildezy.user.js#L132

      Group Stars/Favourites Allows you to click a ☆ beside each ~group on the Tildes homepage to *favourite* it, moving it to the top of the list. Supports as many or as few favourites as you'd wish.
      Scroll to Top Button Adds a button pinned in the top right of every Tildes thread that sends you back to the top of the page. No more scrolling or reaching for the home key
      Open Comments in New Tab Replaces the default function of a posts "x comments" to open the page in a new tab instead of the current tab
      User Colors This one is the thing that I made the entire script for, an entirely useless feature but one I love for silly reasons. Replaces the stock username color with a randomized one based on a hash made from the user's username. So everyone gets assigned their own color which will always be their color anywhere you see them. This one helps multi-person conversations flow better in my head
      New Comment Traveller Gives you navigation buttons either beside the Collapse Replies/Expand all buttons when scrolled up, or pinned in the top right when scrolled past those buttons. Navigation buttons jump quickly between each new comment in a thread.
      Markdown Buttons Adds a selection of various buttons under every comment box that automatically insert markdown for you. No more forgetting which bracket style goes first for a clickable URL.
      Settings Not really a *feature* on its own, but it exists. Adds a "Tildezy Settings" beside the Log In/Username button in the top right of the header, which opens a settings window to enable/disable any and all features of the script. Features can also be disabled by modifying lines 26-41 in the script, allowing you to hard toggle everything *including the settings itself* off should you wish.

      https://github.com/TeJayH/Tildezy/blob/main/Tildezy.user.js#L26-L41

      Hopefully, someone gets some use out of this with me, I look forward to chatting with you all.

      EDIT
      Refactored the code and added a new comment traveller feature based on some of the comments below.

      EDIT 2
      Up to 1.3.0, we've got markdown buttons now, see comment explaining the change or check out the github readme

      120 votes
    6. Lazy userscript

      Just a hack job, but I'd seen some comment about it being inconvenient to ignore posts so I made a quick userscript (tested with Tampermonkey on Firefox) that adds hotkeys for...

      Just a hack job, but I'd seen some comment about it being inconvenient to ignore posts so I made a quick userscript (tested with Tampermonkey on Firefox) that adds hotkeys for bookmarking/ignoring/voting on a post. It can also navigate to the link or comments or prev/next pages (/). Only implemented for posts 1-9 at the moment.

      Ex:

      i+2 ignores and hides the 2nd post (or restores, if ignored)

      ? shows a summary of hotkeys

      // ==UserScript==
      // @name         Tildes
      // @namespace    http://tampermonkey.net/
      // @version      0.1
      // @description  Quickie convenience hotkeys for tildes.net
      // @author       TT
      // @match        *://tildes.net/*
      // @icon         https://www.google.com/s2/favicons?sz=64&domain=tildes.net
      // @grant        none
      // @require      https://unpkg.com/hotkeys-js/dist/hotkeys.min.js
      // ==/UserScript==
      (function () {
          "use strict";
          let Action;
          (function (Action) {
              Action[Action["Invalid"] = 0] = "Invalid";
              Action[Action["Bookmark"] = 1] = "Bookmark";
              Action[Action["Comments"] = 2] = "Comments";
              Action[Action["Ignore"] = 3] = "Ignore";
              Action[Action["Open"] = 4] = "Open";
              Action[Action["Vote"] = 5] = "Vote";
          })(Action || (Action = {}));
          const regex = /tildes\.net(\/~(?<group>\w+))?/gi;
          let match = regex.exec(document.location);
          //In a group if I wanted to support hotkeys there?
          if (match.groups.group) {
              //alert(match.groups.group);
          }
          else {
              addArticleNumbers();
              addMainHotkeys();
          }
          //Route
          function routeAction(action, event, handler) {
              event.preventDefault();
              //Grab index.  Zero-index?
              let indexText = handler.key.substring(2);
              let index = parseInt(indexText) - 1;
              if (isNaN(index))
                  return;
              actOnArticle(action, index);
          }
          function actOnArticle(action, index) {
              //Get article for index
              let article = document.querySelector(".topic-listing").children[index].children[0];
              //Do the thing
              switch (action) {
                  case Action.Bookmark:
                      if (article.style.borderStyle === 'solid')
                          article.style.borderStyle = 'none';
                      else
                          article.style.borderStyle = 'solid';
                      article.querySelector('button[data-ic-put-to$="bookmark"]').click();
                      break;
                  case Action.Comments:
                      article.querySelector(".topic-info-comments a").click();
                      break;
                  case Action.Ignore:
                      //Hide vs blank?
                      if (article.style.visibility === "hidden")
                          article.style.visibility = "visible";
                      else
                          article.style.visibility = "hidden";
                      // article.style.display = 'none';
                      article.querySelector('button[data-ic-put-to$="ignore"]').click();
                      break;
                  case Action.Open:
                      article.querySelector(".topic-title a").click();
                      break;
                  case Action.Vote:
                      article.querySelector(".topic-voting").click();
                      break;
              }
          }
          function addArticleNumbers() {
              let titles = Array.from(document.querySelectorAll(".topic-title a"));
              for (let i = 1; i <= titles.length; i++) {
                  let title = titles[i - 1];
                  title.text = i + " - " + title.text;
              }
          }
          function addMainHotkeys() {
              //Set up handlers
              const handleBookmark = (event, handler) => routeAction(Action.Bookmark, event, handler);
              const handleComments = (event, handler) => routeAction(Action.Comments, event, handler);
              const handleIgnore = (event, handler) => routeAction(Action.Ignore, event, handler);
              const handleOpen = (event, handler) => routeAction(Action.Open, event, handler);
              const handleVote = (event, handler) => routeAction(Action.Vote, event, handler);
              hotkeys("shift+/", (e, h) => alert(getHelpText()));
              //Page nav
              hotkeys("left", (e, h) => Array.from(document.querySelectorAll(".pagination a")).find((e) => e.textContent == "Prev").click());
              hotkeys("right", (e, h) => Array.from(document.querySelectorAll(".pagination a")).find((e) => e.textContent == "Next").click());
              for (let i = 1; i <= 9; i++) {
                  hotkeys("b+" + i, handleBookmark);
                  hotkeys("c+" + i, handleComments);
                  hotkeys("i+" + i, handleIgnore);
                  hotkeys("o+" + i, handleOpen);
                  hotkeys("v+" + i, handleVote);
              }
          }
          function getHelpText() {
              return `
          ←/→ = navigation
          b = Bookmark, i = Ignore, v = Vote,
          c = Open comments, o = Open link,
      
          Action+[1-9] calls that action on the corresponding article`;
          }
      })();
      
      13 votes
    7. Its still rough, but I made a really busy tildes theme

      I decided to rewrite this from scratch. You can try it out if you're game. album I wiped out my profile in Chrome the other day and forgot to back up stylus and some other settings for a few...

      I decided to rewrite this from scratch. You can try it out if you're game.

      album


      I wiped out my profile in Chrome the other day and forgot to back up stylus and some other settings for a few extensions. I found an old post where I listed part of a theme I'd started working on, but had since abandoned.

      I couldn't find a copy of the ol' Tiltweaks stylus theme, either, so I decided to bring back that old, unfinished gem to get my theme back to roughly where I had it before... then I added a bunch of other crap in.

      Anyway, here's the link to a busy screencap.

      The two column layout isn't for everybody, but in the brief time I've spent with it, I'm starting to like it.

      Just thought I'd share. I'm about 99.6% certain everybody will see it and say, 'gross' :)

      15 votes
    8. Self promotion vs. Original content vs. Own content vs. User created vs. ...?

      This question has come up a few times now in the "Unofficial Tildes Chat" Discord server meta/curation channels, but I wanted to open up the discussion to ~tildes at large so we can perhaps...

      This question has come up a few times now in the "Unofficial Tildes Chat" Discord server meta/curation channels, but I wanted to open up the discussion to ~tildes at large so we can perhaps finally get a more definitive judgement on it. So here goes:

      What are people's thoughts on using the above topic tags in cases where a Tildes user posts something that they themselves have created, have hosted on their own site (or another), and/or could potentially profit from (monetarily or otherwise)?

      Should only one of the tags be standardized on, or is there enough of a distinction between some of them for their use to be situational?

      Should such tags be required?

      Can anyone think of any better tags for such situations than the ones listed?

      28 votes
    9. I made a (very, very) basic Tildes scraper and cli browser ruby gem

      Here's the ruby gem page and here's the github. Right now it comes with a command line browser that can browse the front page and group pages with no sorting options, and you can view the contents...

      Here's the ruby gem page and here's the github. Right now it comes with a command line browser that can browse the front page and group pages with no sorting options, and you can view the contents of a topic (link or text) aswell as the comments. The methods defined in lib/tilde-scraper/api.rb can be used to scrape tildes pages into Group, Page, Topic, and Comment objects.

      Right now it's super basic and messy, but I figured if anyone was interested in it it would be the people here.

      9 votes