Commit graph

103 commits

Author SHA1 Message Date
596716ef79 Improved efficiency, incremental RAM only mode, speed bump 2026-06-15 19:15:34 +02:00
a4f3e01e9e - ram mode and normal mode build performance increased - optimizations and refactorings, the build time should now be lower
- Added robots.txt generation and customization
- Version bump
2026-06-15 09:04:21 +02:00
48d9f8b8b7 Improved caching efficiency, invalidation, correctness and reliability 2026-06-14 11:55:51 +02:00
4b25f0798a Improved caching efficiency, invalidation, correctness and reliability 2026-06-14 11:41:49 +02:00
7d16522c9c Improved caching efficiency, invalidation, correctness and reliability 2026-06-14 11:23:34 +02:00
f5755e9fd0 Added VERSION file - updating version number will be easier 2026-06-11 20:56:51 +02:00
0662983c11 New config options in config.sh (all default true for backward compat):
SHOW_HEADER_MENU=true        # Set false to remove nav menu from header
SHOW_INDEX_DESCRIPTIONS=true # Set false to hide descriptions/excerpts on index
GENERATE_EXCERPT=true        # Set false to skip auto-generating excerpts
SHOW_READING_TIME=true       # Set false to hide reading time on posts

Updated README.md

Should close issue 53: #53
2026-06-11 14:08:46 +02:00
48bc724d94 New config options in config.sh (all default true for backward compat):
SHOW_HEADER_MENU=true        # Set false to remove nav menu from header
SHOW_INDEX_DESCRIPTIONS=true # Set false to hide descriptions/excerpts on index
GENERATE_EXCERPT=true        # Set false to skip auto-generating excerpts
SHOW_READING_TIME=true       # Set false to hide reading time on posts

