Neopoligen Roadmap
Main
Clear output directory before every output to remove cruft
Copy over images
Copy over scripts
Set up mp3s directory like images with auto finding by name
Copy "files" directory into root directly instead of hoisting everything up a level
Make timestamps ymd instead of hms or at least deal with both, (maybe that already works?)
Refactor
TODO
no changing of paths. the system is setup so all directory structure is done on the source content file system
Post-Launch
TODO
Add refid and refids sections. Maybe those should be updated by the binder? Might conflict so probably a secondary tool for that
Setup redirects
Finish putting in all sections for neopoligin
Setup - - show
attributes for neopolitan elements (html, css, js)
Fix issue where you can't have lines on top of each other in JS/CSS code
Setup different page types in neopolitan
Add draft heading to template in neopolitan
Make checklists work
Make category capitalaztion not matter
Get todo lists working
Syntax highlighting
Setup so that auto-generated IDs for things like lists are based off a hash of the page so they don't update the page every time something is run. Goal is to make it easier to see what actually changed between pushes
Figure out how to handle sections that are unknown. Probably just dump the contents as paragraphs? Or, make them invisible?
setup so if there isn't text behind a tag, it doesn't eat the next one
Add file output details to binder
Build RSS sites via config. (e.g. everything or things of categories, or things with custom configs of types, categetories, dates, etc...)
Handle tags that span multiple lines
Make full allow list for nonce- words
Add a quotes section
Setup so code sections and results sections have a central wrapper so they can be displayed together
Add the ability to add a literl \n
in text that turns into a <br />
Figure out what to do for OpenGraph Images. Maybe setup so you can just drop it in the content directory and it'll line up properly. It there's not one there it can default back to a central one and pass params for things like cloudinary. Maybe setup in a template to start for the intial thing
Add startnote/endnote
Prevent writing out a directory if you accidentaly put one in instead of a full file path. Otherwise you won't be able to overwrite it to fix it without manually deleting the errant folder
Make sure only alphanumeric characters show up in the urls
Flip tag order so tag name is first
Setup linking by page id
Add show
attributes to css and script sections that output the text in code blocks
Add a -- groups
category that let you automatically add links to all the files in a group on the corresponding pages with the current page not linking to itself
Add the ability to have a link title that shows up on incomding links that's different for the title displayed on the page. This is so you can have templates that cover part of the name. For exampmle, in stills
the goal is just to have the name of the source but incoming links should say something like "Stills from the movie hackers" in the list of posts.
Setup to use code fences in list items
Include raw text in page data for things like showing raw code samples.
Setup the config section so it can be json or yaml or kdl or whatever
Move the attributes parsing from textarea to be global
Clear file hashes of files that are no longer in the mix to avoid a cases where you changes something back and it doesn't get picked up
Add a slug field? or should that just be the file path? probably that
Setup so there things start with a paragraph section if there's no section to start? Maybe not? Thinkging about test cases, but the parsers would need to know what section they are in in order to parse stuff. Like, you can't have content that's ouside of a section because, for example, you wouldn't know if it was in a code section or a start end code section
Add -- description
maybe for page metadata? Maybe that should just be the blurb? Or description would be plaintext?
Cache content parts for each file and use the caches if the file hasn't changed
Setup -- export
output files. This is more the mover than the engine, but it's something to document in terms of the overall functionalty
Fall back to a default template if the requested one isn't there.
Make -- start/endscript
so that dashing inside the script don't cause neo to freak out and think it's another section
Add startnote/endnote
Create an attribute for code blocks to cd
into a specific directory before running them
Make a -- highlights
section
Turn on HTML escaping for code blocks
Setup tabs sections with tabs/endtabs and individual tab section in between (or something like that)
Get images working
Have a single images directory that can have multiple sub directories. Match by filename first for any call. Also provide a way to match by the full subpath for times when their might otherwise be naming conflicts. When rending, warn if there's a name collision for images
Panic on a page if there is more than one id
Panic on a page if there is more than one title.
Add tabsets where the tabs house blocks of content. There should be a 'title' attribute that sets the name of the tab. maybe there's a starttabs/endtabs? that seems like it would make sense
Setup a cd attribute for code snippets to run them in a specific directory
Don't requrie file extensions for images (which makes them easier to copy on operating systems where clicking to rename doesn't select it)
Clean up image URLs
Download external images
Convert image calls from markdown/org-mode to neopolitan
Insure that the first title wins if there's more than one on the page
See about creating table of contents on pages from heading. Might be able to do it with basic sending. If not, figure out what needs to be sent
Make -- startWhatever/endWhatever
tags to allow nesting of anything
setup for multiple dashes for section starts for open/close tags
Move output of things like collections of lists to the content files maybe? not sure if that would make sense or not. Probably only if they would need to go in between content, but probably for the home page it would make sense
Setup error messages (e.g. if you have an opening << without cloging it
Delete content when it's removed
Look at this to see if it might help with auto reloading: https://github.com/mitsuhiko/minijinja/tree/main/minijinja-autoreload
Test all variants of attributes that have explicit options
Look at custom_syntax in minijinja for custom separators for a different look
Setup so you can define what stylesheets get used by a file by an array of names ( or default back to whatever is in the template if there isn't anything set) - should also be and additive version where you just append to what's on the template?
Assemble the style sheets into a single one?
Drop styles inline into the head of the doc?
Create secondary tool (prepneo) to migrate content into reference structure
Move all files. Not just neo files
Remove .
and '
from url slugs. (and check for anything else that's not a letter or number)
Next Steps
These are under strong consideration for the next steps
TODO
Add a caption
attribute to images.
Setup an alt
section (or something like that, that lets you write alt tags for inline images and then reference it so it's easier to write.
Figure out how to do both captions and alt text for images. Probably use the section text area for alt text then use an attribute for the caption. The idea is they won't need formatting and will be shorter
Make global reference with IDs so you don't have to repeat them
Allow extra dashing on section start lines for better visualization of nesting
Setup -PIPE_HEREclass: alfaPIPE_HERE
style markers for list items to apply styles to the li
Set up prepneo to only update files that change
Add the linkPIPE_HEREid:xxxxx
so links link up automatically
Add syntax highlighting with syntect
Setup to ignore lines with nothing but dashes in them so they can be used in the text files for visual separation without having any effect on the output
Setup file link lists so they can be done with multiple categories, types, and, dates in both and additive and subtractive manner. Probably a little JSON object would work. The subtractive stuff comes last to remove stuff as the last step.
Figure out what tables are going to look like. Maybe there's two versions. One where you don't need attributes per call and one that provides that?
Handle a third "other" state in todo lists ( e.g. [phase2]
)
Add a config section that let you pass arbitrary key/value pairs to the template rendering engine
Create category link lists
Create type link lists
Create global references so you can add multiple footnoes from a single source via a reference
Auto-generate category pages
Compress/Minify/TreeShake CSS as an option (see: https://cssnano.co/)
Review how OG images are handled
Send data to templates for OG tags
Switch to an allow list for url names
Follow Up
These are thing that'll probly happen
TODO
Setup process to configure redirects from one id to another one
Setup to automatically jump to whatever page is being update via a live reload
Build RSS feeds with weekly, etc... summaries
Pull alt-text from image metadata
Consider using this for moving list items down/over a level -+
. TODO would be go figure out how to do that with code blocks which shouldn't move over a level
Maybe inside lists there's a special set of sections for --+ startcode
and --+ startdiv
. Those two might be enough to get you what you need
For images, put alt text as an attribute and caption as the body undreneath because the caption can have other HTML in it
Switch to loading attributes in the body on parsting too. It doesn't have to be output. it just makes it avaialbe
Standardize the date format
Set up a way to show preview files without marking them as published or putting them on the site. Maybe that's making a 'preview' status becuase it would be up to a previous process to move them into a place where you could see them at all.
Auto commit the repo and deploy on changes via a config option to turn that feature on
Setup a directory specifically for binaries to use (e.g. beyond just the system stuff). Set that up as the first thing in the path when trying to run stuff. Goal would be to make something like "gallery" that would load in all the images from a directory of the same name in the same folder and then create json for them that goes to the widget templates. -> ext
Setup a server that can be used for localhost testing with live updates so you don't have to use browsersync.
Add ability to reference the code of one section inside a code block without having to duplicate the code.
Auto generate redirects files that watch for url changes for ids
Create a report page showing stats on the build (off by default unless you turn it on in the config)
Prettier style formatting
Add alt text to canvas
Maybe Never
This is a collection of brainstorming ideas. Most of them will probably never see the light of day.
TODO
Make a prettier style definition for spacing
Setup a config file to define what attributes can be used. Not sure if this is worth it or not, but it would allow for error checking.
An image browser that give you the filenames to copy paste into posts. Could have search too
Setup a bunch of things like Alpine, D3, P5, etc... so they can be turned on for a page with a config flag
Write up how to use ngrok and the other one to serve a site
A way to add blocks inside inline tags? Something like -- code/
that would let you then put the content of another block in it.
Generate lists of all references inside each category and create a page with just those references. Primary idea is for bookmarks, but would be useful across the board. Could also do one for every ref on the site.
If you run the command in an empty directory have it drop in all the default stuff
Redirect removed pages to the home page?
Generate 404 page with random or highlighted links on every generation
Tweak things to make it move faster
Consider pulling last updated values from a git repo?
Setup to do single file updates independently from full site updates