- egg: adapt LIHKG changes
- incorrect URL
- egg: eggs not being hatched when back to homepage
- parameter properties
- add ENV
GOOGLE_OAUTH_SCOPES - typo
- mutation: add
ProvideranduseResponseCache - parameter properties
- type only imports and exports
- mutation: missing handling for the parent
<blockquote />of expanded quotes
- models: update
Cachegetters
- components: show quoted message info
- mutation: show user info at the top of reply item
- label-info: show emoticons in label item
- announcement: update layout on close
- mutation: implement its own
createContainer()in the component file - components: update
UserInfo - stylesheets: sort variables in ascending order
- helpers: rename function
- rename enum
- stylesheets: add
strip-unitfunction - helpers: change singleton to memoization
- helpers: change singleton to memoization
- helpers: update imports
- components: update
Emoticon - components: update typings
- components: update
UnlockIconMapToggleButton
- components: forward ref for
ToggleButton - components: add
SourcePostScreenshotButton - label-form: add image button
- label-form: change error message to error notification
- editor: change error message to error notification
- label-form: support screenshot in edit label form
- helpers: add
sleep() - subscription: revise
SubscriptionItemlayout - label: revise
LabelInfolayout
- label-form: show screenshot toggle button only when the post is available
- components: update tooltip props
- hooks: add
useSourcePostScreenshot - components: spread props
- components: destructure and spread the remaining props
- label: support capturing thread title for screenshot
- label: remove image enlarge buttons in screenshot
- auth: prompt user to select account
- typings: update
useGoogleAuthorization
- screenshot: use proxy for cross-origin images
- hooks: update
useScreenshot
- egg: ***
- sniping: remove user registration date from sniping template
- ga: failed to load Google Analytics
- egg: ***
- label-form: unexpected screenshot behaviour
- typings: revise
waitForElementtypes
- egg: incorrect script URL
- egg: ***
- webpack: allow import HTML
- apis/lihkg: update request headers
- settings: add convert blocked users button
- editor: apply fadeout scroll effect to data set editor
- apis/lihkg: add
fetchBlockedUser() - helpers/lihkg: add
mapBlockedUsersToDataSet()
- webpack: cannot import SVGR
- settings: remove notifications of cancel clear actions
- converter: id collision with existing label
- label-info: missing margin-top for buttons
- egg: add
referenceURL - cloud: add
Cloudmodel - apis: reuse
RequestMethod - editor: reuse
handleClose - typings: update component typings
- typings: update component typings
- editor: update class name
- hooks: update
useFadeoutScroll - hooks: rename
useLazyRendertouseVisibility - stylesheets: update variables
- label-item: update floating logic
- helpers/lihkg: use
DataSetinstead ofPersonal - editor: set dirty earlier
- components: move loading spinner from
SettingOptionButtontoBaseButton - models:
DataSet→BaseDataSet;Custom→DataSet - modal: add
useModal - hooks: change
useSettingsModalFocusTraptouseFocusTrap - typings: update hooks types
- hooks: update typings and memoization
- settings: separate the buttons in
ManageDataSectioninto standalone components - typings: update
findReduxStoretypings - typings: update
lihkgtypes - lihkg: enhance typings
- typings: add type for
unregister()
- components: memoization
- components: add component
FileInput - store: add middleware
createLoadSubscriptionOnEnableListener - subscription: allow drag & drop to sort the subscriptions
- subscription: update notification template
- subscription: add middleware
createLoadSubscriptionRejectedNotifier - egg: update style
- gapi: add notifications for sign in / sign out
- clear-data: replace alerts with notifications
- text-input: add
onClearto enable the clear button - notification: add cloud sync notifications
- label-form: update form validation
- subscription-maker: update form validation
- subscription: add subscription list empty message
- subscription: update subscription status icon style
- label-form: update layout
- label-info: update layout
- label-info: update layout
- settings: add standalone settings modal
- webpack: webpack-dev-server WebSocket connection failure
- subscription: update schema
serialized - merge:
configB.subscriptionTemplatesisundefined - stylesheets: missing Tailwind variables
--tw-* - settings:
autoFocusnot working in nested modal with focus trap - hooks: incorrect ref object
- modal: incorrect ref objects
- editor: missing min-width
- cloud-sync: unexpected notification
- egg: missing CSS modules
- subscription: incorrect base remote subscription
homepageschema - editor: unexpected
clickevent on the remove button (#11) - label-info: incorrect clear data button text color in light mode
- components: unexpected
displayName - label-info: label info box being blocked by YouTube preview
- mutation: incorrect
AddLabelButtonusage - subscription: missing
hrefin homepage button - modal: unexpected focus trap deactivation
- components: update style
- webpack: update configs
- store: remove unnecessary remote subscription loadings
- store: update
loadRemoteSubscriptions()toloadSubscriptions() - store: update subscription
load() - egg: revise imports
- egg: update styles
- modal: handle backdrop click only when the modal is opened
- subscription-maker: make
inputErrorsnon-null - slideshow: change
Slideshowfrom model to component - slideshow: type casting
- stylesheets: add mixin
logo() - revise imports
- constants: update constants
- manage-data: change alerts to notifications
- editor: change empty message to notification
- notification: add
createLocalNotification()to triggercreateNotification() - subscription: update
baseRemoteschema - subscription: update
Subscriptionmodels and schemas - editor: use the given
idfirst - sniping: update user registration formatting logic
- hooks: update
useScreenshot - label-form: reuse schemas
- editor: remove unnecessary dependency
- components: reuse
IconLink - stylesheets: update mixin
glow-box - components: reuse
IconLink - label-form: memoize preview image style
- components: add component
displayName - mutation: update to
react-dom/clientAPI - components: update
key - components: replace
useElementIDwithuseId - settings: update layout
- components: pass through the props for extendibility
- components: remove unnecessary
{true}
- merge: add
mergeConfig - schemas: missing
subscriptionTemplatesinconfigschema - mutation: issue of not showing labels or showing the labels on incorrect user in reply modal
- mutation: cannot display labels on replies after any blocked user's reply (#8)
- label-form: cannot enable auto screenshot (#10)
- mutation: unmount the component before removing the container from DOM
- helpers: update
getAvailableLabelIDtogetNextLabelID - helpers: update
getShareURL
- editor: update data set editor layout
- modal: update
Modalresponsive layout - editor: trigger
onChangewhen removing an item - cloud-sync: trigger sync from cloud main script instead of cloud helper
- editor: enhance
filterLabelsGroupsByKeyword - cloud-sync: update
SycnWithGoogleDrive
- cloud-sync: issue of empty storage being uploaded to cloud after clearing local data
- cloud-sync: unexpected sync action due to uncanceled sync registration
- editor: missing dependency
onChange - store: incorrect data loading logic
- components: incorrect toggle button
inputselectors
- expose
bootstrap()
- components: update add label button icon
- components: update
BaseIconButtonto support custom icon element - mutation: move add label button to beside of the reply button
- cache: remove
Cache#targetReply - mutation: recover user card modal mutation
- dependencies: incorrect
@types/redux-state-syncversion - mutation: conflicts with "LIHKG Show User Info"
- typings: update typings
- editor: add label color input field
- editor: apply lazy rendering to
UserLabelsEditor - components: add
Placeholder - editor: rewrite
DataSetEditor - components: add
ErrorMessage - components: add
IconMessage - components: add prop
invalidto indicate invalid state without error message - modal:
Headerwill spread props now - components: update floating position on mouse enter
- components: add prop
icontoTextInput - editor: remove row
- editor: missing
handleKeywordChangedependencies - mutation: issue of not rendering label list and snipe button for blocked users
- components: unexpected hardcoded
truecondition - mutation: missing snipe button
- modal: issue of
Footerbeing shrinked - dependencies: incorrect
identity-obj-proxyversion - label-info: missing subscription color
- components: revise stylesheet
- editor: revise validation logic
- dom: consume the
observerinstance from the callback - typings: update typings
- sniping: update sniping template rendering logic
- components: revise error
- models: remove
Label#shareURLandLabel#clone() - components: reuse
mapValidationError - components: update typings and variables
- components: reuse
ErrorMessage - typings: update typings, imports and variables
- components: remove unnecessary
classNameand spread props - modal: revised
spaciousintocompact - components: update style
- components: update style
- components: update
Modalstyle - models: update style
- components: update
groupedLabelslogic - typings: changed
onSubmissiontoonSubmit - sniping: rename and move files
- models: update
Singleton
- sniping: missing snipe button
- file: update
_exportto not compress to the JSON
- label-item: update style
- label-item: remove
color - label-form: remove label preview
- store: update storage instance before loading into the store
- helpers: update
merge.ts - models: update
Label#idtype
- update imports
- helpers: move rendering-related methods from
lihkg.tstomutation.ts
- label-list: update label list layout
- label-list: update label list layout
- label-list: update label list layout
- components: update label list and label item info display
- stylesheets: add element mixin
- settings: add subscription maker
- components: add prop
fullWidthtoToggleButton - editor: remove row headers
- merge: update merge logic
- models: add property
idtoLabel - counter: accept optional argument
initial - sniping: move snipe button to beside the reply button
- components: update data set editor and manage data section
- editor: update data set editor
- editor: add data set editor (to be continued)
- settings: add stats to
<Footer /> - store: add clear data (local/cloud) feature
- gapi: add hook
useGoogleAuthorization - ga: update event tags
- file: data compression
- ga: update event tags
- ga: update event tags
- ga: add event tags
- cloud-sync: data compression
- label-form: enable autocomplete on
textandreasoninputs
- label-list: update label info list box-sizing
- label-info: remove shadow
- dom: apply
requestAnimationFramewhen handling mutations - label-list: fix issue of
LabelInfopopover being covered by other elements - file:
download()fails to download file - subscription: remove default subscriptions in development mode
- components: inconsistent number of hooks between renderings
- editor: remove color column
- store: always load the storage into store after rehydrate
- store: remove unnecessary
storage.load() - main: app start performance (#2)
- editor:
ImageCellrendering issue - components: don't show cancel alert message
- settings: unbind
onClickwhen it is disabled - store: incorrect logic of loading data into the store
- store: update
configandmetato the store as well - label-form: incorrect form id
- stylesheets: use variables for colors
- label-list: update label item layout
- constants: update texts
- models: add
getShareURL() - typings: rename types
- components: update
BaseInputandColorPickerstyle - components: update
LabelFormcolor input field style - components: prevent default
- components: rename variable
- models: update typings
- components: rename props and types
- components: typings
- scss: change class to selector
- label: change
sourceURLtoshareURL - components: use
BaseInputfor import file button - models: update typings
- models: update
Labelto fallback possiblenullvalues toundefined - components: update
ColorPickerpropvalue - constants: update texts
- main: only import stylesheets in main app
- components: update
<ColorPicker /> to supportborderandroundedprops - schemas: update label schema exports
- components: update
<LabelFormModal /> - components: update
<Modal /> - components: update
<Modal /> - components: typings
- settings: update style
- cloud-sync: update last synced time hint text rendering logic
- settings: use
<SettingOptionButton /> - models: update methods
- gapi: remove unnecessary variable
- models: add
Singletonmodel - lihkg: refactor
setIconMap() - store: update typings
- store: update selectors
- store: update typings
- gapi: revise typing
- gapi: singleton
- ga: update Google Analytics
- typings and exports
- cloud-sync: update sync logic
- cloud-sync: incorrect sync logic
- announcement: update new version announcement
- sniping: update sniping template
- label-list: move the label list to the same row on nickname
- icon: unlock icon map
- subscription: check
urlbefore adding subscription
- cloud-sync: set error to
nullafter finish