Releases: chiotis/faroscms
Releases · chiotis/faroscms
Release list
FarosCMS 0.1.55
- A block is one line that opens. The line has its small wireframe, number and name, the layout it uses, a Hidden mark, and the start of its text; on the right a new eye button hides or shows the block at once, then move up and down, add below, duplicate and remove. Cards are tighter and smaller everywhere
- Content and Design are apart. An open block shows its Content first, in compact fields two to a row. Its Design tab holds what every block shares: the layout (as buttons that show the choices), the background (as four colour swatches), spacing, the anchor and hiding the block. Choices of a few short words (columns, alignment, spacing) are a row of buttons instead of a menu
- Lists inside a block are one line per item (people, plans, steps, questions): the line shows its picture, number, title and the start of its text, opens to its fields, and has its own move and remove buttons; Expand all and Collapse all are at the head of the list, and a new item opens ready to fill in. An image field has a thumbnail, its address, Library and a clear button
- The block picker is filtered by kind: All, Openers, Content, Media, Showcase, Convert beside the search, with smaller cards and the layout and ready-made sections the same size. A block (or a theme's own) names its kind with
category:in itsblock.yaml - Nothing about what is saved changed: the same values go to the same fields. Tests: the unit test of the blocks checks the kinds, the blocks test checks what the editor is given and what the script draws, and the hero layouts test now looks at the custom fields tab itself (it had looked at the end of the page by accident). The full suite and CI were not run
FarosCMS 0.1.54
- The main content can be written visually, and is still saved as Markdown. Visual (the default) shows the text as it will look on the site, with a toolbar: a style menu (paragraph, headings 2 to 4, code block), bold, italic, strikethrough, code, link, lists, quote, image (library or address, with a description), table (with + Row and + Column), divider, undo and redo. Typing
##,-,1.or>at the start of a line makes a heading, list or quote; pasting from Word, Google Docs or a web page keeps bold, italic, headings, lists and links and drops the rest; pasting Markdown draws it. Markdown is the plain text with its buttons; the choice is remembered. If the visual editor cannot start, the Markdown is shown and nothing is lost - The file does not change under your hands. The server draws the Markdown block by block with the lines each block came from (
POST /admin/markdown-visual,VisualMarkdown); nothing is written until you type, and a block you did not touch is written back exactly as it was, so only what you changed is rewritten and the History shows that. Raw HTML is shown as an HTML box that is never run in the admin and is kept character for character, so embeds survive and the raw-HTML guard for editors still recognises them; underline and embeds are offered only to people who may write HTML - Strikethrough works on the site:
~~text~~is now drawn as struck text (the Strike button always wrote it) - The entry screen is rebuilt in the style of the other settings screens. The first tab is Content: a large title with the web address under it, the main content in a wide editor, and the excerpt, with a side card to publish (status, language, template, date, author, visibility) and the title area. The title shows a pill for draft or published beside the language. Media has a small preview next to the address of the image and its buttons; Taxonomies are choices you tick as chips; Custom Fields, Translations and History are compact rows; SEO shows how the entry will look in a search result as you type, and the sharing fields follow it
- Tests: a unit test of how the Markdown is drawn (
tests/unit/visual-markdown.php), an HTTP test of the screen, the endpoint, who may use it and what is saved (tests/http/editor_visual_test.py). The part of the editor that turns the page back into Markdown runs in the browser; it was checked by hand against 28 pieces of Markdown (headings, nested and loose lists, quotes, code, tables with alignment, escapes, shortcodes, raw HTML, links, images, definitions, Greek text) by writing each back and comparing what the server draws, and has no automatic test yet. The full suite and CI were not run
FarosCMS 0.1.53
- A part that says what needs attention, most serious first, each line with where to deal with it: a new version, storage nearly full, a system check that is not fine, no backup yet or one that is old or overdue, mail that could not be sent this week, a site that asks search engines to stay away, pages with no search description or the same title, links in content that still use an old address, addresses that were asked for and not found, drafts left alone for over 30 days, entries missing a language, no way of counting visits (or tracking code that is chosen but empty), and a site address that is not set. A site with nothing to say shows one calm line. Only six lines show; the rest open under Show N more. Each person sees only what they may deal with: an editor is told about drafts and languages, not about backups, mail or the system
- When the site's own analytics are on, a widget as wide as the page shows the last 90 days: visitors, page views, pages per visit, bounce rate and visit time with their change against the 90 days before, the chart, the pages most seen and where the visitors come from, how many are on the site now, and a link to the reports. With nothing counted yet it says how to see the first visit. It is the same chart as the reports (shared parts in
partials/analytics-parts.twig) - A tidier top: a greeting with a shortcut for each of the first types (+ New Page, + New Post…), and the figures as small tiles that open the screen they are about (content, form submissions of the last 7 days, storage with its bar, backups, system status)
- Drafts to finish: the newest drafts, how long each has been left (old ones are marked), with the number in all. Recent content has a row of the types with their counts. The recent activity, emails and system checks are compact rows; the storage bar is a tile of its own, where the users tile was
- 1 checks to review is now 1 check to review
- Tests: a new unit test for the list of things to watch and the counts that feed it (
tests/unit/dashboard.php), more checks in the dashboard unit test, and an HTTP test of the page for the super admin and for an editor, the drafts, the lines, and the widget with and without visits (tests/http/dashboard_test.py). The full suite and CI were not run
FarosCMS 0.1.52
- Admin > Media opens on thumbnails (it opened on the list); the list is one click away and is remembered for the visit. A file is a tile: its picture, name, size, date, and a dot that says whether it is used (Used in 2 places, which opens the pages, or Unused); a kind of file with no picture has an icon in its colour. On hover a tile has a checkbox, a button to copy its address and one to open it
- A click on a file opens its details in a window, instead of a form of its own under every file: a large preview, name and kind, its address with Copy and Open, the alt text and tags to edit, where it is used, and Delete this file (it still asks first, and names the places when the file is in use). The same window opens from the list. The page is much lighter and calmer, with no alt and tag boxes repeated for every file
- One bar to find files: the kinds (All, Image, Document…), a search, Any / In use / Unused with how many are unused, a tag list, and thumbnails or list. The filter panel and the Filter button are gone, and Clear filters appears when a filter is on. Under the files: how many are shown, Per page and the pages. A select all box sits above the files, and choosing files shows a bar to tag or delete them together (All N of this list applies it to the whole list)
- The upload line is tidier (a drop target with an icon, the chosen file names, tags and Upload) and the page is a lighter one: the script moved out of the template to
admin-media.js. Nothing about how files are stored, tagged or deleted changed - Tests: a new
tests/http/media_test.py(thumbnails by default, the tile, the details and what they carry, saving them, the list and its memory, search, tags and kinds, deleting from the details), the other media tests follow the new screen, and the unit test follows the new default view. The full suite and CI were not run
FarosCMS 0.1.51
- Admin > Redirects is rebuilt as compact rows. The four big figures are small tiles; the form to add a redirect is one line (the old address, an arrow, the new address with a pick of your pages, the type, a note, Add), and the same line is used to edit one (with Turned on and Cancel); Add many at once is a fold under it. Each redirect is a row instead of a table line: the old address, an arrow and the new one, chips for what is notable (Permanent or Temporary, Automatic or By hand, Off, a page that hides it, nothing at the new address, a loop, a chain, another website, links that still use the old address), how many visits and when the last was, and on the right Edit, a switch to turn it on or off and a bin to delete it. The filters (All, Never used, Turned off, and who made it) are links with counts and keep the search; there is one box to select every row of the page, and Delete selected appears with how many are chosen
- The Not found tab is rows too: the address, what it looks like, where visitors came from, how many times and when, Create redirect (the form starts filled in) and Ignore
- Nothing about what a redirect does changed. Tests: the redirects test checks the new rows, figures, form, filters and the editing form, and the links test follows the new chip. The full suite and CI were not run
FarosCMS 0.1.50
- Admin > Content types is a list of cards. Each type shows its icon, name and address, a one-line description, how many fields and entries it has, how its list looks, who defines it (the theme, the site, both) and, for the ready-made ones, a switch that turns it on or off; a type that is on has Entries and Edit. A new type is made from a small form that opens at the top. The big table is gone
- The editor of a type is compact. Names and a pointer to the layouts (Archive Layouts, Single Layouts) are in a narrow column; the fields are in rows instead of a table with eight columns: key (marked Theme when the theme defines it), label, kind, and the ways the field is used as chips (Filter for a select, Card, Page, Retired). A field you added also has a help text and, for a select, its options, shown only for that kind. A field you added can now be removed (the page said so, but there was no way to): its row is dimmed and Undo brings it back until the type is saved; the values already in content are kept. A row that was just added can be taken away at once, and a retired field is dimmed
- Fixed: saving a type no longer wipes the help text of a field that had one (the form did not carry it, so it was read as emptied); it has a box now
- Tests: a new
tests/http/content_types_test.py(the cards, the switch, a new type, a field with options and help, how it comes back, saving as it is, retiring and removing, a field from the theme, who may) and the sidebar test follows SEO in the menu. The full suite and CI were not run
FarosCMS 0.1.49
- Admin > Translations is rebuilt around how people translate. The language is picked from buttons that show how far each is translated (instead of a list and an Apply button); a search finds a key or a text as you type; filters show only what is Missing, still the same as the source language or Customized (each with its count) and an area list narrows it to one part of the site. The strings are grouped by area (Archive, Footer, Form…, which can be folded), and each row has the source text under its key with the box to type in beside it, so a long page of keys and badges becomes a compact list. A missing string has a Use Greek text link that puts the source in the box; a customized one has Back to the theme text (or Delete this string for one you added). What you changed is marked in the row and counted in the bar below, and leaving with changes that are not saved asks first. A string of your own is added from a box at the top, in its own area. Long texts get a box that grows. The strings and the way they are saved are unchanged (
custom/lang/<lang>.yaml) - Tests:
tests/unit/translations.php(areas, states, counts, progress of each language, customized and own strings) and a newtests/http/translations_test.py(the screen, the language, who may, a change that the site shows and its way back, missing strings, a string of your own, the log). The full suite and CI were not run
FarosCMS 0.1.48
- The reports no longer make the whole window scroll. The table that repeats the chart for screen readers was hidden by a class that does not clip a table, so its rows (a few hundred pixels of them) stretched the page below the admin and left an empty band when the window was scrolled. It is now inside a box that hides it. A test checks it
FarosCMS 0.1.47
- A new System > Analytics screen with a first choice: No tracking (the default), Your own tracking code or FarosCMS analytics. Your own code takes a Google tag or Tag Manager ID (
G-…,GT-…,AW-…,GTM-…, made into its code for you) and boxes for any other code (Plausible, Matomo, Meta Pixel…), one for the head and one for the start of the body; saving code needs the raw HTML permission, and a person who is signed in gets none of it unless the site chooses to count them - FarosCMS analytics count visits without cookies and without keeping an address. A 2 KB deferred script reports each page view with
sendBeaconto/_a/collect, and the clicks on links that leave the site, downloads, email and phone links (never the address or the number); a form that is sent is counted on the server. A visitor is a hash of the address, the browser and a secret made again every day, so it cannot be traced or matched with the next day. Robots, signed-in people, Do Not Track and Global Privacy Control, pages the site lists as ignored, reports from other sites and floods are not counted. Two days of rows are kept in the system database and every finished day is summed into small counts (so a site stays small however long reports are kept: 1, 2 or 5 years, or forever) - The reports: a period (today, yesterday, 7/30/90 days, 12 months, this or last month, two dates), visitors, page views, pages per visit, bounce rate and visit time with the change from the period before, a chart (an hour, a day or a month at a time, with the same numbers in a table for screen readers), lists of pages, entry pages, channels, sources, campaigns, devices, browsers, systems, countries, languages and goals (each exportable as CSV), and who is on the site now (refreshed every 30 seconds). A site that never opens the screen is unchanged
- New capability
analytics.manage(administrators; a custom role can have it). New tablesanalytics_hitsandanalytics_daily(part of the backups). Docs:docs/analytics.md. Theme 1.18.7 (the layout adds the tracking where the site chose it) - Tests:
tests/unit/analytics.php(the settings and the code they make, what a visit is made into and refused as, the store, a day summed and read back, the periods, totals, chart and lists) andtests/http/analytics_test.py(who may, each choice and what the pages get, what is counted and what is not, a form as a goal, the reports, CSV, who is on the site now, deleting what was counted). The full suite and CI were not run
FarosCMS 0.1.46
- A new Manage > SEO screen with six tabs, each saved on its own and each with a modern, condensed layout. Overview checks the site (open to search engines, address and https, tagline, sitemap, share image, verification, addresses not found) and every published entry in every language (no description, a description too short or too long, a title that is cut, titles and descriptions that two entries share, no picture to share, what is kept out of search), each with a link to its editor. Search appearance sets the title separator and format (
{title},{site},{tagline},{sep}), the home page's title and description, the default description, a title format and "No index" and "Sitemap" for every content type, and whether the search results and the term pages are kept out of search, with a live preview of the result (computer or phone). Social sets the default share image, the card on X, the X account and the Facebook app, with a preview of a shared link. Crawling & sitemap has the visibility switch for the whole site, large previews, the robots.txt paths (moved here from Settings > General), blocking the crawlers of AI products, and the sitemap options. Identity & schema says whether the site is an organization, a local business (address, price range) or a person, the type of a post, and whether breadcrumbs and the site search are offered. Verification takes the ownership codes of Google, Bing, Yandex, Pinterest, Baidu and Facebook (a pasted meta tag is reduced to its code) - What changes on the site (nothing, until something is set): the title of a page follows the format; descriptions fall back to the home page's or the default one; pages ask for large previews (
max-image-preview:large); the search results are kept out of search by default (turn it off in Search appearance); a site that asked to stay out closes robots.txt, saysnoindex, nofollowand has no sitemap; the sitemap leaves out entries with "No index" (it did not before), lists the term pages that have entries, can carry the main picture of each entry and can leave addresses out; robots.txt can block AI crawlers and does not name a sitemap that is off; structured data follows the identity (organization, local business or person), the type of a post and the breadcrumb and search choices - New capability
seo.manage(administrators; a custom role can have it). Settings > General no longer has the robots.txt box: it points to SEO, and the rules already saved are kept. Docs:docs/seo.md - Tests:
tests/unit/seo.php(the settings, the title, description and robots rules, the head, what each tab saves, the exclusions, robots.txt) andtests/http/seo_test.py(every tab, who may, the effect of each setting on the pages, the sitemap, robots.txt, structured data, the codes, the overview's findings); the robots, public-site and accessibility tests follow the new screen. The full suite and CI were not run