All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
- Updated project to work with more recent version of nodejs (14.15.1) and Webpack
- Bumped version of webpack-dev-server to 3.1.11 and added webpack-cli@3.2.1
- Rendering support for templates in subdirectories of templates_dir
- Button to make a dashboard fullscreen
- [security] jQuery npm dependency is specified with
^3.0.0
, (7c9dff)
- Static asset serving for heroku by providing
:assets_path
, see: https://github.com/kittoframework/kitto/wiki/%5BDeployment%5D-Heroku#configure-assets
Kitto.Notifier.broadcast!/2
supports railroading.
Example:
job :ci_status, every: :minute do
# All the combinations below will do the expected thing and infer which
parameter is the topic and which is the message
CI.status(:awesome_project) |> broadcast!
CI.status(:awesome_project) |> broadcast!(:projects)
CI.status(:awesome_project) |> broadcast!(:projects)
broadcast!(:projects, CI.status(:awesome_project))
end
mix.kitto new <name>
check for valid name in OTP 20- Font loading in development, due to webpack-dev-server not setting CORS headers
- Add {edge, dev, app} kitto.new options (see: https://github.com/kittoframework/kitto/blob/v0.6.0/installer/lib/kitto_new.ex#L83)
- Sample distillery config and asset compilation plugin
- Sample
config/dev.exs
andconfig/prod.exs
Kitto.root
returnsApplication.app_dir
when:root
is set to:otp_app
- For newly scaffolded apps, assets are built in
priv/static
- Static assets are served from
priv/static
of application - Assets are forwarder to webpack live builder only when
:watch_assets?
is set to true - Elixir CodeReloader is disabled when
:reload_code?
is set to false
- Prevent DoS due to Atom creation for event topic subscription (5323717)
- Prevent XSS in 404 page (63570c0)
- Prevent directory traversal for dashboard templates (#103)
- Added missing package.json to mix.exs
- The core Kitto JavaScript library is now packaged (#39, #72) Read: upgrading-guide
-
Typo in jobs generated dashboard setting invalid invalid source for "average time took" widget
-
Compilation warnings for Elixir v1.4
-
Exponential back-off support for failing jobs (b20064a)
-
Widget generator task
mix kitto.gen.widget weather # Generates: # * widgets/weather/weather.js # * widgets/weather/weather.scss
-
Job generator task
mix kitto.gen.job weather # Generates: jobs/weather.exs
-
Dashboard generator task
mix kitto.gen.dashboard weather # Generates: dashboards/weather.html.eex
- Warning and danger widget colors are swapped in new generated dashboards
- Heroku static asset serving bug (see: #77)
- Kitto server not starting when asset watcher bin is missing
- Code Reloader failure in macOS, see (#65)
:command
option to job DSL
Example:
job :kitto_last_commit,
every: {5, :minutes},
command: "curl https://api.github.com/repos/kittoframework/kitto/commits\?page\=1\&per_page\=1"
Broadcasts JSON in the form { "exit_code": "an integer", "stdout": "a string" }
- Gist installer gist task (see: https://github.com/kittoframework/kitto/wiki/Widget-and-Job-Directory#install-widgetsjob-from-a-gist)
- Code reloading in development (see: https://github.com/kittoframework/kitto/wiki/Code-Reloading)
- Job Syntax Validation. When a job contains syntax errors, it is not loaded.
- SSE Events filtering (a7777618)
- [installer] Heroku deployment files (see: https://github.com/kittoframework/kitto/wiki/Deploying-to-Heroku)
- Widget data JSON API (6b8b476c)
- Remote dashboard reloading command (62bd4f90)
- Calls to
broadcast/1
inside a job are rewritten toKitto.Notifier.broadcast/2
- Installer checks for app name validity
- The graph type of the graph widget is now configurable (9eeaf5ff)
- Kitto :assets_host and :assets_port config settings for the dev asset server binding address
- Kitto :ip config setting the server binding ip
- Authentication to POST /widgets/:id, (#11)
- Scaffolded version of d3 is 3.5.17 gcc, python no longer required for
npm install
(acbda885)
- Fonts are no longer bundled in js but are served independently
- Font assets are now served in development
- Added missing favicon
- Job error output contains job definition and error locations
- Generated job files have .exs file extension
- data-resolution="1080" dashboard attribute (506c6d2)
- labelLength, valueLength props on list widget (566edb13)
- truncate JavaScript helper function
- GET /dashboards redirects to the default dashboard (07d8497f)
- GET / redirects to the default dashboard (99cdef2)
- Installer creates a sample jobs dashboard to monitor jobs
- Supervisors are supervised using Supervisor.Spec.supervisor/3
- Kitto.StatsServer which keeps stats about job runs
- A DSL to declare jobs. See: https://github.com/kittoframework/kitto#jobs
- Kitto.Time declares functions to handle time conversions
- mix kitto.server in :dev env watches assets and rebuilds then
- Job processes are named
- Kitto.Job.every(options, fun) api is removed
- Kitto.Job.new/1 to support streaming jobs without interval
- Job cache. The last broadcasted message of each job is cached and sent
upon connecting to
GET /events
- Supervise Notifier connections cache
- Supervise job processes
- Properly serve assets in development via Webpack
- Fix deprecation warning caused by :random.uniform
- gzipped assets are served in production
- Webpack plugin to produce gzipped assets
- Assets are served in production
- Cowboy/Plug are not started twice