Skip to content
This repository was archived by the owner on May 30, 2025. It is now read-only.

Releases: osmphp/osmsoftware-website

v0.4.8

18 Feb 09:16

Choose a tag to compare

Two new blog posts have been written about Osm Admin:

Also, Osm Admin v0.2 documentation added. As it fills in, it'll become more and more useful.

Related Releases

v0.4.7

28 Jan 10:18

Choose a tag to compare

There a new blog post about mass-editing feature in Osm Admin.

I've also fixed a couple of bugs. One was untested multi-year blog filter markup, and another was rendering incorrect links in the documentation sidebar.

Related Releases

v0.4.6

14 Jan 10:03

Choose a tag to compare

There is one new blog post on Osm Admin Filters.

And there is a fix that made me smile. After releasing the first 2022 blog post, I saw that the page design isn't tested for multiple years. How shortsighted I was!

Related Releases

v0.4.5

17 Dec 12:47

Choose a tag to compare

New Content

As indexing, compared to the initial design, has changed a lot, I wrote a detailed article in its actual inner workings. Also, I wrote a lot about grid/form visual interface concept and implementation efforts:

Related Releases

v0.4.4

02 Dec 16:40

Choose a tag to compare

New Content

I wrote a lot about implementing queries and indexing in Osm Admin:

Related Releases

v0.4.3

19 Nov 09:25

Choose a tag to compare

New Content

I've documented the new features of Osm Framework and Osm Admin in the blog:

Other Changes

As number of blog articles grows in each category, they don't fit the default limit of 10 posts per page. I removed the limit for now.

Later, I'll return to post pagination with something similar to infinite scrolling, but better.

Related Releases

v0.4.2

05 Nov 11:56

Choose a tag to compare

In this new minor update, I've added Osm Admin to the home page, and reorganized all the blocks on the home page. I've also blogged about Osm Admin development.

Related Releases

v0.4.1

22 Oct 07:57

Choose a tag to compare

New Content

  • NotImplemented
  • All the documentation that was originally written as blog posts, and now moved to the documentation section, is properly marked, both visually and using canonical URLs.

New Features

  • Let Google know about the original source of content by assigning canonical_url in the meta section of any Markdown document
  • Use relative links on documentation pages that work both on GitHub, and on osm.software.

Related Releases

v0.4.0

08 Oct 11:15

Choose a tag to compare

New Documentation Home

From now on, Osm Framework documentation resides in the docs/ directory of osmphp/framework repository, and it is displayed in a separate section of osm.software website:

osm.software documentation section

The documentation books and versions are configured in settings.php:

...
/* @see \Osm\Docs\Docs\Hints\Settings\Docs */
'docs' => (object)[
    'index_modified' => true,
    'books' => [
        /* @see \Osm\Docs\Docs\Hints\Settings\Book */
        'framework' => (object)[
            'repo' => 'https://github.com/osmphp/framework.git',
            'path' => "{$osm_app->paths->temp}/docs/framework",
            'dir' => 'docs',
            'color' => 'green-700',
            'versions' => [
                /* @see \Osm\Docs\Docs\Hints\Settings\Version */
                '0.12' => (object)['branch' => 'v0.12'],
                '0.13' => (object)['branch' => 'v0.13'],
            ],
        ],
    ],
],

The specified versions are cloned/pulled into the specified temp/ directory, and the documentation index in MySql and ElasticSearch is update from the command line:

osm docs:pull
osm index 

Future Reusable Packages

We've decided that reusable solutions - flat-file blog, flat-file docs, and the data management logic that they have in common - built for osm.software website should live as separate Composer packages, so you'll be able to use them in any project.

Before creating the first versions of osmphp/blog, osmphp/docs and osmphp/data, they should be uncoupled from the website. Until then, we moved all these pieces from My\ namespace to, Osm\Blog and Osm\Docs namespaces respectively, replaced all references in the codebase, put the code into the packages/ directory, and configured composer.json to load classes of the future packages:

{
    ...
    "autoload": {
        "psr-4": {
            "My\\": "src/",
            "Osm\\Framework\\": "packages/framework/",
            "Osm\\Data\\": "packages/data/",
            "Osm\\Blog\\": "packages/blog/",
            "Osm\\Docs\\": "packages/docs/"
        }
    },
    ...
}

Renamed Console Commands

Blog-specific console commands had too generic names, they are currently renamed:

# osm index
osm index:blog 

# osm check:index
osm check:blog-index

# osm check:links
check:blog-links

New Indexing Engine

The documentation indexing is implemented on top of brand-new data indexing engine. Later, the blog indexing will be rewritten using this engine, too.

Data sources (or just sources) store data. For example, the documentation is stored in the file system, in the database, and in a search index. Each of these storages is a source, named docs, db__docs, and search__docs, respectively.

Indexers synchronize data across the sources. An indexer reads the data changed in one or more sources, transforms it and writes to a target source. In the documentation subsystem, one indexer updates db__docs from docs, and another one updates search__docs from db__docs.

In more complex applications, lots of indexers may sync multiple targets from multiple sources. The indexing engine orchestrates the execution of the indexers, so that dependent indexers are executed after their dependencies. Run all the indexers with a single command:

# only process invalidated data
osm index

# re-index everything anew
osm index -f

# invalidate and process a source
osm index docs

One More Example Of Dynamic Routing

Dynamic routing of documentation page is quite sophisticated and, yet, elegant, check packages/docs/Docs/Routes/Front/Dynamic.php:

  • a book usually starts with a single version; while it's the case, it's accessible at /docs/framework/... URL.
  • multi-versioned book redirects /docs/framework/... to the latest book version docs/framework/0.13....
  • docs/framework/0.13 and docs/framework/0.13/ redirect to docs/framework/0.13/index.html
  • and more

Markdown Placeholders

In addition to the {{ toc }} placeholder, which collects all Markdown file headings and shows them as a table of contents, there is a new {{ child_pages }} placeholder in the documentation pages that lists all the child documentation pages and their abstracts.

Define your own placeholders by deriving the Placeholder class, specifying its name, what type of Markdown file it's applicable to, and whether it's required to start from a new line:

<?php

namespace Osm\Docs\Docs\Placeholder;

use Osm\Core\Attributes\Name;
use Osm\Data\Markdown\Attributes\In_;
use Osm\Data\Markdown\File;
use Osm\Data\Markdown\Placeholder;

#[Name('child_pages'), In_(Page::class)]
class ChildPages extends Placeholder
{
    public bool $starts_on_new_line = true;

    public function render(File $file): ?string
    {
        ...
    }
}

Other Changes

  • Better handling of an empty blog.
  • Apply dynamic traits using #[UseIn] attribute.

Related Releases

v0.3.0

23 Sep 18:19

Choose a tag to compare

New Visual Look

Yes, the website got the whole new visual look. Compare

Old Theme

with

New Theme

Better, huh?

From a technical perspective, this effort demonstrates that an Osm Framework-based website can have multiple themes that can be switched with a single change in the settings. For more details, compare the old and new themes, and check the theme setting, too.

New Content

New articles about Osm Framework have been written, and previous articles have been edited and revised:

Other Changes

  • The project migrated on Osm Framework ^0.12
  • A few bug have been fixed