- 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
Provider
anduseResponseCache
- parameter properties
- type only imports and exports
- mutation: missing handling for the parent
<blockquote />
of expanded quotes
- models: update
Cache
getters
- 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-unit
function - 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
SubscriptionItem
layout - label: revise
LabelInfo
layout
- 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
waitForElement
types
- 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
Cloud
model - apis: reuse
RequestMethod
- editor: reuse
handleClose
- typings: update component typings
- typings: update component typings
- editor: update class name
- hooks: update
useFadeoutScroll
- hooks: rename
useLazyRender
touseVisibility
- stylesheets: update variables
- label-item: update floating logic
- helpers/lihkg: use
DataSet
instead ofPersonal
- editor: set dirty earlier
- components: move loading spinner from
SettingOptionButton
toBaseButton
- models:
DataSet
→BaseDataSet
;Custom
→DataSet
- modal: add
useModal
- hooks: change
useSettingsModalFocusTrap
touseFocusTrap
- typings: update hooks types
- hooks: update typings and memoization
- settings: separate the buttons in
ManageDataSection
into standalone components - typings: update
findReduxStore
typings - typings: update
lihkg
types - 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
onClear
to 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.subscriptionTemplates
isundefined
- stylesheets: missing Tailwind variables
--tw-*
- settings:
autoFocus
not 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
homepage
schema - editor: unexpected
click
event 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
AddLabelButton
usage - subscription: missing
href
in 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
inputErrors
non-null - slideshow: change
Slideshow
from 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
baseRemote
schema - subscription: update
Subscription
models and schemas - editor: use the given
id
first - 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/client
API - components: update
key
- components: replace
useElementID
withuseId
- settings: update layout
- components: pass through the props for extendibility
- components: remove unnecessary
{true}
- merge: add
mergeConfig
- schemas: missing
subscriptionTemplates
inconfig
schema - 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
getAvailableLabelID
togetNextLabelID
- helpers: update
getShareURL
- editor: update data set editor layout
- modal: update
Modal
responsive layout - editor: trigger
onChange
when 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
input
selectors
- expose
bootstrap()
- components: update add label button icon
- components: update
BaseIconButton
to 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-sync
version - 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
invalid
to indicate invalid state without error message - modal:
Header
will spread props now - components: update floating position on mouse enter
- components: add prop
icon
toTextInput
- editor: remove row
- editor: missing
handleKeywordChange
dependencies - mutation: issue of not rendering label list and snipe button for blocked users
- components: unexpected hardcoded
true
condition - mutation: missing snipe button
- modal: issue of
Footer
being shrinked - dependencies: incorrect
identity-obj-proxy
version - label-info: missing subscription color
- components: revise stylesheet
- editor: revise validation logic
- dom: consume the
observer
instance from the callback - typings: update typings
- sniping: update sniping template rendering logic
- components: revise error
- models: remove
Label#shareURL
andLabel#clone()
- components: reuse
mapValidationError
- components: update typings and variables
- components: reuse
ErrorMessage
- typings: update typings, imports and variables
- components: remove unnecessary
className
and spread props - modal: revised
spacious
intocompact
- components: update style
- components: update style
- components: update
Modal
style - models: update style
- components: update
groupedLabels
logic - typings: changed
onSubmission
toonSubmit
- sniping: rename and move files
- models: update
Singleton
- sniping: missing snipe button
- file: update
_export
to 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#id
type
- update imports
- helpers: move rendering-related methods from
lihkg.ts
tomutation.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
fullWidth
toToggleButton
- editor: remove row headers
- merge: update merge logic
- models: add property
id
toLabel
- 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
text
andreason
inputs
- label-list: update label info list box-sizing
- label-info: remove shadow
- dom: apply
requestAnimationFrame
when handling mutations - label-list: fix issue of
LabelInfo
popover 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:
ImageCell
rendering issue - components: don't show cancel alert message
- settings: unbind
onClick
when it is disabled - store: incorrect logic of loading data into the store
- store: update
config
andmeta
to 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
BaseInput
andColorPicker
style - components: update
LabelForm
color 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
sourceURL
toshareURL
- components: use
BaseInput
for import file button - models: update typings
- models: update
Label
to fallback possiblenull
values toundefined
- components: update
ColorPicker
propvalue
- constants: update texts
- main: only import stylesheets in main app
- components: update
<ColorPicker /
> to supportborder
androunded
props - 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
Singleton
model - 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
url
before adding subscription
- cloud-sync: set error to
null
after finish