Releases: hashicorp-forge/hermes
Releases · hashicorp-forge/hermes
v0.4.0
Breaking changes
- New required config attribute
projects_index_name
. This is required even if Hermes projects are not enabled yet via the feature flag. (#447)algolia { ... projects_index_name = "projects" ... }
Enabling Hermes projects
Hermes projects (see below under "Notable features & enhancements") can be enabled via feature flag:
feature_flags {
flag "projects" {
enabled = true
}
}
Enabling v2 of the API
This release includes a new v2 of the Hermes API which uses the PostgreSQL database as the source of truth for all data instead of Algolia. v1 of the API is now considered deprecated and will be removed in the next release. First, to prepare for enabling v2 of the API, use the new hermes operator migrate-algolia-to-postgresql
command (use the -help
flag to see all available options) to migrate all data to PostgreSQL. Then, v2 of the API can be enabled via feature flag:
feature_flags {
flag "api_v2" {
enabled = true
}
}
Other notable configuration changes
- New
flight_icon
attribute under document types (using Helios icons):
document_types {
document_type "RFC" {
...
flight_icon = "discussion-circle"
...
}
}
- Jira can be optionally configured to enable linking Hermes projects with Jira issues. Create an API token for Jira and then enable Jira linking with the
jira
block in the config:
jira {
api_token = ""
enabled = true
url = ""
user = ""
}
- Hermes logs can now be emitted in JSON:
log_format = "json"
- Datadog tracing can be optionally enabled:
datadog {
enabled = true
env = "prod"
service = "hermes"
}
Notable features & enhancements
- (NEW) Custom document types: Users can now define their own document types in the Hermes configuration file.
- (NEW) Introducing Projects in Hermes: Projects provide a way to group documents (including documents from multiple products) and links around an effort. Hermes users can create a project in Hermes and link published documents to that project. Users can optionally also link the associated Jira issue to provide a richer understanding about the status of the project.
- Datadog tracing is now supported (new
datadog
config block). - "My Docs" and "My Drafts" routes are now combined.
- Improved keyboard support for editable fields.
- Numerous performance and design improvements for the Hermes UI.
- The document type is now included in the Google Doc header title (e.g., "[RFC] ABC-123: Title of my doc").
What's Changed
- Fix RecentlyViewedDocs draft hrefs by @jeffdaley in #300
- Improve UX for string-based EditableFields by @jeffdaley in #301
- ExternalResource: New icon and URL by @jeffdaley in #303
- Add version and revision in config response by @anubhavmishra in #297
- Add database updates to APIs by @jfreda in #302
- Fix recently viewed docs disappearing bug by @jfreda in #304
- Update filter button styles by @jeffdaley in #310
- Add version number and revision to footer by @jeffdaley in #309
- Tweak margins of DocsAwaitingReview by @jeffdaley in #311
- Move table sorting function to column header by @jeffdaley in #308
- Fix ProductBadge query value by @jeffdaley in #305
- Define global background color by @jeffdaley in #312
- Fix broken test import by @jeffdaley in #314
- Replace RelatedResource FlightIcons with Favicons by @jeffdaley in #313
- Remove unused references to
sortControlIsHidden
by @jeffdaley in #315 - Adds
matchAnchorWidth
to FloatingUI components by @jeffdaley in #317 - Change
/all
to/documents
by @jeffdaley in #306 - Improve RecentlyViewedDocs/Dashboard performance by @jeffdaley in #318
- Add ProductArea service by @jeffdaley in #316
- Remove unused property from Doc::Tile component by @jeffdaley in #319
- Update HDS/Flight Icon packages by @jeffdaley in #321
- Fix JS/TS collisions by @jeffdaley in #320
- Define SessionService exports by @jeffdaley in #322
- Log user for 'wrong number of people in search result' error by @jfreda in #326
- Support custom document types by @jfreda in #328
- Remove
docType
from NewDocForm submit button by @jeffdaley in #331 - Update Create Draft grammar by @jeffdaley in #332
- Remove "choose a template" subhead by @jeffdaley in #330
- Don't assume names of document types are all uppercase by @jfreda in #336
- Fix indexer bug saving doc object in wrong format by @jfreda in #338
- Remove unused Avatar styles by @jeffdaley in #329
- Fix PATCHing a draft's Product by @jfreda in #337
- Remove default margin from H1 by @jeffdaley in #339
- Replace
modifiedAgo
property with template helper by @jeffdaley in #323 - Convert "Create new" routes/controllers to TS by @jeffdaley in #334
- Autofocus PeopleSelects in the sidebar by @jeffdaley in #333
- Add support for single-file components by @jeffdaley in #299
- Add types to Document route; Document-related cleanup by @jeffdaley in #324
- Compare document data between Algolia and PostgreSQL by @jfreda in #341
- Add support for JSON log format by @jfreda in #344
- Improve CI GitHub Action status badge by @jfreda in #345
- Add tests for doc creation by @jeffdaley in #348
- Replace back button with Hermes button by @jeffdaley in #347
- Update notification width and
out
animation by @jeffdaley in #346 - Add PowerSelectMultiple Glint types by @jeffdaley in #343
- Add modified time to search results by @jeffdaley in #342
- Add
secondaryFilterAttribute
to DropdownList by @jeffdaley in #349 - Related Resources refactor and External Link
scope
by @jeffdaley in #327 - Enable removing custom fields by providing an empty value by @jfreda in #350
- Convert "highlight affordance"
test
totodo
by @jeffdaley in #351 - Add TailwindCSS plugin to Prettier config by @jeffdaley in #352
- Improve document route performance by @jeffdaley in #335
- Handle
null
inserializeUsers
task by @jeffdaley in #353 - EmptyStateText by @jeffdaley in #355
- Enable Datadog tracing by @jfreda in #354
- Revert HermesUser changes by @jeffdaley in #356
- Datadog: don't log startup by @jfreda in #357
- Datadog: don't log startup for indexer by @jfreda in #358
- Make shortlinks case-insensitive by @jfreda in #359
- EditableFields enhancements and bugfixes by @jeffdaley in #340
- Bump minimist from 0.2.2 to 0.2.4 in /web by @dependabot in #363
- Improve sidebar affordances by @jeffdaley in #360
- Update "New" button by @jeffdaley in #361
ToggleSelect
component by @jeffdaley in #362- Simplify application templating by @jeffdaley in #367
OverflowMenu
refactor b...
v0.3.0
Breaking changes
- New required google_workspace.domain config attribute. (@jfreda in #261)
google_workspace { // domain is the Google Workspace domain (e.g., "hashicorp.com"). domain = "your-domain-dot-com" }
Notable features & enhancements
- (NEW) Related resources for documents: Ability to add and view related resources such as RFCs, PRDs, and other related content links to things like mockups, video recordings, etc. Hermes users can use the document sidebar to add related resources to their documents.
(NEW) Easy sharing for document drafts: Ability to easily share Hermes document drafts with the organization members before requesting review or publishing the document for company wide comments. - Improved request review modal: Design tweaks to make the process of requesting review clearer.
- Interactive product badges: Product or area badges are now clickable and will initiate a product filter to show a list of documents associated with a product or area.
- Improved “document awaiting review” design: Documents that are awaiting review are shown with a new design in the Hermes dashboard
- Support documents link: The footer and user navigation now includes an optional support link that can be supplied via the server config by setting
support_link_url
What's Changed
- Update README.md to include response times by @anubhavmishra in #222
- Add FloatingUI Glint types by @jeffdaley in #224
- Add
ember-animated
by @jeffdaley in #227 - Fix Toolbar Dropdown offsets by @jeffdaley in #228
- Rename some Dropdown-related properties by @jeffdaley in #231
- Register FlashMessage component with Glint by @jeffdaley in #229
- Update HdsTab tests and types by @jeffdaley in #230
- Add EmberAnimatedTools by @jeffdaley in #232
- Add
TruncatedText
component by @jeffdaley in #233 - Tweak TextInput definition: Make
type
property optional by @jeffdaley in #234 - Add
ownerPhotos
to HermesDocument type by @jeffdaley in #235 - Improve DropdownList Types by @jeffdaley in #225
- Add
DocumentSidebarSectionHeader
component by @jeffdaley in #236 - Move refreshRoute into
finally
block by @jeffdaley in #238 - Add new configurations to FloatingUI component by @jeffdaley in #237
- Register
click-outside
modifier with Glint by @jeffdaley in #241 - Adds a missing field to Textarea type by @jeffdaley in #242
- Expand DropdownList functions by @jeffdaley in #239
- Fix PEOPLE CustomEditableField bug by @jeffdaley in #243
- Add more EmberAnimation config by @jeffdaley in #244
- Add
hermes-h4
style by @jeffdaley in #245 - Conditionally disable keyboardNav by @jeffdaley in #246
- Move
design-system-components
import by @jeffdaley in #247 - Update Popover styles by @jeffdaley in #248
- Add
border-highlight
color to Tailwind palette by @jeffdaley in #249 - Fixes typo on modal "check" links. by @jeffdaley in #251
- Add basic CSS animations by @jeffdaley in #250
- Add border to ToggleSelect by @jeffdaley in #252
- Add delay option to tooltip by @jeffdaley in #254
- EditableField types and tests by @jeffdaley in #240
- Add related resources API by @jfreda in #257
- Related resources by @jeffdaley in #219
- Improve adding external resources via keyboard by @jeffdaley in #258
- Improve resource highlighting by @jeffdaley in #259
- Add tooltip animation props by @jeffdaley in #256
- Add spinner to Related Resources search by @jeffdaley in #260
- Use normal doc index instead of
createdTime
sorted by @jeffdaley in #262 - Add API for shareable drafts by @jfreda in #261
- Update missing DropdownList types by @jeffdaley in #263
- Adds the
getObject
method to Algolia service by @jeffdaley in #264 - Draft permissions UI by @jeffdaley in #255
- Add TooltipIcon component to Related Resources by @jeffdaley in #266
- Update
editingIsDisabled
conditions by @jeffdaley in #265 - Announce new features on the dashboard by @jeffdaley in #267
- Fix NewFeaturesBanner close function by @jeffdaley in #268
- Fix footer visibility conditions by @jeffdaley in #269
- Change footer control settings by @jeffdaley in #270
- Footer/UserNav: Add support docs link by @jeffdaley in #275
- Tweak "request review" design by @jeffdaley in #274
- Fix external link bug by @jeffdaley in #279
- Delete hermes-urls.d.ts by @jeffdaley in #280
- Add Tailwind Prettier plugin by @jeffdaley in #281
- Add first-class link support to Related Resources by @jeffdaley in #271
- Remove teardownContext calls by @jeffdaley in #283
- Fix attribute reference on Tile component by @jeffdaley in #278
- Make ProductArea badges interactive by @jeffdaley in #272
- Rearrange Nav links by @jeffdaley in #286
- Remove 4-doc restriction on "Docs awaiting review" by @jeffdaley in #290
- Tweak text on the "Delete Draft" modal by @jeffdaley in #291
- Add
title
attribute to RelatedResources by @jeffdaley in #294 - Add types for
set-body-class
by @jeffdaley in #293 - Add
page-title
types by @jeffdaley in #292 - Add DocumentType types by @jeffdaley in #295
- Show a share screen after publishing a doc by @jeffdaley in #277
- "Docs awaiting review" refactor/redesign by @jeffdaley in #282
- Improve share modal UX by @jeffdaley in #296
Full Changelog: v0.2.0...v0.3.0
v0.2.0
Notable features & enhancements
- Reauthenticating in one tab will automatically reauthenticate in other Hermes tabs too.
- Documents that contain suggestions in the header are automatically locked due to a Google Docs bug where suggestions cannot be deleted by the Google Docs API.
- There’s now an X button to remove people in the multi-select dropdowns (e.g., approvers, contributors).
- Document owners can now change the product for a document draft.
- Search now supports (ArrowUp/ArrowDown) keyboard navigation.
- Product suggestions in the search popover (e.g., “View all [productName] docs”) are more accurate, and go away when there is no match.
- Products are now searchable within the dropdowns (if the list is long enough).
Notable bug fixes
- Recently viewed documents are sorted correctly again.
- Document owners can now see approver checkmarks in the sidebar.
- API error messages are now displayed correctly in flash messages in the frontend.
- An error message now shows when a document fails to save.
- Duplicate error messages are prevented from showing.
What's Changed
- Add support for FloatingUI offset by @jeffdaley in #175
- Refactor FacetDropdownList by @jeffdaley in #166
- Add
maybe-query
andmodel-or-models
helpers by @jeffdaley in #176 - Improve
pollForExpiredAuth
and reauthenticate UX by @jeffdaley in #141 - Improve "request review" state by @jeffdaley in #177
- Fix logic to update recently viewed documents by @jfreda in #179
- Improve subscriber email subject by @jfreda in #183
- Use http.StatusOK for w.WriteHeader by @syntaqx in #168
- Approver list refactor and bug fix by @jeffdaley in #184
- Register some helpers with Glint by @jeffdaley in #186
- Add BadgeDropdownList component by @jeffdaley in #185
- Add FlightIcon component to Glint registry by @jeffdaley in #190
- Fix approver checkmarks by @jeffdaley in #191
- Lock documents in a bad state by @jfreda in #182
- Add more logging around locked documents by @jfreda in #193
- Add ProductSelect component by @jeffdaley in #187
- Add X affordance to PeopleSelect by @jeffdaley in #195
- Fix Glint imports by @jeffdaley in #196
- Fix post-auth redirect (Google auth, testing environment) by @jeffdaley in #194
- Register template helpers by @jeffdaley in #192
- WIP: Tweak front-end error messages by @jeffdaley in #198
- Check if a document is locked when approving by @jfreda in #197
- Revert "Tweak front-end error messages" by @jeffdaley in #200
- Clean up API error messages by @jfreda in #203
- Implement ProductSelect component; allow draft authors to edit their productArea by @jeffdaley in #109
- Tweak ProductSelect placeholder text and element width by @jeffdaley in #204
- Add most type definitions for most HDS components by @jeffdaley in #205
- Register Dashboard components by @jeffdaley in #208
- Type header components by @jeffdaley in #209
- Type Sidebar by @jeffdaley in #206
- Fix a couple ProductAreaDropdown bugs by @jeffdaley in #210
- Type Doc components by @jeffdaley in #207
- Add more detail around Algolia by @jrschumacher in #31
- Add error handling to save function by @jeffdaley in #211
- Lock documents on other types of suggestions in the header by @jfreda in #212
- Add keyboard nav to search; improve search productArea suggestions by @jeffdaley in #174
- Register internal modifiers with Glint by @jeffdaley in #215
- Register ExternalLink component with Glint by @jeffdaley in #214
- Register Action component with Glint by @jeffdaley in #213
- RenderOut the productArea dropdown by @jeffdaley in #216
- Prevent duplicate flashErrors by @jeffdaley in #217
- Fix Google reauthentication by @jfreda in #220
- Prepare for 0.2.0 release by @jfreda in #221
- Fix HeaderComponent boilerplate by @jeffdaley in #218
New Contributors
Full Changelog: v0.1.0...v0.2.0
v0.1.0
Breaking changes
- If Okta is configured for auth, a new
aws_region
parameter in theokta
configuration block is required. (@jfreda in #144)
The Admin SDK API now needs to be enabled. (@jfreda in #144) - Google Analytics can be enabled by setting the
google_analytics_tag_id
parameter in the application config file or using theGOOGLE_ANALYTICS_TAG_ID
environment variable. (@jeffdaley in #104) - Environment variables (
HERMES_WEB_GOOGLE_OAUTH2_CLIENT_ID
) are not required at build time to configure Google auth anymore. These values are instead sourced from the application config at runtime. (@jfreda in #170)
Notable features & enhancements
- When Okta is configured for auth, users do not have to login to Google anymore.
- Drafts are now included in Recently Viewed Documents on the dashboard.
- When a session expires, the user is not redirected immediately to the authenticate screen anymore (this could be very disruptive when authoring a document). Instead a flash message now appears, letting the user know that their session has expired and prompting them to reauthenticate.
- Document drafts can now be viewed and edited by contributors.
- A number of design system components have been upgraded.
- A 404 route has been added.
Notable bug fixes
- The original request URL is preserved through authenticating (via Okta or Google).
- Approvers can now be added or removed for document drafts.
What's Changed
- Update README to include renaming credentials by @jrschumacher in #30
- Add status badge by @anubhavmishra in #40
- Adding pull request template and CODEOWNERS file by @anubhavmishra in #46
- Remove unnecessary transition args by @jeffdaley in #15
- Add share button to condensed sidebar by @jeffdaley in #44
- Show approvers in draft sidebar by @jeffdaley in #48
- Improve RequestReviewModal Buttons and Inputs by @jeffdaley in #39
- Fix snippets in Results route by @jeffdaley in #51
- Fix reauthentication bug by @jeffdaley in #52
- Fix NaN issue in Latest Updates timestamps by @jeffdaley in #53
- Set modified time for Algolia doc object when requesting a review by @jfreda in #54
- Show active filters; Toolbar refactor by @jeffdaley in #37
- Add favicon by @jeffdaley in #59
- Add trigger deployment workflow by @anubhavmishra in #60
- Fix bug where updating the review status of a document with custom fi… by @jfreda in #66
- Fix upserting documents with custom fields by @jfreda in #68
- Fix docs and facets on
/my
route by @jeffdaley in #65 - Sidebar: Show CustomField data to non-owners by @jeffdaley in #67
- Continue fixing upserting documents with custom fields by @jfreda in #69
- Remove unused Algolia function by @jeffdaley in #64
- Fixes errors caused by special characters by @jeffdaley in #17
- Latest Updates cache clearing by @jeffdaley in #55
- Acceptance-test setup with PageTitle tests by @jeffdaley in #57
- Add alert-style badges to user menu by @jeffdaley in #73
New::DocForm
updates: TypeScript, error handling, documentation, discourage long summaries by @jeffdaley in #21- Fix typo by @anubhavmishra in #78
- Bugfix: Add json transformation on new doc form by @jeffdaley in #79
- Reset MockDates after tests by @jeffdaley in #77
- Scrollable FacetDropdowns with keyboard support by @jeffdaley in #56
- Fix indexer logic by refreshing doc headers before indexing by @jfreda in #89
- Delete
bg-red-500
style from FacetDropdowns by @jeffdaley in #90 - Add Fetch path to
tsconfig
; update response types by @jeffdaley in #80 - Move
SESSION_STORAGE_KEY
out of SessionService by @jeffdaley in #84 - Add ExternalLink component by @jeffdaley in #92
- Add 404 screen by @jeffdaley in #76
- Update test context names by @jeffdaley in #87
- Remove unused imports from AlgoliaService by @jeffdaley in #85
- Include
page:1
in filterLink queryParams by @jeffdaley in #88 - Move Mirage
me
response through a factory by @jeffdaley in #86 - Use
{{auto-height-textarea}}
modifier on sidebar by @jeffdaley in #70 - Remove unnecessary headers from AuthenticatedUserService by @jeffdaley in #91
- Retry
searchDirectory
if Google doesn't respond by @jeffdaley in #47 - Set default list styles by @jeffdaley in #97
- Set default anchor style by @jeffdaley in #96
- Authorize contributors to view and patch draft documents by @jfreda in #98
- Cleanup: Remove console log; Fix typo by @jeffdaley in #99
- Adds types to FetchService by @jeffdaley in #45
- Add
tooltip
modifier by @jeffdaley in #93 - Include Drafts in Recently Viewed Documents by @jeffdaley in #38
- Add exponential backoff to Google Drive list files call by @jfreda in #101
- Switch Redirect storage SessionStorage to LocalStorage by @jeffdaley in #94
- Remove deleted drafts from Recently Viewed by @jeffdaley in #102
- Improved sidebar scrollbars and padding by @jeffdaley in #100
- Disallow duplicates in PeopleSelect by @jeffdaley in #95
- Doc::Thumbnail component by @jeffdaley in #75
- Fix incorrect TestContextNames by @jeffdaley in #110
- Enable changing product of a draft document via the API by @jfreda in #111
- Remove unused
Doc::Tag
component by @jeffdaley in #112 - Update document number when patching product of a draft document by @jfreda in #113
- Combine Session and LocalStorage for redirect handling by @jeffdaley in #103
- Update to actions/checkout@v3 by @anubhavmishra in #115
- Update Ember Simple Auth by @jeffdaley in #117
- Poll for expired session by @jeffdaley in #82
- Document sidebar header refactor (tooltips, scroll border, copy button) by @jeffdaley in #106
- Await Session Setup by @jeffdaley in #116
- Tweak CSS
z-index
of FacetDropdowns and DocThumbnail outline by @jeffdaley in #119 - Add leading slash to share link by @jeffdaley in #120
- Lowercase share link docNumber by @jeffdaley in #121
- Move shareLink slash by @jeffdaley in #122
- Simplify session/localStorage logic; Add isLoggedIn check by @jeffdaley in #126
- Move storage call to Application route by @jeffdaley in #127
- Separate front- and back-end redirect handling by @jeffdaley in #128
- Upgrade Design System Components by @jeffdaley in #123
- Add shortLinkBaseURL checks (trailing...
v0.0.1
What's Changed
- Add license by @jfreda in #1
- Fix share popover z-index by @jeffdaley in #13
- docs: README.md improvements by @vladdoster in #4
- Fix search results; improve product-link logic on results screen by @jeffdaley in #24
- Remove node 12.* and 14.* engines by @jeffdaley in #26
- Clamp DocTile titles by @jeffdaley in #25
- Save target url in SessionStorage for post-auth redirect; Add EmberSimpleAuth types by @meirish in #20
- Merge Facet types by @jeffdaley in #28
- show document title in the HTML page title by @meirish in #32
- Update Node version in README by @jeffdaley in #34
- Update README with security email by @anubhavmishra in #35
- Add "Subscribed" and "Removed" messages to switches; Fix broken tests by @jeffdaley in #7
- Update label name in assertion by @jeffdaley in #36
- Replace uses of MM/DD/YYYY by @jeffdaley in #27
- Add missing yarn dependency to README by @jrschumacher in #29
- Initial work for CI by @anubhavmishra in #22
New Contributors
- @jfreda made their first contribution in #1
- @jeffdaley made their first contribution in #13
- @vladdoster made their first contribution in #4
- @meirish made their first contribution in #20
- @anubhavmishra made their first contribution in #35
- @jrschumacher made their first contribution in #29
Full Changelog: https://github.com/hashicorp-forge/hermes/commits/v0.0.1