Phenomic Versions Save

DEPRECATED. Please use Next.js instead.

v1.0.0

5 years ago

Without noize, 1.0.0 is out.

? Reason User Change

v1.0.0-beta.11

5 years ago

? Fixes

v1.0.0-beta.10

5 years ago

v1.0.0-beta.6

5 years ago

Erratum

Check out beta.7 which includes bugfixes related to this release.

? Breaking change

  • Upgrade from babel 6 to babel 7 (+fixup). ⚠️ If you were using phenomic without any custom babel config, this update should be transparent for you.
  • Reason users: you will night to replace *.js by *.bs.js for some files Eg: import { createContainer } from "@phenomic/preset-react-app/lib/es6/src/phenomicPresetReactApp.js"; to import { createContainer } from "@phenomic/preset-react-app/lib/es6/src/phenomicPresetReactApp.bs.js";

? Fixes

? Improvements

? Internal

  • Refactoring of webpack bundler plugin in order to prepare future SSR rendering enabled in dev mode
  • Reason code (generated as javascript) used in the core codebase (experimental)
  • Multiple other minors improvements...

v1.0.0-beta.5

5 years ago

? We upgraded webpack from v3 to v4.

So this release might be a breaking change if you use a custom webpack. If you use webpack without custom config, you should not have any problem. Note that you could still use v3 webpack plugin if you don’t rely on the react-app preset and specifying the webpack beta.3 plugin version.

⚠️ We removed react-hot-loader

We decided to do, like CRA & Next.js, to not include react-hot-loader for now. Previous version of phenomic could create infinite loop in case of an error in a react component…. It’s not stable enough & it’s not going to be better in the future, when React hooks will land as a stable feature.


Beside this small update, we are working on a react + reason + graphql example ? and also a huge improvement on the content API!

v1.0.0-beta.4

5 years ago

This is a minor beta that only brings the following:

  • Add PHENOMIC_APP_BASEURL env variable (entire baseUrl option as a string) (in 3799fa8 by @MoOx)
  • @phenomic/plugin-rss-feed: fail with a http 500 if rss feed fail to be generated (in 26c8d95 by @MoOx)
  • @phenomic/plugin-bundler-webpack: Make root for App.js configurable (in 78ecd47 by @airtonix)
  • @phenomic/plugin-renderer-react: fix issues with class attributes (coming from markdown) (in 927aea2 by @MoOx)
  • Internal refactoring by @MoOx

Website has been a WIP for a few month now, mostly due to a break @MoOx took from his keyboard.

Stable 1.0.0 is missing a change for the database engine that is currently causing performance issues during development as soon as you get a hundred of pages. All efforts are currently on this improvement.

For Reason users

v1.0.0-beta.3

6 years ago

Hopefully, the last beta

We are very close to our final and stable release for v1. Why we didn't ship this version already? Some people like to move fast & break things. But we wanted to have a correct design for the v1 so future majors version won't break too much things.

What we did for v0.x was an experiment and we learned a lot of things by running this in production on moderate websites. We have spent a lot of brain energy to make a scalable & flexible solution with a small API surface.

We have designed an architecture that follow React way of thinking, by offering a centralized lifecycle. With that in mind we have adjusted our goal and make React & Webpack, 2 core pieces of v0.x, first class plugins in our v1.x. This opens up lot of nice things to support React or Webpack alternatives.

Documentation is a work in progress ?

First thing to celebrate, we started to work on our website! You can now find documentation for the core and the react preset tutorial! More things will follow!

2 small breaking changes

Below you will find 2 small breaking changes, very easy to adjust (that will probably consist of adding content in front of all your current existing query to our content api or to adjust your configuration).

? @phenomic/core: content options now supports multiples entries and globs (+ fixup) by @MoOx

All your previous queries won't work with this breaking change but don't worry, it's very easy to adjust your code.

We are sorry to add a breaking change now, but it's for the better.

Solution 1 (recommended): You will have to add "content/" in front of all your path in your queries. Why? It's for being more explicit and also be able to support multiples sources (multiples folders) to avoid duplicate names without a weird configuration. The upgrade is pretty easy.

For example

const HomeContainer = withPhenomicApi(Home, props => ({
  posts: query({
    path: "posts"
  })
}));

Will become

const HomeContainer = withPhenomicApi(Home, props => ({
  posts: query({
    path: "content/posts"
  })
}));

Solution 2 (for lazy people): You can keep the previous behavior very easily by using this value for content option: "": {root: "content", globs: ["**/*"]}. You can throw that in your package.json in a phenomic like this:

  "phenomic": {
    "content": {
      "": {root: "content", globs: ["**/*"]}
    },
    "presets": ["@phenomic/preset-react-app"]
  }

? @phenomic/plugin-rss-feed: now lookup in content/posts by default. by @MoOx

To get previous behavior back, just use this configuration (adjust to match yours):

  "phenomic": {
    "presets": ["@phenomic/preset-react-app"],
    "plugins": [
      [
        "@phenomic/plugin-rss-feed",
        {
          "feeds": {
            "feed.xml": {
              "query": {
                "path": "content/posts"
              }
            }
          }
        }
      ]
    ]
  },

Bugfixes

? @phenomic/plugin-renderer-react: Handle scroll like it should (to top or to the hash if any) by @MoOx

?phenomic/plugin-collector-files: correctly clean extensions from filename for id (not only md|json but all extensions by the plugin loaded at runtime) by @MoOx

Tons of small improvements

As we started to actively working on our documentation, we have added tons of small improvements.

@phenomic/plugin-renderer-react: add render + callback option to createApp/renderApp for custom rendering by @MoOx

This commit allows you to use a custom render() function. This way to render the app is required by some solutions that needs a custom wrapper for styles pre-rendering (eg: react-native-web).

? examples/react-native-web-app by @MoOx

@phenomic/core: add socketPort option (and switch to 3334 since 1415 can be used by dbstar) by @MoOx

@phenomic/core: Improve error shown from database access by @MoOx

@phenomic/core: Improve error message from database not found entry by @MoOx

? Add a new helper to extract meta from body nodes (title + headings list) (+ fixup) by @MoOx

This helper is used in @phenomic/plugin-transform-markdown and @phenomic/plugin-transform-asciidoc to automatically add a title meta even if you don't have frontmatter. Pretty cool for files that you don't control. This helper also returns a list of headings in your content, which is pretty convenient to make a table of content at the top of you page or in a sidebar.

@phenomic/plugin-transform-markdown: add title fallback extracted from markdown body if no title is in the frontmatter + add a list of markdown headings (+ fixup) by @MoOx

@phenomic/plugin-transform-asciidoc: add title fallback extracted from markdown body if no title is in the frontmatter + add a list of markdown headings (+ fixup) by @MoOx

@phenomic/plugin-transform-json: add title fallback by @MoOx

@phenomic/core: better display in case of error during start/build by @MoOx

@phenomic/core: add options to sort db results by @MoOx

This feature is pretty awesome and allows you to add custom order to your query. As a good example, we wanted to sort our showcase with the following algorithm:

  • Sites with a flag curated first
  • Sites with many tags
  • Sites with tags "blog" at the end.

In order to do so, we have introduced this option and we hope you will like it. You can check out the documentation for db.sortFunctions and take a look to the one we use for the showcase.

@phenomic/cli: add preview command by @MoOx

@phenomic/core: add preview command to build & serve results by @MoOx

Now you can run

phenomic preview

This will build and serve the website, to mimic production (as you will have the pre-rendered files and the client side reconciliation).