Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Nao
Bug reports / Re: Looks in IE and Edge.
« on March 6th, 06:48 PM »
Fixed. Wasn't a problem with Wedge, but with a quick hack I wrote for Lestrade's and backported to (the website) by mistake.
The original problem was IE11 was unable to load compressed CSS/JS files on the new server I had. I managed to make it work in Lestrade's, but the actual solution was to remove gz extensions from the 'static' file list in the nginx configuration (it's a reverse-proxy server). Nginx used to catch gz files and directly serve them with their original MIME type, when it was supposed to pass them to Apache, which through the htaccess file was setting the MIME type to the correct one (i.e. text files).
I had the nginx config file fixed, so the fix was no longer needed. But I forgot to remove it, so IE11 kept serving these files uncompressed. And because of a final mixup between two fixes, I ended up serving uncompressed extensions with compressed content, so it broke the site when I updated it last night.


BTW, IE still sucks hard. :P
I'm not even adding support for Edge... After all Microsoft themselves are marking it as Chrome-compatible. So, I'll just let them fix everything by themselves, to me, Edge is an older Chrome build and that's how I'm treating it. (And probably how they want others to treat it, because let's face it, anything is better than being treated as a "newer IE".)

PS: I just found out that my first IE11 fix for this was from late 2014, so it couldn't be linked to the new server. Uh. I'm at a loss here. I'll just revert that revision (c3c77a3b22223eedce97f18b7ad719437b3dc154), and hopefully it works everywhere.
Bug reports / Re: Looks in IE and Edge.
« on March 6th, 06:03 PM »
Weird. Looks like a problem with the user agent string. I'll look into it.
Features / Re: New revs
« on March 6th, 12:07 AM »
[Commit revision f978581]
Author: Nao
Date: Mon, 06 Mar 2017 00:07:41 +0100
Stats: 1 file changed; +1 (insertion), -1 (deletion)

  • We don't really need to hide the 'Settings' text link from notification popups if there's no 'Mark read' link next to it. There's enough space, even on mobile. (Notifications.template.php)
Features / Re: Language revs
« on March 6th, 12:00 AM »
[Commit revision 26f4386]
Author: Nao
Date: Sun, 05 Mar 2017 23:56:18 +0100
Stats: 5 files changed; +7 (insertions), -5 (deletions)

  • Language updates from the last big Wedge commit. (Notifications, index)
Features / Re: New revs
« on March 5th, 11:54 PM »
[Commit revision 40c60b2]
Author: Nao
Date: Sun, 05 Mar 2017 23:54:26 +0100
Stats: 7 files changed; +41 (insertions), -16 (deletions)

  • Finally...! Added that dreaded 'Mark all as read' feature to notifications. Seriously, I'd been wanting to do that for years now. I had 336 'unread' notifications and I didn't see myself deleting them like that. Also used the opportunity to fix notification popup headers to all fit into a single row. (Notifications.php, Notifications.template.php, PersonalMessage.template.php, Notifications.english.php, index.css)
  • Commenazi, more precisely removing a UK spelling. It's all about harmonization. Or was it harmonisation? (ScheduledTasks.php)
  • Removed some weird brackets that were probably inherited from an old SMF build. Like, version 1.0. Ouch. (index.english.php)
  • The upshrinks class should be a virtual (meaning it's only used in mixes, and shouldn't show up in the final CSS file). If you want a generic class (i.e. one you can use in your mods), use foldable. (index.css)
  • Note: while writing the mark as read feature, I noticed there were settings ($settings['notification_prune_days']) and language strings related to a non-existent notification admin page (I guess thanks Shitiz for writing the feature, but you could have finished it?). While you can change the prune days setting by yourself with phpMyAdmin, I reckon the 7-day default is acceptable and maybe I should just not bother. What do you think? (Apart from the fact that 'reckon' is a typically British word and I just committed a change to a US spelling.)
  • Needs testing. I'm confident it's working, though.
Features / Re: New revs
« on March 4th, 12:37 AM »
[Commit revision 168f199]
Author: Nao
Date: Sat, 04 Mar 2017 00:33:12 +0100
Stats: 3 files changed; +8 (insertions), -7 (deletions)

  • A small optimization in the CSS cache code that saves a dozen bytes on default gzipped CSS files. (Subs-Cache.php)
  • For a few less bytes... (common.css, index.css)
  • Removed a @ suppressor that I think wasn't useful. If the cache code fails, it should show up as an error so that it can be fixed. (Subs-Cache.php)

[Commit revision 7ea895d]
Author: Nao
Date: Sat, 04 Mar 2017 00:35:34 +0100
Stats: 1 file changed; +1 (insertion), -0 (deletion)

  • One minor feature stumped me for a minute, I figured it was in need of a comment. (index.template.php)

[Commit revision 0902d9b]
Author: Nao
Date: Sat, 04 Mar 2017 00:36:31 +0100
Stats: 1 file changed; +4 (insertions), -1 (deletion)

  • Avoid double separators in menu if a feature surrounded by separators was disabled. (Subs.php)
Features / Re: New revs
« on March 2nd, 12:45 PM »
[Commit revision 1d5d214]
Author: Nao
Date: Thu, 02 Mar 2017 12:45:44 +0100
Stats: 1 file changed; +1 (insertion), -1 (deletion)

  • Fixed an incompatibility with strict PHP 7.1 when a skeleton layer was being renamed. (Class-Skeleton.php)
Features / Re: Language revs
« on February 27th, 12:14 PM »
[Commit revision ad680df]
Author: C3realGuy
Date: Wed, 22 Feb 2017 21:43:09 +0100
Stats: 1 file changed; +1 (insertion), -1 (deletion)

  • It's not logging setttings, it's settings for log

[Commit revision d1b8b4c]
Author: C3realGuy
Date: Wed, 22 Feb 2017 21:46:55 +0100
Stats: 1 file changed; +1 (insertion), -1 (deletion)

  • changed it to only "Einstellungen"
  • Only "Einstellungen"/"Settings" is even more clear. And would fit better to the other menu structures. See
  • $txt['mailqueue_settings'] = 'Einstellungen';.

[Commit revision 611fc1b]
Author: Nao
Date: Mon, 27 Feb 2017 12:14:33 +0100
Stats: 1 file changed; +1 (insertion), -1 (deletion)

  • Merge pull request #32 from C3realGuy/fix_log_settings_german
  • It's not logging setttings, it's settings for log
Features / Re: New revs
« on February 27th, 12:00 PM »
[Commit revision ec62771]
Author: Nao
Date: Mon, 27 Feb 2017 12:00:12 +0100
Stats: 1 file changed; +25 (insertions), -28 (deletions)

  • Fixed a $txt['here'] that was removed long ago (because it was used in this case outside of its original context-- wow, nice for translators!). Replaced it with some random Unicode character that's supposed to indicate the current location. Please tell me if you find anything better that doesn't require the use of words. (ManageSmileys.template.php)
  • Also updated all colons to $txt[':'] in that file. I'm not gonna do all files... Just figured I'd do that one. (ManageSmileys.template.php)
Features / Re: New revs
« on February 27th, 12:12 AM »
[Commit revision 005abec]
Author: Nao
Date: Mon, 27 Feb 2017 00:01:02 +0100
Stats: 1 file changed; +12 (insertions), -10 (deletions)

  • Updated CSS parser to support more recent versions of browsers dropping some browser extensions. (Class-CSS.php)

[Commit revision dc13cf0]
Author: Nao
Date: Mon, 27 Feb 2017 00:01:53 +0100
Stats: 1 file changed; +1 (insertion), -1 (deletion)

  • Random user error that didn't need logging. (Mailer.php)

[Commit revision 47060c5]
Author: Nao
Date: Mon, 27 Feb 2017 00:02:28 +0100
Stats: 1 file changed; +6 (insertions), -8 (deletions)

  • Avoiding a useless else() call. (Subs-CachePHP.php)

[Commit revision 9affd1f]
Author: Nao
Date: Mon, 27 Feb 2017 00:10:24 +0100
Stats: 1 file changed; +11 (insertions), -0 (deletion)

  • Fixed... Maybe... Maybe... Finally fixed race conditions in PHP file caching. Needs testing, but at least I'm no longer able to reproduce the problem. (Subs.php)
  • Imagine you're uploading a modified file to your server, and it has several visitors, and one of them is loading a page at the same time. The cacher will look for a cached version, will find it's outdated, and rebuild it. Now, here's the trick: if this happens DURING the upload, the file won't be complete, but it'll still be used for caching. The trick here, since we don't know the final expected filesize, is to instead check the file date. If it's very recent (0, 1 or 2 seconds old), we'll wait for one more second and check again, until the file is old enough. This isn't perfect, but should handle 99% of all possible race conditions.

[Commit revision c2bee20]
Author: Nao
Date: Mon, 27 Feb 2017 00:12:08 +0100
Stats: 1 file changed; +1 (insertion), -1 (deletion)

  • Mobile browsers are unable to follow links in the main menu's top-level items, which is mostly a problem with the first menu column, so I'm adding an 'exception' to account for that. (Subs.php)
Archived fixes / [CSS] Re: Login looking bad on small screens
« on February 25th, 10:49 PM »
Should also modify the RSS feed list (in the sidebar) to use some normal stuff instead of these fucking dd/dt/dl tags. I'm really sick with them... display:table for the win? Heck you can even push columns to new rows through @media...
Archived fixes / [CSS] Re: Login looking bad on small screens
« on February 23rd, 10:35 PM »
Hmm yeah, feel free to commit a 450px revert if you feel it's for the best.
I just aimed for consistency. But this might matter more. ;)
Features / Re: New revs
« on February 22nd, 11:48 PM »
[Commit revision a449ef5]
Author: Nao
Date: Wed, 22 Feb 2017 23:48:29 +0100
Stats: 1 file changed; +2 (insertions), -2 (deletions)

  • Fixed integer casting error. (Subs.php)
  • Better westr::safe than sorry. Inspired by my Internet browsing. (Subs.php)
