280 Commits

Author SHA1 Message Date
8238787900
use beautifulsoup to parse the description from the first paragraph
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2026-01-28 14:40:45 -06:00
20673c178a
use beautifulsoup to derive title from HTML h1
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2026-01-28 14:40:45 -06:00
3ca13cc6f8
requirements bump
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2026-01-28 14:40:45 -06:00
7b2bf6905a
test the high level SSG build command
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2026-01-28 14:40:45 -06:00
dd2f5eeaea
remove python 3.9 from supported versions
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2026-01-28 14:40:45 -06:00
d66a471c76
Changelog for v2.0.5
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
v2.0.5
2025-09-18 16:45:36 -05:00
bbab9de1f6
regenerate requirements-dev.txt to get some safety stuff to shut up
weirdly, if I rebuild the whole requirements-dev.txt, test coverage
drops, so I'm sure that's a problem to worry about later

Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-09-18 16:45:01 -05:00
d4f27c9ad8
add python3.13 to tox environments
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-09-18 16:36:14 -05:00
424ec3621d
replace links that have .md suffixes with clean links
to aid viewing the raw markdown source in e.g. a gitlab source browser,
or to aid navigation in vim with "gf" style commands to jump between
files, allow the markdown source to specify foo.md or whatever/index.md
explicitly, yet generate the clean URLs for linking in the HTML output

this assumes that nginx is serving "foo" with foo.html, and "bar/" with
bar/index.html

Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-09-18 14:19:48 -05:00
7205bb2aa5
changelog for v2.0.4
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
v2.0.4
2025-03-21 11:48:20 -05:00
88b678931e
properly handle symlinks as relative to the output dir
the code meant to make symlinks relative to the output directory, but
only actually succeeded at it for targets in the root of the output
directory; since we already check that the target is not breaking out of
the instance, we can generate the output symlink relative to itself and
fix the subdirred-symlink behavior

Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-03-21 11:43:18 -05:00
8c75947088
remove os.chdir usage, rely on absolute and relative paths more
os.chdir was getting confusing and hurting the log output, and
potentially the cause of a couple bugs left to fix, so this removes it,
but it means we need to pass around the pages/ absolute path into the
markdown parser, because it relies on knowing both the absolute path
now (to open files), and also the path relative to the pages dir in
order to know where to stop reading parent files/how to generate proper
URL-like references to other files.

probably this should be refactored at some point to inherit the pages/
path from the SSG somehow, rather than passing it through a bunch of
methods, but this seems to work for now

fixes #22

Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-03-21 10:47:42 -05:00
e75d5c48d2
changelog for v2.0.3, though I forgot to put it in the tag
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-03-21 08:36:29 -05:00
201cd80804
when symlinking foo.md, also symlink foo.html if generating .html
fixes #24

Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
v2.0.3
2025-03-21 08:31:31 -05:00
a327c6b89c
remove the Flask classifier, since we don't do it anymore
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-03-21 08:23:31 -05:00
27d4d16572
go back to using the "or any later version" clause of GPLv3
I think arguments that "Such new versions will be similar in spirit to
the present version", in my own reading and readings such as in
https://www.draketo.de/software/gpl-or-later, convince me for now that
it is acceptable to allow the "or later" for compatibility and future
problem's sake

Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-03-21 08:22:49 -05:00
b69bdb424a
CHANGELOG for v2.0.2
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
v2.0.2
2025-03-18 21:28:15 -05:00
c46a1c0bae
don't handle custom-static dirs specially anymore
they're just more static files among all the static files we serve, they
should go into pages/ like everything else

fixes #20

Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-03-18 21:26:25 -05:00
359916e7d9
do some trivial cleanups in README
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-03-18 21:20:12 -05:00
d49b9d48a8
don't add an artificial ./ subdir due to how os.path.relpath works
this fixes stuff like og:urls of https://foo/./ or https://foo/./page
and also removes an extra layer of depth in the breadcrumb hierarchy,
just by suppressing the '.' in relpath output at the root of pages/

