Latest release version: REL3.2.1 Developing version: DEV3.2.2
-
Fix a bug that
PageDeployer
throws an ErrorENOENT
and not re-render page in server mode. -
Fix a bug that
PostDeployer
not render related page when layout changed in server mode. -
Add log for enter server.
-
Fix a bug that
Console
inserts a whitespace before customized text unexpectedly. -
Re-balanced log colors.
Switch Marked
to Markdown it
.
Split out Markdown renderer module. See fewu-renderer-markdown
Add Live Server support. While use fewu --server <port=3000>
to call fewu
, it will open a server in <port>
. Server will watch the changes in theme/<name>/
, and rerender files when it is nessary.
When use this feature on non-win32 platforms, it will write file to /tmp/io.fewu.server/
instead of public_dir
configured in config.yaml to reduce file operations.
Add compiler for Sass
files. The sass
file in themes' source
folder will be compiled into css
.
Renderer
now supports EventEmitter
.
Deployer
, Renderer
, ObjectParser
now can be accessed through Context
.
Fix a bug where SourceDeployer
causes error when public
directory is not existed at start.
All codes (except some utilities) are re-written. Compatibility for version REL2.0.0 is still kept, but will remove in further versions.
- Argv(MTS)
- Console(MTS)
- fn/dynamicImport(MJS)
- ExtendedFS(MTS)
- GObject(MJS)
- I18n(Deprecated,used in v2,MJS)
- Markdown(Deprecated, used in v2,MJS)
- NewPromise(Deprecated, used in v2,MTS)
- StandaloneApp(Deprecated, used in v2,MTS)
- TemplateString(Deprecated, used in v2,MJS)
- Text(MTS)
- Markdown(Builtin,MTS)
- Pug(Builtin,MTS)
- JSON(Builtin,MTS)
- Yaml(Builtin,MTS)
- __: I18n support helper
- url_for: URL helper
- full_url_for: URL helper
- css: HTML helper
- js: HTML helper
- _container_of: Logic helper
- _dir_of: Logic helper
- moment: Logic helper
TypeScript & (Partial) Hexo compatibility.
markdown:markedExtras
renamed togenerator/allow-custom-marked-extension
.markdown:noHeaderId
renamed togenerator/markdown-no-header-id
.fewu/path/noSuffix
renamed topath/no-md-suffix
.
generator/allow-custom-marked-extension
: Specific tricks for some marked extensions that does not follow the common usage. (likemarked-admonition-extension
)generator/leave-no-h1
: Do not automatically add heading to posts.generator/copy-next-image
: Get images referenced in post and put it into generated folder. (Only works with images next to post.md)
- Remove feature
markdown:foreword/nullOnDefault
. - Remove feature
markdown:foreword/warn
. - Remove feature
fewu:path/autoRoot
, it's now a built-in fallback whengeneral.site-relative-root
is not configured (We recommend auto-configure, chich needs to fillwebsite.url
with website url (like0xarch.github.io
)).
The main entrance has rebuilt to be more flexible
- Rebuild
fewu --new
with human-friendly argument parser. - Rebuild
fewu --init
.
Argv
: Provides parsed program arguments. Replacinggopt
in#core/run
.Console
: Replacesinfo,info.red,warn
in#core/run
Markdown
: Provides a simple interface to interact with marked (or other parser may be added).NewPromise
: Add some Promise features that are not supported in Node.js 20.Text
: Replaces#core/text_process
.TemplateString
: Replaces#core/gstring
. (FormerlyGString
, but with some tweaks)GObject
: Moved out ofcore
.I18n
: Abstracted i18n utility.
- New
AbstractPost
class, which stores type declarations. (Do not use TypeScript) - New
AbstractExposedApi
class. - New
PostIdentifier
class, which replacesContainer
class. - New
PostIdentifierCollection
class. - Rebuild
Database
. - Rebuild
Post
. #core/builder
now usesfs/promises
.- use
${name}.html
instead of${name}/index.html
for posts. - Built-in module
search
now use formatted log. - Fixed a bug that all files under post directory are recognized as a post file.
- The old
database
ordb
API has been removed. Compatibility ofdb.config
will be kept until 2.1.0. - Use
split
foreach
instead ofcycling
varias
in working (ascycling
andvarias
are hard to understand)
NOTE that
foreach
will beeach
in page template. THIS IS UNSTABLE CHANGE.
- Optional Features:
fewu:path/local/noSuffix
: Fewu removes suffix in generated directries.markdown:markedExtras
: Allow user to dynamically load marked extensions module to fit their posts.
- Rebuild search module.
fewu:path/flat
generates wrong path.
- Optional Features:
fewu:path/url/autoRoot
: Fewu automatically detects website root for file references.markdown:HTMLMinifier
: Fewu uses HTMLMinifier to reduce generated file size. (default before, manual now)markdown:noHeaderId
: Fewu will disable header id generation. (default before, manual now)
- Preature Database API
db.$<>
- Util
dynamicImport
- Deprecated API on class
Post
:Post<>.paths
.
- Feature
fewu:path/flat
(before:flatPath
) now do: Flattenread/yyyy/mm/dd/POST_NAME.md
toread:yyyy-mm-dd:POST_NAME.md
. - Builder will now ignore fail builds and log failure in console. (Behavior before:
throw
and STOP ). - Section
site_url
in Config moved towebsite.URL
orwebsite.url
.
- Fixed incorrect file mode of most files (755 -> 644).
- Fixed some bugs in builtin modules
- Easier construction for
FuzzyDate
. - new "enabledFeatures[]" section in configuration, this will collect some separate config keys.
- flatPath is now a
Feature
, which need to enable manually. [This has been removed since 1.2.4]
- Fixed multi posts in one tag/category.
- Fixed unsorted posts in tag/category.
- Removed
descriptive_class
, splitTag
... to separate files.
License
propertytype
moved to public- fix bug
License
could not use Creative Commons PUBLIC_DIRECTORY
is now avaiable in modules (global mounted)- fix bug in builtin module extra_files
- Removed
FEWU_INSIDER_VERSION
- Changed Info format when skipping
- Update
processTemplate
withasync
- Fix bug that Reader could not sort ports correctly.
text_process.js
now exports a defaultTEXT
object.GObject.deleteEscapingChar
is now moved totext_process
asTEXT.deleteEscapingCharacters
- Update CONSTANT.OS_UNAME
- Adjusted function names under
Layout
class
The old functions are marked as deprecated and will be removed soon
-
Adjusted function names in the
text_process.js
-
Update document: GString
-
shell script
clean-workspace
andrun-test
clean-workspace
will remove files created by fewu in current dir.run-test
will mkdir fewu-test in $HOME,automatically download theme, create post and generate.
-
new now supports tags, category and title as arguments in command line.
-
help rewrited
WARN that this is undone and do have many bugs !
These changes are usually compatible with last minor version, and the old will be removed after about 3 minor versions. Rename theme layout option name, and usesGString
for string calculate.cycling
->use_split
varias
->use_foreach
option.cycling
->option.@split
option.varias
->option.@foreach
NOTE that option.@split and option.@foreach is invalid in JS. Here is used only for convenient.
the to
uses GString
format. And older Template String format is compatible for a while
For GString, see document.
- Fix bug which
GString
andCollection
not imported - Fix typo bug in built-in module extra-files
- Fix bug which Category and Tag contains
number[][]
- wrong comma in result from built-in module
rss
pesky ','
- Module Standards v1
There are some changes in documents
- New License type: Reprint (Experimental)
DISABLED BY DEFAULT BECAUSE IT EXPOSES DIFFERENT FUNCTIONS
- The operation new post is now supported auto rename
- ES2023 porting
Why do we need to write such old codes?
- Post path is now calculated by file path, not title.
It aims to fix some problems with the same title, through it's not very common. This might cause some trouble, be careful.
- Plugin now uses ESM
Need to use '.mjs' extname.
- Custom modules needs to set suffix to '.mjs' for node to import
Forgot to mention this in REL1.0.0
- Rewrite some codes
"SOME"
- Removed English documents(only Theme kept)
Who needs those garbage?
Post.path()
is removed. This property will be the same asPost.paths.<Property>
, which will be renamed.
These functions or properties will be removed in 1.2.0 New features will be available in 1.1.x
Post<>.old
will be removed. Use!!Post<>.property?.old
instead.Post<>.ECMA262Date
will be removed. This it not necessary.License.is_cc_license
(renamed:License.isCreativeCommons
)Post<>.isTopped
(renamed:Post<>.top
)Post<>.datz
(renamed:Post<>.fuzzyDate
)
Release. RENAME Fewu is now the project name!
- Could not load modules when developing fewu.
This is a fake version for fix critical bugs in 2.3.0
database
sectiontheme
has now changed to be an object withconfig
(beforedb.theme
)dirs
(beforedb.dirs.theme
)name
variables
(beforedb.theme[default]
)- Theme's configuration file has now changed a lot. See documentation.
- Nexo source code is now moved to _src
- [u] BID
- [u] Theme
- Move all built-in assets into
_assets
directory
- Support for quickly start a post, run
npm run new
in terminal you'll get a new .md in theposts
directory. - Support for terminal IMPORTANT, you can run
npm link
then usefewu
in your terminal for all functions! NOTE THAT you can also usenpm run
and so on when you clonedfewu
gopt
got wrong arguments
Map
is going to be used as the default data type ofsite.categories
,site.tags
andID
, while now Nexo provides anIDMap
export that is experimentalPost
now has a new propertyparsed
for storing parsed content/foreword
html-minifier
is used to compress html file- a bridge file is used for import structures and class
- BID
- Theme
GObject.mix
is now recursive.- FULL support of
GString
- alias class from
descriptive_class
tostruct
- moved
src/modules
directory to_modules
- you can now customize the foreword when a post has no foreword.
- node imports alias (
#core
#db
#struct
) - docs for Module Standards v1
- The first stable version will be s1.0.0, as the beta version b1.1.0, and fewu version n2.3.0
- config.json is now generated automatically by init module
- rerecongized codes
i18n
is merged into Coreinit
is merged into Coreextra_files
separated as a module namedextra_files
- some part codes in app.js is divided as part.js
GString
class (struct) (Experimental,WIP)- advanced module support is now experimental
- Module Standards v1
- wrong order in
site.categories
andsite.tags
init
overrides files
lib/mod.js
(moved tocore/run
)lib/class.post.js
(Post
moved tocore/descriptive_class
)
CODE[0]
is nowFED
- {
Tag
,Category
}.included_article is now renamed to included
- structure tree, better organizing
init
module completed (call usingnpm run init
)text_process.js
for processing text *hahadescriptive_class.js
for descriptive class likeCategory
Tag
License
Datz
- i18n fallback file support (
i18n.default.json
)
classes.js
(GARBAGE)file_class.js
(GARBAGE)
- pre sorted for posts
- flatter builtin icon
Datz.compareWith
now can be used as acompareFn
(strongly not recommend to useDatz.compareWith
outsideArray.sort
unless you know what you are exactly doing!)- BID now starts with
1
CONSTANTS
now can be read as constant.
- Unexpected error while scanning objects without
option
attribute in layout section.
The same as 2.2.4-2 , this is a bump tag where version-rel and version-fewu separated.
- old codes
builder
section in databaseNULL_OBJECT
function to create an object that it's prototype = null
- i18n number matching bug
- Automatically adds H1 tag in post
- build mode for theme to better organize (release/devel)
- whitespace in (parsed) post title
undefined
and too much whitespace in searchStrings.json
- encoded string for path now (not id as before, * might change sometime)
fewu.logo
back to function, and removes multiple stylesheetsPost.paths.[website/local]
for static call- operation only update theme will not read post now
code
andnode
section incore/constants
- Removed
by
section insearchStrings.json
to increase search speed.
- basic database for storing
- widely using of
GObject
- CRITICAL OLD API (v1) SUPPORT
core/run
(gopt support)CONSTANTS
now merged in Provisioncore/reader
(renamelib/post
)- new design for default
Arch
theme
- rename
SITEMAP
to lower casesitemap
- move
PostSortingFunction
to classPost
as a static method.
lib/post
(renamed ascore/reader
)modules/classes
(deprecated GARBAGE code)modules/filesys
(deprecated GARBAGE code)modules/hug
(deprecated GARBAGE code, replaced bycore/run
)modules/-r-/v2
(deprecated, unimportant, unused feature)
used_tags
andused_categories
insite
for tag/category name as array
- wrong cycling times
- '~' bug
- wrong tags
- last modified date support
- CRITICAL GARBAGE CODE build pages
Configuration
class (useCollection
instead)
Collection
classLayout
classCache
class (replaceCachable
)Correspond
(struct) classGObject
(unused, for developing)
- short path is now default
- renamed functions in sitemap module
- get_property now supports array as the second argument
- update rss module for new feature
- update sitemap module for new feature
- use new
Collection
for all functions and remove old codes [ 2.2.3] - move old builder to new place [ 2.2.3]
- constants for short code (unused)
- config template for init and auto using (unused)
- EXPERIMENTAL short path (exShortPath)
property
property for Post class to store post info that not as default (e.g. highlight)
- wrong sort order
path
function for Post class (websitePath
=>path('website')
,publicFilePath
=>path('local')
)
- app: better performance for API collector
- sitemap: fixed priority
- app: garbage API(from v1) in v2
- CRITICAL foreword is now a separate part as description [Wsince 2.0.1]
- CRITICAL-THEME use copy.@posts instead of rawPosts.copy{,to}, see the default Arch theme.
- Foreword length check (25 ~ 200)
Cachable
class for storing results.
- Cleared CHANGLOG.md
- new
i18n
function (compatible with older for now) - new function to get parsed content(foreword,...) of post(compatible with older for now)
v=>v!=''
closure asnotFake
warn
function- basic post keyword support
- update README.md
- use encodeURI for sitemap generation(txt, xml)
- white background of fewu logo
- 9001 error
- remove deprecated codes
- cleaner renderer
- API v3
- sortArticle in Provision V2
- rename sources to resources
- removed useless console.log
- [since 2.0.1] Sitemap(Xml) support
- [since 2.0.1, continuing] Page description support
- [since 2.0.1, experimental, working] RSS support
- Error during parsing EJS template ERROR "Could not find the include file" [Marked as deprecated]
- Sitemap(txt) support
- [Theme] PUG support
- Word counting for posts
- Category & Tag
- No Nexo Bug [Since 0.0.-1]
- Hug (With bugs, and no actual meaning) use LibMod now.
- Hail(Low performance) use native fs now.