Closes: #17991
Changes:
- Updated the logic in the create-issues-from-todays-rituals script that
determines if an issue for a ritual should be created.
Closes: #17991
Changes:
- Updated the create-issues-for-todays-rituals script to calculate the
number of miliseconds until ritual issues should be created in whole
milliseconds.
Changes:
- Deleted `schema/fleet_schema.json` (This file was previously used when
merging the osquery schema with Fleet's overrides before we switched to
using YAML override files).
- Updated the description of the `generate-merged-schema` script.
Changes:
- Updated the `build-static-content` script to remove support for the
`requires_user_context` column attribute
- Updated `get-extended-osquery-schema` to not set a
`requires_user_context` value in the merged schema json.
- Regenerated `schema/osquery_fleet_schema.json`
Related to: #17787
Changes:
- Updated build-static-content not to hide columns of tables with
`hidden: true`, and instead add a note about the column not being
returned in results from a `SELECT * FROM [table]` query.
Note: These columns will still be hidden in the Fleet UI. This PR only
changes the table documentation on fleetdm.com/tables
Related to: #17699
Changes:
- Updated the `send-data-to-vanta` script to retry requests to Vanta's
`https://api.vanta.com/oauth/token` API endpoint that return a `504`
response.
Related to: #17727
Changes:
- Updated the `build-static-content` script to sort the columns of
tables alphabetically by the name of the column when the pages for
fleetdm.com/tables are generated.
Closes: #17582
Changes:
- Updated the `build-static-content` script to not generate HTML pages
for files in subfolders that are prefixed with an underscore
- Renamed the `docs/Deploy/kubernetes` folder »
`docs/Deploy/_kubernetes`
- Documented this new behavior on the communications page of the
handbook.
- Updated commands on the Deploy Fleet on Kubernetes page.
---------
Co-authored-by: Mike McNeil <mikermcneil@users.noreply.github.com>
Closes: #17667
Changes:
- Updated `build-static-content` to skip pages in the docs/contributing
folder when Markdown pages are converted to HTML partials.
Closes: #17678
Changes:
- Updated the `create-issues-from-todays-rituals` to create GH issues
using rituals from website's configuration instead of the ritual.yml
files in the `handbook/` folder
- Moved `yaml` to `devDependencies` in `webiste/package.json`
Changes:
- Chained a `.retry()` onto the post request that refreshes
authorization tokens for Vanta connections, that will retry requests
that return a `503 service unavailable` response.
Closes: #16797
Changes:
- Updated `build-static-content` to throw an error if an extensionless
Markdown link containing a hash link is found.
- Fixed two broken relative links in the contributing documentation
Closes: #16931Closes: #16935
Changes:
- Updated the `send-aggregated-metrics-to-datadog` script to:
- Not filter out statistics from Fleet instances reporting non-4.x.x
versions of Fleet when aggregating metrics about Fleet Premium instances
- Combine the reported hosts for all Fleet instances reporting the same
organization (Premium instances only)
Changes:
- Updated the website's build script to not validate
`/handbook./company/open-positions.yml` if it is empty
- Updated the open-positions component to have an empty state
- commented out the open position in open-postions.yml
Related to: #16458
Changes:
- Updated the receive-usage-analytics webhook not to send metrics to
Datadog.
- Updated the send-aggregated-metrics-to-datadog script to build
aggregated metrics from the JSON values reported by Fleet instances
(stored errors, host count by orbit version, host count by osquery
version, host count by operating system), and updated the script to not
report metrics from Fleet instances using the development premium
license key.
Closes: #14246
Changes:
- Added a new key to the rituals YAML configuration: `autoIssue.repo`.
This value should be a string that is the name of the GH repo that
issues for the ritual should be created in.
- Updated ritual validation in `build-static-content`.
- Added support for the "monthly" ritual frequency for rituals with an
`autoIssue` value.
- Updated the `create-issues-for-todays-rituals` script to create GitHub
issues for rituals.
---------
Co-authored-by: Mike McNeil <mikermcneil@users.noreply.github.com>
Co-authored-by: Sam Pfluger <108141731+Sampfluger88@users.noreply.github.com>
Closes: #16018
Changes:
- Updated the testimonial configuration in testimonial.yml to add two
new required values:
- `quoteAuthorProfileImageFilename` - The filename of the quote author's
LinkedIn profile picture in the website's `assets/images/` folder
- `productCategories`: An array of product categories that this quote is
relevant to
- Added new quotes to testimonials.yml
- Updated the testimonial validation in build-static-content to throw an
error if a testimonial is missing one of the new required values
- Updated the `<scrollable-tweets> component to match the latest
wireframes
- Updated the controllers for the product category landing pages to
filter testimonials by product category and sort them by the order
specified in [the
wireframes](https://www.figma.com/file/3he8e72251IEnF6dBafKq1/%F0%9F%9A%A7-fleetdm.com-(scratchpad)?type=design&node-id=9369-4714&mode=dev)
Related to: https://github.com/fleetdm/fleet/issues/15178
Changes:
- Added a new script: `send-metrics-to-datadog`, a script that
aggregates the latest usage statistics from Fleet instances reported in
the past week, and sends them to Datadog.
Changes:
- Added a new (required) key to pricing-features-table.yml:
`pricingTableCategories` - an array of categories that will be used to
categorize the feature on the pricing page.
- Updated build-static-content to validate pricingTableCategories values
- Updated the pricing page features table to be categorized by the
pricingTableCategories value of features.
- Updated the names of tiers on the pricing features table to match the
cards above the table ("Free" » "Community")
https://github.com/fleetdm/confidential/issues/4533
Changes:
- Added `/handbook/company/testimonials.yml`.
- Updated `build-static-content` to validate each item in
`testimonials.yml` and to add each item to
`sails.config.builtStaticContent.testimonials`
- Updated the scrollable tweets component to build cards of quotes from
`sails.config.builtStaticContent.testimonials`.
- Updated view-actions for pages where the `<scrollable-tweets>`
component is being used to throw an error if the testimonials
configuration is missing and to send the testimonials config to the
page.
- Updated pages where `<scrollable-tweets>` was being used.
- Updated the landing page generator to create new view-actions that
send the testimonials configuration to generated pages and updated the
template .ejs file.
Closes: #14847
Changes:
- Added two new pages:
- `/try-fleet/explore-data`: A page where users can select a host, and
be taken to a page where they can see query results for that host.
- `try-fleet/explore-data/:platformName/:tableName`: A page where users
can see the contents of osquery tables on hosts.
- The view-action for this page will:
- Redirect unauthenticated users to the /try-fleet/login page. (With a
query parameter that will tell the login/register pages to redirect
users back to this page)
- Get information for hosts on a specified team.
- Build a filtered list of osquery tables that are compatible with the
host and have queries that will run on a specified host.
- Get the latest query results for a specified query/osquery table for
the specified host, and reorder the results to match the order of the
columns in the osquery schema.
- Updated build-static-content to add information about osquery tables
for the /explore-data pages to
`sails.config.builtStaticContent.osqueryTables`.
- Added 5 new config variables:
- `sails.config.custom.fleetBaseUrlForQueryReports`: The URL of the
Fleet instance used for the /explore-data pages
- `sails.config.custom.fleetTokenForQueryReports`: An API token for the
Fleet instance used for the /explore-data pages
- `sails.config.custom.teamApidForQueryReports`: the API ID of the team
that the hosts listed on the explore-data page are in.
- `sails.config.custom.queryIdsByTableName`: A dictionary containing
key:value pairs where each key is the name of an osquery table, and the
value is the API ID of the query that gets results for this table in a
Fleet instance. This is stored in the custom configuration to make it
easily editable (If we ever need to add or remove queries
- `sails.config.custom.hostIdsByHostPlatform`: A dictionary containing
key:value pairs where each key is a type of operating system, and the
value is the API ID of a Host.
- Updated the `/try-fleet` redirect to go to `/try-fleet/explore-data`
- Updated the "try it out" button links to go to `/try-fleet`
- Updated /try-fleet/login and /try-fleet/register to send users who are
redirected to the page via the /explore-data page to the page they had
tried to navigate to when they log in/create an account.
I'm creating this as a PR as a draft. It will be ready to merge when we:
- [x] Add hosts to the "Explore data (fleetdm.com) [DO NOT DELETE]" team
- [x] Create queries for every compatible osquery table for the "Explore
data (fleetdm.com) [DO NOT DELETE]" team.
- [ ] Add a `sails.config.custom.queryIdsByTableName` config variable
with the query IDs for the queries created in the previous step
- [ ] Add `sails.config.custom.hostIdsByHostPlatform` config variable
with the real host IDs/platforms
Changes:
- Updated `build-static-content` to parse `<meta>` tags from HTML
generated from a Markdown file, instead of the Markdown file. Parsing
them after the Markdown is converted to HTML will prevent any `<meta>`
tags inside code blocks from being seen as a `<meta>` tag containing
information about the page because angle brackets inside code blocks are
changed into HTML entities (`<` & `>`) when the Markdown is
converted to HTML.
https://github.com/fleetdm/confidential/issues/2118
Changes:
- Updated the send-data-to-vanta script to report the `extension_id` of
browser extensions installed on a host if the API response from the
Fleet instance includes that value.
Closes: #15265
Changes:
- Updated `pricing-features-table.yml`:
- Changed the structure of the file so it is a flat array of features
(previously, features were nested under a category)
- Added `productCategories` arrays to features that did not have them
- Added `usualDepartment` values to features.
- Updated the pricing features validation in `build-static-content` to
work with the new file structure and made `productCategories` a required
value for features.
- Updated `view-pricing.js` to:
- categorize features based on the values of the `productCategories`
array
- build a single array of features (previously, it would also build an
array of features for security-focused buyers).
- sort premium features to the bottom of the pricing table.
- Updated the `pricing.ejs` to:
- render only the list of all features server-side
- conditionally show features in the pricing table, depending on the
selected pricing mode
Changes:
- Wrapped requests that have `.retry()` in a try-catch block. Errors
thrown by the `.retry()` method are not currently not being caught by
the `intercept()` chained onto the request, and cause the script to stop
running.
Closes: #14812
Changes:
- Added a "critical" tag to critical policies in the standard query
library.
- Updated the macOS version used in the "Operating system up to date
(macOS)" policy.
- Updated the name of a policy to be in sentence case ("MDM Enrolled
(macOS)" » "MDM enrolled (macOS)")
- Updated the build-static-content script to add a `critical` attribute
to queries that have the "critical" tag.
- Updated the /queries page to add a "critical" badge to queries that
have the critical attribute.
Updated KPI script to generate metrics on released and unreleased bugs.
Looks like this:
Bugs:
---------------------------
Number of open issues with the "bug" label in fleetdm/fleet: 118
Average open time: 44 days.
Number of open issues with the "~unreleased bug" label in fleetdm/fleet:
20
Average open time: 7 days.
Number of open issues with the "~released bug" label in fleetdm/fleet:
98
Average open time: 52 days.
...
Closes: #12836
Changes:
- Updated the `build-static-content` script to not add HTML comments to
Markdown codeblocks, and to not replace HTML comments in generated HTML
pages
- Updated the custom codeblock renderer in the `to-html` helper to add
syntax highlighting classes to Markdown codeblocks.
- Updated the indentation of content in lists on the MDM macOS setup
docs page.
---------
Co-authored-by: Rachael Shaw <r@rachael.wtf>
Co-authored-by: Mike McNeil <mikermcneil@users.noreply.github.com>
Closes: #13728
Changes:
- Added /support to the array of hand-coded HTML pages in
`download-sitemap.js`:
- Updated `get-extended-osquery-schema`:
- Added a new (optional) input: `includeLastModifiedAtValue` if this
input is provided, the helper will:
- Set a `lastModifiedAt` value on all tables.
- Send a request to the GitHub API to get a lastModifiedAt timestamp for
tables that have no fleet overrides.
- Use `git` to get a lastModifiedAt timestamp of when the tables YAML
file was changed.
- Updated the `build-static-content` script to include a lastModifiedAt
timestamp for table pages, and updated the `lastModifiedAt` value that
is set for pages built from `/handbook/company/open-positions.yml`
---------
Co-authored-by: Mike McNeil <mikermcneil@users.noreply.github.com>
Closes: #13536
Changes:
- Deleted all handbook pages for current open positions.
- Created `/handbook/company/open-positions.yml`, and created entries
for the deleted handbook pages.
- Updated the build script to generate handbook pages for every entry in
`open-positions.yml`, and add information about each open position to
`sails.config.builtStaticContent.openPositions`
- Created a new component: `<open-positions>` - A component that takes a
single prop (named `openPositions`) that renders links to open position
handbook pages.
- Updated the "Creating a new position" section of the handbook to have
updated instructions for adding a new position to `open-positions.yml`
.
Closes: #12954
Changes:
- Added an admin page that displays a table containing all of the users
that are currently on the Fleet Sandbox waitlist where admins can
approve waitlisted users.
- Added a new email template that tells users that their Fleet Sandbox
instance is ready.
- Added a new action:
`admin/provision-sandbox-instance-and-deliver-email.js`, an action that
provisions a Fleet sandbox instance for a single user and sends them an
email telling them that their Fleet Sandbox Instance is ready.
- Added a script that provisions a Fleet Sandbox instance for the user
who has been on the waitlist the longest and sends them an email telling
them that their Sandbox instance is ready.
Changes:
- Updated the `build-static-content` script to parse files named
`rituals.yml` in the handbook folder, and add the contents to the
website's configuration as
`sails.config.builtStaticContent.ritualsTables`, and to throw errors if
a `rituals.yml` file contains a ritual that is missing a required value.
- Created the `<rituals>` component, a component that takes a single
prop (`ritualsTable`) and renders a table containing a row for each
ritual.
- Added a new property to `handbook/company/rituals.yml` - moreInfoUrl.
If this value is present, the description in the rendered HTML table (of
the `<rituals>` component) will link to the URL provided.
- updated view-basic-handbook to send
`sails.config.builtStaticContent.ritualsTables` in `SAILS_LOCALS`
---------
Co-authored-by: Sampfluger88 <108141731+Sampfluger88@users.noreply.github.com>
Closes: #12611
Changes:
- Added three new documentation sections `/docs/get-started/`,
`/docs/configuration` and `/docs/rest api/`
- Updated folder names: `/docs/Using-Fleet/` » `/docs/Using Fleet` and
`/docs/deploying` » `/docs/deploy/`
- Moved `/docs/using-fleet/process-events.md` to `/articles` and updated
the meta tags to change it into a guide.
- Added support for a new meta tag: `navSection`. This meta tag is used
to organize pages in the sidebar navigation on fleetdm.com/docs
- Moved `docs/using-fleet/application-security.md` and
`docs/using-fleet/security-audits.md` to the security handbook.
- Moved `docs/deploying/load-testing.md` and
`docs/deploying/debugging.md` to the engineering handbook.
- Moved the following files/folders:
- `docs/using-fleet/configuration-files/` »
`docs/configuration/configuration-files/`
- `docs/deploying/configuration.md` »
`docs/configuration/fleet-server-configuration.md`
- `docs/using-fleet/rest-api.md` » `docs/rest-api/rest-api.md`
- `docs/using-fleet/monitoring-fleet.md` » `docs/deploy/rest-api.md`
- Updated filenames:
- `docs/using-fleet/permissions.md` »
`docs/using-fleet/manage-access.md`
- `docs/using-fleet/adding-hosts.md` »
`docs/using-fleet/enroll-hosts.md`
- `docs/using-fleet/teams.md` » `docs/using-fleet/segment-hosts.md`
- `docs/using-fleet/fleet-ctl-agent-updates.md` »
`docs/using-fleet/update-agents.md`
- `docs/using-fleet/chromeos.md` »
`docs/using-fleet/enroll-chromebooks.md`
- Updated the generated markdown in `server/fleet/gen_activity_doc.go`
and `server/service/osquery_utils/gen_queries_doc.go`
- Updated the navigation sidebar and mobile dropdown links on docs pages
to group pages by their `navSection` meta tag.
- Updated fleetdm.com/docs not to show pages in the `docs/contributing/`
folder in the sidebar navigation
- Added redirects for docs pages that have moved.
.
---------
Co-authored-by: Mike Thomas <mthomas@fleetdm.com>
Co-authored-by: Rachael Shaw <r@rachael.wtf>
Closes: #12361
Changes:
- Added an error to the `build-static-content` script that is thrown if
a a handbook page is missing a `maintainedBy` meta tag.
- Added a `maintainedBy` meta tag to
`handbook/company/head-of-public-sector.md`
Closes: #12315
Changes:
- Updated the regex that is used to change Markdown links to fleetdm.com
into web root-relative links to support fleetdm.com links that start
with `www.`
Changes:
- Updated the build-static-content script to throw an error if a
Markdown file contains a vue template (e.g., `{{ foo }}`)
- Updated an example in the "Using Fleet" FAQ to use single curly
brackets (`{{host}} ` » `{host}`)
Context: https://github.com/fleetdm/fleet/pull/12088
Closes https://github.com/fleetdm/fleet/issues/11837
Changes:
- Changed the OS icons used on tables/ and queries/ pages.
- updated `get-extended-osquery-schema` to change the `platform` value
of osquery table columns to be the normalized platform name (`chromeos`
» `ChromeOS`)
- updated `build-static-content` to support three `platforms` values
when adding platform compatibility notes to generated Markdown tables
(e.g., "**Only available on macOS, Linux, and Windows.**" )
- Added dropdown options and icons for ChromeOS on osquery schema table
pages, query details pages, and the query library.
Changes:
- Updated the pricing page to match the latest wireframes.
- Updated the features in `pricing-features-table.yml`
- Updated `build-static-content.js` to remove support for the Ultimate
tier in `pricing-features-table.yml`
---------
Co-authored-by: Mike Thomas <mthomas@fleetdm.com>
Changes:
- Updated the send-data-to-vanta to set a boolean value for the
`isManaged` property of Windows and macOS hosts if the
`enrollment_status` of a host's `mdm` property is either "On (automatic)
or "On (manual)".
Closes: #9735
Changes:
- Updated the `send-data-to-vanta` script to:
- Sync Windows hosts with Vanta.
- Report the MDM status of macOS hosts.
- Updated the notes on the `/connect-vanta` page to link to the screen
lock policy for Windows.
Closes: #9963
Changes:
- Updated`build-static-content` script to replace newlines in the
`description` property of osquery schema columns. This prevents
multi-line descriptions from adding additional rows when a multi-line
description is added to a Markdown table.
Changes:
- Changed the message logged when a Vanta integration has an error to a
warning so our Papertrail alerts will be triggered whenever a Vanta
integration has an error.
The intention is to have Vanta stop showing warnings for missing MFA on
API-only users. It's not clear if setting `UNSUPPORTED` is the correct
solution, but it does seem more accurate than setting the `mfaEnabled`
to `true`.
Closes https://github.com/fleetdm/confidential/issues/1818
Changes:
- Updated the layout and content of the `/pricing` page
- `pricing-features-table.yml`: Added an "Ultimate" tier with three
features.
- `build-static-content.js` - Updated the build script to add support
for the "Ultimate" tier in `pricing-features-table.yml`
---------
Co-authored-by: Mike Thomas <mthomas@fleetdm.com>
Changes:
- Added a "MDM required" tag to the queries in the standard query
library that use the `managed_policies` table.
- Updated the build script to add a `requiresMdm` value to queries added
to `builtStaticContent.queries`, and to set it to true if a query has
the "MDM required" tags
- Updated the `/queries` page to add a "Requires MDM" badge to queries
that have `requiresMdm: true`
. . .
Co-authored-by: Mike McNeil <mikermcneil@users.noreply.github.com>
Changes:
- Updated the `build-static-content` script to use a GitHub API token
for requests if one is provided e.g., `sails run build-static-content
--githubAccessToken="foo"`
- Updated the `build-for-prod` npm script to run the
`build-static-content` script with a variable named `BUILD_SCRIPT_ARGS`.
- Updated the "Deploy Fleet website" and "Test Fleet website" workflows
to run the `build-for-prod` script with a GitHub API token
. .
Co-authored-by: Mike McNeil <mikermcneil@users.noreply.github.com>
Changes:
- Added a new page: `/device-management`
- Added a new action: `deliver-mdm-beta-signup.js` - This action sends a
post request to a Zapier webhook when a user submits a form on the
`/device-managment` page.
- Added a new component: `<scrollable-tweets>`
- Updated routes, importer, policies, cloud-sdk, and
`download-sitemap.js`
- Updated the route for our success story articles to live at
`fleetdm.com/success-stories/*` (Previously at
`fleetdm.com/device-management/*`) and updated `config/routes.js` to
have redirects for each article in that category
- Updated the "Use cases" navigation item to "Platform" and changed the
platform link to "How it works"
Co-authored-by: Mike Thomas <mthomas@fleetdm.com>
Co-authored-by: Mike McNeil <mikermcneil@users.noreply.github.com>
* add link to "defaults to root" text and evented table labels
* override requires_user_context value in merged schema
* update link styles on table pages
* Update get-extended-osquery-schema.js
* encodeURIComponent
Co-authored-by: Mike McNeil <mikermcneil@users.noreply.github.com>
* update helper to use the osquery schema from the osquery/osquery-site repo
* update script description and generated json filename
* Add ritual to digital experience handbook
* add merged schema
* Update README.md
* Update get-extended-osquery-schema.js
* add local flag to build script
* remove defaultsTo from input
* update comments
* local » skipGithubRequests, use fake profile pictures for contributors
* encodeURIComponent(username)
* Build static content updates
* update comment
* Add link
* Expand comment with another link and more explicitness
* Address requested change from https://github.com/fleetdm/fleet/pull/6974/files#r935075522
Co-authored-by: Mike McNeil <mikermcneil@users.noreply.github.com>
* Update LANG markers regex
* update regex to remove extra newlines from codeblocks
* revert regex in build-static-content
* remove nested codeblock
* update whitespace in changed codeblock
* update regex replace to match indentation on LANG tags
* update regex, add error if markdown was compiled with nested codeblocks
* Revert lang marker regex
* remove newlines before codeblocks in lists
* Update error, move LANG tag regex replace
* update comment to clarify what we mean by nested codeblocks
Co-authored-by: Mike McNeil <mikermcneil@users.noreply.github.com>
* Tool: Bring back mergefreeze API integration
Context: https://github.com/fleetdm/fleet/pull/5628#issuecomment-1196175485
Unfortunately, the API doesn't work.
* Lay out how this would work in the database - but instead, do it ephemerally for now
* Remove model
* Maintain state (the easy way for now)
* add deploy category, change product to guides
* update links to deployment guides
* Update deploy-fleet-on-hetzner-cloud.md
* Update enrolling-a-digital-ocean-droplet-on-a-fleet-instance.md
* Update how-to-install-osquery-and-enroll-linux-devices-into-fleet.md
* Update delivering-data-to-snowflake-from-fleet-and-osquery.md
* Update how-to-install-osquery-and-enroll-windows-devices-into-fleet.md
* Update how-to-install-osquery-and-enroll-macos-devices-into-fleet.md
* Update deploying-fleet-on-aws-with-terraform.md
* Update deploying-fleet-on-render.md
* Update how-to-uninstall-osquery.md
* Update osquery-a-tool-to-easily-ask-questions-about-operating-systems.md
* Update get-and-stay-compliant-across-your-devices-with-fleet.md
* Update work-may-be-watching-but-it-might-not-be-as-bad-as-you-think.md
* Update converting-unix-timestamps-with-osquery.md
* Update correlate-network-connections-with-community-id-in-osquery.md
* Update using-elasticsearch-and-kibana-to-visualize-osquery-performance.md
* Update fleet-quick-tips-querying-procdump-eula-has-been-accepted.md
* Update locate-assets-with-osquery.md
* Update osquery-consider-joining-against-the-users-table.md
* Update import-and-export-queries-and-packs-in-fleet.md
* Update ebpf-the-future-of-osquery-on-linux.md
* Update generate-process-trees-with-osquery.md
* Update get-and-stay-compliant-across-your-devices-with-fleet.md
* Update work-may-be-watching-but-it-might-not-be-as-bad-as-you-think.md
* Update ebpf-the-future-of-osquery-on-linux.md
* Change category meta value back to guides
Co-authored-by: Desmi-Dizney <99777687+Desmi-Dizney@users.noreply.github.com>
* change article category
* update latest article category
* add redirects for articles not handled by cloudflare rules
* Update to main nav
I did a little more housekeeping on the main nav for when we do the switch on these categories.
- Added link to /deploy under Guides on the Documentation dropdown.
- Added link to /guides under Guides on the Documentation dropdown
- Removed the now redundant "See all" from under Guides on the Documentation dropdown
- Removed the now redundant "See all" from under Articles on the Community dropdown (There's no need to point users to All categories any more, since all the category land are now linked to independently from the main nav.
* Update article category name
Co-authored-by: Desmi-Dizney <99777687+Desmi-Dizney@users.noreply.github.com>
Co-authored-by: Mike Thomas <mthomas@fleetdm.com>
* state of device management blog post
- Article to help promote the report
- Needed before merge: "Reports" article category
* add report category and update routes
* Update state-of-device-management.md
I reworded part of this to make it easier to read. Let me know if I can be of any more help. :)
Co-authored-by: Eric <eashaw@sailsjs.com>
Co-authored-by: Desmi-Dizney <99777687+Desmi-Dizney@users.noreply.github.com>
Co-authored-by: Tim Kern <tim@fleetdm.com>
* Website: generated index planning
* revert whitespace change
* add title to handbook pages, generate handbook index
* Update basic-handbook.page.js
* suggestions from review
Co-authored-by: Mike McNeil <mikermcneil@users.noreply.github.com>