Commit graph

82 commits

Author SHA1 Message Date
rc-swag
f2d0e268a7 feat(windows): remove TUpdateStateMachineParams
There was some dead code from before the RemoteUpdateCheck refactor
was created. This is removed in this commit
2024-10-30 16:59:32 +10:00
rc-swag
c988271628
feat(windows): formatting review suggestions
Co-authored-by: Marc Durdin <marc@durdin.net>
2024-10-15 12:12:21 +10:00
rc-swag
4ad5f0fc64 chore(windows): Merge branch 'epic/windows-updates' into feat/windows/add-apply-now-update 2024-10-01 17:38:59 +10:00
Marc Durdin
2d09c805d0
Merge pull request #12417 from keymanapp/chore/merge-master-into-windows-updates
chore: merge master into windows-updates
2024-09-13 09:24:17 +02:00
rc-swag
5c187db7a6 feat(windows): address review comments 2024-09-12 13:40:42 +10:00
rc-swag
3f1236ab59 feat(windows): comments copyright formating 2024-09-10 17:22:21 +10:00
rc-swag
bfe1b45983 feat(windows): automatic updates option to config reg 2024-09-09 15:51:32 +10:00
rc-swag
85a998bb73 feat(windows): rename executehistory module for clarity 2024-09-03 15:31:49 +10:00
rc-swag
1667cfed09 feat(windows): clean up ready for review 2024-09-03 14:38:09 +10:00
rc-swag
10c343fc43 feat(windows): change verb use to allow for clarity 2024-09-02 13:31:21 +10:00
rc-swag
e2ec08ca9b feat(windows): remove klogging enable 2024-08-27 18:03:57 +10:00
rc-swag
2927f57c04 feat(windows): missed checked in file 2024-08-23 15:41:31 +10:00
rc-swag
05d52463f9 feat(windows): remove registerhotkey and cache modifier
Remove the feature flags that allows the use of cached modifier for
hotkeys. Remove the feature flag that uses the Win 32 API
RegisterHotkeys.
2024-08-22 15:45:23 +10:00
rc-swag
b7b17686ec feat(windows): add rmodifier hk to keyman config UI 2024-08-19 14:01:43 +10:00
rc-swag
be55dabdc4 feat(windows): add right modifier key option pt1 2024-08-16 22:15:42 +10:00
rc-swag
6a305c168b feat(windows): remove uneeded registry keys 2024-08-16 13:26:02 +10:00
rc-swag
b0cdcabaaa feat(windows): correct error checking for has keyman run 2024-08-13 18:29:16 +10:00
rc-swag
9f72febff8 feat(windows): merge conflicts wip 2024-07-24 16:59:21 +10:00
rc-swag
47d3d26301 chore(windows): Merge branch 'epic/windows-updates' into feat/windows/add-apply-now-update 2024-06-29 16:04:45 +10:00
Marc Durdin
3d017bc0f5
Merge pull request #11729 from keymanapp/chore/merge-master-into-windows-updates
chore: merge master into windows-updates
2024-06-07 19:02:19 +10:00
Marc Durdin
a68124b5e6 chore(windows): support port in THTTPUploader
This can be useful for debugging scenarios, where we want to use a local
test HTTP server on a different port, e.g. setting
`development.urls.api_keyman_com_host` to `localhost:8058`.
2024-05-30 08:20:43 +07:00
Marc Durdin
78f4cbf8d5 chore: Merge branch 'epic/windows-updates' into chore/merge-master-into-windows-updates
Note: deleted TODO.md, had only one minor update
2024-05-25 05:53:48 +07:00
Marc Durdin
fa57d5c674 chore(developer): final work on build.sh for developer
Now builds from a clean repo:

  developer/src/build.sh configure build test publish

* Splits kmbrowserhost into kmdbrowserhost for Developer; this means
  that Developer Browser Host now inherits the Developer settings rather
  than the Keyman for Windows settings, and simplifies distribution and
  management. The only difference between the two is in the startup code
  so this seems like a good split.

* Cleanup of various build scripts and dependencies.
2024-05-20 06:34:53 +07:00
Marc Durdin
2d6ab45f9a fix(developer): emit JSON strings as characters, not surrogate pairs
Fixes #11193.

