<feed xmlns='http://www.w3.org/2005/Atom'>
<title>xavi/slcl/page.c, branch v0.5.0</title>
<subtitle>Small and lightweight cloud storage written in C99 and POSIX.1-2008.
</subtitle>
<id>https://gitea.privatedns.org/xavi/slcl/atom?h=v0.5.0</id>
<link rel='self' href='https://gitea.privatedns.org/xavi/slcl/atom?h=v0.5.0'/>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/slcl/'/>
<updated>2026-06-13T07:38:00+00:00</updated>
<entry>
<title>Report missing authentication</title>
<updated>2026-06-13T07:38:00+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi92@disroot.org</email>
</author>
<published>2026-06-13T07:38:00+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/slcl/commit/?id=30e9bcc492ffa81dabfd316a295ff4d20daaec3b'/>
<id>urn:sha1:30e9bcc492ffa81dabfd316a295ff4d20daaec3b</id>
<content type='text'>
Previously, HTTP error 403 was returned if an unauthenticated user
attempted to access a file or directory inside /user/. However, this
error message confusing because, most often, it was caused by legitimate
users with missing or expired HTTP cookies. While the usual workaround
was to access /index.html and authenticate, this was too confusing to
some users.
</content>
</entry>
<entry>
<title>page.c: Add explicity body tag</title>
<updated>2026-06-13T07:37:36+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi92@disroot.org</email>
</author>
<published>2026-06-13T07:36:55+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/slcl/commit/?id=3db69a5f7fdf2db48d512f60a9afe6b894877dba'/>
<id>urn:sha1:3db69a5f7fdf2db48d512f60a9afe6b894877dba</id>
<content type='text'>
</content>
</entry>
<entry>
<title>page.c: Center invalid password text</title>
<updated>2026-06-13T07:35:41+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi92@disroot.org</email>
</author>
<published>2026-06-13T07:35:41+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/slcl/commit/?id=8815a8b9ea8b6e5f95b056e64b15a5f049790a80'/>
<id>urn:sha1:8815a8b9ea8b6e5f95b056e64b15a5f049790a80</id>
<content type='text'>
</content>
</entry>
<entry>
<title>page.c: Align results to center</title>
<updated>2025-10-10T13:29:55+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi92@disroot.org</email>
</author>
<published>2025-10-10T13:29:55+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/slcl/commit/?id=6a3a0f45f65f9be58867f271ff2a027548789bd7'/>
<id>urn:sha1:6a3a0f45f65f9be58867f271ff2a027548789bd7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>page.c: Ensure trailing '/' on dir download URLs</title>
<updated>2025-10-10T09:20:25+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi92@disroot.org</email>
</author>
<published>2025-10-10T09:20:25+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/slcl/commit/?id=4fa8915c8cd42b8bc30df3714e5163c4f4bece89'/>
<id>urn:sha1:4fa8915c8cd42b8bc30df3714e5163c4f4bece89</id>
<content type='text'>
Otherwise, it is not ensured web browsers would translate a relative
directory such as "dir/.." to a URL with a trailing '/'. Therefore, a
POST request to "/user?download=1" would fail because slcl only
considers "/user/" (note the trailing '/') as valid.
</content>
</entry>
<entry>
<title>page.c: Center directory/file and page count</title>
<updated>2025-10-09T08:58:59+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi92@disroot.org</email>
</author>
<published>2025-10-09T08:53:36+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/slcl/commit/?id=57efdf774510c2b3bd114266af81843919421d55'/>
<id>urn:sha1:57efdf774510c2b3bd114266af81843919421d55</id>
<content type='text'>
</content>
</entry>
<entry>
<title>page.c: Switch preview and download</title>
<updated>2025-10-08T00:03:17+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi92@disroot.org</email>
</author>
<published>2025-10-07T23:48:14+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/slcl/commit/?id=9542016d5d820eef0882ed7f4c3da5f238453707'/>
<id>urn:sha1:9542016d5d820eef0882ed7f4c3da5f238453707</id>
<content type='text'>
So far, clicking on a directory name previewed it, whereas clicking on a
file name would download it, and file previews were on a separate
column. This behaviour was found to be confusing, so it has been
simplified.

Now, clicking on a file or directory name would preview it. On the other
hand, the "Preview" column has been replaced with a "Download" column,
so that both files and directories can be downloaded.

Thanks to Avron for the suggestion. [1]

[1]: https://codeberg.org/xavidcr/slcl/issues/2
</content>
</entry>
<entry>
<title>page.c: Move remove checkbox to the right</title>
<updated>2025-10-08T00:03:16+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi92@disroot.org</email>
</author>
<published>2025-10-07T23:46:36+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/slcl/commit/?id=9b928c550d53b313f8d138b6929d8b94bd699740'/>
<id>urn:sha1:9b928c550d53b313f8d138b6929d8b94bd699740</id>
<content type='text'>
It feels more intuitive to keep the thumbnail and file name as first
columns. It is assumed removing files and/or directories is not the
main interaction from users.
</content>
</entry>
<entry>
<title>page.c: Remove unused variable</title>
<updated>2025-10-08T00:03:16+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi92@disroot.org</email>
</author>
<published>2025-10-07T21:45:32+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/slcl/commit/?id=32c4b34829e3d2d43f405c98f6edff32ae96a74a'/>
<id>urn:sha1:32c4b34829e3d2d43f405c98f6edff32ae96a74a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Implement directory download as ZIP</title>
<updated>2025-10-08T00:03:05+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi92@disroot.org</email>
</author>
<published>2025-10-06T21:02:51+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/slcl/commit/?id=00dd37604d50cbf3fb27ec0631b4d4b6d2ee893a'/>
<id>urn:sha1:00dd37604d50cbf3fb27ec0631b4d4b6d2ee893a</id>
<content type='text'>
Thanks to the fdzipstream library [1] and zlib [2], it is possible to
generate ZIP files on-the-fly, therefore requiring no extra disk space
usage and only a small amount of memory.

Unfortunately, as of the time of this writing fdzipstream is not
packaged by any distributions yet [3], so it had to be imported as a git
submodule as a workaround.

While libarchive [4] could be an interesting alternative, writing ZIP
files is only supported by very recent versions (&gt;= 3.8.0), which are
still not packaged by many distributions [5], either.

Moreover, libarchive is a package with several dependencies other than
zlib and is significantly larger compared to fdzipstreams, so
fdzipstreams was ultimately considered a better fit for this purpose.

[1]: https://github.com/CTrabant/fdzipstream.git
[2]: http://zlib.net/
[3]: https://repology.org/projects/?search=fdzipstream
[4]: https://www.libarchive.org/
[5]: https://repology.org/project/libarchive/versions
</content>
</entry>
</feed>