Features / Re: New revs
« on February 22nd, 11:44 PM »
[Commit revision 9080368]
Author: Nao
Date: Wed, 22 Feb 2017 23:43:08 +0100
Stats: 2 files changed; +1 (insertion), -4 (deletions)

  • Removed some IE6-7 compat CSS that wouldn't be used on them, as they don't support pseudo-selectors in the first place... Yeah, man. Yeah, man. (common.css)
  • Fixed Warm's skin.xml 'tutorial' to clearly indicate that parent skins should be provided as a folder name, rather than the parent skin's name as declared in the XML file. (Warm/skin.xml)
Bug reports / [Security] Re: BBCode in SQL Database
« on February 21st, 12:24 PM »
Quote from CerealGuy on February 13th, 03:52 PM
I think i get your point, there's a newline in between the quote tag and the next part of the post. It's more like a bug isn't it? Even if it's not very problematic, but still annoying.
Yes. It's not really a bug, it's "as expected" given what the code does, it's up to me (or another dev) to simply add more code to simply remove any extra newlines that come after. I think what I/we should do is, when we determine the point at which the split needs to be done, select anything before and after that point that's either a space, a tab or a newline (basically an \s), and delete it (there's a function to select a zone of text, then we can delete it.)
Actually my implementation is quite powerful as you have 3 collumns for the process stuff. I prefer it that way because it gives you the maximum of control over this feature. But I agree, as soon as something's not really needed, we should strip it out.
Yeah, it's not like we can magically strip Wedge down to 2000 lines of code, but for maintainability it's always best to simplify complex code where possible.
It's not a limitation of xml, for sure you can have php code in your xml file (if that's what you mean by 'xml file can also contain function declarations')
Yes that's what I mean, and yes I remember adding support for that, I'm pretty sure at least... ^^
Or maybe it was in skin.xml... Hmm.
Yup that's the big problem with the mixed content stuff and https. On our site we completely switched to https, no plain http anymore.
Same with ;)
This avatar problem is really annoying, though.
I already thought about the problem of external content. It's actually only images which make problems.
There's an option to retrieve external avatars locally but meh...
The tricky part would be the one for images. One approach would be to let wedge check if the content is the same over ssl as with a plain connection.
In these situations, it's acceptable to have the green icon disappear. It's not exactly the Grail of SSL-enabled websites. It's just good to have on non-user-generated-content pages. So my main concern is with that frigging avatar showing up on every page. Then again, it's just for members!