The JSON pretty-printed format in Delphi would emit strings with
surrogate pairs as e.g. "\uD801\uDDB0" instead of the character. This
change uses TStringBuilder which emits the characters cleanly.
2024-04-18 09:20:40 +07:00
rc-swag
653cb3b4b3 fix(windows): ditch the Indy library use own URLDecode 2024-04-04 14:26:23 +10:00
rc-swag
636d21fe4a fix(windows): decode packge id at assignment encode uri creation
decode the package_id when assinged. encode it again when
the uri is formated.
2024-04-04 09:14:44 +10:00
rc-swag
29b54ad661 chore(windows): Merge branch 'epic/windows-updates' into feat/windows/add-apply-now-update 2024-03-04 19:10:12 +10:00
Marc Durdin
1c8ef09378
Merge pull request #10588 from keymanapp/chore/merge-master-into-windows-updates
chore: merge master into windows-updates
2024-02-01 17:31:25 +11:00
Marc Durdin
56a2b9e494
Merge pull request #10450 from keymanapp/chore/merge-master-into-windows-updates
chore: merge master into windows-updates
2024-01-19 17:42:58 +11:00
Marc Durdin
2b02d73347 feat(developer): New LDML Keyboard Project form
Fixes #10135.

Adds a new LDML Keyboard Project template and form, and allows
instantiation from kmconvert command-line and from the New Project
dialog in Keyman Developer IDE.
2024-01-18 15:19:41 +07:00
rc-swag
8454285557 chore(windows): Merge branch 'feat/windows/add-state-machine-o-updates' into feat/windows/add-apply-now-update 2024-01-11 11:14:02 +10:00
rc-swag
f7744f9a49 feat(windows): mark outstanding issues with feature 2024-01-11 10:41:56 +10:00
rc-swag
2a6a7437f7 chore(windows): Merge branch 'epic/windows-updates' into feat/windows/add-state-machine-o-updates 2024-01-10 16:33:39 +10:00
rc-swag
2eab485c76 feat(windows): Add a installNow event to SM
Added an event for install now when the user wants to manual
start the install process straight away.
2024-01-10 16:23:54 +10:00
rc-swag
dd5767a372 feat(windows): integrate sm states and handlekmshell 2023-12-22 10:11:32 +10:00
rc-swag
6cb83989d5 feat(windows): WIP added keyman has run atom 2023-12-20 08:14:33 +10:00
Marc Durdin
69a11c9ceb chore(developer): Merge branch 'master' into feat/developer/10161-developer-settings-in-rc 2023-12-13 05:05:53 +07:00
rc-swag
e83b0022d2 feat(windows): WIP buc sm doesn't build just backup
background update state machine doesn't even build
2023-12-12 16:15:42 +10:00
Marc Durdin
3d5506ef3e chore(windows): move reportExceptions check in exception handler to caller 2023-12-11 20:44:53 +07:00
Marc Durdin
01fe68a66d feat(developer): Move options to ~/.keymandeveloper/options.json
Fixes #10161.

Includes transition of existing options from registry to options.json,
and once options.json exists, will always read from that and ignore
registry. Was able to eliminate some of the legacy datatype usage for
several options. Reader/writer includes naive file lock retry to avoid
contention, which I am hopeful will be sufficient for our needs, given
the low chance of contention.
2023-12-11 15:31:21 +07:00
Marc Durdin
3a91c7d197 chore(developer): move IDEOptions key responsibility into KeymanDeveloperOptions
First part of addressing #10161 is to refactor the existing usage of the
registry values into the common KeymanDeveloperOptions unit. This was
mostly straightforward except for the changes to KeymanSentryClient,
which happens to be the most important part of this particular fix.
2023-12-11 13:48:43 +07:00
Marc Durdin
288b822ca8
Merge pull request #10189 from keymanapp/chore/merge-master-into-windows-updates
chore: merge master into windows-updates
2023-12-11 12:07:10 +11:00
Marc Durdin
6c918e6aa8 fix(developer): Option to disable prompting for project upgrade
Fixes #10146.

Some developers may wish to stick with kpj-1.0 for now, and the prompt
to upgrade would annoying because it cannot be hidden. This resolves
that.

Note that I haven't at this point renamed UrlRenderer.pas, although it
may be worth considering in the future.
2023-12-06 09:54:12 +07:00
Marc Durdin
39b7c882a3 feat(developer): Multi-process model for projects 🦕
This is a bit of an omnibus commit, apologies for that. This commit
moves Keyman Developer to a proper multi-process model, where editing
files from multiple projects is handled much more cleanly, with each
project loaded in a separate process.

