Commit Graph

856 Commits

Author SHA1 Message Date
Pavel Laptev
8d7cb1c853 style: Add left padding to the board container 2024-03-18 01:42:54 +01:00
Pavel Laptev
2587ab5ee7 styles: empty board 2024-03-18 01:33:33 +01:00
Pavel Laptev
a39029531e refactor: remove unused ImgThemed component 2024-03-18 01:32:07 +01:00
Pavel Laptev
dad4f843f4 refactor: empty board image and layout update 2024-03-18 01:32:07 +01:00
Pavel Laptev
dd29f558fd refactor: DecorativeSplitView, imgs, welcome view
- updated `DecorativeSplitView` in order to get raw SVG
- updated `DecorativeSplitView` layout
- replaced raster WebP images with SVG
- updated icons for the Welcome screen
2024-03-18 01:32:07 +01:00
Pavel Laptev
a58623197f fix: empty state didn't showed if filter branches 2024-03-18 01:32:07 +01:00
Pavel Laptev
5d2a5736a9 refactor: replace empty state images with SVG 2024-03-18 01:32:07 +01:00
Pavel Laptev
c11d19e1cd refactor: Remove unused file 2024-03-18 01:32:07 +01:00
Pavel Laptev
b02dacb539 refactor: "create new branch" images updated with svg files
Svelte components with SVG inside were replaced with `@html` rule in irder to paste SVG files directly without convert them into Svelte files.
2024-03-18 01:32:07 +01:00
Pavel Laptev
e009ccb667 refactor: support image replaced with SVG 2024-03-18 01:32:07 +01:00
Pavel Laptev
45aa3a9d0a refacor: old logo asset removed 2024-03-18 01:32:07 +01:00
Pavel Laptev
6f70d6eb69 style: width changed for some Modal
for modals with less content width changed to `small`
2024-03-18 01:32:07 +01:00
Pavel Laptev
e4839a6538 fix(ui): Change size of update button to medium 2024-03-18 01:27:48 +01:00
Pavel Laptev
351a672183 refactor: remove unused ImgThemed component 2024-03-18 01:15:17 +01:00
Pavel Laptev
c0219ab2e5 refactor: empty board image and layout update 2024-03-18 01:12:26 +01:00
Pavel Laptev
693e2e9840 refactor: DecorativeSplitView, imgs, welcome view
- updated `DecorativeSplitView` in order to get raw SVG
- updated `DecorativeSplitView` layout
- replaced raster WebP images with SVG
- updated icons for the Welcome screen
2024-03-18 00:34:22 +01:00
Pavel Laptev
d74fc4a227 fix: empty state didn't showed if filter branches 2024-03-17 22:50:16 +01:00
Pavel Laptev
1817879788 refactor: replace empty state images with SVG 2024-03-17 18:55:55 +01:00
Pavel Laptev
12309e0c9e refactor: Remove unused file 2024-03-17 18:03:05 +01:00
Pavel Laptev
99ba7d9e37 refactor: "create new branch" images updated with svg files
Svelte components with SVG inside were replaced with `@html` rule in irder to paste SVG files directly without convert them into Svelte files.
2024-03-17 17:59:01 +01:00
Pavel Laptev
bc9e38b30e refactor: support image replaced with SVG 2024-03-17 17:55:34 +01:00
Pavel Laptev
5b8f7918e7 refacor: old logo asset removed 2024-03-17 17:12:53 +01:00
Pavel Laptev
28e6680db2 style: width changed for some Modal
for modals with less content width changed to `small`
2024-03-17 03:21:09 +01:00
Pavel Laptev
5632d8ac2b Design tokens updates
- Neutral colors updated
- `Space` renamed to `size`
- `size-btn` renamed to `size-control`
- Sizes in PX automatically generated to REM
- Design tokens file now fully generated without manual editing
- Moved dialog styles background to the `main.css` file
2024-03-17 03:12:07 +01:00
Mattias Granlund
4f2dfca322 Clean up variable assigment
- just making the code more readable
2024-03-16 15:48:41 +01:00
Mattias Granlund
e49bf7a4ef Fix broken project switching
- related to `observableToStore` functionality
2024-03-16 14:40:51 +01:00
Mattias Granlund
fee036fc7d Bug fix new base branch context store
- imported component instead of type
2024-03-16 13:48:29 +01:00
Mattias Granlund
52df5e5ec8 Put base branch into context as well 2024-03-16 13:19:47 +01:00
Mattias Granlund
09d20e8d5c Get BranchService with getContextByClass 2024-03-16 13:19:47 +01:00
Mattias Granlund
0084929959 Get BranchService with getContextByClass 2024-03-16 12:46:44 +01:00
Mattias Granlund
2bad7efa26 Get BranchController with getContextByClass 2024-03-16 12:39:06 +01:00
Mattias Granlund
f1987884d5 Get BranchController with getContextByClass
- elimnates prop drilling
- more of these commits to come
2024-03-16 12:30:30 +01:00
Mattias Granlund
c2d2147194 Get GitHubService with getContextByClass everywhere
- remvoes the need for prop drilling
2024-03-16 11:58:11 +01:00
Mattias Granlund
374fc4c869 Get UserService with getContextByClass everywhere
- remvoes the need for prop drilling
2024-03-16 11:58:11 +01:00
Mattias Granlund
dfe6886475 feat: Added function to convert observable to Svelte store. 2024-03-16 11:58:11 +01:00
Mattias Granlund
cb85baafa9 Move first service from prop drilling to Svelte context
- adds custom `getContext` to avoid extra typing when using classes as key
- project service no longer passed through component hierarchy
- switching projects require recreating components (already the case)
2024-03-16 10:53:36 +01:00
Mattias Granlund
035e2fbbcf Fix pr card title margin to prevent overlap with refresh button 2024-03-16 10:48:50 +01:00
Mattias Granlund
647b49e45e Use check suites to mitigate slow checks GitHub API
If we get `total_count == 0` for checks we load check suites to see if `total_count`
was > 0 on the last run as well. If so we retry until the API response becomes
eventually consistent.
2024-03-16 10:30:57 +01:00
Mattias Granlund
f7fdc260df Split out time ago store from component
- this way we can use it in more places
2024-03-16 10:24:30 +01:00
Mattias Granlund
6b74b5302b Make tooltip update if input updates
- helpful for tooltips that use input from timeAgo.ts
2024-03-16 09:52:18 +01:00
Mattias Granlund
bca71dce6d Small fixes to ResizeObserver
- disconnect takes no argument and unobserves everything
- prevents accidentally unobserving the wrong element
2024-03-16 09:52:18 +01:00
Mattias Granlund
717186a3e4 Small improvement to commit dialog data binding 2024-03-16 09:52:18 +01:00
Mattias Granlund
1475f06958 Miscellaneous fixes
- some things I found while working
2024-03-16 01:55:53 +01:00
Pavel Laptev
39434bede4 style: Update button size design token 2024-03-16 01:12:09 +01:00
Mattias Granlund
8a83e01ce0 Fix dev problem when hot reloading
- must check if element is still connected before manipulating element
2024-03-16 00:22:18 +01:00
Mattias Granlund
5d927abfcc Simplify GitHub service a little
- this branch will be force pushed again
2024-03-15 23:27:52 +01:00
Pavel Laptev
180d0eebd5 Commit box: race condition fixeed 2024-03-15 15:13:45 +01:00
Pavel Laptev
546e60c433 Merged origin/master into Commit box two fields 2024-03-15 14:32:48 +01:00
Scott Chacon
5afa391dfe wrong lint order 2024-03-15 05:45:34 +01:00
Scott Chacon
7fc51b775e Add GitButler app version 2024-03-15 05:45:34 +01:00
Scott Chacon
cec15bcdd0 send more context with feedback (OS, browser, index size) 2024-03-15 05:45:34 +01:00
Kiril Videlov
e0b0b85ad8 refactor: Update email input placeholder text and add required attribute to improve user experience 2024-03-14 20:31:21 +01:00
Pavel Laptev
ddee80788b style: add white-space: nowrap to label class
In order to prevent line breaks on the Tag component
2024-03-14 20:31:21 +01:00
Pavel Laptev
558340d17b refactor: Remove unused code 2024-03-14 20:31:21 +01:00
Mattias Granlund
82650a5500 Switch to new style of upstream commit list
- this work was left uncompleted a month back
2024-03-14 20:31:21 +01:00
Mattias Granlund
263ef78ed6 Refactor a couple of things for clarity 2024-03-14 14:29:06 +01:00
Kiril Videlov
e6acfe9afd refactor: Update email input placeholder text and add required attribute to improve user experience 2024-03-14 12:04:13 +01:00
Pavel Laptev
15d2238d82 style: add white-space: nowrap to label class
In order to prevent line breaks on the Tag component
2024-03-14 11:49:00 +01:00
Pavel Laptev
3203acf971 refactor: Remove unused code 2024-03-14 11:42:49 +01:00
Mattias Granlund
e7b80725ea Switch to new style of upstream commit list
- this work was left uncompleted a month back
2024-03-14 09:23:53 +01:00
Pavel Laptev
f2856ea899 Removed console.log 2024-03-13 23:59:20 +01:00
Pavel Laptev
8611597eaa Added custom useResize hook, code review
- Code review fixes
- In order to correct textareas hights I added custom hook that's watch for any size changes. Added it only for the summary because it's always on
2024-03-13 21:26:39 +01:00
Pavel Laptev
ac314fd143 Merged origin/master into Commit box two fields 2024-03-13 21:02:33 +01:00
Mattias Granlund
464fafc12a Refactor checks loading status
- it was left a bit too chaotic and hard to follow in the last commit
2024-03-13 19:29:10 +01:00
Mattias Granlund
07d7879f31 Show loading state while fetching PR checks 2024-03-13 18:06:32 +01:00
Pavel Laptev
9148df8ac7 Code review fixes
- Removed unused import
- Removed commited `console.log)
- Updated logic to correctly handle splitting summary and description
- Updated text styling for commit message textarea
2024-03-13 15:13:21 +01:00
Pavel Laptev
756efcb102 Formatting fixes 2024-03-13 13:50:15 +01:00
Pavel Laptev
560e0fb8ce added tooltip if commit summary is too long 2024-03-13 13:50:15 +01:00
Pavel Laptev
6fd1b1f23f Two fields workaround
- modified commit box in order to support summary and description
- modified useAutoHight hook, made two functions
- added focus class for input styles
2024-03-13 13:50:15 +01:00
Mattias Granlund
60e5f3d600 Change copy on pull request card
- Capitalize pr status
- Merge -> Merge pull request
- View PR -> Open in browser
2024-03-13 12:41:55 +01:00
Pavel Laptev
cfe347f343 unused component VideoTip and imports removed 2024-03-12 23:34:26 +01:00
Pavel Laptev
3d54ac7b16 Formatting fixes 2024-03-12 23:30:57 +01:00
Pavel Laptev
c310fa0e9f remove video from the app
related issue #3126
2024-03-12 23:29:23 +01:00
Pavel Laptev
d894690ec2 related issue #3126 2024-03-12 22:58:47 +01:00
Mattias Granlund
9aa2115c12 Fix for merge button being incorrectly disabled
- disable only if checks exist and they have not succeeded
2024-03-12 21:49:34 +01:00
Kiril Videlov
9892e4f9c8 refactor: Remove condition for admin role check in rendering upstreamCommits component. 2024-03-12 20:48:04 +01:00
Kiril Videlov
6aabf37b2c refactor: when fetching hunks by file return a map of DiffFile
Adding stonger types to the result will allow us to more easily propagate information like old/new files paths, size etc
2024-03-11 22:44:19 +01:00
Pavel Laptev
409fce9c30 SectionCard card and credential checks
- renamed `SectionCard` slot from `body` to `caption`
- `CredentialCheck` layout and style fixes
- `Spinner` icon updated in order to prevent scroll appearance during the animation
2024-03-11 00:17:15 +01:00
Pavel Laptev
7224a4dd0c removed unused code and tailwind from +layout.svelte 2024-03-10 21:40:43 +01:00
Pavel Laptev
30b9442974 Replace loading... plain text to the spinner page 2024-03-10 21:12:08 +01:00
Pavel Laptev
68a2a15b2b refactor: remove unnecessary comment and event for hover 2024-03-10 21:09:49 +01:00
Mattias Granlund
07229ea37f Fix ctrl +- for zooming on Linux
- fixed by reading tinykeys docs, found $mod 

https://github.com/jamiebuilds/tinykeys
2024-03-10 20:59:03 +01:00
Mattias Granlund
b5ac036091 Enable lint rule to disallow arrow functions where it isn't necessary 2024-03-10 20:19:30 +01:00
Mattias Granlund
a2d4def691 Refactor arrow functions into normal functions #2
- converts remaining arrow functions to named functions
2024-03-10 20:19:30 +01:00
Mattias Granlund
a8eb502d79 Refactor arrow functions into normal functions
- as discussed in person and on discord, to keep consistency in the code base
2024-03-10 15:14:56 +01:00
Mattias Granlund
bfc418e5e7 Fix new project redirect
- `goto('..')` was redirecting to previous project
2024-03-10 14:35:17 +01:00
Mattias Granlund
836e3aaa4d Fix bug in credential checker
- `.catch()` was attached to wrong promise
2024-03-10 11:56:28 +01:00
Pavel Laptev
d5c70c4030
Merge pull request #3083 from gitbutlerapp/scrollbar-updates
scrollbar-updates
2024-03-10 11:55:14 +01:00
Mattias Granlund
88283e4ac9 Simplify credential checker
- fewer if conditions
- no need for hiding checks on success
- adds reset method
2024-03-10 10:34:23 +01:00
Mattias Granlund
6137d6b63a Refactor credential check
- show tests while running (with indicator)
- incremental progress update
2024-03-10 09:24:17 +01:00
Pavel Laptev
bf27c3c474 Added scrollbar to lanes and removed unused CSS vars 2024-03-09 23:23:34 +01:00
Pavel Laptev
06f0490bf3 CSS fixes
- made target branch background color less transparent
- Select component added overflow hidden in order to cut overflowing scrolbar
- Same for the HunkViewer
2024-03-09 23:18:26 +01:00
Pavel Laptev
830e140cf6 fix lint errors 2024-03-09 23:18:26 +01:00
Pavel Laptev
cd4f4ca48f refactor: Update thickness variable to 0.563rem for a thinner scrollbar appearance 2024-03-09 23:18:26 +01:00
Pavel Laptev
dc2b9fa40f New user setting and video tip component 2024-03-09 23:18:26 +01:00
Pavel Laptev
d23e3ff2e6 Enhanced Navigation UX
- Implemented a feature where, during the dragging of the scrollbar in the branches view, the fold button now dynamically hides to prevent overlap with the scrollbar.
2024-03-09 23:18:26 +01:00
Pavel Laptev
205ffacc7c style updates: scrolbar and navigation fold button
- Updated style of the fold button in order to make more space for the scrollbar
- Scale scrollbar when it's hovered
2024-03-09 23:18:26 +01:00
Pavel Laptev
40b4702d1a scrollbar updates
- added `zIndex` prop in case of overlapping with other elements
- track height was changed to procentage units from fixed pixel units
2024-03-09 23:18:26 +01:00
Pavel Laptev
690ef6babc refactor: Remove unused code and update styles for scrollbar
- fixed horizontal mode
- Removed `alwaysVisible`, `margin`, `opacity` variables as they are no longer needed.
- Updated `thickness` variable to use CSS custom property.
- Refactored styles for scrollbar track and thumb elements to improve visibility and responsiveness.
- Added event listeners for mouse enter and leave on viewport to control visibility based on hover state.
2024-03-09 23:18:26 +01:00
Kiril Videlov
653c831471 refactor: Add tooltip functionality for locked files to display commit information on hover. 2024-03-09 21:03:28 +01:00
Pavel Laptev
2412962384
Merge pull request #3082 from gitbutlerapp/authentication-methods-style-fixes
authentication-methods-style-fixes
2024-03-09 00:34:51 +01:00
Pavel Laptev
96fc88beb9 CSS fixes
- fixed vertical scroll for DecorativeSplitView in order to respect the selector pop up behaviour
- added `…` to `remove project` which means there will be an aditional action after click
- small CSS fixes to `Selector`
2024-03-09 00:33:25 +01:00
Mattias Granlund
5477c2dd5f Fix navigating to new project after deleting another 2024-03-08 22:40:01 +01:00
Kiril Videlov
cb128df06b feat: Add last commit timestamp and author to RemoteBranch struct and use it in CombinedBranch for display purposes. 2024-03-08 22:22:40 +01:00
Pavel Laptev
a9f1900f19 versical scroll for credentials onboarding screen 2024-03-08 22:06:02 +01:00
Pavel Laptev
8f36bd2f99 refactor: Improve button styling and readability
- Changed the "Back" button to have a neutral color.
- Updated the disclaimer text to include a link for more information on authentication methods.
- Fixed background color for disclamer.
- Updated "preferred_key" section style.
2024-03-08 22:05:07 +01:00
Matías Fuentes
c69ca25cbd fix: added draggable="false" to file-icon and created a class in styles ".file-icon".
formated file
fix: width space on file icon
fix: format
2024-03-08 22:02:06 +01:00
Mattias Granlund
acb25f3d98 Fix new project redirect
- needs to be improved in the future
2024-03-08 21:21:41 +01:00
Mattias Granlund
efb8f77543 Integrated credential checker into settings and setup flow
- adds new [projectId]/setup route
2024-03-08 19:26:34 +01:00
Mattias Granlund
7e3049d179 Add git credential checker to project setup
This is meant to help with the most frequent support requests, problems
with pulling and pushing from a git remote.
2024-03-08 19:26:34 +01:00
Pavel Laptev
ded41d7728 removed non existing attr 2024-03-08 11:44:20 +01:00
Pavel Laptev
0d3c33b821 section card updates
- added `clickable` and non `clickable` styles
- added hover state if it's clickable
- added `labelFor` where it was missing and removed where the card is not clickable
2024-03-08 11:03:22 +01:00
Mattias Granlund
6bbf7a8310 Fix settings page refactor regressions
- fixes click on some missing elements
- load ssh key in onMount
- happened with removal of clickable card
- fixes missed prop renames
2024-03-08 02:47:32 +01:00
Mattias Granlund
645e076a78 Use SectionCard instead of ClickableCard
- commit grew a bit in scope
- lots of refactoring to settings pages
- clickable card dropped
2024-03-08 00:19:11 +01:00
Mattias Granlund
0311052f24 Add back push success/failure telemetry
- accidentally dropped when removing duplicate function
2024-03-07 21:45:43 +01:00
Matías Fuentes
ccd8417626 fix: runned format command 2024-03-07 21:16:51 +01:00
Matías Fuentes
ac7adbedae fix: branches filter checkboxes and toggle behavior 2024-03-07 21:16:51 +01:00
Pavel Laptev
f4fc6b1b1d
Merge pull request #3066 from gitbutlerapp/Copy-update
Info message updates
2024-03-07 14:54:48 +01:00
Pavel Laptev
1df2d69445 fixed button color in InfoMessage 2024-03-07 14:52:47 +01:00
Pavel Laptev
8791b58cd8 feat: Added a new "test" icon 2024-03-07 14:44:12 +01:00
Pavel Laptev
4128a404b3 Info message updates
- added new `success` style
- added two propes `filled` and `outlined` with which you can modify the look and switch on or off these props separatly
2024-03-07 14:38:29 +01:00
Pavel Laptev
93abbf85c8
Merge pull request #3050 from gitbutlerapp/Copy-update
Update button text from "Authenticate" to "Authorize" in GitHub authentication workflow
2024-03-07 14:35:12 +01:00
Pavel Laptev
467f4a1379 Added Forget button
- added forget button to the card
- removed conditional `Forget` button from the `minimal` mode, because we don't use it
2024-03-07 00:23:09 +01:00
Mattias Granlund
45846117e2 Update merge button labels
- corrects language to say e.g. "rebase and squash" instead of "rebase"
2024-03-06 23:18:19 +02:00
Mattias Granlund
e092358453 Remove unnecessary css from app.html
- they were added a long time ago and have no effect
2024-03-06 23:16:00 +02:00
Mattias Granlund
74a906618e Fix problem with user-select: none in root element
- webkit bug related to draggable=true
- left descendants without ability to set user-select: text
- unclear why it only affected draggable lanes and not e.g. hunks
2024-03-06 23:16:00 +02:00
Mattias Granlund
bcc2cd721f Change "discard file" to "discard changes" 2024-03-06 19:18:33 +02:00
Mattias Granlund
5c64a0ea90 Rename a couple of ts files from snake_case to camelCase 2024-03-06 16:47:57 +02:00
Pavel Laptev
02d7a183b4 style: updated design tokens 2024-03-06 15:17:27 +01:00
Pavel Laptev
72dd125056 feat: Update button text from "Authenticate" to "Authorize" in GitHub authentication workflow
Changed the button text from "Authenticate" to "Authorize" for better clarity.
2024-03-06 14:31:03 +01:00
Kiril Videlov
ce23bda4ba
Merge pull request #3041 from Caleb-T-Owens/Add-evaluate-prompt-api-endpoint
Move over to evaluatePrompt endpoint for AI integration
2024-03-06 13:50:42 +01:00
Mattias Granlund
684f57a1b0 Fix status comparison for disabling merege button 2024-03-06 14:19:49 +02:00
Caleb Owens
377b56e74d refactor: Move AIProvider and Summarizer classes to separate files
asdf
2024-03-05 22:59:25 +00:00
Caleb Owens
4c96d002a4 Formatting!
Formatting!
2024-03-05 22:36:29 +00:00
Caleb Owens
c5af3e2b20 Remove unused branch method from cloud.ts
Refactor
2024-03-05 22:31:24 +00:00
Caleb Owens
e4f5807205
Refactor style options 2024-03-05 22:27:12 +00:00
Caleb Owens
78f604a9a4
refactor: Update commit and branch templates
Refactored the commit and branch templates to allow for customizable templates. The commit method now accepts a commit template parameter, and the branch method now accepts a branch template parameter. This change provides flexibility in defining commit and branch templates for different scenarios.
2024-03-05 22:24:35 +00:00
Caleb Owens
01ed3c2151 feat: Implement diff length limit and use AIProvider interface
Change the diffLengthLimit constant to 20000 to limit the length of diffs in the code changes. 
Implemented AIProvider interface in ButlerAIProvider class to ensure consistency and adherence to the AIProvider contract for evaluating prompts.
2024-03-05 22:19:34 +00:00
Caleb Owens
9f8afcfd1d feat: Integrate ButlerAiProvider for AI summarization
Added ButlerAiProvider to handle AI summarization functionality instead of directly using Summarizer. This change improves modularity and separates the AI functionality into a dedicated provider. Updated the Summarizer class to utilize the new AIProvider interface for handling AI evaluations. This enhances code readability and maintainability.
2024-03-05 22:07:45 +00:00
Caleb Owens
34c13cc254 feat(backend): Add functionality to generate branch names based on diff
Added a new method in the Summarizer class to generate branch names based on the changes in the diff. The branch names are now automatically created by replacing whitespace with dashes and limiting to a maximum of 5 words. This will help in creating meaningful branches for better organization and tracking of changes.
2024-03-05 22:07:45 +00:00
Caleb Owens
56decefb3f refactor: Removed unused summarize commit and hunk functions
The summarize commit and hunk functions were no longer being used in the codebase, so they were removed to clean up the code and improve readability. This change simplifies the codebase and removes unnecessary functions.
2024-03-05 22:07:45 +00:00
Caleb Owens
d24bef3f32 Generate commit messages through evaluatePrompt API 2024-03-05 22:07:45 +00:00
Caleb Owens
312541b7f7 Updated lib to "ES2021" in tsconfig.json 2024-03-05 22:07:45 +00:00
Caleb Owens
83d5acee88 Add evaluatePrompt method to Cloud API client to handle prompt evaluation 2024-03-05 22:07:45 +00:00
Pavel Laptev
d34184c1da feat: add new icon for logs in the icon library 2024-03-05 16:15:16 +01:00
Pavel Laptev
18f9ae97bf icons small fixes
- sort icons alphabetically
- fix radius value for the spinner icon
2024-03-05 14:54:01 +01:00
Mattias Granlund
3c86868d6f Fix file preview when draggin from file tree
- fixes #3029
2024-03-05 01:29:42 +02:00
Daniel Kranich
9fc20018b0 Improve new branch name detection
Improved the new branch name detection for auto generating branch names. Now uses a regex to match new branch names more explicitly and will avoid branch name generation loops when 'virtual branch' is a string used often in the diff. Fixes issue #3017
2024-03-05 01:22:39 +02:00
Mattias Granlund
6234549c0b Do more to prevent stuck busy.. indicator
- not sure why this was not addressed earlier
2024-03-05 00:49:54 +02:00
Mattias Granlund
5ad6db4e07 Set file selection on drag when necessary
- the behaviour was unexpected if another file was already open
2024-03-05 00:49:24 +02:00