Age | Commit message (Collapse) | Author |
|
* feat: wrap ElNotification class in a showNotification method
* refactor: replace notification invocations in mod views
* feat: add 'info' type to showNotification method
* refactor: replace notification invocations in repair view
* refactor: replace notification invocations in settings view
* refactor: replace notification invocations in developer view
* feat: showNotification method now returns a NotificationHandle
* feat: showNotification has a duration argument
* refactor: replace notification invocations in pull requests module
* refactor: replace notification invocation in repair view
* refactor: replace notification invocations in UI store
* refactor: remove unused import from play view
* refactor: use showErrorNotification method to wrap up error display
* fix: add missing showErrorNotification imports
* style: format code
* style: format ThunderstoreModCard.vue
* style: format pull_requests.ts
* style: format SettingsView.vue
* style: format RepairView.vue
* style: format DeveloperView.vue
* refactor: remove useless import
* refactor: add missing showErrorNotification invocation
* feat: showErrorNotification has an optional title argument
* style: format LocalModsView.vue
|
|
* feat: Add ability to launch via Steam
* document what get_titanfall_proton() does
* revert explicit use of newly imported Path
* Format source code to pass CI
* Use new steamlocate compat_tool helper
* cargo fmt
* fix: Address various clippy issues
Addresses clippy warnings caused by newly introduced code
* fix: Cargo toml dependency formatting
|
|
* refactor: apply same style to all settings sections
* refactor: only assign developer_mode through store mutation
* refactor: remove useless credit mention
* refactor: remove menu bar background layer
* refactor: use same CSS style for both "no mod" messages
For both local and thunderstore mods views.
* fix: toggleDeveloperMode does not affect menu style by default
* feat: adjust TS mod hint i18n regression
|
|
* build: add vue-i18n dependency
* feat: add i18n plugin to vue project
* feat: use translations in play button
* feat: translate play view
* feat: translate menu items
* feat: translate local mods view
* feat: translate online mods view
* feat: translate mods menu
* feat: translate thunderstore mod card component
* fix: remove useless "this" keyword
* feat: translate settings view
* fix: remove leftover test invocation
* feat: add language selector component
* feat: using language selector updates interface's language
* feat: save language in persistent store on selector change
* feat: initialize lang on app launch
* refactor: move i18n code into App.mounted callback
* feat: update interface language on app launch
* feat: adjust language selection on language selector load
* fix: this.$root can't be null
* feat: translate store notifications
* fix: add missing parameter to english translation
* feat: translate "by" author keyword
* feat: translate repair window
* feat: translate repair window title
* docs: add some documentation regarding localization
* docs: explain how to add a new language
* feat: translate Northstar release canal selector elements
* docs: describe how to inject variable into translations
* feat: translate "info" word
* feat: translate popconfirm buttons
* fix: remove "this" keyword
* fix: save store when updating interface language
|
|
* feat: Generate FlightCore release notes
* fix: Remove leftover comment
* fix: Add missing semantic commit type
* fix: Re-add newlines accidentally removed in merge
* refactor: Remove contributors section
Will re-add a proper implementation in a later PR.
* fix: Revert accidentally modified line
* docs: Update comments
* fix: Use correct user-agent
* fix: Put unknown commits into "Other" section
Previously they were just dropped
* refactor: Move constant string array to right file
* fix: Remove debug prints
* refactor: Move lib import to start of file
* refactor: Use wrapper type
kinda needed by selector in frontend.
Allows for still passing full object to backend for future extensability
* fix: Generate missing wrapper TS interface
* fix: Add title and message to notification
* refactor: Move constant to consts file
* fix: Fix formatting
* fix: Remove unnecessary property declaration
|
|
* fix: Pin tauri-plugin-store package to same commit
Pin npm package to same commit as Rust crate
* fix: Attempt using newest plugin store commit
* fix: Perform explicit save to store on each change
This seems to resolve the issue around no longer writing changes to
store on close as now values are written on each change.
* chore: Pin dependencies to specific commit
Instead of tracking a branch, track a specific commit
|
|
This makes it now "publicly" available
|
|
|
|
* feat: Initial code for spawning repair window
* refactor: Move disable all but core mods button
to repair window
* refactor: Rename function
* refactor: Move button location
Still in DeveloperView for now, will be moved to settings page later
* feat: Add info banner
* feat: Set repair window title
* fix: Stop thread crash on duplicate window open
Instead of calling an unwrap, handle failure to create window which is
usually caused by spawning a second repair window although one already
exists.
* fix: Re-add accidentally removed lines from merge
* fix: Set top padding to zero px
As there's no menu bar in this view
* feat: Close all windows when close bttn is clicked
|
|
* feat: Initial backend code to get list of PRs
Hardcoded for launcher right now
* refactor: Autogen TS bindings from Rust code
using `ts-rs` as done in #140
* fix: Fix incorrect typing
What is returned is actually an array of `PullsApiResponseElement`
* feat: Prototyping frontend UI for installing PR
* fix: Use right repo
Used Mods instead of Launcher
* feat: Enable installing launcher pull request
* refactor: Rename variables to indicate approp repo
NorthstarLauncher vs NorthstarMods
* style: Formatting fixes
* feat: Initial code for getting mods PRs
* feat: Add backend code for installing mods PRs
* feat: Add note about launching in notification
* fix: Remove commented out code
* refactor: Depduplicate code
* refactor: Remove unnecessary use of anyhow
* refactor: Use already existing function
for checking game path
* feat: Add comment about profile / batch file
* chore: Remove leftover print statements
* feat: Add clickable link for each PR
* refactor: Reduce duplicate code
* refactor: Rename enum
* fix: Use proper type
* fix: Remove leftover `console.log`s
* style: Revert accidental formatting change
* refactor: Remove second API call for mods PRs
* refactor: Rename variable
* refactor: Remove second API call for launcher PRs
* refactor: Move API URL string to `constants.rs`
So that all constants are in a single place
* fix: Restore lines deleted in merge
* style: Formatting fixes
* fix: Print line when done installing PR
* feat: Show notification for install start/done
Displays a notification that PR install has started and upon completion
replaces it with one saying that install has completed.
* fix: Remove left-over console log
* feat: "Install PR" UI (#197)
* refactor: export pull requests selector to dedicated component
* refactor: regroup launcher+mods collapses in one collapse component
* refactor: load pull requests when opening selector collapse item
* refactor: review progress loaders' style
* fix: don't fetch PRs if they've already been loaded
* feat: update collapse style
* refactor: remove fetch success notification
* refactor: both collapses can be opened at the same time
* fix: non-accordion collapse sends an object as event parameter
* fix: Iterate over multiple pages of GitHub CI API
This ensures we can still grab older artifacts.
Max page is capped at 10 as going too high will cause us to hit API rate
limits.
Also refined error message accordingly.
* refactor: Move stored PRs to submodule
as suggested in review
* refactor: Move getPullRequests to store submodule
I order to clean up PullRequestSelector.vue
Other functions will follow in separate commits.
Currently TypeScript compilation fails on undefined type of `state`
* fix: Properly define state type
* refactor: Move installLauncherPR to store submodule
* refactor: Move installModsPR to store submodule
---------
Co-authored-by: Rémy Raes <contact@remyraes.com>
|
|
* feat: Add button to force reinstall Northstar
Useful for reinstalling Northstar after installing a developer version.
* fix: Remove leftover `console.log()`
* fix: Properly update which NS is installed
* feat: Show notification when done
Sends a notification to indicate that reinstall process has started and
sends a second one once the process has finished/failed while also
clearing the old notification.
|
|
* refactor: Get TS package API response from backend
Previously Thunderstore package index was done in frontend. Should be
moved to backend instead as backend is reponsible for such tasks while
frontend should just be used to store and display information.
* refactor: Filter TS API response in backend
* refactor: Rename function
Makes it more descriptive what it does
* refactor: Use gen. binds instead of duped struct
Replaces the current TypeScript interface defintions with autogenerated
bindings.
* fix: Properly type variable
* fix: Correct imported path of interface file
* fix: Update struct field types to fix typing issue
i32 should be big enough unless Thunderstore and Northstar suddenly
becomes really huge and we start seeing over 4 million downloads on some
mod
* fix: Correct imported path of interface file
|
|
* feat: Initial backend code to get the playercount
from the Northstar master server together with servercount
* fix: Push correct backend code
* feat: Load playercount on application load
and show on PlayView
* refactor: Store global const in separate file
Moved user agent there for now
* refactor: User user agent from global const
* refactor: Move masterserver URL into global const
* refactor: Remove temporary variable
* fix: Do proper typing for playercount return value
* feat: Change text if unable to load playercount
So instead of showing some wrong value, we just say that we were unable
to load it.
* fix: Remove leftover print statement
* refactor: Move struct to library source file
* fix: Remove break element
* refactor: serverlist endpoint var to global const
* fix: Remove unused import
* fix: add some space to stats container top
* fix: Change text to lowercase
---------
Co-authored-by: Alystrasz <contact@remyraes.com>
|
|
* refactor: Parse using serde deserialisation
* refactor: Parse using serde deserial. (TS mod str)
Reduce code by making use of serde deserialisation.
Still supports legacy method
* chore: Remove commented out fields
While useful, it just made the code messy...
* feat: Show mod version in LocalMods view
* refactor: Move mod version to new line
in source code
Makes diffing in git easier
* fix: Hide version number if not available
|
|
in LocalModsView
|
|
In LocalModsView, show the Thunderstore icon for Northstar mods that
have been installed from a Thunderstore mod.
|
|
* feat: Initial trial to auto-generate TS bindings
That way instead of manually duplicating code, we can just run
`cargo test` to generate them.
* fix: Update forgotten imports
* refactor: Move FlightCoreVersion to autogen bind
TypeScript binding autogenerated from Rust code
* refactor: Move ReleaseInfo to autogen binding
TypeScript binding autogenerated from Rust code
* docs: Explain how to generate TS binds from Rust
* feat: Check for binding changes in CI
Checks for uncommitted binding changes in CI and fails if they differ
* style: Formatting fixes
|
|
Typo and referencing wrong functionality
|
|
* feat: add UI skeleton for new mods interface
* fix: only apply app menu style to app menu items
* feat: add menu skeleton
* feat: add thunderstore mods view into mods view
* refactor: remove thunderstore mods view from router + menu bar
* refactor: move search input into mods view
* fix: adjust ts mods container padding
* refactor: center pagination components
* refactor: rework media queries to adapt cards container width
* fix: set mods view navigation min-width
* refactor: compute mods container width with CSS variables
* refactor: remove horizontal padding around ts mods container
This will allow them to take much screen space.
* feat: Thunderstore mods container is larger
* feat: add layouts for 5 to 8 Thunderstore mod columns
* feat: add some space to separate navigation menu subparts
* fix: move search pagination reset in ThunderstoreModsView component
* feat: retrieve Thunderstore mod categories when fetching mods
* feat: add mod categories selector component
* feat: mod categories selector now filters Thunderstore mods
* fix: reset pagination index if needed when selecting mod categories
* fix: first mod does not appear anymore while selecting any mod category
First mod's categories array was used as an accumulator (in a reduce call)
to regroup all mod categories; we now use an empty array as initial value
for the accumulator.
* feat: add a selector component to sort mods
* feat: set sort selector default value on view mount
* fix: set default sorting select value as selected in dropdown list
* feat: add date_updated field to ThunderstoreMod type
* feat: pass sorting value to ThunderstoreModsView as a prop
* feat: mods can be sorted by name and release date
* feat: mods can be sorted by most downloaded and top rated
* fix: don't display sorting select on local mods view
* refactor: remove local mods title
* refactor: export local mods view code in dedicated component
* refactor: export search value in a search-dedicated store
* fix: display "no matching mods" message when no mods match
This message was previously displayed only if no mods matched AND search
input was not empty; now that we have categories selector, we can have no
matching mods with an empty input.
* refactor: remove unused input prop
* fix: mods can be sorted by rating
* refactor: remove unused searchValue computed property
* style: adjust SortOptions import
* refactor: move selected mod categories into search store module
* refactor: move mod sorting into search store module
* refactor: export mods menu component to dedicated file
* fix: remove compare method initialization
* feat: local mods can be filtered with search input
* build: add ES2018 lib to typescript compiler options
* refactor: remove unused variable
* fix: retrieve SortOptions values from string input
* refactor: move Thunderstore mods view into dedicated folder
* style: add missing trailing newline to SortOptions.d.ts
|
|
* feat: Expose installed NS mod directory
This allows other functions to get a mod directory directly which is
useful for e.g. deleting a mod.
* feat: Add button to delete Northstar mod
* refactor: Return vector of NorthstarMod
instead of unnamed Tuples
* refactor: Remove leftover print statement
* chore: Remove leftover todo comment
* feat: Show confirm warning before deleting mod
* refactor: Call func directly instead of proxy
Removes the `func_caller` pattern
* fix: Call reloading mods after attempted delete
|
|
* refactor: Remove unnecessary caller function
Instead call `disable_all_but_core` directly
* refactor: Remove unnecessary caller function
Instead call `get_installed_mods_and_properties` directly
* refactor: Remove unused exposed backend function
* refactor: Remove unnecessary caller function
Instead call `set_mod_enabled_status` directly
* refactor: Remove unnecessary caller function
Instead call `verify_game_files` directly
* refactor: Remove unnecessary caller function
Instead call `get_log_list` directly
|
|
* feat: add basic pagination
* refactor: put paginator inside filters container
* fix: limit filter container width
* refactor: filters container is now responsive
* fix: add missing type to pagination listener parameter
* fix: don't display entire mods list while filtering mods
* refactor: filteredMods is now a computed value
* refactor: store mods per page value on UI store
* feat: user can change modsPerPage count in settings
* fix: limit mods count (min=5, max=100)
* feat: add control on pages value
When leaving settings vue, we check if the pages value is a number and is
included in the interval [5-100].
If that's not the case, we reset it to 20.
* feat: retrieve and save pages value in persistent store
* fix: don't load an empty value from persistent store on boot
* fix: cast modsPerPage to string to check if it's empty
* refactor: remove search debounce
* Update src-vue/src/plugins/store.ts
* style: add trailing comma
* fix: mention impact on TS mods only
* refactor: remove limitations on modsPerPage
* style: explicitly cast mods_per_page to number
* feat: disable pagination with modsPerPage === 0
* feat: add pagination under thunderstore mod cards
* fix: adjust bottom pagination padding
* feat: clicking bottom pagination scrolls to page top
* fix: use same containers for both paginations
* feat: do not display pagination if mods fit on one page
* style: trailing spaces
* style: trailing spaces
* feat: add a button to reset modsPerPage
* feat: add explanation text about disabling pagination
|
|
* feat: add a button to toggle window maximize status
* fix: attach services container to bottom
Container was fixed, but with no positioning indication,
which fucked its location while going fullscreen.
* refactor: encase menu in navigation container
* fix: remove CSS ID duplication
* refactor: put window controls inside menu bar
* feat: add style to additional submenu
* fix: don't color focused menu items
* fix: restore menu bar debug indicator
|
|
* refactor: set installedMods as a ModsView computed property
* feat: display a message on ModsView instead of cards if no mods were found
* refactor: remove error notification on game path discovery failure
* Revert "refactor: remove error notification on game path discovery failure"
This reverts commit db4af9ff78dc17bda77ce94283e35f9f1e961086.
* fix: don't invoke get_installed_mods_caller with no game path set
|
|
* feat: Show warning banner on DevView
* feat: Show icon in banner
* fix: Switch banner type to warning
* fix: Use light theme for warning
|
|
* refactor: Move release channel button to settings
* chore: Revert single newline removal
* feat: add basic selector
* feat: add basic selector style (to match button style)
* fix: remove box-shadow on selector
* feat: selector displays release canal from UI store
* refactor: export toggleReleaseCandidate to store, for it to be used by release canal selector
* feat: selector effectively changes release canal
* fix: selector members typing issue
* refactor: adjust selector labels
* refactor: remove channel switching button
Since the channel selector on the play view allows users to switch channels,
this button is now useless.
* feat: add a switch to toggle releases switching
* feat: switch only appears if corresponding flag is enabled
* feat: adjust button corners regarding releases switching state
* feat: switch value is saved in persistent store
* refactor: update release candidate label
* fix: set release canal to RELEASE when switch is toggled off
|
|
* feat: add new CSS class for UI containers
* feat: add a scrollbar to developer view
* refactor: use CSS class in all views
* feat: put a scrollbar in settings view
|
|
Co-authored-by: Jack <66967891+ASpoonPlaysGames@users.noreply.github.com>
Co-authored-by: Jack <66967891+ASpoonPlaysGames@users.noreply.github.com>
|
|
* feat: Option to launch NS bypassing update check
Hidden behind dev view
* refactor: Use existing function to launch NS
Instead of duplicating code
* feat: Adjust button to allow bypassing all checks
|
|
* feat: add ThunderstoreMod type
* feat: add view component to develop mods layout
* feat: mount view component in router
* feat: display thunderstore section in menu
* refactor: create thunderstore package
* feat: add ThunderstoreModVersion type
* feat: add icon field to mod version type
* feat: add basic card layout for mods
* refactor: card button text is computed
In the future, we want the button text to change regarding status of the current
mod (installed, deprecated or not installed at all).
* feat: display mod owners
* feat: display download and like counts
* feat: fetch mods from Thunderstore API
* fix: type issue
* fix: prevent texts from overflowing
* fix: all cards have same height
* feat: add some space between cards
* feat: add basic search bar to filter mods
* fix: convert search string to lowercase to avoid font case issues
* feat: remove some mods from listing
* feat: a button opens mod page on Thunderstore website
* feat: display some text if no mod matched searched words
* fix: description size
* fix: display mod's total downloads count
* docs: add documentation to methods
* refactor: store thunderstore mods in store
* docs: remove TODO notes
* style: add trailing line to ThunderstoreModVersion.d.ts
* feat: cards container is responsive
Mods cards will always appear centered on the screen, and cards container
width adjusts to window width.
* fix: debounce mods filtering
Since filtering mods with search string is costly, we don't do it for each
character entered into search bar, but rather wait (300ms) for the user to
stop typing.
* feat: add full_name field to ThunderstoreModVersion type
* feat: mods can be installed by clicking the card button
* feat: card displays a loader while mod is being installed
* refactor: move installed mods list to frontend store
Installed mods are now stored in the frontend store, so they can be used in
all views.
* feat: card button text varies regarding current mod's status
Button can now tell if current mod is being installed, or if it is already installed
on local file system.
* refactor: export mod status computation in a dedicated method
* feat: color buttons regarding associated mod's state
* fix: set search debounce timeout to 200ms
* refactor: local mods load is done by frontend store
* fix: load locally-installed mods before fetching thunderstore mods
* fix: display mods while typing in search bar
* fix: type issue
* fix: CI doesn't know NodeJS namespace
* fix: adjust NorthstarMod member types (string instead of String)
* feat: tell if a mod is outdated by checking its Thunderstore dependency string prefix
* fix: update mods list after installing one from Thunderstore
This way, after installing a mod, button text will display "Installed" instead
of "Install".
* refactor: export Thunderstore mod card to dedicated component file
* refactor: rename computed variables
* fix: use computed latestVersion member
* feat: display "updating" on button when updating an already-installed mod
* feat: add some background blur on thunderstore mods view
* Update src-vue/src/views/ThunderstoreModsView.vue
* Update src-vue/src/plugins/store.ts
* fix: zoom background container a bit to hide white border on Windows
|
|
* feat: Store gameinstall in persistent store
This includes both path and type (Steam/Origin/EA/UNKNOWN)
* feat: Add method to clear persistent store
* fix: Only check for NS version if installed
Otherwise we incorrectly set the button to `Install`.
* fix: Remove leftover `console.log()`
|
|
* feat: Initial support for installing mods from TS
This is the basic code needed to install a mod from Thunderstore
* refactor: Remove console log, show msg in notif
Instead of console logging result message, show it in notification
instead.
* refactor: Rename function to indicate behaviour
Function not only installs but also downloads mod first.
Although it does remove downloaded zip post installation.
* refactor: Move install logic to dedicated module
`mod_management` module didn't exist when this PR was created
* chore: Trim single leftover newline
* fix: Update code for newer `libthermite` version
* feat: Allow installing older versions of mods
Installs the given version number instead of only allowing latest.
* fix: Explicit error msg for installing NS as mod
While it would fail during install anyway, having explicit error message
is nicer
* feat: Write TS mod string to mod.json
Write Thunderstore mod string of installed mod to its `mod.json`
This way we can later check whether a mod is outdated based on the
Thunderstore mod string
* fix: Early return on empty string
Prevent trying to install the first mod that matches an early string. We
should never pass an empty string in the first place but better safe
then sorry.
* build: Add dependency for recursive async
Needed for recursive mod dependency install
* feat: Recursively install mod dependencies
* fix: Early catch installing R2modman as mod
Just in case to prevent someone trying to install R2modman as a mod.
* refactor: Remove debug prints
* fix: Allow installing mods having NS as dependency
They would previously error out as Northstar cannot be installed as
dependency. We now catch that specific error and return Ok(())
* fix: Delete download folder after mod install
Deletes download folder after mod install if non-empty.
* fix: Do not early leave when dependency is NS
Logic error, instead of skipping installing Northstar as dependency it
would previously just return early with success.
* chore: Remove leftover commented out code
|
|
* feat: add element-plus scrollbar to mods view
* refactor: remove unused style
|
|
|
|
instead of clicking Northstar version.
Makes dev mode a bit more "hidden" (i.e. less likely to be accidentally
opened by end-user) and it's more logical to click FlightCore version to
open **FlightCore** dev mode as opposed to clicking Northstar version.
|
|
* feat: add Rust method to fetch Northstar release notes
* feat: fetch release notes on changelog view mount
* feat: only transmit some info to frontend
GitHub API gives much information about releases, we only need some: name,
publication date and content of such release; so other information is not
transmitted to UI.
* feat: add ReleaseInfo Typescript interface matching Rust struct
* feat: display release notes on a timeline
* refactor: remove old releases external link
* build: add marked dependency
* build: add marked types dev dependency
* feat: format release notes' markdown
* fix: member typo in ReleaseInfo interface
* fix: type releases array
* fix: open github links in external browser
* fix: adjust marked import
* refactor: store release notes in store
Release notes are now stored in the app store, so we don't have to
fetch them multiple times.
* fix: notes fetching method is now async
* feat: display a loading bar while release notes are being fetched
* feat: display dates in white
* feat: release notes' dates are human-readable
* fix: make menu bar appear on top of release notes view when scrolled
* feat: add custom scrollbar
* refactor: format releases creation to please reviewer
* Update src-tauri/src/github/mod.rs
* Update src-tauri/src/github/release_notes.rs
* Update src-vue/src/utils/ReleaseInfo.d.ts
* fix: augment scrollbar opacity
* fix: only display releases' release date (no more time of the day)
* fix: adjust Github request user agent
* style: add missing end line in src-vue/src/style.css
* fix: link formatting only targets GitHub PR links (whose name begins with a #)
* fix: timeline element children cannot be bigger than container card
|
|
* feat: Enable toggling enabled mods
Co-authored-by: pg9182 <96569817+pg9182@users.noreply.github.com>
* chore: Update leftover comment
Co-authored-by: pg9182 <96569817+pg9182@users.noreply.github.com>
|
|
Simply parses `enabledmods.json`.
In the future we should also opt to check individual mods and compare
with the JSON file.
|
|
* feat: Backend code to get list of installed mods
For now simply parses `enabledmods.json`.
Note that this file will not be up-to-date if the user just installed a
mod but hasn't launched Northstar yet.
* feat: Empty skeleton page for ModsView
Will be populated later with list of installed mods
* chore: Remove leftover print statement
|
|
* refactor: Add error return type
* style: Auto-format
Only minor changes, did not take over all changes from auto-format.
* refactor: Rename function to get FC version number
To make it more clear which version number we're getting
(FlightCore vs Northstar)
|
|
|
|
|
|
* refactor: Use result return type for Linux checks
* refactor: Store min required ldd version in const
This way we only need to update a single variable in case min required
version changes.
|
|
* refactor: move updateGamePath method in store mutations
* feat: play button allows game path update
If game path was not found automatically and the user clicks the
play button, FlightCore will ask him to point out his Titanfall2
installation folder.
* refactor: change button text
* feat: display a notification on successful game folder selection
* feat: close permanent notification on successful game folder selection
* fix: allow game launch with UNKNOWN install type on Windows
* feat: set install type to UNKNOWN on manual folder pick
* refactor: update omni-button text when game folder wasn't found
|
|
* refactor: Rename object field
So that is specifically references Northstar
* chore: Add plugin-store as npm dependency
* feat: Persistent storing selected NS release canal
* docs: Add explanation about persistent store
|
|
|
|
* feat: Show own version number in settings view
Adds a new field to state that stores FlightCore version number.
Version number is pulled from backend on application launch.
* style: Reorder so that FC version is shown first
* chore: Remove leftover TODO comment
|
|
instead of encapsulating in template literal
|
|
As requested in review
|
|
In the future, this button should be moved to a "Repair" view. For now
I'm putting it into Dev view for testing.
|