Files that are edited outside of a project structure are loaded into a
'temporary project' in a single process, which provides a pathway for
existing users who may have legacy files outside the normal Keyman
Developer project model.

There are several components to this:

1. Inter-process communication (Multiprocess, CopyDataHelper units and
   multiprocess test project). These modules establish a method of
   enumerating running Keyman Developer instances (with EnumWindow),
   recording relevant metadata for each instance (by thread id) in the
   registry (registry used because it manages contention without
   additional effort from us), and communicating between processes with
   WM_COPYDATA.
2. Command-line parsing (TikeCommandLine). Determines project ownership
   (ProjectOwningFile) for each filename passed on the command-line, and
   passes these over to existing instances of Keyman Developer that have
   that project loaded, or starts new instances as needed.
3. Temporary project management. Mostly in ProjectUI.

Also, moved GlobalProjectStateWnd management out of ProjectFile.pas and
into Project.pas, alongside other global project variables.

A follow-up will add functionality to determine if a file opened within
the Keyman Developer UI should open in the same instance or in a
separate instance (see TfrmKeymanDeveloper.OpenFileInProject). This will
use the same methodology as TikeCommandLine does now, so may involve
further refactoring.

This commit establishes the idea of 'keyman.kpj' as a future default
filename for Keyman Developer projects, but does not enable it, in
ProjectOwningFile. It is planned to introduce this fixed filename in
version 18.0 (see #10113).
2023-12-01 11:48:09 +07:00
Marc Durdin
8756e4016c feat(windows): Online Update check stream update data
Starts to refactor the online update check in Windows so that the
results are stored to disk and can be checked at any time. This commit:
* removes keepintouch frame
* adds update frame
* adds serialization of update check data
* presents the serialized update check data in the update frame

Online updates won't currently work.
2023-11-22 14:23:30 +10:00
Marc Durdin
55c0c6fd08 fix(developer): projects 2.0 internal path enumeration
Restricts enumeration of files for the project to the project folder and
the SourcePath folder. This prevents problems where a project may be in
a folder with many subfolders which would take a long time to enumerate,
and avoids confusion where there are source-type files in other folders.

At the same time, sorts out forward slash vs backslash in paths. While
forward slash works in many scenarios, there are several filename
manipulation functions, such as ExpandFileName, which would build valid
but non-optimal paths when forward slashes were encountered, which
cascaded into files appearing to be different and presentation issues.
2023-11-16 11:47:35 +07:00
Marc Durdin
a937f3c7de
Merge pull request #9949 from keymanapp/feat/developer/tike-2.0-projects
feat(developer): Support v2.0 projects in TIKE 🦕
2023-11-15 13:46:07 +11:00
Marc Durdin
4c5a91081f feat(developer): Support v2.0 projects in TIKE
Relates to #9948. Starts basic support for v2.0 projects.

For all operating modes:

- Remove blank projects / untitled projects mode
- Add Open Project Folder buttons and links
- Remove Project Save As
- Render uses in-memory XML
- Upgrade to v2.0 project file (along with checks)

For v2.0 projects:

- Remove 'Add File to Project'
- Populate Files to list all files in folder (note: consider efficiency
  here as currently files are parsed for subfile data)
- Version 2.0 project options and defaults
2023-11-07 05:18:25 +07:00
Marc Durdin
3336539ec5 chore(developer): remove obsolete 'Allow Multiple Instances' and 'Use Legacy Compiler' options
Fixes #9925.

Allow Multiple Instances is now always true.
Use Legacy Compiler did nothing (there is no legacy compiler!).
2023-11-03 13:24:05 +07:00
Marc Durdin
fea10f0eeb feat(developer): add web font references to package
While a package supports a .ttf or .otf font for the OSK and Display
fonts for use within the Keyman apps, on websites it also supports .woff
and .woff2. This change makes it possible to specify a set of fonts for
a package which will be provided through api.keyman.com to websites.

This means that .woff and .woff2 fonts may also be included in the
package and may not be used on target devices at this time, it further
opens the pathway to deploying .kmp packages to web in the future.

The deployment stage of keymanapp/keyboards will require a new phase to
copy web fonts from packages to s.keyman.com.
2023-08-15 15:13:24 +07:00