Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

The Original Hermes Repository changes #25

Draft
wants to merge 417 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
417 commits
Select commit Hold shift + click to select a range
30b1c39
Update HDS packages (#411)
jeffdaley Nov 8, 2023
e3116b9
Bump socket.io-parser from 4.2.1 to 4.2.4 in /web (#410)
dependabot[bot] Nov 8, 2023
fdbdc08
Fetch products on login; add `getProductAbbreviation` function (#406)
jeffdaley Nov 8, 2023
2f39473
Fix owner photo bug for v2 drafts API (#413)
jfreda Nov 9, 2023
cf5b0a8
Allow approving documents in Approved status (#415)
jfreda Nov 9, 2023
61fef4f
Add nil check for document summary in NewFromDatabaseModel (#416)
jfreda Nov 9, 2023
0c9e5ce
Add `medium` size to DocThumbnail; tweak shared types (#388)
jeffdaley Nov 14, 2023
048a7ee
Add "Me" label to `Person` component (#417)
jeffdaley Nov 14, 2023
37592d5
Table and ProductLink design changes (#418)
jeffdaley Nov 14, 2023
b36181c
Add project screen (#404)
jeffdaley Nov 14, 2023
7d15f09
Fix UserMenuDropdown z-index bug (#419)
jeffdaley Nov 15, 2023
21f177d
Add `hasChevron` argument to `dd.ToggleAction` (#421)
jeffdaley Nov 15, 2023
392c456
Add `limitTo24Hours` option to `timeAgo` functions (#422)
jeffdaley Nov 15, 2023
7277c60
Fix a couple typos (#424)
jeffdaley Nov 15, 2023
1ec7b81
Update `pagination.ts` types (#425)
jeffdaley Nov 15, 2023
953d262
Improve error redirect on Document route (#427)
jeffdaley Nov 15, 2023
263ed5d
Bugfix: Add `?draft=true` to draft links (#435)
jeffdaley Nov 17, 2023
c89df19
Fix recently viewed docs (#436)
jfreda Nov 17, 2023
92f34d2
Standardize `FlashMessage` properties (#426)
jeffdaley Nov 17, 2023
bc3ac21
Remove unused `Table` argument (#430)
jeffdaley Nov 21, 2023
072a4f3
Set default MockDate value (#429)
jeffdaley Nov 21, 2023
54005b8
Fix gradient on 404 screen (#428)
jeffdaley Nov 21, 2023
6f24ed5
Update ci.yml (#439)
anubhavmishra Nov 21, 2023
a4dfa04
Change `product-link` routing (#431)
jeffdaley Nov 21, 2023
27196b7
Add `projects` to FlagsService; add conditional Projects navLink (#434)
jeffdaley Nov 21, 2023
07414cb
Replace test strings with shared variables (#440)
jeffdaley Nov 21, 2023
861e5be
Move Dashboard from template to component (#432)
jeffdaley Nov 21, 2023
1e1e503
Add projects API (#437)
jfreda Nov 21, 2023
6725927
Update `isDraft` condition in document sidebar (#433)
jeffdaley Nov 21, 2023
a44ba53
Fix v1 API endpoints (#441)
jfreda Nov 21, 2023
9f1888f
Add `timeColumn` argument to `Table::Row` (#423)
jeffdaley Nov 21, 2023
6e924ea
Fix project-flag routing bug (#442)
jeffdaley Nov 22, 2023
7c37c76
Add flag for the "start a project" button (#444)
jeffdaley Nov 22, 2023
00600fc
Add projects to document GET response (#445)
jfreda Nov 22, 2023
1b7232c
Save projects in Algolia (#447)
jfreda Nov 23, 2023
25b9fd2
Move Project `status` assignment to Mirage (#446)
jeffdaley Nov 23, 2023
658f624
Fix project patching (#448)
jfreda Nov 23, 2023
ad28608
Switch `patchDocument` from `task` to `enqueueTask` (#454)
jeffdaley Nov 28, 2023
5f862ec
Fix approver checkmark (#453)
jeffdaley Nov 28, 2023
72a1590
Fix visual bug on ProjectResource overflow button (#452)
jeffdaley Nov 28, 2023
7612d95
Improve EditableFields on the Projects screen (#451)
jeffdaley Nov 28, 2023
00ae02a
Add fields to projects API responses (#455)
jfreda Nov 28, 2023
eb1cfcb
Add summary to Hermes document project related resource response (#457)
jfreda Nov 28, 2023
318f395
Improve locked doc state (#456)
jeffdaley Nov 28, 2023
a951101
Adds feature-flagged hash-based coloring to non-icon'd product avatar…
jeffdaley Nov 28, 2023
a09be5e
Wire projects screens to back end (#450)
jeffdaley Nov 28, 2023
643309f
Add created and modified times to Hermes doc project related resource…
jfreda Nov 28, 2023
278467d
Combine My Docs and My Drafts (#420)
jeffdaley Nov 29, 2023
f6768d7
Component-ize Project documents (`Doc::TileMedium`) (#459)
jeffdaley Nov 29, 2023
0e02946
Add Project CopyURL function (#460)
jeffdaley Nov 29, 2023
4d1e24d
Convert User menu to `X::DropdownList` (#461)
jeffdaley Nov 29, 2023
2cec103
Rename `project-resource-list` → `divided-list` (#465)
jeffdaley Dec 1, 2023
0406208
Expand `Doc::TileMedium` interface (#464)
jeffdaley Dec 1, 2023
207e10e
Update active product icon (#467)
jeffdaley Dec 1, 2023
b66c3b9
Component-ize `Product::SubscriptionToggle` (#463)
jeffdaley Dec 1, 2023
840bb43
Update user avatar fallback (#472)
jeffdaley Dec 4, 2023
12b70e5
Add Jira proxy (#473)
jfreda Dec 4, 2023
32e2d87
Add ProductAvatars to ProjectTiles (#471)
jeffdaley Dec 5, 2023
156bc14
Remove 1px margin on some ProductAvatars (#477)
jeffdaley Dec 5, 2023
a7bc5cb
Replace some colors in the `productAreas` array (#476)
jeffdaley Dec 5, 2023
d4234f1
Add more logging to projects write actions (#474)
jfreda Dec 5, 2023
02da840
Add flight icon to document types configuration (#479)
jfreda Dec 5, 2023
c8be5a0
Add document type to Google Doc header title (#480)
jfreda Dec 6, 2023
1740dbe
Add ProductArea route (#462)
jeffdaley Dec 6, 2023
1dad456
Fix Related Resources search index (#482)
jeffdaley Dec 6, 2023
a5553d4
Improve handling of DocType icons (#481)
jeffdaley Dec 6, 2023
5f6c22e
Add `.gts` boilerplate to `Hds::Button` (#468)
jeffdaley Dec 6, 2023
ddd3307
Add status nav to Projects index (#475)
jeffdaley Dec 7, 2023
b6e67d8
Add projects filtering (#486)
jfreda Dec 7, 2023
1d2c506
Add `draft` queryParam support to `DocTileMedium` (#478)
jeffdaley Dec 7, 2023
16c2ae8
Remove `product_colors` flag (#485)
jeffdaley Dec 7, 2023
13faa1a
Add `projects` attribute to `HermesDocument` type (#489)
jeffdaley Dec 7, 2023
d735ef4
Rearrange nav items (#483)
jeffdaley Dec 7, 2023
d23d51e
Add last-modified time to Project footer (#492)
jeffdaley Dec 8, 2023
3781a25
Add jira_url to web config response (#493)
jfreda Dec 8, 2023
f4df3fc
Calculate if document is a draft when refreshing header (#494)
jfreda Dec 11, 2023
f4f29ee
Add `isModal` argument to Form component (#491)
jeffdaley Dec 12, 2023
c138c6c
Add `waitUntilNextRunloop` to `autofocus` (#490)
jeffdaley Dec 12, 2023
7a8fcae
Add `updateRelatedResourcesSortOrder` utility (#488)
jeffdaley Dec 12, 2023
0284f19
Add IssueTypeImage to Jira issue response (#497)
jfreda Dec 12, 2023
f8380f4
Add Jira to the front-end (#498)
jeffdaley Dec 13, 2023
18d6f2f
Fix removeJiraIssue bug (#499)
jeffdaley Dec 14, 2023
54a7137
Use Jira issues API if issue picker query contains an issue key (#501)
jfreda Dec 14, 2023
a940723
Fix Jira image URLs (#500)
jeffdaley Dec 14, 2023
60dabb1
Check for `dialog`s when using FloatingUI + `renderOut` (#502)
jeffdaley Dec 14, 2023
23f6e8f
Remove partial comment and a couple `console.logs` (#504)
jeffdaley Dec 15, 2023
53a0cc2
Add `theme--neutral` to popover classes (#505)
jeffdaley Dec 15, 2023
146667c
Scrollable modal styles (#506)
jeffdaley Dec 15, 2023
6746ec6
Get doc again after inserting header table (#507)
jfreda Dec 15, 2023
41ae1ac
Validate draft document status (#510)
jfreda Dec 15, 2023
f1e10dc
Enable using PostgreSQL as source of truth for indexer document data …
jfreda Dec 16, 2023
5085c5a
Enable creating documents as logged-in user (#508)
jfreda Dec 16, 2023
1719744
Remove redundant loading spinner (#511)
jeffdaley Dec 18, 2023
ac4732b
Tweak link color (#512)
jeffdaley Dec 18, 2023
72180a9
Account for undefined status in `Tile::Medium` (#513)
jeffdaley Dec 18, 2023
198482c
Projects in the sidebar (#414)
jeffdaley Dec 19, 2023
ded02df
Improve Projects navigation and tiles (#514)
jeffdaley Dec 19, 2023
7ef5c53
Fix patching a draft's product (#517)
jfreda Dec 19, 2023
20adbf2
Remove TODO comment (#518)
jeffdaley Dec 19, 2023
e18ee8e
Add Jira to Project Tiles (#515)
jeffdaley Dec 20, 2023
55270f2
Add avatars to ProductSelect; replace Product Badge dropdown (#516)
jeffdaley Dec 20, 2023
1dc162b
Remove unnecessary gradient from Project tiles (#520)
jeffdaley Dec 20, 2023
bac43a6
Add `isSaving` state to project title and description (#519)
jeffdaley Dec 20, 2023
da25ac0
Set `isReadOnly` conditions on project title and description (#521)
jeffdaley Dec 20, 2023
ded85ed
Tweak project EditableField affordances (#524)
jeffdaley Dec 21, 2023
b6d0702
Add `isReadOnly` argument to project resources (#522)
jeffdaley Dec 21, 2023
a4ec9f1
Add `ProjectStatusIcon` component with color icons (#484)
jeffdaley Dec 21, 2023
ceb1bb3
Improve Jira widget design on Projects screen (#525)
jeffdaley Dec 21, 2023
83ed46f
Enable creating documents as logged-in user (take 2) (#526)
jfreda Dec 21, 2023
4d118f6
Add read-only styles to Jira (#528)
jeffdaley Dec 21, 2023
36b7d42
Configure `createDocsAsUser` in the front end (#529)
jeffdaley Jan 2, 2024
e752e85
Fix Jira render logic (#531)
jeffdaley Jan 9, 2024
0df4255
Add `scroll-into-view-if-needed` (#541)
jeffdaley Jan 9, 2024
c1b95c0
Fix avatar loading on projects screen (#534)
jeffdaley Jan 9, 2024
e6c48e2
Add `animateTransform` motion (#539)
jeffdaley Jan 9, 2024
3b554ef
Add "What's a project" tooltip to "New" screen (#546)
jeffdaley Jan 12, 2024
103608a
Turn off `require-yield` linter rule (#537)
jeffdaley Jan 12, 2024
400e761
Refactor buttons and improve project focus rings (#535)
jeffdaley Jan 12, 2024
f645a23
Fix popover width and improve dropdown list truncation (#542)
jeffdaley Jan 12, 2024
d3bbbf2
Fix missing Project related resource attributes (#533)
jeffdaley Jan 12, 2024
4fe455f
Improve `closeDropdown` handling (#532)
jeffdaley Jan 12, 2024
d6247c7
Fix "isSaving" affordance on projects screen (#530)
jeffdaley Jan 17, 2024
18c94e6
Create `highlightElement` utility (#538)
jeffdaley Jan 17, 2024
126de25
Make sure project docs are excluded from search results (#536)
jeffdaley Jan 17, 2024
87d4cf0
Conditionally hide the "add project resource" button (#523)
jeffdaley Jan 17, 2024
20aacbc
Change default Algolia index for Related Resources (#547)
jeffdaley Jan 18, 2024
7c06d9f
Animated project resources; Improved projects empty state (#540)
jeffdaley Jan 18, 2024
05ecc97
Fix DropdownListItemCount CSS bug (#548)
jeffdaley Jan 18, 2024
545fd7b
Improve checkable item markup (#549)
jeffdaley Jan 18, 2024
32fce5d
Fix Product/Area select styles on New Document screen (#551)
jeffdaley Jan 19, 2024
dfba653
Use the `modifiedTime` index for empty Algolia searches (#552)
jeffdaley Jan 19, 2024
ce0b4fe
Projects index redesign; New status icons (#550)
jeffdaley Jan 19, 2024
bf82637
Remove unused `animateHighlight` code from project component (#553)
jeffdaley Jan 19, 2024
d9bd1c6
Return names with people API response (#554)
jfreda Jan 19, 2024
7955bc8
Add exponential backoff to Drive.Files.Get call (#555)
jfreda Jan 19, 2024
dd50ccd
Prepare for 0.4.0 release (#556)
jfreda Jan 19, 2024
8a77fe4
Remove Projects flag; add Projects announcement banner; add note that…
jeffdaley Jan 22, 2024
37faaa5
Configure `Person` in EmberData (#558)
jeffdaley Jan 23, 2024
f08d255
Give approvers edit access to published documents (#560)
jfreda Jan 24, 2024
916a98b
Delete unused `Doc::Inline` component (#562)
jeffdaley Jan 26, 2024
5e49176
Allow doc approvers to remove themselves as an approver (#563)
jfreda Jan 26, 2024
48ee7a4
Remove Google Admin SDK (#564)
jfreda Jan 26, 2024
048dd8e
Refactor `DocAwaitingReview` (#566)
jeffdaley Jan 26, 2024
d50e756
Refactor `Tile::Medium` (#567)
jeffdaley Jan 26, 2024
8e16aec
Refactor `RelatedResources::Add::Document` (#568)
jeffdaley Jan 26, 2024
08b3787
Remove unused EmberData files (#569)
jeffdaley Jan 26, 2024
6a0afb8
Fix service import; sidebar cleanup (#570)
jeffdaley Jan 26, 2024
e050d6a
Refactor CustomEditableFields (#565)
jeffdaley Jan 26, 2024
bd969cf
Move Mirage `utils` out of app directory (#571)
jeffdaley Jan 26, 2024
785002e
Use EmberData for People (#561)
jeffdaley Jan 27, 2024
0061237
Dashboard improvements (#487)
jeffdaley Jan 30, 2024
a7391bc
Improve performance when getting all products for a project (#572)
jfreda Jan 30, 2024
1150a28
Increase recently viewed doc count (#573)
jeffdaley Jan 30, 2024
907a178
Fix LatestDocs avatars (#574)
jeffdaley Jan 30, 2024
25fa3dc
Improve approving-your-own-doc UX (#469)
jeffdaley Jan 31, 2024
72b3a94
Correctly handle when document records are not found (#575)
jfreda Jan 31, 2024
00f6749
Fix spacing on sidebar logo (#578)
jeffdaley Feb 2, 2024
181e317
Update legacy route (#579)
jeffdaley Feb 6, 2024
f4ef0f9
Add conditional "rejected" badge (#580)
jeffdaley Feb 6, 2024
6b28e37
Reorganize Mirage draft endpoints (#581)
jeffdaley Feb 6, 2024
f002ebf
Rename `Doc::State` → `Doc::Status` (#583)
jeffdaley Feb 6, 2024
472dd29
Move DocStatus badge; redesign DocNumber (#582)
jeffdaley Feb 6, 2024
af1df20
Redesign status controls (#584)
jeffdaley Feb 7, 2024
e45b3bf
Post-publish: Set `draftWasPublished` sooner (#585)
jeffdaley Feb 7, 2024
b85ee98
Increase z-index of visibility toggle (#586)
jeffdaley Feb 7, 2024
054fdcb
Fix bug when re-adding approvers (#587)
jfreda Feb 7, 2024
0a9fd45
Track recently viewed projects (#589)
jfreda Feb 8, 2024
a64f21b
Add "leave approver role" function; clean up sidebar approval control…
jeffdaley Feb 8, 2024
e5b74f5
Add ProjectsIndexName to web config (#591)
jeffdaley Feb 9, 2024
3b3403c
Improve (locked) document error handling (#590)
jeffdaley Feb 9, 2024
1d0cf80
Improve performance when getting a project's related resources (#592)
jfreda Feb 12, 2024
eb1a127
Add projects to search dropdown (#593)
jeffdaley Feb 13, 2024
aae0c96
Fix breaking `searchIndex` bug (#594)
jeffdaley Feb 13, 2024
d641e1f
Search bugfix: Use correct ID attribute (#595)
jeffdaley Feb 13, 2024
77f3dea
Send document approved emails to doc owner (#596)
jfreda Feb 15, 2024
aa3fa6e
Update text for document approved email (#599)
jfreda Feb 15, 2024
5149978
Rename `RecentlyViewedDocs` → `RecentlyViewed`; component-ize `Recent…
jeffdaley Feb 15, 2024
8f6004a
Fix typo in document approved email (#600)
jfreda Feb 16, 2024
81c1473
Add projects to Recently Viewed (#597)
jeffdaley Feb 16, 2024
022b0da
Add empty states to `/projects` (#601)
jeffdaley Feb 16, 2024
b800a7e
Fix search filtering (#602)
jeffdaley Feb 20, 2024
acfe718
Improve performance for getting a document (#604)
jfreda Feb 21, 2024
f3b606d
Fix "No recently viewed" bug (#606)
jeffdaley Feb 21, 2024
c499fd5
Add Mirage coverage for filtering (#605)
jeffdaley Feb 22, 2024
1543f36
Remove obsolete component `X::Hds::Tab` (#608)
jeffdaley Feb 22, 2024
9674bb8
Redesign search results; Improve search UX (#607)
jeffdaley Feb 27, 2024
a93144e
Refactor toolbar facets (#609)
jeffdaley Feb 27, 2024
440e40d
Improve types on `/documents` (#610)
jeffdaley Feb 27, 2024
919832f
Tweak search results header; improve `/results` types; prep for proje…
jeffdaley Feb 28, 2024
75ba087
Add/apply `wrap-anywhere` utility class to snippets (#612)
jeffdaley Feb 28, 2024
32a6c4b
Tweak project nav height and className (#613)
jeffdaley Feb 28, 2024
05d1c7d
Remove duplicate style (#617)
jeffdaley Feb 28, 2024
247907f
Declare HdsBadgeCount for use in `.gts` files (#618)
jeffdaley Feb 28, 2024
fe73cd3
Improve scrollbar gutter in Chrome and FF (#620)
jeffdaley Feb 29, 2024
0c8d098
Add exponential backoff when getting the ELB public key (#621)
jfreda Mar 1, 2024
85832d1
Add read-only draft-visibility icon (#622)
jeffdaley Mar 2, 2024
6f219df
Expand search results screen (#619)
jeffdaley Mar 2, 2024
37138e1
Adds summaries back to "Latest Docs" (#624)
jeffdaley Mar 2, 2024
4f1c2cf
Couple of fixes to reviews API (#625)
jfreda Mar 4, 2024
e7ce719
Ignore Node version check for Yarn (#630)
jfreda Mar 5, 2024
8dd4e56
Resolve "failed to load related resources" message on non-app-created…
jeffdaley Mar 5, 2024
333a6cd
Improve undefined `createdTime` handling in `time-ago` helper (#626)
jeffdaley Mar 5, 2024
6594165
Fix bug when filtering to an owner not in the top 100 (#627)
jeffdaley Mar 5, 2024
aeb4e9e
Fix CSS on `/my` route (Firefox) (#629)
jeffdaley Mar 5, 2024
4982260
Improve doc-owner link params (#628)
jeffdaley Mar 5, 2024
a086ed1
Upgrade `ember-basic-dropdown` and import its types (#631)
jeffdaley Mar 5, 2024
b09f182
Reset document created date when publishing a doc (#632)
jfreda Mar 5, 2024
1d7658d
People API: Convert `null` result to an empty array (#633)
jeffdaley Mar 5, 2024
958de13
Update email templates (#616)
jeffdaley Mar 6, 2024
c5acf53
Improve truncation on project external links (#635)
jeffdaley Mar 6, 2024
821f352
Improve `PeopleSelect` styles (#634)
jeffdaley Mar 6, 2024
16803fd
Fix Latest Docs order (#636)
jeffdaley Mar 7, 2024
e09a3e1
Add padding to "Approve" footer (#637)
jeffdaley Mar 7, 2024
c533b79
Remove "New" badge from "Start a project" button (#638)
jeffdaley Mar 7, 2024
fc81a7d
Mirage cleanup (People route) (#639)
jeffdaley Mar 7, 2024
87cd4c6
Make doc owners clickable (#640)
jeffdaley Mar 7, 2024
fe2550e
Clean up document status filter (#641)
jeffdaley Mar 7, 2024
f2f41f5
Add fallback for non-standard doc statuses (#643)
jeffdaley Mar 7, 2024
f3017e0
Reset active filters when clicking "See older documents" (#642)
jeffdaley Mar 8, 2024
040ee15
Enable patching a document's owner (#644)
jfreda Mar 12, 2024
37de695
Add "Transfer ownership" function to docs (#645)
jeffdaley Mar 12, 2024
0245fd9
Register `Notification` and `AnimatedTools` with Glint (#649)
jeffdaley Mar 13, 2024
d889040
Filter inaccessible docs out of Recently Viewed (#646)
jeffdaley Mar 13, 2024
0e7992b
Improve UX of transferring a restricted draft (#648)
jeffdaley Mar 15, 2024
56f7846
Sort application `<head>` (#650)
jeffdaley Mar 15, 2024
012d986
Upgrade to Node 20 (#651)
jeffdaley Mar 18, 2024
6f50b29
Add Jira issues to the EmberData store (#652)
jeffdaley Mar 18, 2024
3f52210
Fix StoreService types (#653)
jeffdaley Mar 18, 2024
5fa3baa
Mirage: Disable logging on `/me` endpoint (#654)
jeffdaley Mar 20, 2024
a2c4ccf
Use backend for project-status filtering (#655)
jeffdaley Mar 20, 2024
4275a0a
Update sidebar when approvers are modified in the "Request review" mo…
jeffdaley Mar 20, 2024
f8db8c0
Remove background fetch calls to the `recently-viewed` endpoint (#657)
jeffdaley Mar 20, 2024
fad671b
Add fallback value to `dd.LinkTo` component (#658)
jeffdaley Mar 22, 2024
40c87d5
Search owner facet (#659)
jeffdaley Mar 28, 2024
b3384ef
Remove template `log` from `toolbar.hbs` (#662)
jeffdaley Apr 1, 2024
8aaf601
Improve focus styles on Doc::TileMedium (#663)
jeffdaley Apr 1, 2024
76f03a6
CSS refactor: `.visible-with-group` (#665)
jeffdaley Apr 2, 2024
913dece
Add pagination for projects API (#664)
jfreda Apr 2, 2024
69b4d2e
Enable reordering of project resources (#668)
jeffdaley Apr 4, 2024
4978772
Add pagination to projects UI (#669)
jeffdaley Apr 4, 2024
0a9b320
Enable sending an email to users not found in the Google Workspace di…
jfreda Apr 4, 2024
3b0597d
Support group approvals (#660)
jfreda Apr 4, 2024
7459890
Projects pagination: Reset page count when clicking segmented control…
jeffdaley Apr 5, 2024
4660ccf
Add support for Google Groups in the approver field (#661)
jeffdaley Apr 5, 2024
51a2a10
Show group approvers in "Request review" modal (#672)
jeffdaley Apr 11, 2024
52bbe69
Make group approvals conditional based on config (#674)
jfreda Apr 12, 2024
a0ecee2
Remove a couple unwanted `console.logs` (#673)
jeffdaley Apr 15, 2024
5de92f4
Sidebar cleanup and documentation (#670)
jeffdaley Apr 15, 2024
e44e932
Improve typography on "Request Review" modal (#675)
jeffdaley Apr 15, 2024
ced8f53
Move locked doc check in approvals API (#676)
jfreda Jun 4, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 4 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@ jobs:

- name: Set yarn version
run: make web/set-yarn-version
# Workaround: https://github.com/actions/setup-node/issues/531#issuecomment-1819151412
env:
SKIP_YARN_COREPACK_CHECK: true
YARN_IGNORE_NODE: 1

- name: Set up Go
uses: actions/setup-go@v3
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
node_modules
/web/.pnp.*
/web/.yarn/*
/web/.eslintcache
/web/dist

# Terraform related
Expand Down
23 changes: 17 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Hermes

![](https://github.com/hashicorp-forge/hermes/workflows/ci/badge.svg)
[![CI](https://github.com/hashicorp-forge/hermes/workflows/ci/badge.svg?branch=main)](https://github.com/hashicorp-forge/hermes/actions/workflows/ci.yml?query=branch%3Amain)

> Hermes is not an official HashiCorp project.
> The repository contains software which is under active development and is in the alpha stage. Please read the “[Project Status](#project-status)” section for more information.
Expand All @@ -23,7 +23,7 @@ Hermes was created and is currently maintained by HashiCorp Labs, a small team i

1. Enable the following APIs for [Google Workspace APIs](https://developers.google.com/workspace/guides/enable-apis)

- Admin SDK API
- Admin SDK API (optional, if enabling Google Groups as document approvers)
- Google Docs API
- Google Drive API
- Gmail API
Expand Down Expand Up @@ -84,12 +84,20 @@ The Application ID, Search API Key, and Write API Key in Algolia's [API Keys set

Similarly, you will use these values to set the `HERMES_WEB_ALGOLIA_APP_ID` and `HERMES_WEB_ALGOLIA_SEARCH_API_KEY` environment variables at build time.

### Jira (optional)

Jira can be optionally configured to enable linking Hermes projects with Jira issues.

1. [Create an API token](https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/#Create-an-API-token) for Jira.

1. Enable Jira using the `jira` block in the Hermes config file.

## Development and Usage

### Requirements

- Go 1.18
- Node.js 16
- Node.js 20
- Yarn ~3.3.0 ([install with corepack](https://yarnpkg.com/getting-started/install))

### Configuration File
Expand All @@ -116,6 +124,8 @@ Hermes can be configured to point to any PostgreSQL database, but for running lo
make docker/postgres/start
```

The database password can be configured via the Hermes config.hcl or the `HERMES_SERVER_POSTGRES_PASSWORD` environment variable.

### Run the Server

```sh
Expand All @@ -136,10 +146,12 @@ NOTE: when not using a Google service account, this will automatically open a br

- Create a new key (JSON type) for the service account and download it.
- Go to [Delegating domain-wide authority to the service account](https://developers.google.com/identity/protocols/oauth2/service-account#delegatingauthority) and follow the instructions to enter the OAuth scopes.
- Add the following OAuth scopes (comma-delimited list):
- Add the following OAuth scopes (if enabling group approvals, add `https://www.googleapis.com/auth/admin.directory.group.readonly` to the comma-delimited list):
`https://www.googleapis.com/auth/directory.readonly,https://www.googleapis.com/auth/documents,https://www.googleapis.com/auth/drive,https://www.googleapis.com/auth/gmail.send`

More to come here...
1. Configure the service account in the `auth` block under the `google_workspace` config block.

1. If enabling group approvals, add the `https://www.googleapis.com/auth/admin.directory.group.readonly` role to the service user configured as the `subject` in the `auth` block (from previous step).

## Architecture

Expand Down Expand Up @@ -179,6 +191,5 @@ As the project becomes more stable over the next several releases, we think it w

Here are some higher-level initiatives that we are currently working on:

- Support custom document types.
- Increase test coverage.
- Finish migration of using Algolia as a NoSQL database to PostgreSQL as the source of truth for all non-search data.
84 changes: 77 additions & 7 deletions configs/config.hcl
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
// URL of the application.
base_url = "http://localhost:8000"

// log_format configures the logging format. Supported values are "standard" or
// "json".
log_format = "standard"

// algolia configures Hermes to work with Algolia.
algolia {
application_id = ""
Expand All @@ -10,17 +14,23 @@ algolia {
internal_index_name = "internal"
links_index_name = "links"
missing_fields_index_name = "missing_fields"
projects_index_name = "projects"
search_api_key = ""
write_api_key = ""
}

// document_types configures document types. Currently this block should not be
// modified, but Hermes will support custom document types in the near future.
// *** DO NOT MODIFY document_types ***
// datadog configures Hermes to send metrics to Datadog.
datadog {
enabled = false
env = "local"
}

// document_types configures document types.
document_types {
document_type "RFC" {
long_name = "Request for Comments"
description = "Create a Request for Comments document to present a proposal to colleagues for their review and feedback."
flight_icon = "discussion-circle"
template = "1Oz_7FhaWxdFUDEzKCC5Cy58t57C4znmC_Qr80BORy1U"

more_info_link {
Expand Down Expand Up @@ -49,6 +59,7 @@ document_types {
document_type "PRD" {
long_name = "Product Requirements"
description = "Create a Product Requirements Document to summarize a problem statement and outline a phased approach to addressing the problem."
flight_icon = "target"
template = "1oS4q6IPDr3aMSTTk9UDdOnEcFwVWW9kT8ePCNqcg1P4"

more_info_link {
Expand All @@ -65,6 +76,13 @@ document_types {
type = "people"
}
}

// document_type "Memo" {
// long_name = "Memo"
// description = "Create a Memo document to share an idea or brief note with colleagues."
// flight_icon = "radio"
// template = "file-id-for-a-blank-doc"
// }
}

// email configures Hermes to send email notifications.
Expand All @@ -76,6 +94,19 @@ email {
from_address = "[email protected]"
}

// FeatureFlags contain available feature flags.
feature_flags {
// api_v2 enables v2 of the API.
flag "api_v2" {
enabled = false
}

// projects enables the projects feature in the UI.
flag "projects" {
enabled = false
}
}

// google_workspace configures Hermes to work with Google Workspace.
google_workspace {
// create_doc_shortcuts enables creating a shortcut in the shortcuts_folder
Expand All @@ -85,22 +116,42 @@ google_workspace {
// docs_folder contains all published documents in a flat structure.
docs_folder = "my-docs-folder-id"

// domain is the Google Workspace domain (e.g., "hashicorp.com").
domain = "your-domain-dot-com"

// drafts_folder contains all draft documents.
drafts_folder = "my-drafts-folder-id"

// group_approvals is the configuration for using Google Groups as document
// approvers.
group_approvals {
// enabled enables using Google Groups as document approvers.
enabled = false

// search_prefix is the prefix to use when searching for Google Groups.
// search_prefix = "team-"
}

// If create_doc_shortcuts is set to true, shortcuts_folder will contain an
// organized hierarchy of folders and shortcuts to published files that can be
// easily browsed directly in Google Drive:
// {shortcut_folder}/{doc_type}/{product}/{document}
shortcuts_folder = "my-shortcuts-folder-id"

// temporary_drafts_folder is a folder that will brieflly contain document
// drafts before they are moved to the drafts_folder. This is used when
// create_docs_as_user is true in the auth block, so document notification
// settings will be the same as when a user creates their own document.
// temporary_drafts_folder = "my-temporary-drafts-folder-id"

// auth is the configuration for interacting with Google Workspace using a
// service account.
// auth {
// client_email = ""
// private_key = ""
// subject = ""
// token_url = "https://oauth2.googleapis.com/token"
// client_email = ""
// create_docs_as_user = true
// private_key = ""
// subject = ""
// token_url = "https://oauth2.googleapis.com/token"
// }

// oauth2 is the configuration used to authenticate users via Google.
Expand All @@ -124,6 +175,25 @@ indexer {
// update_draft_headers enables the indexer to automatically update document
// headers for draft documents based on Hermes metadata.
update_draft_headers = true

// use_database_for_document_data will use the database instead of Algolia as
// the source of truth for document data, if true.
use_database_for_document_data = false
}

// jira is the configuration for Hermes to work with Jira.
jira {
// api_token is the API token for authenticating to Jira.
api_token = ""

// enabled enables integration with Jira.
enabled = false

// url is the URL of the Jira instance (ex: https://your-domain.atlassian.net).
url = ""

// user is the user for authenticating to Jira.
user = ""
}

// okta configures Hermes to authenticate users using an AWS Application Load
Expand Down
71 changes: 48 additions & 23 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -12,35 +12,49 @@ require (
github.com/hashicorp/go-hclog v1.2.0
github.com/hashicorp/go-multierror v1.1.1
github.com/hashicorp/hcl/v2 v2.11.1
github.com/iancoleman/strcase v0.3.0
github.com/mitchellh/cli v1.1.2
github.com/mitchellh/mapstructure v1.5.0
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8
github.com/stretchr/testify v1.8.1
golang.org/x/oauth2 v0.3.0
google.golang.org/api v0.103.0
golang.org/x/oauth2 v0.8.0
google.golang.org/api v0.126.0
gopkg.in/DataDog/dd-trace-go.v1 v1.49.1
gorm.io/datatypes v1.1.0
gorm.io/driver/postgres v1.4.5
gorm.io/gorm v1.24.3
)

require (
cloud.google.com/go/compute v1.13.0 // indirect
cloud.google.com/go/compute/metadata v0.2.1 // indirect
cloud.google.com/go/compute v1.19.3 // indirect
cloud.google.com/go/compute/metadata v0.2.3 // indirect
github.com/DataDog/datadog-agent/pkg/obfuscate v0.46.0 // indirect
github.com/DataDog/datadog-agent/pkg/remoteconfig/state v0.48.0-devel // indirect
github.com/DataDog/datadog-go/v5 v5.3.0 // indirect
github.com/DataDog/go-libddwaf v1.5.0 // indirect
github.com/DataDog/go-tuf v0.3.0--fix-localmeta-fork // indirect
github.com/DataDog/sketches-go v1.4.2 // indirect
github.com/Masterminds/goutils v1.1.1 // indirect
github.com/Masterminds/semver v1.5.0 // indirect
github.com/Masterminds/sprig v2.22.0+incompatible // indirect
github.com/Microsoft/go-winio v0.6.1 // indirect
github.com/agext/levenshtein v1.2.3 // indirect
github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect
github.com/armon/go-radix v1.0.0 // indirect
github.com/bgentry/speakeasy v0.1.0 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/fatih/color v1.13.0 // indirect
github.com/cespare/xxhash/v2 v2.2.0 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/dustin/go-humanize v1.0.1 // indirect
github.com/ebitengine/purego v0.5.0-alpha.1 // indirect
github.com/fatih/color v1.15.0 // indirect
github.com/go-sql-driver/mysql v1.7.0 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/protobuf v1.5.2 // indirect
github.com/golang/protobuf v1.5.3 // indirect
github.com/google/go-cmp v0.5.9 // indirect
github.com/google/s2a-go v0.1.4 // indirect
github.com/google/uuid v1.3.0 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.2.0 // indirect
github.com/googleapis/gax-go/v2 v2.7.0 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.2.5 // indirect
github.com/googleapis/gax-go/v2 v2.11.0 // indirect
github.com/hashicorp/errwrap v1.1.0 // indirect
github.com/huandu/xstrings v1.3.2 // indirect
github.com/imdario/mergo v0.3.12 // indirect
Expand All @@ -49,32 +63,43 @@ require (
github.com/jackc/pgio v1.0.0 // indirect
github.com/jackc/pgpassfile v1.0.0 // indirect
github.com/jackc/pgproto3/v2 v2.3.1 // indirect
github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b // indirect
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect
github.com/jackc/pgtype v1.13.0 // indirect
github.com/jackc/pgx/v4 v4.17.2 // indirect
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.1.5 // indirect
github.com/kr/text v0.2.0 // indirect
github.com/mattn/go-colorable v0.1.12 // indirect
github.com/mattn/go-isatty v0.0.14 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.19 // indirect
github.com/mitchellh/copystructure v1.2.0 // indirect
github.com/mitchellh/go-wordwrap v1.0.1 // indirect
github.com/mitchellh/reflectwalk v1.0.2 // indirect
github.com/outcaste-io/ristretto v0.2.3 // indirect
github.com/philhofer/fwd v1.1.2 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/posener/complete v1.2.3 // indirect
github.com/rivo/uniseg v0.2.0 // indirect
github.com/rivo/uniseg v0.4.4 // indirect
github.com/secure-systems-lab/go-securesystemslib v0.5.0 // indirect
github.com/tinylib/msgp v1.1.8 // indirect
github.com/zclconf/go-cty v1.10.0 // indirect
go.opencensus.io v0.24.0 // indirect
golang.org/x/crypto v0.10.0 // indirect
golang.org/x/net v0.11.0 // indirect
golang.org/x/sys v0.9.0 // indirect
golang.org/x/text v0.10.0 // indirect
go.uber.org/atomic v1.11.0 // indirect
go4.org/intern v0.0.0-20230525184215-6c62f75575cb // indirect
go4.org/unsafe/assume-no-moving-gc v0.0.0-20230525183740-e7c30c78aeb2 // indirect
golang.org/x/crypto v0.12.0 // indirect
golang.org/x/mod v0.12.0 // indirect
golang.org/x/net v0.14.0 // indirect
golang.org/x/sys v0.11.0 // indirect
golang.org/x/text v0.12.0 // indirect
golang.org/x/time v0.3.0 // indirect
golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846 // indirect
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
google.golang.org/appengine v1.6.7 // indirect
google.golang.org/genproto v0.0.0-20221207170731-23e4bf6bdc37 // indirect
google.golang.org/grpc v1.51.0 // indirect
google.golang.org/protobuf v1.28.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20230920204549-e6e6cdab5c13 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20230920183334-c177e329c48b // indirect
google.golang.org/grpc v1.57.0 // indirect
google.golang.org/protobuf v1.31.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
gorm.io/driver/mysql v1.4.5 // indirect
inet.af/netaddr v0.0.0-20230525184311-b8eac61e914a // indirect
)
Loading