Oh, speaking about security... I noticed one of your commits has a comment that explains you don't know about the noopener security problem, but that you'll leave it in. Well, first of all you could have just asked me, since I added that feature last month... Second of all, I'd understand that you document that in the git log, but... Why in the file comments, man?? Why...? :-/
But we should definetly improve the ssl support of wedge, even if it works quite well on my site (with only ssl). SSL and encryption in general isn't a topic with which only criminals have to care about, it affects all internet users nowadays.
I'm kewl with SSL. One of the things I enjoy about Lestrade's is that I get to touch areas that I never had the opportunity to deal with before. SSL and Nginx are interesting. (Not ENJOYABLE interesting, but interesting nonetheless.)
I don't know, guess you mean the smf homepage?
The editor itself isn't bad in my opinion, but many things don't work very well. For example inserting urls or images is just a pain in the ass with those weird js alert boxes. You can't click them away and it just doesn't make fun. Besides that, no need for email and ftp buttons anymore.
That's absolutely right. I don't know why I didn't just remove them myself all these years ago.
Even the "Ordered list" thing to me is something that takes space for nothing... I'll keep it, but MEH. FTP and email, yeah, they can go.
Do you mean that people can reply to a post? A bit like how comments work on youtube?
Hmm yeah, but it's not the best example... ^^
Threading has always been a stable of sites like slashdot or reddit. Or the Disqus comment system, for instance.
Wedge does threading internally-- it just doesn't show it.
The problem with this is that it get's confusing very fast. I saw it on another forum where you could switch between the "thread display modes". But I didn't really like it. It has to be implemented very well and smart.
But honestly, I don't see any 'smart' way of doing it, besides showing it threaded by 'default', and flat when viewing 'New' posts (e.g. the New icon.)
But I think this amateurs thing is a bit of legacy of smf and many open source projects.
I'd say SMF always wanted to see itself as a professional bunch. Which is why they're so freaking slow in adding new features... They tend to look severely at people who add new features without polling the team at least 27 times and sending 42 test suites.
Seriously, what I added to SMF back in 2010 in the few months I worked as developer was more than everyone else together did for the following years... (I haven't checked in recent years, but I doubt they changed much either.)
I'm not boasting, I'm just saying that they don't have the same way of doing things. Which is why SMF is so much behind. Even Pete couldn't save it with his SMF 3 project. (I think that was abandoned too...?)
php-cgi is the php server. Nginx just redirects all 'php' requests to php-cgi. I'm not too sure about the htacess stuff, have to look at it.
Yeah, so, there are two ways of handling PHP and Nginx, AFAIK:
- Nginx as reverse proxy and Apache behind. Nginx redirects all php requests to Apache, which itself calls PHP through FCGI or mod_php, whatever. This way, htaccess is taken into account.
- Nginx as both reverse proxy (or not) and server with PHP support (FastCGI or PHP-FPM). Nginx redirects all php requests to the CGI process. htaccess isn't support. And PHP isn't faster either.
Which is why most servers adopt the former solution, of course.
We also don't need to. Most of those features aren't something we need for wedge. Would also break compatibility to old browsers which is one of the things wedge cares about.
Oh and I just removed a thing for IE6/7... ;)
This is becoming less and less of a problem. IE8-11 and Edge still have some market shares, but 6-7 are comparatively negligible.
If I had more time, I'd completely remove support for both of those. You have no idea how much simpler the codebase would be in all CSS handling areas... ^^
I thought wedge already implemented something like this.
Not really, no.
I suppose it's feasable, though, with the caching system in Wedge (while in SMF it would be completely impossible, I think even Elk couldn't do it, without resorting to hacks.) Just generate the JS file 'automatically' from the data available in files and the database.
Ajax means a lot of traffic if you send over the complete post.
Yeah... Not that much, really. ^^
Definetly something which would make wedge a lot nicer. The thing is, do we want a real time chat or a messaging system with a chat like feeling?
The latter for now. Let's not get ahead of ourselves... ;)
Real-time chat can always be added through a plugin.
It's a bit the same with thoughts. For sure you get notified if someone replies to your thought, but they don't get refreshed automatically. It's a bit the difference between a shoutbox and those thoughts.
I just never saw any real traction for thoughts. I'm pretty much the only one to use them. And no one asked for a refresh, so... Here you go. There's a refresh for notifications is all.
Actually I really like the thoughts system, it get's used quite a lot on our forum.
LT has been online for a week and no one used it, not even once. I ended up disabling it... My lone message was just too lonely. ^^
I have a steam account, somewhere... played a bit dota 2 and cs:go when they got freshly ported to linux. But not really into gaming anymore. But for sure i will have a look into your project. My brother is really into gaming and steam, definetly a market. Those weapon skins and stuff, it's just crazy how much money you can spend on that.
Yeah I don't understand the appeal of CS:GO related stuff.. ^^ I prefer regular good old single-player games. LT is mostly about retrading duplicate game keys you acquire when you're a regular customers of bundle sites like,, and (basically the top 4 bundle websites). And they often re-bundle games offered by other sites months prior. So you ALWAYS end up with duplicate keys. I only recently opened an account for my kid, where I can now redeem many of these duplicates... But before that, since I don't like waste, I used to retrade my keys for other games.
But you definetly have to change the skin, the current one doesn't fit at all ^^ Maybe the first dark skin for wedge? :D
Well, err... I think it's very fitting..?!
I tried to stay close to in spirit.