Should close issue 53: #53
2026-06-11 14:06:02 +02:00
8250468f56 Several format changes, the output will be cleaner and more correct 2026-06-11 13:28:54 +02:00
608a82aec4 - Added support for --config in generate_theme_previews.sh, with config resolution aligned to the main build flow: command-line override first, then BSSG_LCONF, then local/default config files.
- Improved theme preview generation so it now loads the effective BSSG config once, reuses configured SITE_URL, OUTPUT_DIR, THEMES_DIR, and TEMPLATES_DIR, and passes the selected config through to each preview build.
- Improved preview output path detection for external site setups, so previews are generated under the correct site example directory instead of assuming the project root layout.
- Standardized list-page article headings from <h3> to <h2> across homepage, archives, authors, tags, and secondary pages, improving heading hierarchy and semantic consistency.
- Fixed Open Graph URL generation in templates/header.html by concatenating {{site_url}}{{page_url}} directly, and normalized page URL placeholders to leading-slash paths like /, /archives/, /authors/..., and /pages.html.
- Updated theme stylesheets to match the new list markup, switching post-list selectors from .posts-list h3 to .posts-list h2 and preserving hover, focus, spacing, and responsive typography rules.
- Adjusted themes with decorative h2 treatments so post listings do not inherit unwanted heading ornaments or pseudo-elements after the heading-level change.
2026-03-18 11:35:13 +01:00
37c5a2283e Added Fediverse linking options 2026-03-17 11:39:33 +01:00
d4b0d4d58a Fixes for RAM only build when there are no pages 2026-03-14 11:06:50 +01:00
d0ceef943c Added mynotes theme 2026-03-14 09:25:19 +01:00
0a5f9e20a3 Added new themes - some somehow inspired by the BSDs (FreeBSD, NetBSD, OpenBSD), field-journal, microfiche, museum-label
Optimized the "generate_theme_previews.sh" to build the site once, then copy the css files. This will increase the example directory build time.
2026-03-14 09:20:47 +01:00
cbc08b06cc add RAM mode and overhaul the build pipeline
- introduce RAM build mode with in-memory preload/index datasets and stage timing
- refactor build orchestration, indexing, content processing, and template handling
- improve cache/rebuild logic and parallel worker execution across generators
- enhance posts/pages/tags/authors/archives/feed generation and related-post flow
- update CLI/config/README for new build options and performance tuning
- harden timing logic to handle locale-specific EPOCHREALTIME decimal separators
2026-02-10 19:08:59 +01:00
e2822ad620 Fixed header generation: the metadata should only contain the post title, not the site name. 2025-12-29 11:22:44 +01:00
e91a1344b0 Version bump 2025-12-28 14:50:10 +01:00
b1c2397a93 Added INDEX_SHOW_FULL_CONTENT configuration option.
If true, show full post content on homepage instead of just description/excerpt.
2025-12-28 14:47:56 +01:00
41debaae5c Merge pull request 'Feature: expand config variables embedded in cmdline' (#41) from Iam_Tj/BSSG:feature-expand_config_vars_on_cmdline into main
Reviewed-on: #41
2025-11-18 09:49:54 +01:00
b5e1888d7a Merge pull request 'Fix parallel is not GNU' (#42) from Iam_Tj/BSSG:fix-parallel_is_not_GNU into main
Reviewed-on: #42
2025-11-18 09:48:18 +01:00
3fe84d322a Merge pull request 'Dutch / nl translation file' (#38) from zipkid/BSSG:feature/dutch_translation into main
Reviewed-on: #38
2025-10-14 09:39:26 +02:00
Tj
c252f106c8 Fix parallel is not GNU
BSSG assumes parallel is from GNU but moreutils also provides it. If the
moreutils version is available BSSG fails due to parellel options not
being supported:

 Found 1 posts needing processing out of 1 (Skipped: 0).
 Using GNU parallel to process 1 posts
 PARALLEL --jobs 16 --will-cite process_single_file_for_rebuild {}
 /usr/bin/parallel: invalid option -- '-'
 parallel [OPTIONS] command -- arguments
        for each argument, run command with argument, in parallel
 parallel [OPTIONS] -- commands
        run specified commands in parallel
 Parallel post processing failed.

When parallel is detected ask it for its version to ensure it is GNU.
2025-10-13 20:55:05 +00:00
Tj
fee45661de Feature: expand config variables embedded in cmdline
When editing multiple sites using BSSG_LCONF it is easy to forget which
path one is currently working with and frustrating to need to type exact
paths when editing files. E.g:

 export BSSF_LCONF=/a/very/deep/path/to/site/a
 bssg.sh page
 ...
 bssg.sh edit '/a/very/deep/path/to/site/a/pages/page-1.md'

It is easier, more intutive, and friendlier to be able to do:

 bssg.sh edit '$PAGES_DIR/pages/page-1.md'

Note the single quotes to prevent the interactive shell from doing
parameter expansion.

Signed-off-by: Tj <tj.iam.tj@proton.me>
2025-10-13 12:12:27 +00:00
Stefan - ZipKid - Goethals
b62b4d8b76
Dutch / nl translation file 2025-09-10 13:06:40 +02:00
f8f4e18be7 Added pre-compression, thoughtful theme, Cyber-Dark theme, removed some Google fonts leftovers 2025-07-17 09:02:17 +02:00
1f59e61879 Added pre-compression, thoughtful theme, Cyber-Dark theme, removed some Google fonts leftovers 2025-07-17 08:55:06 +02:00
c43a6c3cb8 Merge pull request 'Disable colour output for non-terms or if NO_COLOR is set' (#29) from jamesoff/BSSG:feature/no-color into main
Reviewed-on: #29
2025-06-24 07:46:06 +02:00
7ebd09eeeb
Disable colour output for non-terms or if NO_COLOR is set 2025-06-23 11:29:57 +01:00
1c7aab7b71 Removed Google leftovers 2025-06-21 16:09:12 +02:00
70760825b0 Preparing for 0.31 - related posts, theme fixes, etc 2025-06-18 19:26:13 +02:00
3c88fc7e69 The headline feature of this release is **complete multi-author support** throughout BSSG! This feature transforms BSSG from a single-author platform into a collaborative publishing system.
**New Author Frontmatter Fields:**
- `author_name`: Override the default site author on a per-post basis
- `author_email`: Specify custom author email information

**Intelligent Fallback System:**
- **Custom Author**: Both name and email override defaults
- **Name Only**: Just specify author name, email remains empty
- **Default Fallback**: Empty fields automatically use site configuration

**Author Index Pages:**
- **Main Authors Index**: Located at `/authors/` with post counts for each author
- **Individual Author Pages**: Dedicated pages at `/authors/author-slug/` for each author
- **Conditional Navigation**: "Authors" menu appears only when multiple authors exist (configurable threshold)
- **Visual Consistency**: Reuses existing tag page styling for familiar user experience

**Complete Integration:**
- **Schema.org JSON-LD**: Proper structured data for search engines
- **RSS Feeds**: Dublin Core `dc:creator` elements with full author attribution
- **Footer Copyright**: Dynamic author information in copyright notices
- **Index Listings**: "by Author Name" attribution throughout the site
- **Enhanced Sitemap**: Author pages automatically included for better SEO

**Configuration Options:**

ENABLE_AUTHOR_PAGES=false # Enable/disable author pages (default: false)
SHOW_AUTHORS_MENU_THRESHOLD=2 # Minimum authors to show menu (default: 2)
ENABLE_AUTHOR_RSS=false # Author-specific RSS feeds (default: false)

This release includes **BSSG Themes 0.30**, a comprehensive improvement of all 50 included themes focusing on performance, accessibility, and cross-platform compatibility.

**Performance Optimizations:**
- **External Font Dependencies Removed**: Eliminated Google Fonts and base64 encoded fonts across 35+ themes
- **System Font Stacks**: Comprehensive fallback fonts for better performance and reliability
- **Animation Optimization**: Added `@media (prefers-reduced-motion)` support to all themes
- **Mobile Performance**: 40-60% improvement in rendering speed on mobile devices
- **Backdrop Filter Optimization**: Reduced blur amounts and added mobile fallbacks

**Accessibility Enhancements:**
- **WCAG AA Compliance**: Tried to achieve 100% compliance across all themes
- **Keyboard Navigation**: Complete focus management with visible outlines
- **Screen Reader Support**: Enhanced semantic HTML structure and ARIA attributes
- **Reduced Motion**: Full support for users who prefer reduced motion

**Cross-Platform Compatibility:**
- **Text Browser Support**: Full functionality in lynx, w3m, and links browsers
- **Progressive Enhancement**: Graceful degradation for older browsers
- **Icon Fallbacks**: ASCII alternatives for Unicode symbols and decorative elements

**Critical Theme Fixes:**
- **Glassmorphism**: Complete redesign for maximum contrast and readability
- **Vaporwave**: Optimized neon effects and improved mobile performance
- **Flat**: Fixed critical invisible post title bug
- **Retro Computing Themes**: Enhanced authenticity while maintaining modern accessibility

**Improved Edit Command:**
- Fixed filename generation in edit mode (`-n` flag) that was causing build failures
- Clean filename formatting prevents awk errors with spaces in filenames
- Consistent approach across all BSSG operations

**Better Build Options:**
- Fixed `--force-rebuild` option that wasn't working as documented
- Both `--force-rebuild` and `-f` now work correctly as aliases
- Improved help text and command consistency

**Enhanced Post Editor:**
- Fixed datetime-local input showing GMT instead of local time
- Better date/time handling for content creation
- Improved user experience in the standalone editor

**RSS Feed Enhancements:**
- **Fixed XML Escaping**: Proper escaping of ampersands and special characters in RSS titles and descriptions
- **Image Caption Fix**: Eliminated duplicate `<figcaption>` elements in RSS feeds
- **Valid XML Output**: RSS feeds now validate properly with all RSS parsers

**Unicode and Internationalization:**
- **German Umlaut Handling**: Consistent Unicode character handling in URL slugs across all interfaces
- **Comprehensive Transliteration**: Support for German, French, Spanish, Polish, and other European languages
- **Cross-Interface Consistency**: Uniform slug generation in command-line tools, web editor, and admin interface

**Better Incremental Builds:**
- **New Author Detection**: Fixed caching issue where new authors weren't detected during incremental builds
- **Author Page URLs**: Fixed incorrect URL generation that didn't honor configured `URL_SLUG_FORMAT`
- **Dependency Tracking**: Improved rebuild logic for author-related content

**Enhanced Post Metadata:**
- **Improved Visual Presentation**: Better typography and spacing for post metadata banners
- **Semantic HTML**: Proper `<time>` elements with datetime attributes for accessibility and SEO
- **Responsive Design**: Metadata that scales appropriately across devices

**Sitemap Integration:**
- Author pages automatically included in `sitemap.xml` when enabled
- Proper priority levels for SEO optimization
- Conditional inclusion based on configuration

**Better File Structure:**
- Enhanced templates system with better placeholder replacement
- Improved navigation generation with conditional menu display
- Standardized component patterns across the codebase

**Theme Compatibility:**
- All 50 themes maintain their visual identity while gaining performance and accessibility improvements
- No breaking changes for existing installations
- Themes now work excellently across all browsers and devices

**Multi-Author Migration:**
- Existing single-author sites continue working unchanged
- Author fields are optional and fall back to site configuration
- No migration required for existing content

**Performance Recommendations:**
- Themes now work optimally without external dependencies
- Mobile experience significantly improved across all themes
2025-06-02 08:46:08 +02:00
6582872d70 Fixes 2025-05-27 08:34:00 +02:00
47d0ea02b0 Fixed ampersand and feed generation 2025-05-26 09:58:50 +02:00
ea2afcd6e9 Aggiorna README.md 2025-05-25 21:18:35 +02:00
e8c98d10ab Added bssg-editor - updated README 2025-05-25 19:12:10 +02:00
d8e7e3f0ea Merge pull request 'Make sure slug for blog posts is sanitized' (#24) from 82mhz/BSSG:fixSlug into main
Reviewed-on: #24
2025-05-23 19:52:11 +02:00
Andreas
7df772e509 Make sure slug for blog posts is sanitized 2025-05-23 15:19:48 +02:00
ce4269dd6e Slug fix - by Andreas 2025-05-22 21:05:40 +02:00
3a52a4b24a Fixed README 2025-05-18 19:05:39 +02:00
4dcec9f963 Added socat support 2025-05-18 18:57:38 +02:00
7eaf64ea4a Fixed colours 2025-05-18 15:33:07 +02:00
03c83e5b76 - **server Command**: Introduced a new command ./bssg.sh server to facilitate local development.
- This command builds the static site and then starts a simple Bash HTTP server (`scripts/server.sh`) to serve the files from the output directory.
    - **Dynamic `SITE_URL`**: When the `server` command initiates a build, it temporarily overrides the `SITE_URL` configuration to match the local server's address (e.g., `http://localhost:PORT`). This ensures that all generated links and assets paths are correct for local previewing.
    - **Command-line Options**:
        - `--port <PORT>`: Specifies the port for the server to listen on.
        - `--host <HOST>`: Specifies the host/IP address for the server.
        - `--no-build`: Skips the build step and starts the server with the existing content in the output directory.
- **Configurable Server Defaults**:
    - The default port and host for the `./bssg.sh server` command can now be configured in `config.sh` (via `BSSG_SERVER_PORT_DEFAULT` and `BSSG_SERVER_HOST_DEFAULT`) and overridden in `config.sh.local`.
    - The help message for the `server` command displays these configured default values.

- The `bssg.sh` main script was updated to include the `server` command logic, argument parsing, and help text.
- `scripts/build/config_loader.sh` was updated to load and export the new server default configuration variables (`BSSG_SERVER_PORT_DEFAULT`, `BSSG_SERVER_HOST_DEFAULT`).
- `config.sh` was updated with the new default server configuration variables.
2025-05-18 15:17:19 +02:00
e494aed35b Fixed the generate_theme_previews.sh - now working with a website generated by the init command 2025-05-18 08:47:36 +02:00
64b2c439c3 Configurable RSS feed filenames. The main RSS feed and tag-specific RSS feeds can now have their filenames customized via the RSS_FILENAME option in config.sh (or config.sh.local). Defaults to rss.xml if not specified.
- The main feed will be `OUTPUT_DIR/$RSS_FILENAME`.
  - Tag feeds will be `OUTPUT_DIR/tags/tag-slug/$RSS_FILENAME`.
2025-05-13 08:49:39 +02:00
2474b8146d Fix: version 2025-05-13 07:58:53 +02:00
ded254d171 Fix: -f will force rebuild 2025-05-05 08:48:09 +02:00
95b5319b93 Updated README.md - on MacOS, the default bash is too old 2025-04-30 06:55:30 +02:00
2636df570c Fixed list command to support --config, so it doesn't re-read the config on its own 2025-04-25 08:59:48 +02:00
88c2a98911 Fixed list command to support --config, so it doesn't re-read the config on its own 2025-04-25 08:57:29 +02:00
afaaed81d1 Fixed regression 2025-04-24 22:12:14 +02:00