README.md in lookbook-3.0.0.alpha.1 vs README.md in lookbook-3.0.0.alpha.2

- old
+ new

@@ -4,68 +4,30 @@ ## Lookbook v3.0 [development branch] This branch contains a work-in-progress, exploratory, from-scratch rebuild of Lookbook, intended to form the basis of a future v3.0 release. -[Demo](#demo-site) ・ [Usage](#usage) ・ [Development](#development) ・ [Background & motivation](#v3-rebuild---background-and-motivation) ・ [Current status](#v3-rebuild---current-status) +[Demo](#demo-site) ・ [Documentation](#documentation) ・ [Development](#development) ![CI status](https://github.com/lookbook-hq/lookbook/actions/workflows/ci.yml/badge.svg?branch=v3) ## Demo site You can find a hosted version of the [demo/test app](#demo-app) here: https://v3-demo-app.lookbook.build/lookbook This pulls directly from the `v3` development branch and so may occasionally be broken. -## Usage +## Documentation -Lookbook v3 is currently under heavy development and **should not be considered stable**. +v3-specific documentation is still very much a work in progress. The pages below should provide enough information if you wish to install the latest alpha release and test out some of the new features. -However, intrepid individuals who are familiar with Lookbook and wish to kick the tyres or get a preview of the upcoming changes can install the Lookbook gem directly from the `v3` branch of this repository. +* [Installing/Upgrading](./docs/alpha/01_usage.md) +* [New features](./docs/alpha/02_new_features.md) +* [Background and motivation](./docs/alpha/03_motivation.md) +* [Development status](./docs/alpha/08_status.md) +* [Troubleshooting/Known issues](./docs/alpha/09_troubleshooting.md) -> Alternatively you can pull down the codebase and [run the included demo app](#demo-app) to see some of the new features in action. - -### Requirements - -* Ruby >= 3.0.0 -* Rails >= 6.1.0 - -### Installation - -Add Lookbook to the `development` group in your Gemfile: - -```rb -group :development do - gem "lookbook", github: "lookbook-hq/lookbook", branch: "v3" - gem "listen" # Required for 'live' UI updates when file changes are detected -end -``` - -Lookbook will automatically be mounted at `/lookbook` within your app when the server is started. - -> 🚨 Previously Lookbook required manual mounting in your app. This is **no longer the case**, so if trialing v3 in a project with an existing Lookbook install you must remove [the mounting code](https://lookbook.build/guide/installation#step-2) from your routes.rb file first. - -### Configuration - -The currently implemented v3 configuration options are not yet documented, but can be seen in the [config.rb](lib/lookbook/config.rb) file. - -> 🚨 If testing out the v3 branch on an existing Lookbook install you may see errors if setting v2.x config options that have not yet been re-implemented in v3. - -### Breaking changes - -Lookbook v3.0 will contain a number of breaking changes from the v2.x releases. - -The majority of these changes will be in the _extending_, _theming_ and _API_ areas, so heavily customised Lookbook installations may find upgrading a more involved process. As yet there is no documentation on the exact scope of these changes. - -In addition, until v3 development reaches beta release stage there are likely to be _unintentional breaking changes_ due to missing or partly-implemented features. - -For these reasons, it is recommended that anyone who wants to kick the tyres on the pre-alpha v3 codebase do so **on new projects** or **existing projects with simple, 'vanilla' Lookbook installs** to minimise the chance of running into issues. - -### Running in production - - Please don't do this. It's really not ready yet. - ## Development ### Demo app The Lookbook v3 codebase includes a runnable dummy/demo app for development and testing purposes. @@ -138,224 +100,9 @@ If you want to disable `Lookbook` logging, set ```rb Lookbook.logger = ::Logger.new('/dev/null') ``` - -## v3 rebuild - background and motivation - -The current Lookbook codebase has grown organically and haphazardly from a few custom ViewComponent preview templates into a standalone Rails Engine gem with support for previewing many different types of components and views. - -In order to provide a solid foundation for future development this v3 branch was created with aspirations to improve the quality of the Lookbook codebase, reduce the number of third party dependencies, fix long-standing issues that are hard to address in the current implementation -and explore building out new (and experimental) feature ideas. - -More concretely, a number of **key goals** are helping shape the development work: - -#### UI - -* Improve accessibilty and usability of the app (#17) -* Expose a better theming system using CSS variables (with light and dark modes out of the box) -* Replace ViewComponent dependency with bespoke component system for building the UI - -#### Previews - -* Add support for ActionMailer previews (#570) -* Implement customisable preview overview/documentation pages -* Fix compatability issues with partial/view template previews (#581, #555) -* Improve handling and logging of parser errors (#593) - -#### Preview embeds - -* Add more granualar security configuration options for embed iframes (#571) -* Implement `<lookbook-embed></lookbook-embed>` as a native web component - -#### Pages - -* Make it easier to customise the look and feel of pages -* Expand set of UI and path helpers available in pages - -#### Development/Testing - -* Streamline Lookbook development process - runnable test/demo/development app, simpler asset dev/build pipeline -* Improve test setup - switch to Minitest, run tests against demo app, better integration test coverage -* Make logging play nicer with standard Rails logging options and third party gems - -#### Other - -* Remove ActionCable requirement, use SSE for live UI updates in dev -* Improve error handling and compatability with `better_errors` etc (#528) -* Remove some of the madness from codebase 🙈 - -## v3 rebuild - Current status - -Lookbook v3 is currently in a pre-alpha stage and is under active, exploratory development. - -The 'todo' list below is intended to provide a _very rough_ overview of the current state of progress. **It is not exhaustive**. Checked off items may still be revisited/refactored/removed in the future without warning. - -**Emoji key:** - -* 🆕 - New feature in v3 -* 🚧 - In progress or implemented but incomplete -* 🧪 - Experimental feature/implementation - -### UI - -#### General - -* [x] Basic desktop UI implementation -* [x] Replace Tailwind with vanilla CSS -* [x] Bespoke component system to replace ViewComponent -* [x] Status bar 🆕 🚧 -* [x] Notifications for parser errors -* [x] SSE-based live UI updating 🧪 -* [x] Expand nav to current item when opening app -* [x] Don't fetch/render entire DOM on navigation (no need to re-render sidebar etc) -* [ ] Improve accessibilty (exact requirements tbd) -* [ ] Mobile/small screen layout optimisations -* [ ] Side-dockable preview inspector drawer -* [ ] Search fields 'clear' buttons -* [ ] Use custom icon sprite instead of inlined icons - -#### Code samples - -* [x] Syntax highlighting 🆕 🚧 🧪 -* [ ] Replace Shiki with something lighter (server-side?) -* [ ] Click to copy -* [ ] Line wrap toggle - -#### Theming/branding - -* [x] Light/dark mode themes + toggle 🆕 🚧 -* [x] Project links in header 🆕 -* [ ] Theme system based on CSS custom properties 🚧 -* [ ] Project logo customisation - -### Previews - -#### Preview types - -* [x] ViewComponent previews -* [x] Phlex previews -* [x] Partials/templates previews -* [x] ActionMailer previews 🆕 🧪 - -#### Tags/annotations - -* [x] Notes -* [x] `@label` -* [x] `@hidden` -* [x] `@param` -* [x] `@display` -* [x] `@!group ... @!endgroup` -* [x] `@id` 🆕 -* [x] `@priority` 🆕 -* [x] `@location/@logical_path` -* [ ] `@component/@renders` -* [ ] `@source` -* [ ] `@after_render` -* [ ] `@status/@wip` ? - -#### Dynamic params - -* [x] Text input -* [x] Textarea input -* [x] Select input -* [x] Checkbox input 🆕 -* [ ] Toggle input -* [ ] Color picker input -* [ ] Range input - -#### Display options - -* [x] Static display options -* [x] Dynamic display options - -#### Inspector - -* [x] Preview panel -* [x] Output panel -* [x] Usage panel (combination of old 'source' and 'notes' panels) -* [x] Metadata panel 🚧 🆕 🧪 -* [x] Params panel 🚧 -* [ ] Configurable breakpoints for quick preview viewport resizing -* [ ] Embed code dropdown -* [ ] Preview URL copy button -* [ ] Manual preview refresh button - -#### Other - -* [x] Grouped scenarios -* [x] Preview overview pages 🚧 🆕 -* [x] Custom preview controllers support -* [x] Custom preview layouts support -* [x] Preview parser error reporting -* [x] Render previews in parent app context to fix path helper issues -* [x] JSON endpoint -* [x] ActionView annotation stripping -* [ ] Option to specify order of preview directories in nav (i.e. non-alphabetical) -* [ ] Output transformation - -### Preview Embeds - -* [x] `<lookbook-embed>` implemented as HTML custom element -* [x] Internal embeds (within pages in Lookbook) -* [ ] External embeds (outside of Lookbook) -* [ ] Configurable frame ancestors - -### Pages - -* [x] Basic markdown + ERB pages system -* [x] YAML Frontmatter config -* [x] Landing page -* [ ] Tabbed pages -* [ ] Page layout and styling options 🚧 - -### Extending - -* [x] Custom inspector panels 🚧 -* [ ] Custom param inputs -* [ ] Custom tags -* [ ] Lifecycle hooks -* [ ] Global data store -* [ ] Ruby API - -### Development - -* [x] Replace Parcel with PostCSS + esbuild for compiling assets -* [x] Runnable, bundled demo app for development -* [x] Minitest test suite setup -* [x] Setup GH actions CI -* [ ] Comprehensive set of test components + previews 🚧 -* [ ] UI integration tests 🚧 -* [ ] Set up Ruby & Rails versions test matrix via Appraisal -* [ ] Release script (automate from GH?) - -### Internals - -* [x] Auto-mounting of Lookbook engine 🆕 -* [x] Remove ActionCable dependency, use SSE for triggering UI live updates 🆕 🧪 -* [x] File change detection system -* [x] Config options defined in Ruby and not YAML -* [x] Config options synced with ViewComponent where appropriate -* [x] UUID-based permalink endpoint 🆕 🧪 -* [x] Improved logger implementation -* [ ] Rationalise & document entity method names -* [ ] Make debug logging more consitent -* [ ] Improve parsing/tree building performance - -### Documentation - -* [ ] Switch to Nanoc for static docs building? -* [ ] Document new features in v3 -* [ ] Port and update existing docs to new docs site -* [ ] Automate config option documentation via YARD -* [ ] Automate API docs via YARD -* [ ] Set up automated build & deploy process for docs - -### Other/Ideas/Maybe - -* [ ] CLI tool -* [ ] JSON API ## License The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT). \ No newline at end of file