* [dev] make-user-admin: Grant all admin permissions
* [dev] Change frontend-dev to redirect instead of transparently proxy
This removes the "proxy needs network access to upstream" constraint, by relying on the developers browser
* [dev] front-end dev: more convenience, and added to readme
* [proxy] Expose v1 api on api. subdomain
* [gpctl] Move to use gRPC on api.gitpod.io directly
* [proxy] Remove "test compression" comment as that has been tested and works
* Gitpod CLI: Improve Segment logging
* Set empty logger correctly
* Proxy all files in the `static/bin/` folder
* copy all files
* Revert gzip change and fix proxy dep
* Update folder for artefacts
* Local App v2 :)
* bind variables correctly
* Play around with units
* Port more commands over
* Separate commands (1 per file)
* `gitpod workspace delete`
* Extract login
* Show help text when run without a command
* Fix login
* `gitpod logout`
* Simple logging
* Remove unused import
* Make host use consistent
* Fix GetToken
* Split distribution
* 🤷♂️
* Fix paths 🤷🤦
* Change URL of binaries
* Fix proxy binary handling
Co-authored-by: Pudong <tianshi8650@gmail.com>
* Improve logging
* Change workspace list to be up-to-spec
* `gitpod organizations list`
* Simplify table code
* `gitpod workspace get`
* Created at
* `gitpod organization get <id>`
* Hide open for now
* `workspace start --ssh`
* `ws start --open`
* server: OAuth client
* Use OAuth app
* logs
* `gitpod workspace create`
* Rename to follow singular noun semantics
* Fix nil pointers in list and go cmds
* `--field` for `gitpod organizations list`
* `gitpod ws list --field`
* Simplify some of the ws code
* Unify WS data structure
* Allow opening browser-based WSs
* `gitpod workspace open`
* Constants package to get rid of circular dependency issues
* No config file by default
* Guidance when missing in path
* Fix local companion maybe 🤷♂️
* Create wait for start by default
* Align scopes
* KeychainName constant
* Provide token via flag instead
* Host in scope error lookup message
* 🤷♂️
* Name for consistency
* Editors in go client of papi
* `gitpod workspace list-classes`
* `gitpod config`
* Infer orgs if applicable
* Remove redundant error log
* Retry mechanism for streaming
* More useful error message for unauthed
* README update
* Allow `function:getTeam`
* return org inference errors properly
* Replace config with context
* Fix config file path
* Wrap up pretty printer
* Name changes
* Remove unused vars
* 🇺🇸
* Update README
* Fix login
* [local-app] Add whoami command
* [local-app] Add context management
* Refactor common package
* Harmonise output and formatting
* Add error resolution support
* Improve resolution printing
* Add apology for system exceptions
* Add class resolutions
* Apologise more
* Add unknown field resolution
* Add better login context name
* Make it build
* `gitpod workspace list-editors`
* Fix multiple ws IDs for `ws get`
* Simplify open code
* Update local-app README with usage instructions
* Help for editor options
* Remove unused config code
* Call workspace ID field ID instead of workspace
* Improve long format output
* Fix whoami output
* Streamline workspace listing
* Introduce fancy intro
* Improve set-context feedback
* Remove common package
* Add first unit test
* Harmonise field order
* Consistency across get commands
* Consistency among list command aliases
* Fix column name in whoami
* Fix nil refs for empty hosts
* Make prettyprint writer typesafe
* Add resolutions for no token or no host found
* Fix typo
* Fix CI build
* Properly record org ID on login
* Print orgs in wide format
* Added "workspace up" functionality back in
but hidden
* Make "Git" casing consistent
https://english.stackexchange.com/questions/611711/tech-related-should-i-capitalize-the-word-git-in-this-context-or-not
* Introduce workspace up intermediary
* Fix proxied binary name
---------
Co-authored-by: Pudong <tianshi8650@gmail.com>
Co-authored-by: Christian Weichel (Chris) <chris@gitpod.io>
* [dashboard] Downtime in-app announcements
* [dashboard] Set correct port for hot reload to work
* [dashboard] Display local time
* adding static page for maintenance mode
* [dashboard] maintenance screen: Add specific end time
* [dashboard] in-app maintenance notification: Point to https://www.gitpodstatus.com instead of specific event
* [proxy] Re-direct mechanism controlled by env var MAINTENANCE_REDIRECT
---------
Co-authored-by: Brad Harris <bmharris@gmail.com>
* [public-api] add dummy service for testing
* [public-api] proxy dummy to server
* [public-api] hello service server impl
* [server] fix API contribution bindings
* [dashboard] emulate unary call
* only if actually called
* [dummy] auth
* fix tests
* [server] add interceptor to public api
* add server side observability
* fix port name
* change to unimplemented for unknown methods
* [public-api] client metrics
* fix metrics imports
* align server metrics
* actually fix metrics
* add feature flags
* fix server side streams
* [dashboard] hook error reporting
* rebase and fix imports
* feature flagged metrics from dashboard
* revert GRPC_TYPE
* address feedback
* internal analytics endpoint
to prevent triggering rate limitting on analytics from internal components
see https://gitpod.slack.com/archives/C02EN94AEPL/p1682493547309509
* add AnalyticsPort to service and modify network policy
* include all internal components
* fully qualified service reference
---------
Co-authored-by: Pudong <tianshi8650@gmail.com>
The value of the header was set to the IP address of a machine inside
GCP rather than the the actual client IP address.
To ensure that the header contains the actual client IP address, this
header is now set at the GCP load balancer.
Before serving /api requests, make a 'pre-flight' request to
`/api/feature-flags/slow-database` and use the `X-Gitpod-Slow-Database`
header in the response to decide where to send the actual request;
either to the regular `server` service or the new `slow-server` service.
Websocket Upgrade requests can hit either `/api/gitpod` (from `server`)
or `/api/v1` (from the public API).
This matcher change ensures that the request is handled by the intended
matcher block rather than the block for `api/*` requests below.