fixes #21

Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-03-18 21:09:50 -05:00
9caf08a277
changelog for v2.0.1
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
v2.0.1
2025-03-18 08:24:46 -05:00
8aabd93273
don't copy .files into the SSG output dir
they may be vim swap files and that kind of garbage

Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-03-18 08:20:58 -05:00
6d7987cfae
don't require the host to be in the Image tag
now that we know our base host via config, we can stop hardcoding it in
each Image tag

Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-03-18 08:13:18 -05:00
abc05ee4e8
fix how my email address displays in gitea
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-03-17 13:22:30 -05:00
f623ffdd7c
don't refer to my manual uploads now that I push to PyPI
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-03-17 13:13:25 -05:00
2a4cc26c06
slight tweak to the description, and clarify what isn't GPLv3
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
v2.0.0
2025-03-17 11:01:23 -05:00
4f39bea3a9
fix up the object attributes for in/out dirs in the generator
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-03-17 10:39:18 -05:00
9104769299
document my regrettable opening of Pandora's box
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-03-17 10:12:18 -05:00
5b17041b66
move the style switcher to the a separate .js file
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-03-17 10:06:15 -05:00
d52fc4df9a
fix where the feed generator outputs to, and also output error pages
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-03-17 09:07:56 -05:00
4644aea4b0
bump the copyright on some new/rewritten modules
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-03-17 08:06:06 -05:00
749576f535
README cleanups
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-03-17 07:13:53 -05:00
afc85faa2f
make the style cookie apply to the whole site
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-03-17 01:00:10 -05:00
f3eed9d4f2
fix and test the linking to the style switcher
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-03-17 00:47:00 -05:00
41350d4b7a
remove debug stuff from the style switcher JS
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-03-17 00:38:37 -05:00
168bca05f7
make the call to generate the RSS/ATOM feeds when building
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-03-17 00:33:01 -05:00
4c9ed712bc
add a changelog documenting v2.0.0
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-03-17 00:08:54 -05:00
7eb485c6ae
rewrite the project as a static site generator
this removes Flask, reworks a number of library methods accordingly, and
adds generators and build commands to process the instance directory
(largely unchanged, except config.py is now config.json) and spit out
files suitable to be served by a web server such as Nginx.

there are probably some rough edges here, but overall this works.

also note, as this is no longer server software on a network, the
license has changed from AGPLv3 to GPLv3, and the "or any later version"
allowance has been removed

Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-03-16 23:56:37 -05:00
ed12272d4d
default tables to 100% width
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2024-12-05 23:44:04 -06:00
1e839d691b
update reference to the DCO now that it's in CONTRIBUTING.md
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2024-05-02 09:25:40 -05:00
aeff73e3fc
add twine to development packages
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2024-04-26 10:13:23 -05:00
d28ddf9392
remove "trailing slash on void elements" which "has no effect"
caught by the W3C validator

Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2024-04-26 10:11:38 -05:00
249f9d4962
put ancillary docs under the main license
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
v1.11.3
2024-04-21 17:48:43 -05:00
f12b76680f
use reuse lint for REUSE compliance
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2024-04-16 00:38:28 -05:00
c21a9b2638
replace plain text LICENSE with LICENSE.md
REUSE specification will care of the .txt in a bit

Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2024-04-16 00:14:39 -05:00
6d7bfc58c8
add copyright and license tags to CSS and templates
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2024-04-16 00:10:34 -05:00
071be9b62d
requirements recompile + adding reuse
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2024-04-15 23:58:10 -05:00
ae584d5bf8
move the DCO into CONTRIBUTING.md
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2024-04-12 00:58:52 -05:00
05fb402029
add some quick contribution info and point at an IRC channel
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2024-02-25 00:29:08 -06:00
ada8691f85
version bumps
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2024-02-24 23:55:01 -06:00